@blockchainbros/vidar-amm-sdk
Version:
TypeScript SDK for Vidar AMM on Solana
337 lines • 10.2 kB
TypeScript
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