@eco-incorp/sauce/svm is the Solana side: the client (createSauceSvmClient), clusters, PDAs, account resolution against the compiler’s account manifest, Kitchen and engine instructions, transactions and sending, token accounts, and compute planning for @sauce/router’s Solana venues. @eco-incorp/sauce/svm/engine exports the engine’s wire format and instruction builders, @eco-incorp/sauce/svm/verify verifies settle programs and engine CPI data, and @eco-incorp/sauce/svm/engine-artifacts (Node only) returns file paths to the packaged engine and Kitchen binaries.
import { createSauceSvmClient, SOLANA_CLUSTERS } from "@eco-incorp/sauce/svm";
@eco-incorp/sauce.
routerSvmAccountOrder
Function · @eco-incorp/sauce/svm
The accounts of venue’s swap instruction, in its order. <venue>Data and <venue>Cpi take
them in this order; the program is not among them (Phoenix’s swap also takes its own program,
first, as program).
export declare function routerSvmAccountOrder(venue: RouterSvmVenue, options: RouterSvmAccountOptions): RouterSvmAccountRole[];
routerSvmAccounts
Function · @eco-incorp/sauce/svm
routerSvmAccountOrder’s accounts, each with its value from refs.
export declare function routerSvmAccounts<T>(venue: RouterSvmVenue, options: RouterSvmAccountOptions, refs: Readonly<Record<string, T>>): RouterSvmAccount<T>[];
ROUTER_SVM_VENUES
Variable · @eco-incorp/sauce/svm
The venues @sauce/router’s Solana arm swaps, by the recipes’ venue names: at a limit, then an
exact input.
ROUTER_SVM_VENUES: {
readonly "raydium-clmm": {
readonly program: "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK";
readonly data: "raydiumClmmData";
readonly cpi: "raydiumClmmCpi";
};
readonly "pancakeswap-clmm": {
readonly program: "HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq";
readonly data: "pancakeswapClmmData";
readonly cpi: "pancakeswapClmmCpi";
};
readonly byreal: {
readonly program: "REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2";
readonly data: "byrealData";
readonly cpi: "byrealCpi";
};
readonly "stabble-clmm": {
readonly program: "6dMXqGZ3ga2dikrYS9ovDXgHGh5RUsb2RTUj6hrQXhk6";
readonly data: "stabbleClmmData";
readonly cpi: "stabbleClmmCpi";
};
readonly "orca-whirlpool": {
readonly program: "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc";
readonly data: "orcaWhirlpoolData";
readonly cpi: "orcaWhirlpoolCpi";
};
readonly cropper: {
readonly program: "H8W3ctz92svYg6mkn1UtGfu2aQr2fnUFHM1RhScEtQDt";
readonly data: "cropperData";
readonly cpi: "cropperCpi";
};
readonly defituna: {
readonly program: "fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9";
readonly data: "defitunaData";
readonly cpi: "defitunaCpi";
};
readonly crema: {
readonly program: "CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR";
readonly data: "cremaData";
readonly cpi: "cremaCpi";
};
readonly phoenix: {
readonly program: "PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY";
readonly data: "phoenixData";
readonly cpi: "phoenixCpi";
};
readonly invariant: {
readonly program: "HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt";
readonly data: "invariantData";
readonly cpi: "invariantCpi";
};
readonly manifest: {
readonly program: "MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms";
readonly data: "manifestData";
readonly cpi: "manifestCpi";
};
readonly "openbook-v2": {
readonly program: "opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb";
readonly data: "openbookV2Data";
readonly cpi: "openbookV2Cpi";
};
readonly "raydium-cp-swap": {
readonly program: "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C";
readonly data: "raydiumCpSwapData";
readonly cpi: "raydiumCpSwapCpi";
};
readonly gamma: {
readonly program: "GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT";
readonly data: "gammaData";
readonly cpi: "gammaCpi";
};
readonly "raydium-amm-v4": {
readonly program: "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8";
readonly data: "raydiumAmmV4Data";
readonly cpi: "raydiumAmmV4Cpi";
};
readonly "orca-legacy-token-swap": {
readonly program: "9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP";
readonly data: "orcaLegacyTokenSwapData";
readonly cpi: "orcaLegacyTokenSwapCpi";
};
readonly "orca-legacy-token-swap-stable": {
readonly program: "9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP";
readonly data: "orcaLegacyTokenSwapData";
readonly cpi: "orcaLegacyTokenSwapCpi";
};
readonly "token-swap-v1": {
readonly program: "SwaPpA9LAaLfeLi3a68M4DjnLqgtticKg6CnyNwgAC8";
readonly data: "tokenSwapV1Data";
readonly cpi: "tokenSwapV1Cpi";
};
readonly "orca-v1": {
readonly program: "DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1";
readonly data: "orcaV1Data";
readonly cpi: "orcaV1Cpi";
};
readonly penguin: {
readonly program: "PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP";
readonly data: "penguinData";
readonly cpi: "penguinCpi";
};
readonly stepn: {
readonly program: "Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j";
readonly data: "stepnData";
readonly cpi: "stepnCpi";
};
readonly saros: {
readonly program: "SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr";
readonly data: "sarosData";
readonly cpi: "sarosCpi";
};
readonly fluxbeam: {
readonly program: "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X";
readonly data: "fluxbeamData";
readonly cpi: "fluxbeamCpi";
};
readonly dexlab: {
readonly program: "DSwpgjMvXhtGn6BsbqmacdBZyfLj6jSWf3HJpdJtmg6N";
readonly data: "dexlabData";
readonly cpi: "dexlabCpi";
};
readonly "meteora-damm-v2": {
readonly program: "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG";
readonly data: "meteoraDammV2Data";
readonly cpi: "meteoraDammV2Cpi";
};
readonly "meteora-damm-v1-cp": {
readonly program: "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB";
readonly data: "meteoraDammV1Data";
readonly cpi: "meteoraDammV1Cpi";
};
readonly "meteora-damm-v1-stable": {
readonly program: "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB";
readonly data: "meteoraDammV1Data";
readonly cpi: "meteoraDammV1Cpi";
};
readonly aldrin: {
readonly program: "AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6";
readonly data: "aldrinData";
readonly cpi: "aldrinCpi";
};
readonly omnipair: {
readonly program: "omnixgS8fnqHfCcTGKWj6JtKjzpJZ1Y5y9pyFkQDkYE";
readonly data: "omnipairData";
readonly cpi: "omnipairCpi";
};
readonly "saber-stableswap": {
readonly program: "SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ";
readonly data: "saberData";
readonly cpi: "saberCpi";
};
readonly "saber-decimals-wrapper": {
readonly program: "DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB";
readonly data: "saberDecimalsWrapperData";
readonly cpi: "saberDecimalsWrapperCpi";
};
readonly "stabble-stable-swap": {
readonly program: "swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ";
readonly data: "stabbleStableSwapData";
readonly cpi: "stabbleStableSwapCpi";
};
readonly "stabble-weighted-swap": {
readonly program: "swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW";
readonly data: "stabbleWeightedSwapData";
readonly cpi: "stabbleWeightedSwapCpi";
};
readonly mercurial: {
readonly program: "MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky";
readonly data: "mercurialData";
readonly cpi: "mercurialCpi";
};
readonly perena: {
readonly program: "NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P";
readonly data: "perenaData";
readonly cpi: "perenaCpi";
};
readonly "metadao-futarchy": {
readonly program: "FUTARELBfJfQ8RDGhg1wdhddq1odMAJUePHFuBYfUxKq";
readonly data: "metadaoFutarchyData";
readonly cpi: "metadaoFutarchyCpi";
};
readonly "scale-amm": {
readonly program: "SCALEwAvEK5gtkdHiFzXfPgtk2YwJxPDzaV3aDmR7tA";
readonly data: "scaleAmmData";
readonly cpi: "scaleAmmCpi";
};
readonly pumpswap: {
readonly program: "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA";
readonly data: "pumpswapData";
readonly cpi: "pumpswapCpi";
};
readonly bonkswap: {
readonly program: "BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p";
readonly data: "bonkswapData";
readonly cpi: "bonkswapCpi";
};
readonly guacswap: {
readonly program: "Gswppe6ERWKpUTXvRPfXdzHhiCyJvLadVvXGfdpBqcE1";
readonly data: "guacswapData";
readonly cpi: "guacswapCpi";
};
readonly "meteora-dlmm": {
readonly program: "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo";
readonly data: "meteoraDlmmData";
readonly cpi: "meteoraDlmmCpi";
};
readonly "saros-dlmm": {
readonly program: "1qbkdrr3z4ryLA7pZykqxvxWPoeifcVKo6ZG9CfkvVE";
readonly data: "sarosDlmmData";
readonly cpi: "sarosDlmmCpi";
};
readonly "solfi-v2": {
readonly program: "SV2EYYJyRz2YhfXwXnhNAevDEui5Q6yrfyo13WtupPF";
readonly data: "solfiV2Data";
readonly cpi: "solfiV2Cpi";
};
readonly hadron: {
readonly program: "HADRoNbLovyqhCsocfYQYB7QdfCAAinN9HTePvBCVDQ8";
readonly data: "hadronData";
readonly cpi: "hadronCpi";
};
readonly taurusfi: {
readonly program: "9VX8EKBg6vM6tA68xaDsPkbrx26XConZjkQmhVApUptc";
readonly data: "taurusfiData";
readonly cpi: "taurusfiCpi";
};
readonly riptide: {
readonly program: "riptK81hDxhe5pW5jSzSM9iRA8azgEgLJ4dXkPtBS7j";
readonly data: "riptideData";
readonly cpi: "riptideCpi";
};
readonly denali: {
readonly program: "DNL1tgEj3nJovHw9jtyCCQD3arssCJzkmpDizknwzey4";
readonly data: "denaliData";
readonly cpi: "denaliCpi";
};
readonly gavel: {
readonly program: "srAMMzfVHVAtgSJc8iH6CfKzuWuUTzLHVCE81QU1rgi";
readonly data: "gavelData";
readonly cpi: "gavelCpi";
};
readonly tesserav: {
readonly program: "TessVdML9pBGgG9yGks7o4HewRaXVAMuoVj4x83GLQH";
readonly data: "tesseravData";
readonly cpi: "tesseravCpi";
};
readonly flint: {
readonly program: "FLiNTXPwppyoJabCoxc2uiiRygAHpmMXajiDXo2Ub1z";
readonly data: "flintData";
readonly cpi: "flintCpi";
};
readonly deriverse: {
readonly program: "DRVSpZ2YUYYKgZP8XtLhAGtT1zYSCKzeHfb4DgRnrgqD";
readonly data: "deriverseData";
readonly cpi: "deriverseCpi";
};
readonly "goonfi-v2": {
readonly program: "goonuddtQRrWqqn5nFyczVKaie28f3kDkHWkHtURSLE";
readonly data: "goonfiV2Data";
readonly cpi: "goonfiV2Cpi";
};
readonly "meteora-dbc": {
readonly program: "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN";
readonly data: "meteoraDbcData";
readonly cpi: "meteoraDbcCpi";
};
readonly trends: {
readonly program: "CURVEmPpijXDTNdqrA9PGP1io2rkgiVXH26xdXVGLLfz";
readonly data: "trendsData";
readonly cpi: "trendsCpi";
};
readonly heaven: {
readonly program: "HEAVENoP2qxoeuF8Dj2oT1GHEnu49U5mJYkdeC8BAX2o";
readonly data: "heavenData";
readonly cpi: "heavenCpi";
};
readonly virtuals: {
readonly program: "5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki";
readonly data: "virtualsData";
readonly cpi: "virtualsCpi";
};
readonly "raydium-launchlab": {
readonly program: "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj";
readonly data: "raydiumLaunchlabData";
readonly cpi: "raydiumLaunchlabCpi";
};
readonly "runner-rodeo": {
readonly program: "runnrXXdsSRkdueCRYxKDvSWfv6nAnrG5dcM29qj1HA";
readonly data: "runnerRodeoData";
readonly cpi: "runnerRodeoCpi";
};
readonly "scale-vmm": {
readonly program: "SCALEWoRSpVZpMRqHEcDfNvBh3nUSe34jDr9r689gLa";
readonly data: "scaleVmmData";
readonly cpi: "scaleVmmCpi";
};
readonly xorca: {
readonly program: "StaKE6XNKVVhG8Qu9hDJBqCW3eRe7MDGLz17nJZetLT";
readonly data: "xorcaData";
readonly cpi: "xorcaCpi";
};
readonly solayer: {
readonly program: "endoLNCKTqDn8gSVnN2hDdpgACUPWHZTwoYnnMybpAT";
readonly data: "solayerData";
readonly cpi: "solayerCpi";
};
readonly voltr: {
readonly program: "vVoLTRjQmtFpiYoegx285Ze4gsLJ8ZxgFKVcuvmG1a8";
readonly data: "voltrData";
readonly cpi: "voltrCpi";
};
readonly "vault-liquid-unstake": {
readonly program: "2rU1oCHtQ7WJUvy15tKtFvxdYNNSc3id7AzUcjeFSddo";
readonly data: "vaultLiquidUnstakeData";
readonly cpi: "vaultLiquidUnstakeCpi";
};
readonly "hylo-stability-pool": {
readonly program: "HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ";
readonly data: "hyloStabilityPoolData";
readonly cpi: "hyloStabilityPoolCpi";
};
readonly huma: {
readonly program: "HumaXepHnjaRCpjYTokxY4UtaJcmx41prQ8cxGmFC5fn";
readonly data: "humaData";
readonly cpi: "humaCpi";
};
readonly "helium-treasury": {
readonly program: "treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5";
readonly data: "heliumTreasuryData";
readonly cpi: "heliumTreasuryCpi";
};
readonly "jupiter-lend-earn": {
readonly program: "jup3YeL8QhtSx1e253b2FDvsMNC87fDrgQZivbrndc9";
readonly data: "jupiterLendEarnData";
readonly cpi: "jupiterLendEarnCpi";
};
readonly hylo: {
readonly program: "HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn";
readonly data: "hyloData";
readonly cpi: "hyloCpi";
};
readonly carrot: {
readonly program: "CarrotwivhMpDnm27EHmRLeQ683Z1PufuqEmBZvD282s";
readonly data: "carrotData";
readonly cpi: "carrotCpi";
};
readonly mswap: {
readonly program: "MSwapi3WhNKMUGm9YrxGhypgUEt7wYQH3ZgG32XoWzH";
readonly data: "mswapData";
readonly cpi: "mswapCpi";
};
readonly "perps-jlp": {
readonly program: "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu";
readonly data: "perpsJlpData";
readonly cpi: "perpsJlpCpi";
};
readonly "perps-jlp-mint": {
readonly program: "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu";
readonly data: "perpsJlpMintData";
readonly cpi: "perpsJlpMintCpi";
};
readonly "sanctum-infinity": {
readonly program: "5ocnV1qiCgaQR8Jb8xWnVbApfaygJ8tNoZfgPwsgx9kx";
readonly data: "sanctumInfinityData";
readonly cpi: "sanctumInfinityCpi";
};
readonly "solfi-v1": {
readonly program: "SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe";
readonly data: "solfiV1Data";
readonly cpi: "solfiV1Cpi";
};
readonly archer: {
readonly program: "Archer8kgiavM61GyusMzaaS2ft5sALtNsD1HxkUPMhy";
readonly data: "archerData";
readonly cpi: "archerCpi";
};
readonly "one-intro-swap": {
readonly program: "DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm";
readonly data: null;
readonly cpi: null;
};
readonly woofi: {
readonly program: "WooFif76YGRNjk1pA8wCsN67aQsD9f9iLsz4NcJ1AVb";
readonly data: null;
readonly cpi: null;
};
readonly metric: {
readonly program: "Bvs46DPFxiFE6YHxLDLD6QAUcmy51FyRVPZJusPxLk3j";
readonly data: null;
readonly cpi: null;
};
readonly quantum: {
readonly program: "QuaNtZsgYRe5Z9Bk4LZ4cTD9tbkVoyCNf1R2BN9bBDv";
readonly data: null;
readonly cpi: null;
};
readonly obsidian: {
readonly program: "HBVw6bZtcCaezhcBrmfyXBSBRWCdv72271xQ4GPvms2z";
readonly data: null;
readonly cpi: null;
};
readonly alphaq: {
readonly program: "ALPHAQmeA7bjrVuccPsYPiCvsi428SNwte66Srvs4pHA";
readonly data: null;
readonly cpi: null;
};
readonly "pumpfun-bonding-curve": {
readonly program: "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";
readonly data: null;
readonly cpi: null;
};
readonly "boop-fun": {
readonly program: "boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4";
readonly data: null;
readonly cpi: null;
};
readonly moonit: {
readonly program: "MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG";
readonly data: null;
readonly cpi: null;
};
readonly bisonfi: {
readonly program: "BiSoNHVpsVZW2F7rx2eQ59yQwKxzU5NvBcmKshCSUypi";
readonly data: null;
readonly cpi: null;
};
readonly "sanctum-stake-pool": {
readonly program: "SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy";
readonly data: null;
readonly cpi: null;
};
readonly "sanctum-stake-pool-2": {
readonly program: "SP12tWFxD9oJsVWNavTTBZvMbA6gkAmxtVgxdqvyvhY";
readonly data: null;
readonly cpi: null;
};
readonly "sanctum-stake-pool-3": {
readonly program: "SPMBzsVUuoHA4Jm6KunbsotaahvVikZs1JyTW6iJvbn";
readonly data: null;
readonly cpi: null;
};
}
RouterSvmVenue
Type · @eco-incorp/sauce/svm
export type RouterSvmVenue = keyof typeof ROUTER_SVM_VENUES;
RouterSvmExactInVenue
Type · @eco-incorp/sauce/svm
The venues @sauce/router swaps an exact input at, with no price limit.
export type RouterSvmExactInVenue = (typeof EXACT_IN_VENUES)[number];
RouterSvmAccountRole
Interface · @eco-incorp/sauce/svm
One account of a swap instruction: its name, and whether the instruction writes it and it signs.
export interface RouterSvmAccountRole {
readonly name: string;
readonly writable: boolean;
readonly signer: boolean;
}
RouterSvmAccount
Interface · @eco-incorp/sauce/svm
One account of a swap instruction, with the caller’s value for it.
export interface RouterSvmAccount<T> extends RouterSvmAccountRole {
readonly ref: T;
}
RouterSvmAccountOptions
Interface · @eco-incorp/sauce/svm
export interface RouterSvmAccountOptions {
readonly aToB: boolean;
readonly v2?: boolean;
readonly adaptive?: boolean;
readonly bitmapExtension?: boolean;
readonly tickArrays?: 1 | 2 | 3;
readonly poolV2?: boolean;
readonly beneficiaries?: number;
readonly assets?: number;
readonly makers?: number;
readonly custodies?: number;
readonly inCalcAccounts?: 1 | 5;
readonly outCalcAccounts?: 1 | 5;
readonly binArrays?: number;
}
