1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480 |
- import { PublicKey } from "@solana/web3.js";
- import { Program, AnchorProvider } from "@coral-xyz/anchor";
- import { SplTokenSwapCoder } from "./coder";
- export const SPL_TOKEN_SWAP_PROGRAM_ID = new PublicKey(
- "SwapsVeCiPHMUAtzQWZw7RjsKjgCjhwU55QGu4U1Szw"
- );
- interface GetProgramParams {
- programId?: PublicKey;
- provider?: AnchorProvider;
- }
- export function splTokenSwapProgram(
- params?: GetProgramParams
- ): Program<SplTokenSwap> {
- return new Program<SplTokenSwap>(
- IDL,
- params?.programId ?? SPL_TOKEN_SWAP_PROGRAM_ID,
- params?.provider,
- new SplTokenSwapCoder(IDL)
- );
- }
- type SplTokenSwap = {
- version: "3.0.0";
- name: "spl_token_swap";
- instructions: [
- {
- name: "initialize";
- accounts: [
- {
- name: "swap";
- isMut: true;
- isSigner: true;
- },
- {
- name: "authority";
- isMut: false;
- isSigner: false;
- },
- {
- name: "tokenA";
- isMut: false;
- isSigner: false;
- },
- {
- name: "tokenB";
- isMut: false;
- isSigner: false;
- },
- {
- name: "pool";
- isMut: true;
- isSigner: false;
- },
- {
- name: "fee";
- isMut: false;
- isSigner: false;
- },
- {
- name: "destination";
- isMut: true;
- isSigner: false;
- },
- {
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
- }
- ];
- args: [
- {
- name: "fees";
- type: {
- defined: "Fees";
- };
- },
- {
- name: "swapCurve";
- type: {
- defined: "SwapCurve";
- };
- }
- ];
- },
- {
- name: "swap";
- accounts: [
- {
- name: "swap";
- isMut: false;
- isSigner: false;
- },
- {
- name: "authority";
- isMut: false;
- isSigner: false;
- },
- {
- name: "userTransferAuthority";
- isMut: false;
- isSigner: true;
- },
- {
- name: "source";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapSource";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapDestination";
- isMut: true;
- isSigner: false;
- },
- {
- name: "destination";
- isMut: true;
- isSigner: false;
- },
- {
- name: "poolMint";
- isMut: true;
- isSigner: false;
- },
- {
- name: "poolFee";
- isMut: true;
- isSigner: false;
- },
- {
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
- }
- ];
- args: [
- {
- name: "amountIn";
- type: "u64";
- },
- {
- name: "minimumAmountOut";
- type: "u64";
- }
- ];
- },
- {
- name: "depositAllTokenTypes";
- accounts: [
- {
- name: "swap";
- isMut: false;
- isSigner: false;
- },
- {
- name: "authority";
- isMut: false;
- isSigner: false;
- },
- {
- name: "userTransferAuthority";
- isMut: false;
- isSigner: true;
- },
- {
- name: "depositTokenA";
- isMut: true;
- isSigner: false;
- },
- {
- name: "depositTokenB";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapTokenA";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapTokenB";
- isMut: true;
- isSigner: false;
- },
- {
- name: "poolMint";
- isMut: true;
- isSigner: false;
- },
- {
- name: "destination";
- isMut: true;
- isSigner: false;
- },
- {
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
- }
- ];
- args: [
- {
- name: "poolTokenAmount";
- type: "u64";
- },
- {
- name: "maximumTokenAAmount";
- type: "u64";
- },
- {
- name: "maximumTokenBAmount";
- type: "u64";
- }
- ];
- },
- {
- name: "withdrawAllTokenTypes";
- accounts: [
- {
- name: "swap";
- isMut: false;
- isSigner: false;
- },
- {
- name: "authority";
- isMut: false;
- isSigner: false;
- },
- {
- name: "userTransferAuthority";
- isMut: false;
- isSigner: true;
- },
- {
- name: "poolMint";
- isMut: true;
- isSigner: false;
- },
- {
- name: "source";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapTokenA";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapTokenB";
- isMut: true;
- isSigner: false;
- },
- {
- name: "destinationTokenA";
- isMut: true;
- isSigner: false;
- },
- {
- name: "destinationTokenB";
- isMut: true;
- isSigner: false;
- },
- {
- name: "feeAccount";
- isMut: true;
- isSigner: false;
- },
- {
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
- }
- ];
- args: [
- {
- name: "poolTokenAmount";
- type: "u64";
- },
- {
- name: "minimumTokenAAmount";
- type: "u64";
- },
- {
- name: "minimumTokenBAmount";
- type: "u64";
- }
- ];
- },
- {
- name: "depositSingleTokenTypeExactAmountIn";
- accounts: [
- {
- name: "swap";
- isMut: false;
- isSigner: false;
- },
- {
- name: "authority";
- isMut: false;
- isSigner: false;
- },
- {
- name: "userTransferAuthority";
- isMut: false;
- isSigner: true;
- },
- {
- name: "sourceToken";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapTokenA";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapTokenB";
- isMut: true;
- isSigner: false;
- },
- {
- name: "poolMint";
- isMut: true;
- isSigner: false;
- },
- {
- name: "destination";
- isMut: true;
- isSigner: false;
- },
- {
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
- }
- ];
- args: [
- {
- name: "sourceTokenAmount";
- type: "u64";
- },
- {
- name: "minimumPoolTokenAmount";
- type: "u64";
- }
- ];
- },
- {
- name: "withdrawSingleTokenTypeExactAmountOut";
- accounts: [
- {
- name: "swap";
- isMut: false;
- isSigner: false;
- },
- {
- name: "authority";
- isMut: false;
- isSigner: false;
- },
- {
- name: "userTransferAuthority";
- isMut: false;
- isSigner: true;
- },
- {
- name: "poolMint";
- isMut: true;
- isSigner: false;
- },
- {
- name: "poolTokenSource";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapTokenA";
- isMut: true;
- isSigner: false;
- },
- {
- name: "swapTokenB";
- isMut: true;
- isSigner: false;
- },
- {
- name: "destination";
- isMut: true;
- isSigner: false;
- },
- {
- name: "feeAccount";
- isMut: true;
- isSigner: false;
- },
- {
- name: "tokenProgram";
- isMut: false;
- isSigner: false;
- }
- ];
- args: [
- {
- name: "destinationTokenAmount";
- type: "u64";
- },
- {
- name: "maximumPoolTokenAmount";
- type: "u64";
- }
- ];
- }
- ];
- accounts: [
- {
- name: "swap";
- type: {
- kind: "struct";
- fields: [
- {
- name: "version";
- type: "u8";
- },
- {
- name: "isInitialized";
- type: "bool";
- },
- {
- name: "bumpSeed";
- type: "u8";
- },
- {
- name: "tokenProgramId";
- type: "publicKey";
- },
- {
- name: "tokenA";
- type: "publicKey";
- },
- {
- name: "tokenB";
- type: "publicKey";
- },
- {
- name: "poolMint";
- type: "publicKey";
- },
- {
- name: "tokenAMint";
- type: "publicKey";
- },
- {
- name: "tokenBMint";
- type: "publicKey";
- },
- {
- name: "poolFeeAccount";
- type: "publicKey";
- },
- {
- name: "fees";
- type: {
- defined: "Fees";
- };
- },
- {
- name: "swapCurve";
- type: {
- defined: "SwapCurve";
- };
- }
- ];
- };
- }
- ];
- types: [
- {
- name: "Fees";
- type: {
- kind: "struct";
- fields: [
- {
- name: "tradeFeeNumerator";
- type: "u64";
- },
- {
- name: "tradeFeeDenominator";
- type: "u64";
- },
- {
- name: "ownerTradeFeeNumerator";
- type: "u64";
- },
- {
- name: "ownerTradeFeeDenominator";
- type: "u64";
- },
- {
- name: "ownerWithdrawFeeNumerator";
- type: "u64";
- },
- {
- name: "ownerWithdrawFeeDenominator";
- type: "u64";
- },
- {
- name: "hostFeeNumerator";
- type: "u64";
- },
- {
- name: "hostFeeDenominator";
- type: "u64";
- }
- ];
- };
- },
- {
- name: "SwapCurve";
- type: {
- kind: "struct";
- fields: [
- {
- name: "curveType";
- type: {
- defined: "CurveType";
- };
- },
- {
- name: "calculator";
- type: {
- array: ["u8", 32];
- };
- }
- ];
- };
- },
- {
- name: "StableCurve";
- type: {
- kind: "struct";
- fields: [
- {
- name: "amp";
- type: "u64";
- }
- ];
- };
- },
- {
- name: "OffsetCurve";
- type: {
- kind: "struct";
- fields: [
- {
- name: "tokenBOffset";
- type: "u64";
- }
- ];
- };
- },
- {
- name: "ConstantProductCurve";
- type: {
- kind: "struct";
- fields: [];
- };
- },
- {
- name: "ConstantPriceCurve";
- type: {
- kind: "struct";
- fields: [
- {
- name: "tokenBPrice";
- type: "u64";
- }
- ];
- };
- },
- {
- name: "CurveType";
- type: {
- kind: "enum";
- variants: [
- {
- name: "ConstantProduct";
- },
- {
- name: "ConstantPrice";
- },
- {
- name: "Stable";
- },
- {
- name: "Offset";
- }
- ];
- };
- }
- ];
- errors: [
- {
- code: 0;
- name: "AlreadyInUse";
- msg: "Swap account already in use";
- },
- {
- code: 1;
- name: "InvalidProgramAddress";
- msg: "Invalid program address generated from bump seed and key";
- },
- {
- code: 2;
- name: "InvalidOwner";
- msg: "Input account owner is not the program address";
- },
- {
- code: 3;
- name: "InvalidOutputOwner";
- msg: "Output pool account owner cannot be the program address";
- },
- {
- code: 4;
- name: "ExpectedMint";
- msg: "Deserialized account is not an SPL Token mint";
- },
- {
- code: 5;
- name: "ExpectedAccount";
- msg: "Deserialized account is not an SPL Token account";
- },
- {
- code: 6;
- name: "EmptySupply";
- msg: "Input token account empty";
- },
- {
- code: 7;
- name: "InvalidSupply";
- msg: "Pool token mint has a non-zero supply";
- },
- {
- code: 8;
- name: "InvalidDelegate";
- msg: "Token account has a delegate";
- },
- {
- code: 9;
- name: "InvalidInput";
- msg: "InvalidInput";
- },
- {
- code: 10;
- name: "IncorrectSwapAccount";
- msg: "Address of the provided swap token account is incorrect";
- },
- {
- code: 11;
- name: "IncorrectPoolMint";
- msg: "Address of the provided pool token mint is incorrect";
- },
- {
- code: 12;
- name: "InvalidOutput";
- msg: "InvalidOutput";
- },
- {
- code: 13;
- name: "CalculationFailure";
- msg: "General calculation failure due to overflow or underflow";
- },
- {
- code: 14;
- name: "InvalidInstruction";
- msg: "Invalid instruction";
- },
- {
- code: 15;
- name: "RepeatedMint";
- msg: "Swap input token accounts have the same mint";
- },
- {
- code: 16;
- name: "ExceededSlippage";
- msg: "Swap instruction exceeds desired slippage limit";
- },
- {
- code: 17;
- name: "InvalidCloseAuthority";
- msg: "Token account has a close authority";
- },
- {
- code: 18;
- name: "InvalidFreezeAuthority";
- msg: "Pool token mint has a freeze authority";
- },
- {
- code: 19;
- name: "IncorrectFeeAccount";
- msg: "Pool fee token account incorrect";
- },
- {
- code: 20;
- name: "ZeroTradingTokens";
- msg: "Given pool token amount results in zero trading tokens";
- },
- {
- code: 21;
- name: "FeeCalculationFailure";
- msg: "Fee calculation failed due to overflow, underflow, or unexpected 0";
- },
- {
- code: 22;
- name: "ConversionFailure";
- msg: "Conversion to u64 failed with an overflow or underflow";
- },
- {
- code: 23;
- name: "InvalidFee";
- msg: "The provided fee does not match the program owner's constraints";
- },
- {
- code: 24;
- name: "IncorrectTokenProgramId";
- msg: "The provided token program does not match the token program expected by the swap";
- },
- {
- code: 25;
- name: "UnsupportedCurveType";
- msg: "The provided curve type is not supported by the program owner";
- },
- {
- code: 26;
- name: "InvalidCurve";
- msg: "The provided curve parameters are invalid";
- },
- {
- code: 27;
- name: "UnsupportedCurveOperation";
- msg: "The operation cannot be performed on the given curve";
- }
- ];
- };
- const IDL: SplTokenSwap = {
- version: "3.0.0",
- name: "spl_token_swap",
- instructions: [
- {
- name: "initialize",
- accounts: [
- {
- name: "swap",
- isMut: true,
- isSigner: true,
- },
- {
- name: "authority",
- isMut: false,
- isSigner: false,
- },
- {
- name: "tokenA",
- isMut: false,
- isSigner: false,
- },
- {
- name: "tokenB",
- isMut: false,
- isSigner: false,
- },
- {
- name: "pool",
- isMut: true,
- isSigner: false,
- },
- {
- name: "fee",
- isMut: false,
- isSigner: false,
- },
- {
- name: "destination",
- isMut: true,
- isSigner: false,
- },
- {
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
- },
- ],
- args: [
- {
- name: "fees",
- type: {
- defined: "Fees",
- },
- },
- {
- name: "swapCurve",
- type: {
- defined: "SwapCurve",
- },
- },
- ],
- },
- {
- name: "swap",
- accounts: [
- {
- name: "swap",
- isMut: false,
- isSigner: false,
- },
- {
- name: "authority",
- isMut: false,
- isSigner: false,
- },
- {
- name: "userTransferAuthority",
- isMut: false,
- isSigner: true,
- },
- {
- name: "source",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapSource",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapDestination",
- isMut: true,
- isSigner: false,
- },
- {
- name: "destination",
- isMut: true,
- isSigner: false,
- },
- {
- name: "poolMint",
- isMut: true,
- isSigner: false,
- },
- {
- name: "poolFee",
- isMut: true,
- isSigner: false,
- },
- {
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
- },
- ],
- args: [
- {
- name: "amountIn",
- type: "u64",
- },
- {
- name: "minimumAmountOut",
- type: "u64",
- },
- ],
- },
- {
- name: "depositAllTokenTypes",
- accounts: [
- {
- name: "swap",
- isMut: false,
- isSigner: false,
- },
- {
- name: "authority",
- isMut: false,
- isSigner: false,
- },
- {
- name: "userTransferAuthority",
- isMut: false,
- isSigner: true,
- },
- {
- name: "depositTokenA",
- isMut: true,
- isSigner: false,
- },
- {
- name: "depositTokenB",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapTokenA",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapTokenB",
- isMut: true,
- isSigner: false,
- },
- {
- name: "poolMint",
- isMut: true,
- isSigner: false,
- },
- {
- name: "destination",
- isMut: true,
- isSigner: false,
- },
- {
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
- },
- ],
- args: [
- {
- name: "poolTokenAmount",
- type: "u64",
- },
- {
- name: "maximumTokenAAmount",
- type: "u64",
- },
- {
- name: "maximumTokenBAmount",
- type: "u64",
- },
- ],
- },
- {
- name: "withdrawAllTokenTypes",
- accounts: [
- {
- name: "swap",
- isMut: false,
- isSigner: false,
- },
- {
- name: "authority",
- isMut: false,
- isSigner: false,
- },
- {
- name: "userTransferAuthority",
- isMut: false,
- isSigner: true,
- },
- {
- name: "poolMint",
- isMut: true,
- isSigner: false,
- },
- {
- name: "source",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapTokenA",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapTokenB",
- isMut: true,
- isSigner: false,
- },
- {
- name: "destinationTokenA",
- isMut: true,
- isSigner: false,
- },
- {
- name: "destinationTokenB",
- isMut: true,
- isSigner: false,
- },
- {
- name: "feeAccount",
- isMut: true,
- isSigner: false,
- },
- {
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
- },
- ],
- args: [
- {
- name: "poolTokenAmount",
- type: "u64",
- },
- {
- name: "minimumTokenAAmount",
- type: "u64",
- },
- {
- name: "minimumTokenBAmount",
- type: "u64",
- },
- ],
- },
- {
- name: "depositSingleTokenTypeExactAmountIn",
- accounts: [
- {
- name: "swap",
- isMut: false,
- isSigner: false,
- },
- {
- name: "authority",
- isMut: false,
- isSigner: false,
- },
- {
- name: "userTransferAuthority",
- isMut: false,
- isSigner: true,
- },
- {
- name: "sourceToken",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapTokenA",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapTokenB",
- isMut: true,
- isSigner: false,
- },
- {
- name: "poolMint",
- isMut: true,
- isSigner: false,
- },
- {
- name: "destination",
- isMut: true,
- isSigner: false,
- },
- {
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
- },
- ],
- args: [
- {
- name: "sourceTokenAmount",
- type: "u64",
- },
- {
- name: "minimumPoolTokenAmount",
- type: "u64",
- },
- ],
- },
- {
- name: "withdrawSingleTokenTypeExactAmountOut",
- accounts: [
- {
- name: "swap",
- isMut: false,
- isSigner: false,
- },
- {
- name: "authority",
- isMut: false,
- isSigner: false,
- },
- {
- name: "userTransferAuthority",
- isMut: false,
- isSigner: true,
- },
- {
- name: "poolMint",
- isMut: true,
- isSigner: false,
- },
- {
- name: "poolTokenSource",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapTokenA",
- isMut: true,
- isSigner: false,
- },
- {
- name: "swapTokenB",
- isMut: true,
- isSigner: false,
- },
- {
- name: "destination",
- isMut: true,
- isSigner: false,
- },
- {
- name: "feeAccount",
- isMut: true,
- isSigner: false,
- },
- {
- name: "tokenProgram",
- isMut: false,
- isSigner: false,
- },
- ],
- args: [
- {
- name: "destinationTokenAmount",
- type: "u64",
- },
- {
- name: "maximumPoolTokenAmount",
- type: "u64",
- },
- ],
- },
- ],
- accounts: [
- {
- name: "swap",
- type: {
- kind: "struct",
- fields: [
- {
- name: "version",
- type: "u8",
- },
- {
- name: "isInitialized",
- type: "bool",
- },
- {
- name: "bumpSeed",
- type: "u8",
- },
- {
- name: "tokenProgramId",
- type: "publicKey",
- },
- {
- name: "tokenA",
- type: "publicKey",
- },
- {
- name: "tokenB",
- type: "publicKey",
- },
- {
- name: "poolMint",
- type: "publicKey",
- },
- {
- name: "tokenAMint",
- type: "publicKey",
- },
- {
- name: "tokenBMint",
- type: "publicKey",
- },
- {
- name: "poolFeeAccount",
- type: "publicKey",
- },
- {
- name: "fees",
- type: {
- defined: "Fees",
- },
- },
- {
- name: "swapCurve",
- type: {
- defined: "SwapCurve",
- },
- },
- ],
- },
- },
- ],
- types: [
- {
- name: "Fees",
- type: {
- kind: "struct",
- fields: [
- {
- name: "tradeFeeNumerator",
- type: "u64",
- },
- {
- name: "tradeFeeDenominator",
- type: "u64",
- },
- {
- name: "ownerTradeFeeNumerator",
- type: "u64",
- },
- {
- name: "ownerTradeFeeDenominator",
- type: "u64",
- },
- {
- name: "ownerWithdrawFeeNumerator",
- type: "u64",
- },
- {
- name: "ownerWithdrawFeeDenominator",
- type: "u64",
- },
- {
- name: "hostFeeNumerator",
- type: "u64",
- },
- {
- name: "hostFeeDenominator",
- type: "u64",
- },
- ],
- },
- },
- {
- name: "SwapCurve",
- type: {
- kind: "struct",
- fields: [
- {
- name: "curveType",
- type: {
- defined: "CurveType",
- },
- },
- {
- name: "calculator",
- type: {
- array: ["u8", 32],
- },
- },
- ],
- },
- },
- {
- name: "StableCurve",
- type: {
- kind: "struct",
- fields: [
- {
- name: "amp",
- type: "u64",
- },
- ],
- },
- },
- {
- name: "OffsetCurve",
- type: {
- kind: "struct",
- fields: [
- {
- name: "tokenBOffset",
- type: "u64",
- },
- ],
- },
- },
- {
- name: "ConstantProductCurve",
- type: {
- kind: "struct",
- fields: [],
- },
- },
- {
- name: "ConstantPriceCurve",
- type: {
- kind: "struct",
- fields: [
- {
- name: "tokenBPrice",
- type: "u64",
- },
- ],
- },
- },
- {
- name: "CurveType",
- type: {
- kind: "enum",
- variants: [
- {
- name: "ConstantProduct",
- },
- {
- name: "ConstantPrice",
- },
- {
- name: "Stable",
- },
- {
- name: "Offset",
- },
- ],
- },
- },
- ],
- errors: [
- {
- code: 0,
- name: "AlreadyInUse",
- msg: "Swap account already in use",
- },
- {
- code: 1,
- name: "InvalidProgramAddress",
- msg: "Invalid program address generated from bump seed and key",
- },
- {
- code: 2,
- name: "InvalidOwner",
- msg: "Input account owner is not the program address",
- },
- {
- code: 3,
- name: "InvalidOutputOwner",
- msg: "Output pool account owner cannot be the program address",
- },
- {
- code: 4,
- name: "ExpectedMint",
- msg: "Deserialized account is not an SPL Token mint",
- },
- {
- code: 5,
- name: "ExpectedAccount",
- msg: "Deserialized account is not an SPL Token account",
- },
- {
- code: 6,
- name: "EmptySupply",
- msg: "Input token account empty",
- },
- {
- code: 7,
- name: "InvalidSupply",
- msg: "Pool token mint has a non-zero supply",
- },
- {
- code: 8,
- name: "InvalidDelegate",
- msg: "Token account has a delegate",
- },
- {
- code: 9,
- name: "InvalidInput",
- msg: "InvalidInput",
- },
- {
- code: 10,
- name: "IncorrectSwapAccount",
- msg: "Address of the provided swap token account is incorrect",
- },
- {
- code: 11,
- name: "IncorrectPoolMint",
- msg: "Address of the provided pool token mint is incorrect",
- },
- {
- code: 12,
- name: "InvalidOutput",
- msg: "InvalidOutput",
- },
- {
- code: 13,
- name: "CalculationFailure",
- msg: "General calculation failure due to overflow or underflow",
- },
- {
- code: 14,
- name: "InvalidInstruction",
- msg: "Invalid instruction",
- },
- {
- code: 15,
- name: "RepeatedMint",
- msg: "Swap input token accounts have the same mint",
- },
- {
- code: 16,
- name: "ExceededSlippage",
- msg: "Swap instruction exceeds desired slippage limit",
- },
- {
- code: 17,
- name: "InvalidCloseAuthority",
- msg: "Token account has a close authority",
- },
- {
- code: 18,
- name: "InvalidFreezeAuthority",
- msg: "Pool token mint has a freeze authority",
- },
- {
- code: 19,
- name: "IncorrectFeeAccount",
- msg: "Pool fee token account incorrect",
- },
- {
- code: 20,
- name: "ZeroTradingTokens",
- msg: "Given pool token amount results in zero trading tokens",
- },
- {
- code: 21,
- name: "FeeCalculationFailure",
- msg: "Fee calculation failed due to overflow, underflow, or unexpected 0",
- },
- {
- code: 22,
- name: "ConversionFailure",
- msg: "Conversion to u64 failed with an overflow or underflow",
- },
- {
- code: 23,
- name: "InvalidFee",
- msg: "The provided fee does not match the program owner's constraints",
- },
- {
- code: 24,
- name: "IncorrectTokenProgramId",
- msg: "The provided token program does not match the token program expected by the swap",
- },
- {
- code: 25,
- name: "UnsupportedCurveType",
- msg: "The provided curve type is not supported by the program owner",
- },
- {
- code: 26,
- name: "InvalidCurve",
- msg: "The provided curve parameters are invalid",
- },
- {
- code: 27,
- name: "UnsupportedCurveOperation",
- msg: "The operation cannot be performed on the given curve",
- },
- ],
- };
|