test-raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
123 lines (108 loc) • 3.15 kB
text/typescript
import { PublicKey, Keypair, Signer, TransactionInstruction, Transaction } from "@solana/web3.js";
import BN from "bn.js";
import { TokenAmount, Price, Percent, Token } from "../../module";
import { ClmmPoolInfo } from "../clmm";
import { TransferAmountFee } from "../type";
import { PoolKeys, ApiV3PoolInfoItem } from "../../api/type";
export interface ComputeAmountOutAmmLayout {
amountIn: TransferAmountFee;
amountOut: TransferAmountFee;
minAmountOut: TransferAmountFee;
currentPrice: Price | undefined;
executionPrice: Price | null;
priceImpact: Percent;
fee: TokenAmount[];
routeType: "amm";
poolInfo: ApiV3PoolInfoItem[];
poolKey: PoolKeys[];
remainingAccounts: PublicKey[][];
poolReady: boolean;
poolType: "CLMM" | "STABLE" | undefined;
feeConfig?: {
feeAmount: BN;
feeAccount: PublicKey;
};
expirationTime: number | undefined;
}
export interface ComputeAmountOutRouteLayout {
amountIn: TransferAmountFee;
amountOut: TransferAmountFee;
minAmountOut: TransferAmountFee;
currentPrice: Price | undefined;
executionPrice: Price | null;
priceImpact: Percent;
fee: TokenAmount[];
routeType: "route";
poolInfo: ApiV3PoolInfoItem[];
poolKey: PoolKeys[];
remainingAccounts: (PublicKey[] | undefined)[];
minMiddleAmountFee: TokenAmount | undefined;
middleToken: Token;
poolReady: boolean;
poolType: (string | undefined)[];
feeConfig?: {
feeAmount: BN;
feeAccount: PublicKey;
};
expirationTime: number | undefined;
}
export type ComputeAmountOutLayout = ComputeAmountOutAmmLayout | ComputeAmountOutRouteLayout;
export type MakeSwapInstructionParam = {
ownerInfo: {
wallet: PublicKey;
// tokenAccountA: PublicKey
// tokenAccountB: PublicKey
sourceToken: PublicKey;
routeToken?: PublicKey;
destinationToken: PublicKey;
userPdaAccount?: PublicKey;
};
inputMint: PublicKey;
routeProgram: PublicKey;
swapInfo: ComputeAmountOutLayout;
};
export interface PoolAccountInfoV4 {
ammId: string;
status: BN;
baseDecimals: number;
quoteDecimals: number;
lpDecimals: number;
baseReserve: BN;
quoteReserve: BN;
lpSupply: BN;
startTime: BN;
}
export interface ReturnTypeFetchMultipleInfo {
[ammId: string]: PoolAccountInfoV4;
}
export type ReturnTypeGetAddLiquidityDefaultPool = ApiV3PoolInfoItem | undefined;
export interface ReturnTypeMakeSwapInstruction {
signers: (Keypair | Signer)[];
instructions: TransactionInstruction[];
instructionTypes: string[];
address: { [key: string]: PublicKey };
lookupTableAddress: string[];
}
export interface ReturnTypeMakeSwapTransaction {
transactions: {
transaction: Transaction;
signer: (Keypair | Signer)[];
}[];
address: { [key: string]: PublicKey };
}
export type RoutePathType = {
[routeMint: string]: {
mintProgram: PublicKey;
in: PoolKeys[];
out: PoolKeys[];
mDecimals: number;
};
};
export interface ReturnTypeGetAllRoute {
directPath: PoolKeys[];
addLiquidityPools: ApiV3PoolInfoItem[];
routePathDict: RoutePathType;
needSimulate: ApiV3PoolInfoItem[];
needTickArray: ClmmPoolInfo[];
needCheckToken: string[];
}