export type BlockassetMinter = {
  "version": "2.4.9",
  "name": "blockasset_minter",
  "instructions": [
    {
      "name": "closeMinter",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "redeemedMints",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "project",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initMinter",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "redeemedMints",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "project",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "ix",
          "type": {
            "defined": "InitMinterIx"
          }
        }
      ]
    },
    {
      "name": "mint",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "redeemedMints",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setAsRedeemed",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "redeemedMints",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "project",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mints",
          "type": {
            "vec": "publicKey"
          }
        }
      ]
    },
    {
      "name": "updateMinter",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "project",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "ix",
          "type": {
            "defined": "UpdateMinterIx"
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "minter",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "identifier",
            "type": "publicKey"
          },
          {
            "name": "project",
            "type": "publicKey"
          },
          {
            "name": "mint",
            "type": "publicKey"
          },
          {
            "name": "authorizedCreators",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "metadataKind",
            "type": {
              "defined": "MetadataKind"
            }
          },
          {
            "name": "minSetSize",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "start",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "end",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "maxMint",
            "type": {
              "option": "u32"
            }
          }
        ]
      }
    },
    {
      "name": "redeemedMints",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "total",
            "type": "u32"
          },
          {
            "name": "minter",
            "type": "publicKey"
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "InitMinterIx",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "identifier",
            "type": "publicKey"
          },
          {
            "name": "authorizedCreators",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "metadataKind",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "maxMint",
            "type": {
              "option": "u32"
            }
          },
          {
            "name": "minSetSize",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "start",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "end",
            "type": {
              "option": "i64"
            }
          }
        ]
      }
    },
    {
      "name": "UpdateMinterIx",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "authorizedCreators",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "metadataKind",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "maxMint",
            "type": {
              "option": "u32"
            }
          },
          {
            "name": "minSetSize",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "start",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "end",
            "type": {
              "option": "i64"
            }
          }
        ]
      }
    },
    {
      "name": "MetadataKind",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "NoRestriction"
          },
          {
            "name": "UniqueNames"
          },
          {
            "name": "UniqueSymbols"
          }
        ]
      }
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "InvalidProjectAuthority",
      "msg": "Invalid project authority"
    },
    {
      "code": 6001,
      "name": "InvalidTokenAccount",
      "msg": "Invalid token account"
    },
    {
      "code": 6002,
      "name": "InvalidNftMint",
      "msg": "Invalid NFT mint"
    },
    {
      "code": 6003,
      "name": "NotEnoughTokensRemain",
      "msg": "Not enough tokens remain"
    },
    {
      "code": 6004,
      "name": "NotStarted",
      "msg": "Not started yet"
    },
    {
      "code": 6005,
      "name": "Ended",
      "msg": "Ended"
    },
    {
      "code": 6006,
      "name": "InvalidMint",
      "msg": "Invalid mint"
    },
    {
      "code": 6007,
      "name": "InvalidMintMetadata",
      "msg": "Invalid mint metadata"
    },
    {
      "code": 6008,
      "name": "UnauthorizedMetadataForSet",
      "msg": "Unauthorized metadata for set"
    },
    {
      "code": 6009,
      "name": "SomeMintsAreAlreadyRedeemed",
      "msg": "Some mints are already redeemed"
    },
    {
      "code": 6010,
      "name": "InvalidOwner",
      "msg": "Invalid owner"
    },
    {
      "code": 6011,
      "name": "InvalidMintTokenAccount",
      "msg": "Invalid mint token account"
    }
  ]
};

export const IDL: BlockassetMinter = {
  "version": "2.4.9",
  "name": "blockasset_minter",
  "instructions": [
    {
      "name": "closeMinter",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "redeemedMints",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "project",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initMinter",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "redeemedMints",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "project",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "ix",
          "type": {
            "defined": "InitMinterIx"
          }
        }
      ]
    },
    {
      "name": "mint",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "redeemedMints",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setAsRedeemed",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "redeemedMints",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "project",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mints",
          "type": {
            "vec": "publicKey"
          }
        }
      ]
    },
    {
      "name": "updateMinter",
      "accounts": [
        {
          "name": "minter",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "project",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "authority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "ix",
          "type": {
            "defined": "UpdateMinterIx"
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "minter",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bump",
            "type": "u8"
          },
          {
            "name": "identifier",
            "type": "publicKey"
          },
          {
            "name": "project",
            "type": "publicKey"
          },
          {
            "name": "mint",
            "type": "publicKey"
          },
          {
            "name": "authorizedCreators",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "metadataKind",
            "type": {
              "defined": "MetadataKind"
            }
          },
          {
            "name": "minSetSize",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "start",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "end",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "maxMint",
            "type": {
              "option": "u32"
            }
          }
        ]
      }
    },
    {
      "name": "redeemedMints",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "total",
            "type": "u32"
          },
          {
            "name": "minter",
            "type": "publicKey"
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "InitMinterIx",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "identifier",
            "type": "publicKey"
          },
          {
            "name": "authorizedCreators",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "metadataKind",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "maxMint",
            "type": {
              "option": "u32"
            }
          },
          {
            "name": "minSetSize",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "start",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "end",
            "type": {
              "option": "i64"
            }
          }
        ]
      }
    },
    {
      "name": "UpdateMinterIx",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "authorizedCreators",
            "type": {
              "vec": "publicKey"
            }
          },
          {
            "name": "metadataKind",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "maxMint",
            "type": {
              "option": "u32"
            }
          },
          {
            "name": "minSetSize",
            "type": {
              "option": "u8"
            }
          },
          {
            "name": "start",
            "type": {
              "option": "i64"
            }
          },
          {
            "name": "end",
            "type": {
              "option": "i64"
            }
          }
        ]
      }
    },
    {
      "name": "MetadataKind",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "NoRestriction"
          },
          {
            "name": "UniqueNames"
          },
          {
            "name": "UniqueSymbols"
          }
        ]
      }
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "InvalidProjectAuthority",
      "msg": "Invalid project authority"
    },
    {
      "code": 6001,
      "name": "InvalidTokenAccount",
      "msg": "Invalid token account"
    },
    {
      "code": 6002,
      "name": "InvalidNftMint",
      "msg": "Invalid NFT mint"
    },
    {
      "code": 6003,
      "name": "NotEnoughTokensRemain",
      "msg": "Not enough tokens remain"
    },
    {
      "code": 6004,
      "name": "NotStarted",
      "msg": "Not started yet"
    },
    {
      "code": 6005,
      "name": "Ended",
      "msg": "Ended"
    },
    {
      "code": 6006,
      "name": "InvalidMint",
      "msg": "Invalid mint"
    },
    {
      "code": 6007,
      "name": "InvalidMintMetadata",
      "msg": "Invalid mint metadata"
    },
    {
      "code": 6008,
      "name": "UnauthorizedMetadataForSet",
      "msg": "Unauthorized metadata for set"
    },
    {
      "code": 6009,
      "name": "SomeMintsAreAlreadyRedeemed",
      "msg": "Some mints are already redeemed"
    },
    {
      "code": 6010,
      "name": "InvalidOwner",
      "msg": "Invalid owner"
    },
    {
      "code": 6011,
      "name": "InvalidMintTokenAccount",
      "msg": "Invalid mint token account"
    }
  ]
};
