@saberhq/stableswap-sdk
Version:
Solana SDK for Saber's StableSwap program.
103 lines (88 loc) • 3.08 kB
text/typescript
import { Uint64Layout } from "@saberhq/token-utils";
import * as BufferLayout from "@solana/buffer-layout";
import type { RawFees } from "../state/layout.js";
import { FeesLayout } from "../state/layout.js";
import type { AdminInstruction } from "./admin.js";
import type { StableSwapInstruction } from "./swap.js";
export const InitializeSwapIXLayout = BufferLayout.struct<{
instruction: StableSwapInstruction.INITIALIZE;
nonce: number;
ampFactor: Uint8Array;
fees: RawFees;
}>([
BufferLayout.u8("instruction"),
BufferLayout.u8("nonce"),
Uint64Layout("ampFactor"),
FeesLayout,
]);
export const SwapIXLayout = BufferLayout.struct<{
instruction: StableSwapInstruction.SWAP;
amountIn: Uint8Array;
minimumAmountOut: Uint8Array;
}>([
BufferLayout.u8("instruction"),
Uint64Layout("amountIn"),
Uint64Layout("minimumAmountOut"),
]);
export const DepositIXLayout = BufferLayout.struct<{
instruction: StableSwapInstruction.DEPOSIT;
tokenAmountA: Uint8Array;
tokenAmountB: Uint8Array;
minimumPoolTokenAmount: Uint8Array;
}>([
BufferLayout.u8("instruction"),
Uint64Layout("tokenAmountA"),
Uint64Layout("tokenAmountB"),
Uint64Layout("minimumPoolTokenAmount"),
]);
export const WithdrawIXLayout = BufferLayout.struct<{
instruction: StableSwapInstruction.WITHDRAW;
poolTokenAmount: Uint8Array;
minimumTokenA: Uint8Array;
minimumTokenB: Uint8Array;
}>([
BufferLayout.u8("instruction"),
Uint64Layout("poolTokenAmount"),
Uint64Layout("minimumTokenA"),
Uint64Layout("minimumTokenB"),
]);
export const WithdrawOneIXLayout = BufferLayout.struct<{
instruction: StableSwapInstruction.WITHDRAW_ONE;
poolTokenAmount: Uint8Array;
minimumTokenAmount: Uint8Array;
}>([
BufferLayout.u8("instruction"),
Uint64Layout("poolTokenAmount"),
Uint64Layout("minimumTokenAmount"),
]);
export const RampAIXLayout = BufferLayout.struct<{
instruction: AdminInstruction.RAMP_A;
targetAmp: Uint8Array;
stopRampTS: number;
}>([
BufferLayout.u8("instruction"),
Uint64Layout("targetAmp"),
BufferLayout.ns64("stopRampTS"),
]);
export const StopRampAIXLayout = BufferLayout.struct<{
instruction: AdminInstruction.STOP_RAMP_A;
}>([BufferLayout.u8("instruction")]);
export const PauseIXLayout = BufferLayout.struct<{
instruction: AdminInstruction.PAUSE;
}>([BufferLayout.u8("instruction")]);
export const UnpauseIXLayout = BufferLayout.struct<{
instruction: AdminInstruction.UNPAUSE;
}>([BufferLayout.u8("instruction")]);
export const SetFeeAccountIXLayout = BufferLayout.struct<{
instruction: AdminInstruction.SET_FEE_ACCOUNT;
}>([BufferLayout.u8("instruction")]);
export const ApplyNewAdminIXLayout = BufferLayout.struct<{
instruction: AdminInstruction.APPLY_NEW_ADMIN;
}>([BufferLayout.u8("instruction")]);
export const CommitNewAdminIXLayout = BufferLayout.struct<{
instruction: AdminInstruction.COMMIT_NEW_ADMIN;
}>([BufferLayout.u8("instruction")]);
export const SetNewFeesIXLayout = BufferLayout.struct<{
instruction: AdminInstruction.SET_NEW_FEES;
fees: RawFees;
}>([BufferLayout.u8("instruction"), FeesLayout]);