UNPKG

goosefx-stake-rewards-sdk

Version:

A SDK for interfacing with the GooseFX stake rewards program

1,528 lines 62.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IDL = void 0; exports.IDL = { "version": "0.1.0", "name": "gfx_stake_rewards", "docs": [ "See this module for instruction documentation." ], "instructions": [ { "name": "initializeGlobalAccounts", "docs": [ "Initialize global accounts" ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "payerGofx", "isMut": true, "isSigner": false }, { "name": "gofxVaultSigner", "isMut": false, "isSigner": false }, { "name": "gofxUnstakedSigner", "isMut": false, "isSigner": false }, { "name": "usdcFeeSigner", "isMut": false, "isSigner": false }, { "name": "usdcRewardSigner", "isMut": false, "isSigner": false }, { "name": "gofxVault", "isMut": true, "isSigner": false, "docs": [ "This instruction initializes the token account", "required for storing staked GOFX." ] }, { "name": "usdcRewardVault", "isMut": true, "isSigner": false, "docs": [ "This instruction initializes the token account", "required for storing USDC rewards." ] }, { "name": "gofxUnstakedVault", "isMut": true, "isSigner": false, "docs": [ "This instruction initializes the token account", "required for storing unstaked GOFX before it is reclaimed." ] }, { "name": "usdcFeeVault", "isMut": true, "isSigner": false, "docs": [ "This instruction initializes the token account", "required for storing USDC fees collected for distribution." ] }, { "name": "gofxMint", "isMut": false, "isSigner": false, "docs": [ "Needed for account initialization" ] }, { "name": "usdcMint", "isMut": false, "isSigner": false, "docs": [ "Needed for account initialization" ] }, { "name": "stakePool", "isMut": true, "isSigner": false, "docs": [ "This instruction initializes the global account struct that stores", "staking information." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "initializeUserAccount", "docs": [ "Initialize user accounts" ], "accounts": [ { "name": "owner", "isMut": true, "isSigner": true, "docs": [ "This address will be the owner of the user metadata account being initialized." ] }, { "name": "funder", "isMut": true, "isSigner": true, "docs": [ "This field allows a separate funder for the rent-exempt balance", "of the accounts being initialized here." ] }, { "name": "stakePool", "isMut": false, "isSigner": false, "docs": [ "Global state" ] }, { "name": "usdcMint", "isMut": false, "isSigner": false }, { "name": "userMetadata", "isMut": true, "isSigner": false, "docs": [ "User metadata account being initialized" ] }, { "name": "userRewardsHoldingAccount", "isMut": true, "isSigner": false, "docs": [ "User's reward are escrowed at TokenAccount of their UserMetadata" ] }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "crank", "docs": [ "Crank" ], "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false, "docs": [ "Global state" ] }, { "name": "usdcFeeVault", "isMut": true, "isSigner": false, "docs": [ "In the SSL swap CPI, this is user_out_ata" ] }, { "name": "usdcRewardVault", "isMut": true, "isSigner": false, "docs": [ "USDC reward account, fees distribute from here." ] }, { "name": "usdcFeeSigner", "isMut": false, "isSigner": false, "docs": [ "that swaps an arbitrary token for USDC." ] }, { "name": "gfxSslProgram", "isMut": false, "isSigner": false, "docs": [ "The swap CPI calls this program" ] }, { "name": "controller", "isMut": false, "isSigner": false }, { "name": "pair", "isMut": true, "isSigner": false }, { "name": "sslIn", "isMut": true, "isSigner": false }, { "name": "sslOut", "isMut": true, "isSigner": false }, { "name": "liabilityVaultIn", "isMut": true, "isSigner": false }, { "name": "swappedLiabilityVaultIn", "isMut": true, "isSigner": false }, { "name": "liabilityVaultOut", "isMut": true, "isSigner": false }, { "name": "swappedLiabilityVaultOut", "isMut": true, "isSigner": false }, { "name": "userInAta", "isMut": true, "isSigner": false, "docs": [ "This must be a USDC token account owned by the [FeesCollected] PDA." ] }, { "name": "feeCollectorAta", "isMut": true, "isSigner": false }, { "name": "userWallet", "isMut": false, "isSigner": false }, { "name": "feeCollector", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "minOut", "type": "u64" } ] }, { "name": "crankV2Single", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false, "docs": [ "Global state" ] }, { "name": "usdcFeeVault", "isMut": true, "isSigner": false, "docs": [ "In the Gamma swap CPI, this is user_out_ata" ] }, { "name": "usdcRewardVault", "isMut": true, "isSigner": false, "docs": [ "USDC reward account, fees distribute from here." ] }, { "name": "usdcFeeSigner", "isMut": false, "isSigner": false, "docs": [ "that swaps an arbitrary token for USDC." ] }, { "name": "gfxAmmProgram", "isMut": false, "isSigner": false, "docs": [ "The swap CPI calls this program" ] }, { "name": "ammAuthority", "isMut": false, "isSigner": false }, { "name": "ammConfig", "isMut": false, "isSigner": false }, { "name": "ammPoolState", "isMut": true, "isSigner": false }, { "name": "ammObservationState", "isMut": true, "isSigner": false }, { "name": "ammInputVault", "isMut": true, "isSigner": false }, { "name": "ammOutputVault", "isMut": true, "isSigner": false }, { "name": "inputTokenMint", "isMut": false, "isSigner": false }, { "name": "outputTokenMint", "isMut": false, "isSigner": false, "docs": [ "USDC mint" ] }, { "name": "userInAta", "isMut": true, "isSigner": false, "docs": [ "This must be a token account owned by the [FeesCollected] PDA." ] }, { "name": "inputTokenProgram", "isMut": false, "isSigner": false }, { "name": "outputTokenProgram", "isMut": false, "isSigner": false, "docs": [ "Token program for USDC mint" ] } ], "args": [ { "name": "minOut", "type": "u64" } ] }, { "name": "crankV2TwoHop", "accounts": [ { "name": "stakePool", "isMut": true, "isSigner": false, "docs": [ "Global state" ] }, { "name": "usdcFeeVault", "isMut": true, "isSigner": false, "docs": [ "In the Gamma swap CPI, this is user_out_ata" ] }, { "name": "usdcRewardVault", "isMut": true, "isSigner": false, "docs": [ "USDC reward account, fees distribute from here." ] }, { "name": "usdcFeeSigner", "isMut": false, "isSigner": false, "docs": [ "that swaps an arbitrary token for USDC." ] }, { "name": "gfxAmmProgram", "isMut": false, "isSigner": false, "docs": [ "The swap CPI calls this program" ] }, { "name": "ammAuthority", "isMut": false, "isSigner": false }, { "name": "ammConfig", "isMut": false, "isSigner": false }, { "name": "hop1AmmPoolState", "isMut": true, "isSigner": false }, { "name": "hop1AmmObservationState", "isMut": true, "isSigner": false }, { "name": "hop1AmmInputVault", "isMut": true, "isSigner": false }, { "name": "hop1AmmOutputVault", "isMut": true, "isSigner": false }, { "name": "userInAta", "isMut": true, "isSigner": false, "docs": [ "This must be a token account owned by the [FeesCollected] PDA." ] }, { "name": "inputTokenMint", "isMut": false, "isSigner": false }, { "name": "intermediateTokenMint", "isMut": false, "isSigner": false }, { "name": "outputTokenMint", "isMut": false, "isSigner": false }, { "name": "inputTokenProgram", "isMut": false, "isSigner": false }, { "name": "intermediateTokenProgram", "isMut": false, "isSigner": false }, { "name": "outputTokenProgram", "isMut": false, "isSigner": false }, { "name": "intermediateTokenAccount", "isMut": false, "isSigner": false, "docs": [ "the first hop.", "This is a token account owned by the [FeesCollected] PDA and is", "provided as input to the second hop." ] }, { "name": "hop2AmmPoolState", "isMut": true, "isSigner": false }, { "name": "hop2AmmObservationState", "isMut": true, "isSigner": false }, { "name": "hop2AmmInputVault", "isMut": true, "isSigner": false }, { "name": "hop2AmmOutputVault", "isMut": true, "isSigner": false } ], "args": [ { "name": "minOutHop1", "type": "u64" }, { "name": "minOutHop2", "type": "u64" } ] }, { "name": "stake", "docs": [ "Stake" ], "accounts": [ { "name": "owner", "isMut": true, "isSigner": true }, { "name": "stakePool", "isMut": true, "isSigner": false, "docs": [ "Global state" ] }, { "name": "userRewardsHoldingAccount", "isMut": true, "isSigner": false, "docs": [ "User's reward are escrowed at TokenAccount of their UserMetadata" ] }, { "name": "usdcRewardVault", "isMut": true, "isSigner": false, "docs": [ "USDC reward account, fees distribute from here." ] }, { "name": "usdcRewardSigner", "isMut": false, "isSigner": false }, { "name": "ownerGofx", "isMut": true, "isSigner": false }, { "name": "gofxVault", "isMut": true, "isSigner": false }, { "name": "userMetadata", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" } ] }, { "name": "unstake", "docs": [ "Unstake" ], "accounts": [ { "name": "owner", "isMut": true, "isSigner": true, "docs": [ "Signer, user metadata account owner" ] }, { "name": "stakePool", "isMut": true, "isSigner": false, "docs": [ "Global state" ] }, { "name": "userRewardsHoldingAccount", "isMut": true, "isSigner": false, "docs": [ "User's reward are escrowed at TokenAccount of their UserMetadata" ] }, { "name": "gofxVault", "isMut": true, "isSigner": false, "docs": [ "Stores the staked GOFX. This instruction will transfer", "GOFX out of here into the `gofx_unstaked_vault`." ] }, { "name": "gofxUnstakedVault", "isMut": true, "isSigner": false, "docs": [ "Stores unstaked GOFX which awaits a claim by an unstaking ticket." ] }, { "name": "gofxVaultSigner", "isMut": false, "isSigner": false }, { "name": "userMetadata", "isMut": true, "isSigner": false, "docs": [ "We add a ticket to this account." ] }, { "name": "usdcRewardVault", "isMut": true, "isSigner": false, "docs": [ "USDC reward account, fees distribute from here." ] }, { "name": "usdcRewardSigner", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "amount", "type": "u64" } ] }, { "name": "resolveUnstakingTicket", "docs": [ "Resolve Unstaking Ticket" ], "accounts": [ { "name": "owner", "isMut": true, "isSigner": true, "docs": [ "The user signing for staking activity on this program." ] }, { "name": "gofxUnstakedVault", "isMut": true, "isSigner": false, "docs": [ "The associated GOFX account for [self.gofx_unstaked_signer],", "and the vault that stores GOFX that will be reclaimed by an unstaking ticket." ] }, { "name": "gofxUnstakedSigner", "isMut": false, "isSigner": false }, { "name": "ownerGofx", "isMut": true, "isSigner": false, "docs": [ "The associated GOFX account for [self.owner]." ] }, { "name": "userMetadata", "isMut": true, "isSigner": false, "docs": [ "The metadata account belonging to [self.owner]." ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "indices", "type": "bytes" } ] }, { "name": "crankUserRewardsHoldingAccount", "docs": [ "Claim a user's share of fees on behalf of them to their holding account" ], "accounts": [ { "name": "user", "isMut": false, "isSigner": false }, { "name": "userRewardsHoldingAccount", "isMut": true, "isSigner": false, "docs": [ "User's reward are escrowed at TokenAccount of their UserMetadata" ] }, { "name": "stakePool", "isMut": true, "isSigner": false, "docs": [ "Global state" ] }, { "name": "gofxVault", "isMut": false, "isSigner": false, "docs": [ "GOFX Staking vault" ] }, { "name": "usdcRewardVault", "isMut": true, "isSigner": false, "docs": [ "USDC reward account, fees distribute from here." ] }, { "name": "usdcRewardSigner", "isMut": false, "isSigner": false }, { "name": "userMetadata", "isMut": true, "isSigner": false, "docs": [ "Stores user staking information" ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "claimFees", "docs": [ "Claim a share of the collected fees." ], "accounts": [ { "name": "owner", "isMut": true, "isSigner": true, "docs": [ "Owner of the user metadata account" ] }, { "name": "usdcMint", "isMut": false, "isSigner": false, "docs": [ "USDC Mint, required for the TokenAccount PDA" ] }, { "name": "userRewardsHoldingAccount", "isMut": true, "isSigner": false, "docs": [ "A user's unique PDA that points to the TokenAccount escrowing", "their balance" ] }, { "name": "userUsdcAccount", "isMut": true, "isSigner": false }, { "name": "usdcRewardSigner", "isMut": false, "isSigner": false }, { "name": "userMetadata", "isMut": true, "isSigner": false, "docs": [ "Stores user staking information" ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "closeUserAccount", "docs": [ "Close a user metadata PDA and return the rent lamports", "once they close out of all interaction with this program." ], "accounts": [ { "name": "owner", "isMut": true, "isSigner": true, "docs": [ "Signer, user metadata account owner" ] }, { "name": "rentRecipient", "isMut": true, "isSigner": false, "docs": [ "Recipient of the lamports that supplied the rent-exempt balance", "of the user metadata account being closed." ] }, { "name": "userMetadata", "isMut": true, "isSigner": false, "docs": [ "Close this account" ] }, { "name": "userRewardsHoldingAccount", "isMut": true, "isSigner": false, "docs": [ "User's reward are escrowed at TokenAccount of their UserMetadata" ] }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "createTokenDistributor", "docs": [ "Create an account configured to distribute token balances fractionally to multiple", "sources. This allows funneling portions of fee revenue from a single intermediary", "to multiple locations, one of them being this program." ], "accounts": [ { "name": "authority", "isMut": true, "isSigner": true, "docs": [ "The authority for the new token distributor.", "Only this signer can configure the [TokenDistributionConfig] accounts", "for this [TokenDistributor]." ] }, { "name": "payer", "isMut": true, "isSigner": true, "docs": [ "Pays for the initialization of the new [TokenDistributor]." ] }, { "name": "tokenDistributor", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "createTokenDistributionConfig", "docs": [ "Create configuration state for the token distribution of a given mint." ], "accounts": [ { "name": "authority", "isMut": true, "isSigner": true, "docs": [ "The authority for the new token distribution config.", "Only this signer can configure the [TokenDistributionConfig] accounts", "for this [TokenDistributor]." ] }, { "name": "payer", "isMut": true, "isSigner": true, "docs": [ "Pays for the initialization of the new [TokenDistributionConfig],", "and the [TokenDistributor]'s associated token account for this mint." ] }, { "name": "mint", "isMut": false, "isSigner": false, "docs": [ "The mint for the newly created [TokenDistributionConfig]." ] }, { "name": "tokenDistributor", "isMut": false, "isSigner": false, "docs": [ "The distributor who will own the ATA for this mint and sign for", "balance transfers during token distribution." ] }, { "name": "tokenDistributionConfig", "isMut": true, "isSigner": false }, { "name": "tokenAct", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "config", "type": { "vec": { "defined": "TokenDestination" } } } ] }, { "name": "configureTokenDistribution", "docs": [ "Configure the token distribution of a given mint." ], "accounts": [ { "name": "authority", "isMut": false, "isSigner": true, "docs": [ "The authority for the new token distribution config.", "Only this signer can configure the [TokenDistributionConfig] accounts", "for this [TokenDistributor]." ] }, { "name": "tokenDistributionConfig", "isMut": true, "isSigner": false } ], "args": [ { "name": "config", "type": { "vec": { "defined": "TokenDestination" } } } ] }, { "name": "crankTokenDistribution", "docs": [ "Distribute tokens to multiple destinations according to a given configuration." ], "accounts": [ { "name": "tokenDistributor", "isMut": false, "isSigner": false }, { "name": "tokenDistributionConfig", "isMut": false, "isSigner": false }, { "name": "from", "isMut": true, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] }, { "name": "initializeTokenCrank", "docs": [ "Initialize a generic token-crank, configured to specific `output-mint` and `destination-signer`" ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "tokenCrank", "isMut": true, "isSigner": true }, { "name": "crankSigner", "isMut": false, "isSigner": false }, { "name": "outputMint", "isMut": false, "isSigner": false, "docs": [ "The crank output mint" ] }, { "name": "crankOutputVault", "isMut": true, "isSigner": false, "docs": [ "This account receives the crank output and transfers it to the distribution vault" ] }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false }, { "name": "associatedTokenProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "destinationOwner", "type": "publicKey" } ] }, { "name": "crankTokensGammaStep", "docs": [ "For a specific crank, swap the balance of one of its crank-signer's token-accounts to the crank output-mint" ], "accounts": [ { "name": "crank", "isMut": true, "isSigner": false, "docs": [ "Crank state" ] }, { "name": "crankSigner", "isMut": false, "isSigner": false }, { "name": "inputTokenMint", "isMut": false, "isSigner": false, "docs": [ "The input token mint" ] }, { "name": "outputTokenMint", "isMut": false, "isSigner": false, "docs": [ "The output token mint" ] }, { "name": "inputTokenAccount", "isMut": true, "isSigner": false }, { "name": "outputTokenAccount", "isMut": true, "isSigner": false }, { "name": "gammaAuthority", "isMut": false, "isSigner": false }, { "name": "gammaConfig", "isMut": false, "isSigner": false }, { "name": "gammaPoolState", "isMut": true, "isSigner": false }, { "name": "gammaPoolObservationState", "isMut": true, "isSigner": false }, { "name": "gammaPoolInputVault", "isMut": true, "isSigner": false }, { "name": "gammaPoolOutputVault", "isMut": true, "isSigner": false }, { "name": "inputTokenProgram", "isMut": false, "isSigner": false }, { "name": "outputTokenProgram", "isMut": false, "isSigner": false }, { "name": "destinationOwner", "isMut": false, "isSigner": false }, { "name": "destinationOutputTokenAccount", "isMut": true, "isSigner": false, "isOptional": true }, { "name": "gammaProgram", "isMut": false, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "minAmountOut", "type": "u64" } ] }, { "name": "initializeLstRewards", "docs": [ "Initialize the LST rewards instance" ], "accounts": [ { "name": "payer", "isMut": true, "isSigner": true }, { "name": "lstRewards", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "authority", "type": "publicKey" }, { "name": "destinationReserveAccount", "type": "publicKey" } ] }, { "name": "updateLstRewardsParams", "docs": [ "Update the params for LSTRewards, such as authority or the destination reserve account" ], "accounts": [ { "name": "authority", "isMut": true, "isSigner": true }, { "name": "lstRewards", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false } ], "args": [ { "name": "authority", "type": { "option": "publicKey" } }, { "name": "destinationReserveAccount", "type": { "option": "publicKey" } } ] }, { "name": "transferLstRewards", "docs": [ "Transfer SOL from rewards native token-account to the destination reserve" ], "accounts": [ { "name": "lstRewards", "isMut": true, "isSigner": false }, { "name": "rewardsTokenAccount", "isMut": true, "isSigner": false }, { "name": "reserveAccount", "isMut": true, "isSigner": false }, { "name": "systemProgram", "isMut": false, "isSigner": false }, { "name": "tokenProgram", "isMut": false, "isSigner": false } ], "args": [] } ], "accounts": [ { "name": "tokenCrank", "docs": [ "A global account that stores the result of cranking multiple tokens owned by", "a particular PDA to a single output mint." ], "type": { "kind": "struct", "fields": [ { "name": "outputMint", "docs": [ "The output mint for token cranks" ], "type": "publicKey" }, { "name": "totalAccumulatedTokens", "docs": [ "A monotonically increasing value, that increments each time the output-mint", "is added to the [OutputVault]'s associated token account" ], "type": "u128" }, { "name": "protocolActivatedAt", "docs": [ "Protocol activation time" ], "type": "i64" }, { "name": "destinationOwner", "docs": [ "The signer of the token-account output tokens are transferred to" ], "type": "publicKey" } ] } }, { "name": "lstRewards", "docs": [ "Account storing information about LSTRewards. This account also acts", "as the signer to transfer SOL from its token-account to a reserve-account." ], "type": { "kind": "struct", "fields": [ { "name": "authority", "docs": [ "The authority of this account.", "Allowed to set a new `authority`, `crank`, or `reserve_account`" ], "type": "publicKey" }, { "name": "reserveAccount", "docs": [ "The reserve stake account that receives SOL from the crank output" ], "type": "publicKey" }, { "name": "totalLamportsDistributed", "docs": [ "The total number of lamports send to the reserve account" ], "type": "u128" } ] } }, { "name": "stakePool", "docs": [ "A global account that stores global staking information." ], "type": { "kind": "struct", "fields": [ { "name": "totalAccumulatedProfit", "docs": [ "A monotonically increasing value, that increments each time", "USDC is added to the [UsdcRewardVault]'s associated USDC account." ], "type": "u64" }, { "name": "pro