export type CardinalStakePool = {
    version: "2.2.1";
    name: "cardinal_stake_pool";
    instructions: [
        {
            name: "initIdentifier";
            accounts: [
                {
                    name: "identifier";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "payer";
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: "systemProgram";
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [];
        },
        {
            name: "initPool";
            accounts: [
                {
                    name: "stakePool";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "identifier";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "authority";
                    isMut: false;
                    isSigner: true;
                },
                {
                    name: "payer";
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: "systemProgram";
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [
                {
                    name: "ix";
                    type: {
                        defined: "InitPoolIx";
                    };
                }
            ];
        },
        {
            name: "stakeProgrammable";
            accounts: [
                {
                    name: "stakeEntry";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "rewardEntry";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "rewardDistributor";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "stakePool";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "originalMint";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "user";
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: "userOriginalMintTokenAccount";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "userOriginalMintTokenRecord";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "mintMetadata";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "mintEdition";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "authorizationRules";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "sysvarInstructions";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "tokenProgram";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "tokenMetadataProgram";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "authorizationRulesProgram";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "rewardDistributorProgram";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "systemProgram";
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [
                {
                    name: "amount";
                    type: "u64";
                }
            ];
        },
        {
            name: "unstakeProgrammable";
            accounts: [
                {
                    name: "stakeEntry";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "stakePool";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "originalMint";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "user";
                    isMut: true;
                    isSigner: true;
                },
                {
                    name: "userOriginalMintTokenAccount";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "userOriginalMintTokenRecord";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "mintMetadata";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "mintEdition";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "authorizationRules";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "sysvarInstructions";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "tokenProgram";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "tokenMetadataProgram";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "authorizationRulesProgram";
                    isMut: false;
                    isSigner: false;
                },
                {
                    name: "systemProgram";
                    isMut: false;
                    isSigner: false;
                }
            ];
            args: [];
        },
        {
            name: "updateTotalStakeSeconds";
            accounts: [
                {
                    name: "stakeEntry";
                    isMut: true;
                    isSigner: false;
                },
                {
                    name: "lastStaker";
                    isMut: true;
                    isSigner: true;
                }
            ];
            args: [];
        }
    ];
    accounts: [
        {
            name: "groupStakeEntry";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "bump";
                        type: "u8";
                    },
                    {
                        name: "groupId";
                        type: "publicKey";
                    },
                    {
                        name: "authority";
                        type: "publicKey";
                    },
                    {
                        name: "stakeEntries";
                        type: {
                            vec: "publicKey";
                        };
                    },
                    {
                        name: "changedAt";
                        type: "i64";
                    },
                    {
                        name: "groupCooldownSeconds";
                        type: "u32";
                    },
                    {
                        name: "groupStakeSeconds";
                        type: "u32";
                    },
                    {
                        name: "groupCooldownStartSeconds";
                        type: {
                            option: "i64";
                        };
                    }
                ];
            };
        },
        {
            name: "stakeEntry";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "bump";
                        type: "u8";
                    },
                    {
                        name: "pool";
                        type: "publicKey";
                    },
                    {
                        name: "amount";
                        type: "u64";
                    },
                    {
                        name: "originalMint";
                        type: "publicKey";
                    },
                    {
                        name: "originalMintClaimed";
                        type: "bool";
                    },
                    {
                        name: "lastStaker";
                        type: "publicKey";
                    },
                    {
                        name: "lastStakedAt";
                        type: "i64";
                    },
                    {
                        name: "totalStakeSeconds";
                        type: "u128";
                    },
                    {
                        name: "stakeMintClaimed";
                        type: "bool";
                    },
                    {
                        name: "kind";
                        type: "u8";
                    },
                    {
                        name: "stakeMint";
                        type: {
                            option: "publicKey";
                        };
                    },
                    {
                        name: "cooldownStartSeconds";
                        type: {
                            option: "i64";
                        };
                    },
                    {
                        name: "lastUpdatedAt";
                        type: {
                            option: "i64";
                        };
                    },
                    {
                        name: "grouped";
                        type: {
                            option: "bool";
                        };
                    }
                ];
            };
        },
        {
            name: "stakePool";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "bump";
                        type: "u8";
                    },
                    {
                        name: "identifier";
                        type: "u64";
                    },
                    {
                        name: "authority";
                        type: "publicKey";
                    },
                    {
                        name: "requiresCreators";
                        type: {
                            vec: "publicKey";
                        };
                    },
                    {
                        name: "requiresCollections";
                        type: {
                            vec: "publicKey";
                        };
                    },
                    {
                        name: "requiresAuthorization";
                        type: "bool";
                    },
                    {
                        name: "overlayText";
                        type: "string";
                    },
                    {
                        name: "imageUri";
                        type: "string";
                    },
                    {
                        name: "resetOnStake";
                        type: "bool";
                    },
                    {
                        name: "totalStaked";
                        type: "u32";
                    },
                    {
                        name: "cooldownSeconds";
                        type: {
                            option: "u32";
                        };
                    },
                    {
                        name: "minStakeSeconds";
                        type: {
                            option: "u32";
                        };
                    },
                    {
                        name: "endDate";
                        type: {
                            option: "i64";
                        };
                    },
                    {
                        name: "doubleOrResetEnabled";
                        type: {
                            option: "bool";
                        };
                    }
                ];
            };
        },
        {
            name: "stakeBooster";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "bump";
                        type: "u8";
                    },
                    {
                        name: "stakePool";
                        type: "publicKey";
                    },
                    {
                        name: "identifier";
                        type: "u64";
                    },
                    {
                        name: "paymentAmount";
                        type: "u64";
                    },
                    {
                        name: "paymentMint";
                        type: "publicKey";
                    },
                    {
                        name: "paymentManager";
                        type: "publicKey";
                    },
                    {
                        name: "paymentRecipient";
                        type: "publicKey";
                    },
                    {
                        name: "boostSeconds";
                        type: "u128";
                    },
                    {
                        name: "startTimeSeconds";
                        type: "i64";
                    }
                ];
            };
        },
        {
            name: "stakeAuthorizationRecord";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "bump";
                        type: "u8";
                    },
                    {
                        name: "pool";
                        type: "publicKey";
                    },
                    {
                        name: "mint";
                        type: "publicKey";
                    }
                ];
            };
        },
        {
            name: "identifier";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "bump";
                        type: "u8";
                    },
                    {
                        name: "count";
                        type: "u64";
                    }
                ];
            };
        }
    ];
    types: [
        {
            name: "InitGroupEntryIx";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "groupId";
                        type: "publicKey";
                    },
                    {
                        name: "groupCooldownSeconds";
                        type: {
                            option: "u32";
                        };
                    },
                    {
                        name: "groupStakeSeconds";
                        type: {
                            option: "u32";
                        };
                    }
                ];
            };
        },
        {
            name: "InitPoolIx";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "overlayText";
                        type: "string";
                    },
                    {
                        name: "imageUri";
                        type: "string";
                    },
                    {
                        name: "requiresCollections";
                        type: {
                            vec: "publicKey";
                        };
                    },
                    {
                        name: "requiresCreators";
                        type: {
                            vec: "publicKey";
                        };
                    },
                    {
                        name: "requiresAuthorization";
                        type: "bool";
                    },
                    {
                        name: "authority";
                        type: "publicKey";
                    },
                    {
                        name: "resetOnStake";
                        type: "bool";
                    },
                    {
                        name: "cooldownSeconds";
                        type: {
                            option: "u32";
                        };
                    },
                    {
                        name: "minStakeSeconds";
                        type: {
                            option: "u32";
                        };
                    },
                    {
                        name: "endDate";
                        type: {
                            option: "i64";
                        };
                    },
                    {
                        name: "doubleOrResetEnabled";
                        type: {
                            option: "bool";
                        };
                    }
                ];
            };
        },
        {
            name: "InitStakeMintIx";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "name";
                        type: "string";
                    },
                    {
                        name: "symbol";
                        type: "string";
                    }
                ];
            };
        },
        {
            name: "ReassignStakeEntryIx";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "target";
                        type: "publicKey";
                    }
                ];
            };
        },
        {
            name: "BoostStakeEntryIx";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "secondsToBoost";
                        type: "u64";
                    }
                ];
            };
        },
        {
            name: "InitStakeBoosterIx";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "stakePool";
                        type: "publicKey";
                    },
                    {
                        name: "identifier";
                        type: "u64";
                    },
                    {
                        name: "paymentAmount";
                        type: "u64";
                    },
                    {
                        name: "paymentMint";
                        type: "publicKey";
                    },
                    {
                        name: "paymentManager";
                        type: "publicKey";
                    },
                    {
                        name: "boostSeconds";
                        type: "u128";
                    },
                    {
                        name: "startTimeSeconds";
                        type: "i64";
                    }
                ];
            };
        },
        {
            name: "UpdateStakeBoosterIx";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "paymentAmount";
                        type: "u64";
                    },
                    {
                        name: "paymentMint";
                        type: "publicKey";
                    },
                    {
                        name: "paymentManager";
                        type: "publicKey";
                    },
                    {
                        name: "boostSeconds";
                        type: "u128";
                    },
                    {
                        name: "startTimeSeconds";
                        type: "i64";
                    }
                ];
            };
        },
        {
            name: "UpdatePoolIx";
            type: {
                kind: "struct";
                fields: [
                    {
                        name: "imageUri";
                        type: {
                            option: "string";
                        };
                    },
                    {
                        name: "overlayText";
                        type: "string";
                    },
                    {
                        name: "requiresCollections";
                        type: {
                            vec: "publicKey";
                        };
                    },
                    {
                        name: "requiresCreators";
                        type: {
                            vec: "publicKey";
                        };
                    },
                    {
                        name: "requiresAuthorization";
                        type: "bool";
                    },
                    {
                        name: "authority";
                        type: "publicKey";
                    },
                    {
                        name: "resetOnStake";
                        type: "bool";
                    },
                    {
                        name: "cooldownSeconds";
                        type: {
                            option: "u32";
                        };
                    },
                    {
                        name: "minStakeSeconds";
                        type: {
                            option: "u32";
                        };
                    },
                    {
                        name: "endDate";
                        type: {
                            option: "i64";
                        };
                    },
                    {
                        name: "doubleOrResetEnabled";
                        type: {
                            option: "bool";
                        };
                    }
                ];
            };
        },
        {
            name: "StakeEntryKind";
            type: {
                kind: "enum";
                variants: [
                    {
                        name: "Permissionless";
                    },
                    {
                        name: "Permissioned";
                    }
                ];
            };
        }
    ];
    errors: [
        {
            code: 6000;
            name: "InvalidOriginalMint";
            msg: "Original mint is invalid";
        },
        {
            code: 6001;
            name: "InvalidTokenManagerMint";
            msg: "Token Manager mint is invalid";
        },
        {
            code: 6002;
            name: "InvalidUserOriginalMintTokenAccount";
            msg: "Invalid user original mint token account";
        },
        {
            code: 6003;
            name: "InvalidUserMintTokenAccount";
            msg: "Invalid user token manager mint account";
        },
        {
            code: 6004;
            name: "InvalidStakeEntryOriginalMintTokenAccount";
            msg: "Invalid stake entry original mint token account";
        },
        {
            code: 6005;
            name: "InvalidStakeEntryMintTokenAccount";
            msg: "Invalid stake entry token manager mint token account";
        },
        {
            code: 6006;
            name: "InvalidUnstakeUser";
            msg: "Invalid unstake user only last staker can unstake";
        },
        {
            code: 6007;
            name: "InvalidStakePool";
            msg: "Invalid stake pool";
        },
        {
            code: 6008;
            name: "NoMintMetadata";
            msg: "No mint metadata";
        },
        {
            code: 6009;
            name: "MintNotAllowedInPool";
            msg: "Mint not allowed in this pool";
        },
        {
            code: 6010;
            name: "InvalidPoolAuthority";
            msg: "Invalid stake pool authority";
        },
        {
            code: 6011;
            name: "InvalidStakeType";
            msg: "Invalid stake type";
        },
        {
            code: 6012;
            name: "InvalidStakeEntryStakeTokenAccount";
            msg: "Invalid stake entry stake token account";
        },
        {
            code: 6013;
            name: "InvalidLastStaker";
            msg: "Invalid last staker";
        },
        {
            code: 6014;
            name: "InvalidTokenManagerProgram";
            msg: "Invalid token manager program";
        },
        {
            code: 6015;
            name: "InvalidReceiptMint";
            msg: "Invalid receipt mint";
        },
        {
            code: 6016;
            name: "StakeEntryAlreadyStaked";
            msg: "Stake entry already has tokens staked";
        },
        {
            code: 6017;
            name: "InvalidAuthority";
            msg: "Invalid authority";
        },
        {
            code: 6018;
            name: "CannotCloseStakedEntry";
            msg: "Cannot close staked entry";
        },
        {
            code: 6019;
            name: "CannotClosePoolWithStakedEntries";
            msg: "Cannot close staked entry";
        },
        {
            code: 6020;
            name: "CooldownSecondRemaining";
            msg: "Token still has some cooldown seconds remaining";
        },
        {
            code: 6021;
            name: "MinStakeSecondsNotSatisfied";
            msg: "Minimum stake seconds not satisfied";
        },
        {
            code: 6022;
            name: "InvalidStakeAuthorizationRecord";
            msg: "Invalid stake authorization provided";
        },
        {
            code: 6023;
            name: "InvalidMintMetadata";
            msg: "Invalid mint metadata";
        },
        {
            code: 6024;
            name: "StakePoolHasEnded";
            msg: "Stake pool has ended";
        },
        {
            code: 6025;
            name: "InvalidMintMetadataOwner";
            msg: "Mint metadata is owned by the incorrect program";
        },
        {
            code: 6026;
            name: "StakeMintAlreadyInitialized";
            msg: "Stake mint already intialized";
        },
        {
            code: 6027;
            name: "InvalidStakeEntry";
            msg: "Invalid stake entry";
        },
        {
            code: 6028;
            name: "CannotUpdateUnstakedEntry";
            msg: "Cannot update unstaked entry";
        },
        {
            code: 6100;
            name: "CannotBoostUnstakedToken";
            msg: "Cannot boost unstaked token";
        },
        {
            code: 6101;
            name: "CannotBoostMoreThanCurrentTime";
            msg: "Cannot boost past current time less than start time";
        },
        {
            code: 6102;
            name: "InvalidBoostPayerTokenAccount";
            msg: "Invalid boost payer token account";
        },
        {
            code: 6103;
            name: "InvalidBoostPaymentRecipientTokenAccount";
            msg: "Invalid boost payment recipient token account";
        },
        {
            code: 6104;
            name: "InvalidPaymentManager";
            msg: "Invalid payment manager";
        },
        {
            code: 6105;
            name: "CannotBoostFungibleToken";
            msg: "Cannot boost a fungible token stake entry";
        },
        {
            code: 6120;
            name: "GroupedStakeEntry";
            msg: "Grouped stake entry";
        },
        {
            code: 6121;
            name: "UngroupedStakeEntry";
            msg: "Ungrouped stake entry";
        },
        {
            code: 6122;
            name: "MinGroupSecondsNotSatisfied";
            msg: "Minimum group seconds not satisfied";
        },
        {
            code: 6123;
            name: "ActiveGroupEntry";
            msg: "Active group entry";
        },
        {
            code: 6124;
            name: "StakeEntryNotFoundInGroup";
            msg: "Stake entry not found in group";
        },
        {
            code: 6130;
            name: "InvalidFundsMint";
            msg: "Invalid funds mint";
        },
        {
            code: 6131;
            name: "InvalidMintForTokenAccount";
            msg: "Invalid mint for token account";
        },
        {
            code: 6132;
            name: "StakeEntryFundsTokenAccountEmpty";
            msg: "Stake entry funds token account is empty";
        }
    ];
};
export declare const IDL: CardinalStakePool;
//# sourceMappingURL=cardinalStakePool.d.ts.map