@syncswap/sdk
Version:
SyncSwap TypeScript SDK for building DeFi applications
310 lines • 7.56 kB
TypeScript
import { BigNumber } from "ethers";
export interface PoolTokenMetadata {
token: string;
decimals: number;
symbol: string;
name: string;
}
export interface FeeData {
gamma: BigNumber;
minFee: number;
maxFee: number;
}
export interface CryptoPoolData {
gamma: BigNumber;
invariantLast: BigNumber;
priceScale: BigNumber;
futureParamsTime: BigNumber;
virtualPrice: BigNumber;
totalSupply: BigNumber;
}
export interface GraphRangePoolDayData {
id: string;
date: number;
feesUSD: string;
volumeUSD: string;
tvlUSD: string;
token0Price: string;
token1Price: string;
tick: string;
sqrtPrice: string;
liquidity: string;
}
export interface RangePoolDayData {
dailyStats: GraphRangePoolDayData[];
lastUpdate: number;
}
export interface IRangePosition {
tokenId: BigNumber;
token0: string;
token1: string;
tickSpacing: number;
tickLower: number;
tickUpper: number;
liquidity: BigNumber;
feeGrowthInside0LastX128: BigNumber;
feeGrowthInside1LastX128: BigNumber;
tokensOwed0: BigNumber;
tokensOwed1: BigNumber;
tickLowerFeeGrowthOutside0X128: BigNumber;
tickLowerFeeGrowthOutside1X128: BigNumber;
tickUpperFeeGrowthOutside0X128: BigNumber;
tickUpperFeeGrowthOutside1X128: BigNumber;
pool: string;
reserve0: BigNumber;
reserve1: BigNumber;
tickCurrent: number;
protocolFee: number;
swapFee01: number;
swapFee10: number;
sqrtPriceX96: BigNumber;
poolLiquidity: BigNumber;
poolStakedLiquidity: BigNumber;
feeGrowthGlobal0X128: BigNumber;
feeGrowthGlobal1X128: BigNumber;
apr?: number;
feesHours?: number;
token0Amount: BigNumber;
token0Value: BigNumber;
token1Amount: BigNumber;
token1Value: BigNumber;
token0ValueUSD?: BigNumber | null;
token1ValueUSD?: BigNumber | null;
}
export interface PoolData {
isV2: boolean;
isV3: boolean;
isUniswap: boolean;
deprecated: boolean;
pool: string;
poolType: number;
swapFee01: FeeData;
swapFee10: FeeData;
protocolFee: number;
token0: PoolTokenMetadata;
token1: PoolTokenMetadata;
reserve0: BigNumber;
reserve1: BigNumber;
totalSupply: BigNumber;
accountBalance: BigNumber;
routerAllowance: BigNumber;
token0Value: BigNumber;
token1Value: BigNumber;
feesCurrentEpoch: BigNumber;
feesLastEpoch: BigNumber;
feeStartTime: BigNumber;
totalFeeValue: BigNumber;
volume0: BigNumber;
volume1: BigNumber;
a: BigNumber;
cryptoPoolData: CryptoPoolData[];
uniswapV3PoolData?: UniswapV3PoolData[];
feesData?: RangePoolDayData[];
rangePositions?: IRangePosition[];
}
export interface UniswapV3PoolData {
tickSpacing: number;
sqrtPriceX96: BigNumber;
tick: number;
liquidity: BigNumber;
}
export interface RoutePoolData {
isV2: boolean;
isV3: boolean;
isUniswap: boolean;
pool: string;
tokenA: string;
tokenB: string;
poolType: number;
reserveA: BigNumber;
reserveB: BigNumber;
swapFeeAB: FeeData;
swapFeeBA: FeeData;
a: BigNumber;
cryptoPoolData: CryptoPoolData[];
rangePoolData: UniswapV3PoolData[];
}
export interface RoutePoolsRawData {
poolsDirect: RoutePoolData[];
poolsA: RoutePoolData[];
poolsB: RoutePoolData[];
poolsBase: RoutePoolData[];
}
export interface RouteInput {
tokenIn: string;
tokenOut: string;
direction: RouteDirection;
amount: BigNumber;
}
export interface QuoteAmount {
amount: BigNumber;
quote: BigNumber;
fee: BigNumber;
}
export interface PSMRoute {
type: RouteType;
amount: QuoteAmount;
}
export declare enum RouteType {
WETH_WRAP = "WETH_WRAP",
WETH_UNWRAP = "WETH_UNWRAP",
TOKEN_WRAP = "TOKEN_WRAP",
TOKEN_UNWRAP = "TOKEN_UNWRAP",
PSM_SWAP = "PSM_SWAP",
PSM_MINT = "PSM_MINT",
PSM_BURN = "PSM_BURN",
AMM_SWAP = "AMM_SWAP"
}
export interface BaseRoute {
type: RouteType;
amountIn: BigNumber;
amountOut: BigNumber;
amountQuote: BigNumber;
gas: BigNumber;
gasEstimate: BigNumber;
}
export interface WrappedRoute {
success: boolean;
type: RouteType;
amountIn: BigNumber;
amountOut: BigNumber;
quote: BigNumber;
route: SwapRoute | PSMRoute | BaseRoute;
direction: RouteDirection;
priceImpact: BigNumber;
gas: BigNumber;
gasEstimate: BigNumber;
network?: string;
}
export interface RoutePools {
tokenA: string;
tokenB: string;
routeTokens: string[];
directPoolOptimal: RoutePoolData | null;
pools: RoutePoolsRawData;
}
export declare enum PoolTypes {
CLASSIC = 1,
STABLE = 2,
AQUA = 3,
UNISWAP_V3 = 4
}
export interface GetAmountParams {
poolType: PoolTypes;
swap0For1: boolean;
tokenIn: string;
tokenOut: string;
amount: BigNumber;
reserveIn: BigNumber;
reserveOut: BigNumber;
reserve0: BigNumber;
reserve1: BigNumber;
swapFee: FeeData;
tokenInPrecisionMultiplier?: BigNumber;
tokenOutPrecisionMultiplier?: BigNumber;
a?: BigNumber;
gamma?: BigNumber;
priceScale?: BigNumber;
futureParamsTime?: BigNumber;
invariantLast?: BigNumber;
virtualPrice?: BigNumber;
totalSupply?: BigNumber;
tickSpacing?: number;
sqrtPriceX96?: BigNumber;
tick?: number;
liquidity?: BigNumber;
}
export interface SwapRoute {
isETH?: boolean;
isETHOut?: boolean;
tokenIn: string;
tokenOut: string;
found: boolean;
amountIn: BigNumber;
amountOut: BigNumber;
quote: BigNumber;
paths: PathWithAmounts[];
priceImpact: BigNumber;
gas: BigNumber;
network?: string;
}
export interface StepData {
pool: RoutePoolData;
tokenIn: string;
}
export interface CryptoPoolData {
gamma: BigNumber;
invariantLast: BigNumber;
priceScale: BigNumber;
futureParamsTime: BigNumber;
virtualPrice: BigNumber;
totalSupply: BigNumber;
}
export interface Step {
pool: RoutePoolData;
swapFee: FeeData;
tokenIn: string;
tokenOut: string;
zeroForOne: boolean;
}
export type Path = Step[];
export interface StepWithAmount extends Step {
amountIn: BigNumber;
updatedStep: Step | null;
sqrtPriceLimitX96: BigNumber | null;
tokenOut: string;
zeroForOne: boolean;
}
export declare enum RouteDirection {
EXACT_IN = 0,
EXACT_OUT = 1
}
export interface PathWithAmounts {
direction: RouteDirection;
stepsWithAmount: StepWithAmount[];
amountIn: BigNumber;
amountOut: BigNumber;
quote: BigNumber;
}
export type BestPathsWithAmounts = {
found: boolean;
direction: RouteDirection;
pathsWithAmounts: PathWithAmounts[];
amountIn: BigNumber;
amountOut: BigNumber;
quote: BigNumber;
bestPriceImpact: BigNumber | null;
gas: BigNumber;
};
export interface PermitSignature {
signature: string;
data: {
token: string;
owner: string;
spender: string;
amount: BigNumber;
nonce: BigNumber;
deadline: BigNumber;
};
}
export interface ISplitPermitParams {
token: string;
approveAmount: BigNumber;
deadline: BigNumber;
v: number;
r: string;
s: string;
}
export interface SwapStepData {
pool: string;
data: string;
callback: string;
callbackData: string;
useVault: boolean;
}
export interface SwapPathData {
steps: SwapStepData[];
tokenIn: string;
amountIn: BigNumber;
}
//# sourceMappingURL=types.d.ts.map