{
    "version": "0.1.0",
    "name": "zebec_card_contract",
    "instructions": [
        {
            "name": "initCardConfigs",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "usdcToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitCardConfigParams"
                    }
                }
            ]
        },
        {
            "name": "deposit",
            "accounts": [
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "userAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "vaultPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "revenueVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "revenueVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "feeMapPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "DepositParams"
                    }
                }
            ]
        },
        {
            "name": "buyPrepaidDigitalCard",
            "accounts": [
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "usdcToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "buyerPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "revenueVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "commissionVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "revenueVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "commissionVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "vaultPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "BuyPrepaidCardParams"
                    }
                }
            ]
        },
        {
            "name": "buyCardDirect",
            "accounts": [
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "usdcToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "buyerPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "revenueVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "revenueVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "vaultPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "feeMapPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "BuyCardDirectParams"
                    }
                }
            ]
        },
        {
            "name": "generateYield",
            "accounts": [
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "userVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "flexlendUserAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "flexlendUserAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "vaultPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "reserveAdmin",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "promotionReserve",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "flexlendProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "withdrawYield",
            "accounts": [
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "userVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "flexlendUserAccount",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "reserveAdmin",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "promotionReserve",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "flexlendUserAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "vaultPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "flexlendProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                },
                {
                    "name": "withdrawAll",
                    "type": "bool"
                }
            ]
        },
        {
            "name": "withdraw",
            "accounts": [
                {
                    "name": "user",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "userAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenMint",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "vaultPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "amount",
                    "type": "u64"
                }
            ]
        },
        {
            "name": "setCardConfigs",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "SetCardConfigParams"
                    }
                }
            ]
        },
        {
            "name": "setCustomFees",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "feeMapPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "vec": {
                            "defined": "Fees"
                        }
                    }
                }
            ]
        },
        {
            "name": "deleteCustomFees",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "feeMapPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "vec": "publicKey"
                    }
                }
            ]
        },
        {
            "name": "initBotConfig",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "cardBotConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitBotConfigParams"
                    }
                }
            ]
        },
        {
            "name": "buyCardBot",
            "accounts": [
                {
                    "name": "botAdmin",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "usdcToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userCustody",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userCustodyAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardBotConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "revenueVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "revenueVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "feeMapPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "BuyCardBotParams"
                    }
                }
            ]
        },
        {
            "name": "initBotPda",
            "accounts": [
                {
                    "name": "botAdmin",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "userCustody",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "userCustodyAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardBotConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "usdcToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitBotPdaParams"
                    }
                }
            ]
        },
        {
            "name": "setBotAdmin",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardBotConfig",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "newAdmin",
                    "type": "publicKey"
                }
            ]
        },
        {
            "name": "initOnRampConfig",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "onRampConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitOnRampParams"
                    }
                }
            ]
        },
        {
            "name": "initOnRampPda",
            "accounts": [
                {
                    "name": "admin",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "userCustody",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "onRampConfig",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "userCustodyAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "zbcnToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitOnRampPdaParams"
                    }
                }
            ]
        },
        {
            "name": "setOnRampAdmin",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": false,
                    "isSigner": true
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "onRampConfig",
                    "isMut": true,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "newAdmin",
                    "type": "publicKey"
                }
            ]
        },
        {
            "name": "transferZbcn",
            "accounts": [
                {
                    "name": "admin",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "from",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "fromAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "to",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "toAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "onRampConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "zbcnToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "TransferZbcnParams"
                    }
                }
            ]
        },
        {
            "name": "initProposalConfigs",
            "accounts": [
                {
                    "name": "zicOwner",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "proposalConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "cardPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitProposalConfigParams"
                    }
                }
            ]
        },
        {
            "name": "initProposal",
            "accounts": [
                {
                    "name": "creator",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "creatorAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposalConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposal",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposalVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposalVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "zbcnToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "associatedTokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "InitProposalParams"
                    }
                }
            ]
        },
        {
            "name": "vote",
            "accounts": [
                {
                    "name": "voter",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "voterAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "voterPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposal",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposalVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposalVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposalConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "creator",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "zbcnToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "systemProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": [
                {
                    "name": "params",
                    "type": {
                        "defined": "VoteParams"
                    }
                }
            ]
        },
        {
            "name": "withdrawVote",
            "accounts": [
                {
                    "name": "voter",
                    "isMut": true,
                    "isSigner": true
                },
                {
                    "name": "creator",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "proposalConfig",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "voterAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "voterPda",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposalVault",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposalVaultAta",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "proposal",
                    "isMut": true,
                    "isSigner": false
                },
                {
                    "name": "zbcnToken",
                    "isMut": false,
                    "isSigner": false
                },
                {
                    "name": "tokenProgram",
                    "isMut": false,
                    "isSigner": false
                }
            ],
            "args": []
        }
    ],
    "accounts": [
        {
            "name": "CardBot",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "botAdmin",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "CardCustodyData",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "userId",
                        "type": "string"
                    },
                    {
                        "name": "totalBoughtPerDay",
                        "type": "u64"
                    },
                    {
                        "name": "dateTimeInUnix",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "Card",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "index",
                        "type": "u64"
                    },
                    {
                        "name": "zicOwner",
                        "type": "publicKey"
                    },
                    {
                        "name": "nativeFee",
                        "type": "u64"
                    },
                    {
                        "name": "nonNativeFee",
                        "type": "u64"
                    },
                    {
                        "name": "revenueFee",
                        "type": "u64"
                    },
                    {
                        "name": "usdcMint",
                        "type": "publicKey"
                    },
                    {
                        "name": "revenueVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "commissionVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "cardVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "totalBought",
                        "type": "u64"
                    },
                    {
                        "name": "dailyCardBuyLimit",
                        "type": "u64"
                    },
                    {
                        "name": "providerConfig",
                        "type": {
                            "defined": "ProviderConfig"
                        }
                    }
                ]
            }
        },
        {
            "name": "CustomFeeMap",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "feeMap",
                        "type": {
                            "vec": {
                                "defined": "Fees"
                            }
                        }
                    }
                ]
            }
        },
        {
            "name": "OnRamp",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "admin",
                        "type": "publicKey"
                    },
                    {
                        "name": "zbcnToken",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "OnRampCustody",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "userId",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "PrepaidCardBuyer",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "index",
                        "type": "u64"
                    },
                    {
                        "name": "buyerAddress",
                        "type": "publicKey"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "purchaseAt",
                        "type": "i64"
                    }
                ]
            }
        },
        {
            "name": "ProposalConfigs",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "stakingToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "creatorStakingCap",
                        "type": "u64"
                    },
                    {
                        "name": "votersStakingCap",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "Proposal",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "creator",
                        "type": "publicKey"
                    },
                    {
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "name": "startTime",
                        "type": "i64"
                    },
                    {
                        "name": "endTime",
                        "type": "i64"
                    },
                    {
                        "name": "totalVotes",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "Vault",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "userAddress",
                        "type": "publicKey"
                    },
                    {
                        "name": "totalBoughtPerDay",
                        "type": "u64"
                    },
                    {
                        "name": "dateTimeInUnix",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "Voter",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "voterAddress",
                        "type": "publicKey"
                    },
                    {
                        "name": "proposalAddress",
                        "type": "publicKey"
                    },
                    {
                        "name": "votingAmount",
                        "type": "u64"
                    },
                    {
                        "name": "voteStatus",
                        "type": "bool"
                    },
                    {
                        "name": "voterFlag",
                        "type": "bool"
                    },
                    {
                        "name": "isWithdrawn",
                        "type": "bool"
                    }
                ]
            }
        }
    ],
    "types": [
        {
            "name": "BuyCardBotParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "userId",
                        "type": "string"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "cardType",
                        "type": "string"
                    },
                    {
                        "name": "sourceTokenAddress",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "InitBotConfigParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "botAdmin",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "InitBotPdaParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "userId",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "InitProposalConfigParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "stakingToken",
                        "type": "publicKey"
                    },
                    {
                        "name": "creatorStakingCap",
                        "type": "u64"
                    },
                    {
                        "name": "votersStakingCap",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "InitProposalParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "name",
                        "type": "string"
                    },
                    {
                        "name": "votingStartTime",
                        "type": "i64"
                    },
                    {
                        "name": "votingEndTime",
                        "type": "i64"
                    }
                ]
            }
        },
        {
            "name": "VoteParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "voteStatus",
                        "type": "bool"
                    },
                    {
                        "name": "votingAmount",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "InitOnRampParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "admin",
                        "type": "publicKey"
                    },
                    {
                        "name": "zbcnToken",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "InitOnRampPdaParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "userId",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "TransferZbcnParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "userId",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "BuyCardDirectParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "index",
                        "type": "u64"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "cardType",
                        "type": "string"
                    },
                    {
                        "name": "sourceTokenAddress",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "BuyPrepaidCardParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "index",
                        "type": "u64"
                    },
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "cardType",
                        "type": "string"
                    }
                ]
            }
        },
        {
            "name": "DepositParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "amount",
                        "type": "u64"
                    },
                    {
                        "name": "sourceTokenAddress",
                        "type": "publicKey"
                    }
                ]
            }
        },
        {
            "name": "InitCardConfigParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "nativeFee",
                        "type": "u64"
                    },
                    {
                        "name": "nonNativeFee",
                        "type": "u64"
                    },
                    {
                        "name": "revenueFee",
                        "type": "u64"
                    },
                    {
                        "name": "cardVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "revenueVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "commissionVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "minCardAmount",
                        "type": "u64"
                    },
                    {
                        "name": "maxCardAmount",
                        "type": "u64"
                    },
                    {
                        "name": "dailyCardBuyLimit",
                        "type": "u64"
                    },
                    {
                        "name": "feeTier",
                        "type": {
                            "vec": {
                                "defined": "FeeTier"
                            }
                        }
                    }
                ]
            }
        },
        {
            "name": "SetCardConfigParams",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "nativeFee",
                        "type": "u64"
                    },
                    {
                        "name": "nonNativeFee",
                        "type": "u64"
                    },
                    {
                        "name": "revenueFee",
                        "type": "u64"
                    },
                    {
                        "name": "cardVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "revenueVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "commissionVault",
                        "type": "publicKey"
                    },
                    {
                        "name": "zicOwner",
                        "type": "publicKey"
                    },
                    {
                        "name": "minCardAmount",
                        "type": "u64"
                    },
                    {
                        "name": "maxCardAmount",
                        "type": "u64"
                    },
                    {
                        "name": "dailyCardBuyLimit",
                        "type": "u64"
                    },
                    {
                        "name": "feeTier",
                        "type": {
                            "vec": {
                                "defined": "FeeTier"
                            }
                        }
                    }
                ]
            }
        },
        {
            "name": "ProviderConfig",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "minCardAmount",
                        "type": "u64"
                    },
                    {
                        "name": "maxCardAmount",
                        "type": "u64"
                    },
                    {
                        "name": "feeTiers",
                        "type": {
                            "defined": "FeeMap"
                        }
                    }
                ]
            }
        },
        {
            "name": "FeeTier",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "minAmount",
                        "type": "u64"
                    },
                    {
                        "name": "maxAmount",
                        "type": "u64"
                    },
                    {
                        "name": "fee",
                        "type": "u64"
                    }
                ]
            }
        },
        {
            "name": "FeeMap",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "tiers",
                        "type": {
                            "vec": {
                                "defined": "FeeTier"
                            }
                        }
                    }
                ]
            }
        },
        {
            "name": "Fees",
            "type": {
                "kind": "struct",
                "fields": [
                    {
                        "name": "tokenAddress",
                        "type": "publicKey"
                    },
                    {
                        "name": "fee",
                        "type": "u64"
                    }
                ]
            }
        }
    ],
    "events": [
        {
            "name": "CardBotPurchase",
            "fields": [
                {
                    "name": "userId",
                    "type": "string",
                    "index": false
                },
                {
                    "name": "from",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "to",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "amount",
                    "type": "u64",
                    "index": false
                }
            ]
        },
        {
            "name": "PrepaidCardDirectPurshase",
            "fields": [
                {
                    "name": "index",
                    "type": "u64",
                    "index": false
                },
                {
                    "name": "from",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "to",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "amount",
                    "type": "u64",
                    "index": false
                }
            ]
        },
        {
            "name": "PrepaidDigitalCardPurshase",
            "fields": [
                {
                    "name": "index",
                    "type": "u64",
                    "index": false
                },
                {
                    "name": "from",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "to",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "amount",
                    "type": "u64",
                    "index": false
                }
            ]
        },
        {
            "name": "DepositToUserPda",
            "fields": [
                {
                    "name": "from",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "to",
                    "type": "publicKey",
                    "index": false
                },
                {
                    "name": "amount",
                    "type": "u64",
                    "index": false
                }
            ]
        }
    ],
    "errors": [
        {
            "code": 6000,
            "name": "InvalidIndex",
            "msg": "The provided index is invalid."
        },
        {
            "code": 6001,
            "name": "InvalidMint",
            "msg": "The provided token is invalid."
        },
        {
            "code": 6002,
            "name": "InvalidOwner",
            "msg": "The provided owner is invalid."
        },
        {
            "code": 6003,
            "name": "InvalidUser",
            "msg": "The provided user is invalid."
        },
        {
            "code": 6004,
            "name": "InvalidAmount",
            "msg": "The amount entered is invalid."
        },
        {
            "code": 6005,
            "name": "NotEnoughBalance",
            "msg": "You do not have enough balance."
        },
        {
            "code": 6006,
            "name": "AmountNotWithinCardBuyRange",
            "msg": "Amount falls off the min-max card buy range."
        },
        {
            "code": 6007,
            "name": "DailyBuyLimitExceeded",
            "msg": "BuyCard Limit Exceeded for the day."
        },
        {
            "code": 6008,
            "name": "VotingCapExceeded",
            "msg": "Voting amount has exceeded the cap."
        },
        {
            "code": 6009,
            "name": "AlreadyVoted",
            "msg": "Voter has already voted."
        },
        {
            "code": 6010,
            "name": "AlreadyWithdrawn",
            "msg": "Voter has already withdrawn."
        },
        {
            "code": 6011,
            "name": "InvalidTime",
            "msg": "Invalid time"
        }
    ]
}
