{
  "version": "1.0.5",
  "name": "cardinal_creator_standard",
  "instructions": [
    {
      "name": "InitRuleset",
      "accounts": [
        {
          "name": "ruleset",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "initRulesetIx",
          "type": {
            "defined": "InitRulesetIx"
          }
        }
      ],
      "discriminant": {
        "type": "u8",
        "value": 0
      }
    },
    {
      "name": "UpdateRuleset",
      "accounts": [
        {
          "name": "ruleset",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "payer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "updateRulesetIx",
          "type": {
            "defined": "UpdateRulesetIx"
          }
        }
      ],
      "discriminant": {
        "type": "u8",
        "value": 1
      }
    },
    {
      "name": "InitMintManager",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ruleset",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "holderTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rulesetCollector",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collector",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "payer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false,
          "desc": "Token program"
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false,
          "desc": "System program"
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 2
      }
    },
    {
      "name": "UpdateMintManager",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "ruleset",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "collector",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "payer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false,
          "desc": "System program"
        }
      ],
      "args": [
        {
          "name": "updateMintManagerIx",
          "type": {
            "defined": "UpdateMintManagerIx"
          }
        }
      ],
      "discriminant": {
        "type": "u8",
        "value": 3
      }
    },
    {
      "name": "SetInUseBy",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "holder",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "holderTokenAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "setInUseByIx",
          "type": {
            "defined": "SetInUseByIx"
          }
        }
      ],
      "discriminant": {
        "type": "u8",
        "value": 4
      }
    },
    {
      "name": "RemoveInUseBy",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 5
      }
    },
    {
      "name": "Approve",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "holderTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "holder",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "delegate",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 6
      }
    },
    {
      "name": "Burn",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "holderTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "holder",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 7
      }
    },
    {
      "name": "Close",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "owner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 8
      }
    },
    {
      "name": "InitializeAccount",
      "accounts": [
        {
          "name": "mint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "owner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "payer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 9
      }
    },
    {
      "name": "InitializeMint",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "ruleset",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "targetTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "target",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "rulesetCollector",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collector",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "payer",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 10
      }
    },
    {
      "name": "Revoke",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "holderTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "holder",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 11
      }
    },
    {
      "name": "Transfer",
      "accounts": [
        {
          "name": "mintManager",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "ruleset",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "from",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "to",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructions",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [],
      "discriminant": {
        "type": "u8",
        "value": 12
      }
    }
  ],
  "accounts": [
    {
      "name": "MintManager",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "accountType",
            "type": "u8"
          },
          {
            "name": "version",
            "type": "u8"
          },
          {
            "name": "mint",
            "type": "publicKey"
          },
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "ruleset",
            "type": "publicKey"
          },
          {
            "name": "inUseBy",
            "type": {
              "option": "publicKey"
            }
          }
        ]
      }
    },
    {
      "name": "Ruleset",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "accountType",
            "type": "u8"
          },
          {
            "name": "version",
            "type": "u8"
          },
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "collector",
            "type": "publicKey"
          },
          {
            "name": "checkSellerFeeBasisPoints",
            "type": "bool"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "allowedPrograms",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "disallowedAddresses",
            "type": {
              "vec": "publicKey"
            }
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "InitRulesetIx",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "collector",
            "type": "publicKey"
          },
          {
            "name": "disallowedAddresses",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "allowedPrograms",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "checkSellerFeeBasisPoints",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "SetInUseByIx",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "inUseByAddress",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "UpdateMintManagerIx",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "authority",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "UpdateRulesetIx",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "collector",
            "type": "publicKey"
          },
          {
            "name": "disallowedAddresses",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "allowedPrograms",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "checkSellerFeeBasisPoints",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "AccountType",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Ruleset"
          },
          {
            "name": "MintManager"
          },
          {
            "name": "Unrecognized"
          }
        ]
      }
    }
  ],
  "errors": [
    {
      "code": 0,
      "name": "InvalidAccountType",
      "msg": "Invalid account type"
    },
    {
      "code": 1,
      "name": "DataTypeMismatch",
      "msg": "Data type mismatch"
    },
    {
      "code": 2,
      "name": "InvalidMint",
      "msg": "Invalid mint"
    },
    {
      "code": 3,
      "name": "InvalidAmount",
      "msg": "Invalid amount"
    },
    {
      "code": 4,
      "name": "InvalidTokenAccount",
      "msg": "Invalid token account"
    },
    {
      "code": 5,
      "name": "InvalidCollector",
      "msg": "Invalid collector address"
    },
    {
      "code": 6,
      "name": "InvalidRulesetCollector",
      "msg": "Invalid ruleset collector address"
    },
    {
      "code": 7,
      "name": "InvalidAuthority",
      "msg": "Invalid authority address"
    },
    {
      "code": 8,
      "name": "InvalidMintManager",
      "msg": "Invalid mint manager"
    },
    {
      "code": 9,
      "name": "InvlaidHolderTokenAccount",
      "msg": "Invalid holder token account"
    },
    {
      "code": 10,
      "name": "InvalidTargetTokenAccount",
      "msg": "Invalid target token account"
    },
    {
      "code": 11,
      "name": "InvalidCloseTokenAccount",
      "msg": "Invalid token account to close"
    },
    {
      "code": 12,
      "name": "InvalidHolderTokenAccount",
      "msg": "Invalid holder token account"
    },
    {
      "code": 13,
      "name": "InvalidRuleset",
      "msg": "Invalid ruleset"
    },
    {
      "code": 14,
      "name": "InvalidPreTransferInstruction",
      "msg": "Invalid pre transfer instruction"
    },
    {
      "code": 15,
      "name": "InvalidPostTransferInstruction",
      "msg": "Invalid post transfer instruction"
    },
    {
      "code": 16,
      "name": "ProgramDisallowed",
      "msg": "Disallowed program included in transfer"
    },
    {
      "code": 17,
      "name": "ProgramNotAllowed",
      "msg": "Program not allowed in allowed programs to transfer"
    },
    {
      "code": 18,
      "name": "UnknownAccount",
      "msg": "Unknown account found in instruction"
    },
    {
      "code": 19,
      "name": "AccountNotFound",
      "msg": "Account not found in instruction"
    },
    {
      "code": 20,
      "name": "TokenAlreadyInUse",
      "msg": "Token already in use"
    },
    {
      "code": 21,
      "name": "InvalidTokenUser",
      "msg": "Invalid token user"
    },
    {
      "code": 22,
      "name": "TokenCurentlyInUse",
      "msg": "Token currently in use"
    },
    {
      "code": 23,
      "name": "InvalidRulesetAuthority",
      "msg": "Invalid ruleset authority"
    }
  ],
  "metadata": {
    "origin": "shank",
    "address": "creatS3mfzrTGjwuLD1Pa2HXJ1gmq6WXb4ssnwUbJez",
    "binaryVersion": "0.0.5",
    "libVersion": "^0.0.5"
  }
}