UNPKG

goosefx-stake-rewards-sdk

Version:

A SDK for interfacing with the GooseFX stake rewards program

1,520 lines 62.4 kB
export type GfxStakeRewardsProgramTypes = { "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 associ