{
  "version": "1.0.0",
  "name": "spl_feature_proposal",
  "instructions": [
    {
      "name": "propose",
      "accounts": [
        {
          "name": "fundingAddress",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "featureProposalAddress",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "mintAddress",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "distributorTokenAddress",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "acceptanceTokenAddress",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feature",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tokensToMint",
          "type": "u64"
        },
        {
          "name": "acceptanceCriteria",
          "type": {
            "defined": "AcceptanceCriteria"
          }
        }
      ]
    },
    {
      "name": "tally",
      "accounts": [
        {
          "name": "featureProposalAddress",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "acceptanceTokenAddress",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "feature",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "clock",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    }
  ],
  "accounts": [
    {
      "name": "FeatureProposal",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Uninitialized"
          },
          {
            "name": "Pending",
            "fields": [
              {
                "defined": "AcceptanceCriteria"
              }
            ]
          },
          {
            "name": "Accepted",
            "fields": [
              {
                "name": "tokens_upon_acceptance",
                "type": "u64"
              }
            ]
          },
          {
            "name": "Expired"
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "AcceptanceCriteria",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "tokensRequired",
            "type": "u64"
          },
          {
            "name": "deadline",
            "type": "i64"
          }
        ]
      }
    }
  ]
}
