UNPKG

@blockchainbros/vidar-amm-sdk

Version:
337 lines 10.2 kB
import { Program } from "@coral-xyz/anchor"; import { PublicKey } from "@solana/web3.js"; import BN from "bn.js"; /** Accounts for initializePool instruction */ export interface InitializePoolAccounts { payer: PublicKey; pool: PublicKey; authority: PublicKey; tokenA: PublicKey; tokenB: PublicKey; vaultA: PublicKey; vaultB: PublicKey; feeVault: PublicKey; stakingRewardVault: PublicKey; lpStakeVault: PublicKey; lpMint: PublicKey; systemProgram?: PublicKey; tokenProgram?: PublicKey; rent?: PublicKey; } export interface InitPoolAccounts { pool: PublicKey; admin: PublicKey; authority: PublicKey; vaultA: PublicKey; vaultB: PublicKey; feeVault: PublicKey; stakingRewardVault: PublicKey; lpStakeVault: PublicKey; } export interface InitPoolMetaAccounts { payer: PublicKey; pool: PublicKey; authority: PublicKey; tokenA: PublicKey; tokenB: PublicKey; lpMint: PublicKey; systemProgram?: PublicKey; rent?: PublicKey; } export interface InitializeStakeAccounts { user: PublicKey; pool: PublicKey; stakeVault: PublicKey; userLpToken: PublicKey; authority: PublicKey; stakeAccount: PublicKey; tokenProgram?: PublicKey; systemProgram?: PublicKey; rent?: PublicKey; } /** Accounts for initializePosition instruction */ export interface InitializePositionAccounts { user: PublicKey; pool: PublicKey; position: PublicKey; systemProgram?: PublicKey; rent?: PublicKey; } /** Accounts for refreshOracle instruction */ export interface RefreshOracleAccounts { pool: PublicKey; vaultA: PublicKey; vaultB: PublicKey; } /** Accounts for createLiquidityPosition instruction */ export interface CreateLiquidityAccounts { user: PublicKey; pool: PublicKey; position: PublicKey; systemProgram?: PublicKey; rent?: PublicKey; } /** Accounts for addLiquidity instruction */ export interface AddLiquidityAccounts { user: PublicKey; pool: PublicKey; userTokenA: PublicKey; userTokenB: PublicKey; vaultA: PublicKey; vaultB: PublicKey; lpMint: PublicKey; userLpToken: PublicKey; authority: PublicKey; position: PublicKey; tokenProgram?: PublicKey; systemProgram?: PublicKey; rent?: PublicKey; } /** Accounts for removeLiquidity instruction */ export interface RemoveLiquidityAccounts { user: PublicKey; pool: PublicKey; vaultA: PublicKey; vaultB: PublicKey; userTokenA: PublicKey; userTokenB: PublicKey; lpMint: PublicKey; userLpToken: PublicKey; position: PublicKey; authority: PublicKey; tokenProgram?: PublicKey; } /** Accounts for swap instruction */ export interface SwapAccounts { user: PublicKey; pool: PublicKey; userSource: PublicKey; userDestination: PublicKey; vaultSource: PublicKey; vaultDestination: PublicKey; vaultDestinationMint: PublicKey; feeVault: PublicKey; stakingRewardVault: PublicKey; authority: PublicKey; vaultSourceMint: PublicKey; treasuryVault: PublicKey; associatedTokenProgram?: PublicKey; tokenProgram?: PublicKey; systemProgram?: PublicKey; } /** Accounts for swapCommit instruction */ export interface SwapCommitAccounts { user: PublicKey; pool: PublicKey; commit: PublicKey; commitIndex: PublicKey; systemProgram?: PublicKey; } /** Accounts for swapReveal instruction */ export interface SwapRevealAccounts { user: PublicKey; pool: PublicKey; userSource: PublicKey; userDest: PublicKey; vaultSource: PublicKey; vaultDest: PublicKey; vaultDestinationMint: PublicKey; feeVault: PublicKey; stakingRewardVault: PublicKey; authority: PublicKey; tokenProgram?: PublicKey; systemProgram?: PublicKey; commitIndex: PublicKey; commit: PublicKey; vaultSourceMint: PublicKey; treasuryVault: PublicKey; associatedTokenProgram?: PublicKey; } export interface CancelCommitAccounts { caller: PublicKey; commit: PublicKey; pool: PublicKey; commitIndex: PublicKey; refundTo: PublicKey; user: PublicKey; } /** Accounts for stake instruction */ export interface StakeAccounts { user: PublicKey; pool: PublicKey; userLpToken: PublicKey; stakeVault: PublicKey; authority: PublicKey; stakeAccount: PublicKey; tokenProgram?: PublicKey; systemProgram?: PublicKey; rent?: PublicKey; } /** Accounts for emergencyWithdraw instruction */ export interface EmergencyWithdrawAccounts { user: PublicKey; stakeAccount: PublicKey; pool: PublicKey; stakeVault: PublicKey; userLpToken: PublicKey; authority: PublicKey; tokenProgram?: PublicKey; } /** Accounts for claimProtocolFees instruction */ export interface ClaimProtocolFeesAccounts { pool: PublicKey; feeVault: PublicKey; treasury: PublicKey; authority: PublicKey; tokenProgram?: PublicKey; } /** Accounts for claimRemainingFees instruction */ export interface ClaimRemainingFeesAccounts { pool: PublicKey; admin: PublicKey; vaultSource: PublicKey; destination: PublicKey; authority: PublicKey; tokenProgram?: PublicKey; } /** Accounts for claimRewards instruction */ export interface ClaimRewardsAccounts { user: PublicKey; pool: PublicKey; stakeAccount: PublicKey; stakingRewardVault: PublicKey; lpStakeVault: PublicKey; userRewardAccount: PublicKey; authority: PublicKey; tokenProgram?: PublicKey; } /** Accounts for claimStakingFees instruction */ export interface ClaimStakingFeesAccounts { user: PublicKey; pool: PublicKey; stakeAccount: PublicKey; stakingRewardVault: PublicKey; userRewardAccount: PublicKey; authority: PublicKey; tokenProgram?: PublicKey; } /** Accounts for initializeRewardSchedule instruction */ export interface InitializeRewardScheduleAccounts { payer: PublicKey; rewardSchedule: PublicKey; pool: PublicKey; systemProgram?: PublicKey; } /** Accounts for configurePool instruction */ export interface ConfigurePoolAccounts { pool: PublicKey; admin: PublicKey; } /** Accounts for unstake instruction */ export interface UnstakeAccounts { user: PublicKey; pool: PublicKey; userLpToken: PublicKey; stakeVault: PublicKey; stakeAccount: PublicKey; authority: PublicKey; tokenProgram?: PublicKey; } /** Accounts for updateInternalOracle instruction */ export interface UpdateInternalOracleAccounts { pool: PublicKey; admin: PublicKey; } export interface InitializePoolParams { feeBasisPoints: number; isStable: number; } export interface AddLiquidityParams { amountA: BN; amountB: BN; } export interface RemoveLiquidityParams { lpAmount: BN; } export interface SwapArgs { amountIn: BN; minAmountOut: BN; deadline: BN; } export interface RevealArgs extends SwapArgs { nonce: BN; commitSlot: BN; } export interface StakeParams { amount: BN; } export interface RewardScheduleParams { rewardMint: PublicKey; rewardVault: PublicKey; totalRewards: BN; startTime: BN; endTime: BN; rewardsPerSecond: BN; } export type OracleUpdateSource = { Manual: BN; } | { Twap: null; }; export interface SetOraclePriceArgs { source: OracleUpdateSource; } export interface RefreshOracleArgs { poolKey: PublicKey; } /** --- Helper functions --- */ export declare function initializePool(program: Program, accounts: { [K in keyof InitializePoolAccounts]: PublicKey; }, params: InitializePoolParams): Promise<import("@solana/web3.js").Transaction>; export declare function initializePosition(program: Program, accounts: { [key: string]: PublicKey; }): Promise<import("@solana/web3.js").Transaction>; export declare function createLiquidityPosition(program: Program, accounts: { [key: string]: PublicKey; }): Promise<import("@solana/web3.js").Transaction>; export declare function addLiquidity(program: Program, accounts: { [key: string]: PublicKey; }, params: AddLiquidityParams): Promise<import("@solana/web3.js").Transaction>; export declare function removeLiquidity(program: Program, accounts: { [key: string]: PublicKey; }, params: RemoveLiquidityParams): Promise<import("@solana/web3.js").Transaction>; export declare function swap(program: Program, accounts: { [key: string]: PublicKey; }, args: SwapArgs): Promise<import("@solana/web3.js").Transaction>; export declare function swapReveal(program: Program, accounts: { [key: string]: PublicKey; }, args: RevealArgs): Promise<import("@solana/web3.js").Transaction>; export declare function stake(program: Program, accounts: { [key: string]: PublicKey; }, params: StakeParams): Promise<import("@solana/web3.js").Transaction>; export declare function initializeStake(program: Program, accounts: { [key: string]: PublicKey; }, params: StakeParams): Promise<import("@solana/web3.js").Transaction>; export declare function unstake(program: Program, accounts: { [key: string]: PublicKey; }, params: StakeParams): Promise<import("@solana/web3.js").Transaction>; export declare function claimRewards(program: Program, accounts: { [key: string]: PublicKey; }): Promise<import("@solana/web3.js").Transaction>; export declare function claimStakingFees(program: Program, accounts: { [key: string]: PublicKey; }): Promise<import("@solana/web3.js").Transaction>; export declare function claimProtocolFees(program: Program, accounts: { [key: string]: PublicKey; }): Promise<import("@solana/web3.js").Transaction>; export declare function emergencyWithdraw(program: Program, accounts: { [key: string]: PublicKey; }): Promise<import("@solana/web3.js").Transaction>; export declare function updateInternalOracle(program: Program, accounts: { [key: string]: PublicKey; }, args: SetOraclePriceArgs): Promise<import("@solana/web3.js").Transaction>; export declare function configurePool(program: Program, accounts: { pool: PublicKey; admin: PublicKey; }, feeBasisPoints: number, isStable: number, pause: number): Promise<import("@solana/web3.js").Transaction>; //# sourceMappingURL=types.d.ts.map