snapper-sdk
Version:
An SDK for building applications on top of Snapper.
203 lines (200 loc) • 8.98 kB
TypeScript
import { PublicKey, Connection, EpochInfo } from '@solana/web3.js';
import BN__default from 'bn.js';
import { d as ComputeClmmPoolInfo, W as TickArray, T as TickArrayBitmapExtensionType, c as ClmmPoolInfo, o as ClmmPoolRewardLayoutInfo, b as ClmmPoolRewardInfo, z as ReturnTypeFetchExBitmaps, l as ReturnTypeFetchMultiplePoolTickArrays, S as SDKParsedConcentratedInfo, j as ReturnTypeComputeAmountOut, i as ReturnTypeComputeAmountOutFormat, k as ReturnTypeComputeAmountOutBaseOut, g as ReturnTypeGetLiquidityAmountOut } from '../../../type-1e954b38.js';
import { o as ApiV3PoolInfoConcentratedItem, i as ApiV3Token } from '../../../api-3b8b7822.js';
import Decimal from 'decimal.js';
import { TokenAccountRaw } from '../../account/types.js';
import { PoolInfoLayout } from '../layout.js';
import '../../../common/txTool/txType.js';
import 'axios';
import '../../../solana/type.js';
import '@solana/spl-token';
import '../../../api/url.js';
import '../../../common/owner.js';
import '../../../common/txTool/lookupTable.js';
import '../../../module/token.js';
import '../../../common/pubKey.js';
import '../../../common/logger.js';
import '../../../module/currency.js';
import '../../../marshmallow/index.js';
import '../../../marshmallow/buffer-layout.js';
import '../../account/layout.js';
declare class PoolUtils {
static getOutputAmountAndRemainAccounts(poolInfo: ComputeClmmPoolInfo, tickArrayCache: {
[key: string]: TickArray;
}, inputTokenMint: PublicKey, inputAmount: BN__default, sqrtPriceLimitX64?: BN__default, catchLiquidityInsufficient?: boolean): {
allTrade: boolean;
expectedAmountOut: BN__default;
remainingAccounts: PublicKey[];
executionPrice: BN__default;
feeAmount: BN__default;
};
static getInputAmountAndRemainAccounts(poolInfo: ComputeClmmPoolInfo, tickArrayCache: {
[key: string]: TickArray;
}, outputTokenMint: PublicKey, outputAmount: BN__default, sqrtPriceLimitX64?: BN__default): {
expectedAmountIn: BN__default;
remainingAccounts: PublicKey[];
executionPrice: BN__default;
feeAmount: BN__default;
};
static getFirstInitializedTickArray(poolInfo: ComputeClmmPoolInfo, zeroForOne: boolean): {
isExist: true;
startIndex: number;
nextAccountMeta: PublicKey;
} | {
isExist: false;
startIndex: undefined;
nextAccountMeta: undefined;
};
static preInitializedTickArrayStartIndex(poolInfo: ComputeClmmPoolInfo, zeroForOne: boolean): {
isExist: boolean;
nextStartIndex: number;
};
static nextInitializedTickArrayStartIndex(poolInfo: {
tickCurrent: number;
tickSpacing: number;
tickArrayBitmap: BN__default[];
exBitmapInfo: TickArrayBitmapExtensionType;
} | ClmmPoolInfo, lastTickArrayStartIndex: number, zeroForOne: boolean): {
isExist: boolean;
nextStartIndex: number;
};
static updatePoolRewardInfos({ connection, apiPoolInfo, chainTime, poolLiquidity, rewardInfos, }: {
connection: Connection;
apiPoolInfo: ApiV3PoolInfoConcentratedItem;
chainTime: number;
poolLiquidity: BN__default;
rewardInfos: ClmmPoolRewardLayoutInfo[];
}): Promise<ClmmPoolRewardInfo[]>;
static isOverflowDefaultTickarrayBitmap(tickSpacing: number, tickarrayStartIndexs: number[]): boolean;
static tickRange(tickSpacing: number): {
maxTickBoundary: number;
minTickBoundary: number;
};
static get_tick_array_offset(tickarrayStartIndex: number, tickSpacing: number): number;
static fetchExBitmaps({ connection, exBitmapAddress, batchRequest, }: {
connection: Connection;
exBitmapAddress: PublicKey[];
batchRequest: boolean;
}): Promise<ReturnTypeFetchExBitmaps>;
static fetchMultiplePoolTickArrays({ connection, poolKeys, batchRequest, }: {
connection: Connection;
poolKeys: Omit<ComputeClmmPoolInfo, "ammConfig">[];
batchRequest?: boolean;
}): Promise<ReturnTypeFetchMultiplePoolTickArrays>;
static fetchPoolsAccountPosition({ pools, connection, ownerInfo, batchRequest, updateOwnerRewardAndFee, }: {
pools: SDKParsedConcentratedInfo[];
connection: Connection;
ownerInfo: {
wallet: PublicKey;
tokenAccounts: TokenAccountRaw[];
};
batchRequest?: boolean;
updateOwnerRewardAndFee?: boolean;
}): Promise<SDKParsedConcentratedInfo[]>;
static computeAmountOut({ poolInfo, tickArrayCache, baseMint, epochInfo, amountIn, slippage, priceLimit, catchLiquidityInsufficient, }: {
poolInfo: ComputeClmmPoolInfo;
tickArrayCache: {
[key: string]: TickArray;
};
baseMint: PublicKey;
epochInfo: EpochInfo;
amountIn: BN__default;
slippage: number;
priceLimit?: Decimal;
catchLiquidityInsufficient: boolean;
}): ReturnTypeComputeAmountOut;
static computeAmountOutFormat({ poolInfo, tickArrayCache, amountIn, tokenOut: _tokenOut, slippage, epochInfo, catchLiquidityInsufficient, }: {
poolInfo: ComputeClmmPoolInfo;
tickArrayCache: {
[key: string]: TickArray;
};
amountIn: BN__default;
tokenOut: ApiV3Token;
slippage: number;
epochInfo: EpochInfo;
catchLiquidityInsufficient?: boolean;
}): ReturnTypeComputeAmountOutFormat;
static computeAmountIn({ poolInfo, tickArrayCache, baseMint, epochInfo, amountOut, slippage, priceLimit, }: {
poolInfo: ComputeClmmPoolInfo;
tickArrayCache: {
[key: string]: TickArray;
};
baseMint: PublicKey;
epochInfo: EpochInfo;
amountOut: BN__default;
slippage: number;
priceLimit?: Decimal;
}): ReturnTypeComputeAmountOutBaseOut;
static estimateAprsForPriceRangeMultiplier({ poolInfo, aprType, positionTickLowerIndex, positionTickUpperIndex, }: {
poolInfo: ApiV3PoolInfoConcentratedItem;
aprType: "day" | "week" | "month";
positionTickLowerIndex: number;
positionTickUpperIndex: number;
}): {
feeApr: number;
rewardsApr: number[];
apr: number;
};
static estimateAprsForPriceRangeDelta({ poolInfo, poolLiquidity, aprType, mintPrice, liquidity, positionTickLowerIndex, positionTickUpperIndex, chainTime, }: {
poolInfo: ApiV3PoolInfoConcentratedItem;
poolLiquidity: BN__default;
aprType: "day" | "week" | "month";
mintPrice: {
[mint: string]: {
value: number;
};
};
liquidity: BN__default;
positionTickLowerIndex: number;
positionTickUpperIndex: number;
chainTime: number;
}): {
feeApr: number;
rewardsApr: number[];
apr: number;
};
static getLiquidityAmountOutFromAmountIn({ poolInfo, inputA, tickLower, tickUpper, amount, slippage, add, epochInfo, amountHasFee, }: {
poolInfo: ApiV3PoolInfoConcentratedItem;
inputA: boolean;
tickLower: number;
tickUpper: number;
amount: BN__default;
slippage: number;
add: boolean;
epochInfo: EpochInfo;
amountHasFee: boolean;
}): Promise<ReturnTypeGetLiquidityAmountOut>;
static getAmountsFromLiquidity({ epochInfo, poolInfo, tickLower, tickUpper, liquidity, slippage, add, }: {
epochInfo: EpochInfo;
poolInfo: ApiV3PoolInfoConcentratedItem;
tickLower: number;
tickUpper: number;
liquidity: BN__default;
slippage: number;
add: boolean;
}): Promise<ReturnTypeGetLiquidityAmountOut>;
static fetchComputeMultipleClmmInfo({ connection, poolList, rpcDataMap, }: {
rpcDataMap?: Record<string, ReturnType<typeof PoolInfoLayout.decode>>;
connection: Connection;
poolList: Pick<ApiV3PoolInfoConcentratedItem, "id" | "programId" | "mintA" | "mintB" | "config" | "price">[];
}): Promise<Record<string, ComputeClmmPoolInfo>>;
static fetchComputeClmmInfo({ connection, poolInfo, rpcData, }: {
connection: Connection;
poolInfo: Pick<ApiV3PoolInfoConcentratedItem, "id" | "programId" | "mintA" | "mintB" | "config" | "price">;
rpcData?: ReturnType<typeof PoolInfoLayout.decode>;
}): Promise<ComputeClmmPoolInfo>;
}
declare function getLiquidityFromAmounts({ poolInfo, tickLower, tickUpper, amountA, amountB, slippage, add, epochInfo, amountHasFee, }: {
poolInfo: ApiV3PoolInfoConcentratedItem;
tickLower: number;
tickUpper: number;
amountA: BN__default;
amountB: BN__default;
slippage: number;
add: boolean;
epochInfo: EpochInfo;
amountHasFee: boolean;
}): ReturnTypeGetLiquidityAmountOut;
declare function clmmComputeInfoToApiInfo(pool: ComputeClmmPoolInfo): ApiV3PoolInfoConcentratedItem;
export { PoolUtils, clmmComputeInfoToApiInfo, getLiquidityFromAmounts };