listProtocols(), getProtocol(slug), getProtocolsByCategory and getProtocolsByChain read the protocol catalog. Each protocol has its own subpath, @eco-incorp/sauce/protocols/<slug>, exporting protocolInfo, deployments, its ABIs and named SauceScript templates; the uniswap-v3 page shows that shape. @eco-incorp/sauce/skills returns each protocol’s Markdown document as text.
import { getProtocol, listProtocols } from "@eco-incorp/sauce";
import { UniswapV3PoolABI } from "@eco-incorp/sauce/protocols/uniswap-v3";
import { getProtocolSkill } from "@eco-incorp/sauce/skills";
Protocol subpaths (133)
aave-v2, aave-v3, aave-v4, abracadabra, across, aerodrome, aerodrome-slipstream, aevo, alchemix, ambient, arbitrum-bridge, arrakis, axelar, balancer-v2, base-bridge, baseswap, beefy, benqi, camelot, cbeth, cctp, celer, chainlink, chainlink-ccip, circle-gateway, compound-v2, compound-v3, connext, convex, cowswap, crvusd, curve, debridge, dodo, eigenlayer, ens, erc20, erc3156, erc4626, ethena, etherfi, euler-v2, fenix, fluid, frax, frax-ether, gains-network, gamma, gelato, gho, gmx-v1, gmx-v2, harvest, hegic, hop, hyperlane, instadapp, kelp, kim, kyberswap, kyberswap-aggregator, layerbank, layerzero, level-finance, lido, lifi, linea-bridge, liquity-v1, liquity-v2, lynex, maker, mantle-meth, maverick, moonwell, morpho-blue, mux-protocol, olympus, oneinch, openocean, optimism-bridge, opyn, pancakeswap-v2, pancakeswap-v3, paraswap, pendle, permit2, perpetual-protocol, polygon-bridge, premia, puffer, pyth, quickswap, radiant, ramses, reflexer, renzo, rocket-pool, sablier, safe, scroll-bridge, seaport, silo, socket, sommelier, spark, spookyswap, squid, stader, stargate, superfluid, sushiswap-v2, swell, synapse, syncswap, synthetix-v3, synthra-v3, thales, thena, thruster, tokemak, trader-joe, uniswap-v2, uniswap-v3, uniswap-v4, unitflow-v3, velodrome, venus, vertex, wormhole, yearn-v3, zerolend, zerox, zksync-bridge
Generated from the type declarations of @eco-incorp/sauce.
protocolInfo
Variable · @eco-incorp/sauce/protocols/uniswap-v3
protocolInfo: ProtocolInfo
deployments
Variable · @eco-incorp/sauce/protocols/uniswap-v3
deployments: ChainDeployment[]
UniswapV3SwapRouterABI
Variable · @eco-incorp/sauce/protocols/uniswap-v3
UniswapV3SwapRouterABI: readonly [
{
readonly name: "exactInputSingle";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "tokenIn";
readonly type: "address";
},
{
readonly name: "tokenOut";
readonly type: "address";
},
{
readonly name: "fee";
readonly type: "uint24";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "deadline";
readonly type: "uint256";
},
{
readonly name: "amountIn";
readonly type: "uint256";
},
{
readonly name: "amountOutMinimum";
readonly type: "uint256";
},
{
readonly name: "sqrtPriceLimitX96";
readonly type: "uint160";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountOut";
readonly type: "uint256";
}
];
},
{
readonly name: "exactInput";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "path";
readonly type: "bytes";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "deadline";
readonly type: "uint256";
},
{
readonly name: "amountIn";
readonly type: "uint256";
},
{
readonly name: "amountOutMinimum";
readonly type: "uint256";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountOut";
readonly type: "uint256";
}
];
},
{
readonly name: "exactOutputSingle";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "tokenIn";
readonly type: "address";
},
{
readonly name: "tokenOut";
readonly type: "address";
},
{
readonly name: "fee";
readonly type: "uint24";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "deadline";
readonly type: "uint256";
},
{
readonly name: "amountOut";
readonly type: "uint256";
},
{
readonly name: "amountInMaximum";
readonly type: "uint256";
},
{
readonly name: "sqrtPriceLimitX96";
readonly type: "uint160";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountIn";
readonly type: "uint256";
}
];
},
{
readonly name: "exactOutput";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "path";
readonly type: "bytes";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "deadline";
readonly type: "uint256";
},
{
readonly name: "amountOut";
readonly type: "uint256";
},
{
readonly name: "amountInMaximum";
readonly type: "uint256";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountIn";
readonly type: "uint256";
}
];
}
]
UniswapV3NonfungiblePositionManagerABI
Variable · @eco-incorp/sauce/protocols/uniswap-v3
UniswapV3NonfungiblePositionManagerABI: readonly [
{
readonly name: "mint";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "token0";
readonly type: "address";
},
{
readonly name: "token1";
readonly type: "address";
},
{
readonly name: "fee";
readonly type: "uint24";
},
{
readonly name: "tickLower";
readonly type: "int24";
},
{
readonly name: "tickUpper";
readonly type: "int24";
},
{
readonly name: "amount0Desired";
readonly type: "uint256";
},
{
readonly name: "amount1Desired";
readonly type: "uint256";
},
{
readonly name: "amount0Min";
readonly type: "uint256";
},
{
readonly name: "amount1Min";
readonly type: "uint256";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "deadline";
readonly type: "uint256";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "tokenId";
readonly type: "uint256";
},
{
readonly name: "liquidity";
readonly type: "uint128";
},
{
readonly name: "amount0";
readonly type: "uint256";
},
{
readonly name: "amount1";
readonly type: "uint256";
}
];
},
{
readonly name: "increaseLiquidity";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "tokenId";
readonly type: "uint256";
},
{
readonly name: "amount0Desired";
readonly type: "uint256";
},
{
readonly name: "amount1Desired";
readonly type: "uint256";
},
{
readonly name: "amount0Min";
readonly type: "uint256";
},
{
readonly name: "amount1Min";
readonly type: "uint256";
},
{
readonly name: "deadline";
readonly type: "uint256";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "liquidity";
readonly type: "uint128";
},
{
readonly name: "amount0";
readonly type: "uint256";
},
{
readonly name: "amount1";
readonly type: "uint256";
}
];
},
{
readonly name: "decreaseLiquidity";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "tokenId";
readonly type: "uint256";
},
{
readonly name: "liquidity";
readonly type: "uint128";
},
{
readonly name: "amount0Min";
readonly type: "uint256";
},
{
readonly name: "amount1Min";
readonly type: "uint256";
},
{
readonly name: "deadline";
readonly type: "uint256";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amount0";
readonly type: "uint256";
},
{
readonly name: "amount1";
readonly type: "uint256";
}
];
},
{
readonly name: "collect";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "tokenId";
readonly type: "uint256";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "amount0Max";
readonly type: "uint128";
},
{
readonly name: "amount1Max";
readonly type: "uint128";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amount0";
readonly type: "uint256";
},
{
readonly name: "amount1";
readonly type: "uint256";
}
];
}
]
UniswapV3FactoryABI
Variable · @eco-incorp/sauce/protocols/uniswap-v3
UniswapV3FactoryABI: readonly [
{
readonly name: "getPool";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [
{
readonly name: "tokenA";
readonly type: "address";
},
{
readonly name: "tokenB";
readonly type: "address";
},
{
readonly name: "fee";
readonly type: "uint24";
}
];
readonly outputs: readonly [
{
readonly name: "pool";
readonly type: "address";
}
];
},
{
readonly name: "createPool";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [
{
readonly name: "tokenA";
readonly type: "address";
},
{
readonly name: "tokenB";
readonly type: "address";
},
{
readonly name: "fee";
readonly type: "uint24";
}
];
readonly outputs: readonly [
{
readonly name: "pool";
readonly type: "address";
}
];
}
]
UniswapV3QuoterV2ABI
Variable · @eco-incorp/sauce/protocols/uniswap-v3
UniswapV3QuoterV2ABI: readonly [
{
readonly name: "quoteExactInputSingle";
readonly type: "function";
readonly stateMutability: "nonpayable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "tokenIn";
readonly type: "address";
},
{
readonly name: "tokenOut";
readonly type: "address";
},
{
readonly name: "amountIn";
readonly type: "uint256";
},
{
readonly name: "fee";
readonly type: "uint24";
},
{
readonly name: "sqrtPriceLimitX96";
readonly type: "uint160";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountOut";
readonly type: "uint256";
},
{
readonly name: "sqrtPriceX96After";
readonly type: "uint160";
},
{
readonly name: "initializedTicksCrossed";
readonly type: "uint32";
},
{
readonly name: "gasEstimate";
readonly type: "uint256";
}
];
}
]
UniswapV3SwapRouter02ABI
Variable · @eco-incorp/sauce/protocols/uniswap-v3
UniswapV3SwapRouter02ABI: readonly [
{
readonly name: "exactInputSingle";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "tokenIn";
readonly type: "address";
},
{
readonly name: "tokenOut";
readonly type: "address";
},
{
readonly name: "fee";
readonly type: "uint24";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "amountIn";
readonly type: "uint256";
},
{
readonly name: "amountOutMinimum";
readonly type: "uint256";
},
{
readonly name: "sqrtPriceLimitX96";
readonly type: "uint160";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountOut";
readonly type: "uint256";
}
];
},
{
readonly name: "exactInput";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "path";
readonly type: "bytes";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "amountIn";
readonly type: "uint256";
},
{
readonly name: "amountOutMinimum";
readonly type: "uint256";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountOut";
readonly type: "uint256";
}
];
},
{
readonly name: "exactOutputSingle";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "tokenIn";
readonly type: "address";
},
{
readonly name: "tokenOut";
readonly type: "address";
},
{
readonly name: "fee";
readonly type: "uint24";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "amountOut";
readonly type: "uint256";
},
{
readonly name: "amountInMaximum";
readonly type: "uint256";
},
{
readonly name: "sqrtPriceLimitX96";
readonly type: "uint160";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountIn";
readonly type: "uint256";
}
];
},
{
readonly name: "exactOutput";
readonly type: "function";
readonly stateMutability: "payable";
readonly inputs: readonly [
{
readonly name: "params";
readonly type: "tuple";
readonly components: readonly [
{
readonly name: "path";
readonly type: "bytes";
},
{
readonly name: "recipient";
readonly type: "address";
},
{
readonly name: "amountOut";
readonly type: "uint256";
},
{
readonly name: "amountInMaximum";
readonly type: "uint256";
}
];
}
];
readonly outputs: readonly [
{
readonly name: "amountIn";
readonly type: "uint256";
}
];
}
]
UniswapV3PoolABI
Variable · @eco-incorp/sauce/protocols/uniswap-v3
UniswapV3PoolABI: readonly [
{
readonly name: "slot0";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [
];
readonly outputs: readonly [
{
readonly name: "sqrtPriceX96";
readonly type: "uint160";
},
{
readonly name: "tick";
readonly type: "int24";
},
{
readonly name: "observationIndex";
readonly type: "uint16";
},
{
readonly name: "observationCardinality";
readonly type: "uint16";
},
{
readonly name: "observationCardinalityNext";
readonly type: "uint16";
},
{
readonly name: "feeProtocol";
readonly type: "uint8";
},
{
readonly name: "unlocked";
readonly type: "bool";
}
];
},
{
readonly name: "liquidity";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [
];
readonly outputs: readonly [
{
readonly name: "";
readonly type: "uint128";
}
];
},
{
readonly name: "fee";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [
];
readonly outputs: readonly [
{
readonly name: "";
readonly type: "uint24";
}
];
},
{
readonly name: "tickSpacing";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [
];
readonly outputs: readonly [
{
readonly name: "";
readonly type: "int24";
}
];
},
{
readonly name: "token0";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [
];
readonly outputs: readonly [
{
readonly name: "";
readonly type: "address";
}
];
},
{
readonly name: "token1";
readonly type: "function";
readonly stateMutability: "view";
readonly inputs: readonly [
];
readonly outputs: readonly [
{
readonly name: "";
readonly type: "address";
}
];
}
]
swap
Variable · @eco-incorp/sauce/protocols/uniswap-v3
swap = "\nimport { UniswapV3SwapRouterABI as ISwapRouter } from \"./abis\";\n\nfunction main(routerAddress: Address, tokenIn: Address, tokenOut: Address, fee: Uint256, amountIn: Uint256, amountOutMin: Uint256, recipient: Address): Uint256 {\n const router = ISwapRouter.at(routerAddress);\n return router.exactInputSingle({tokenIn: tokenIn, tokenOut: tokenOut, fee: fee, recipient: recipient, deadline: 99999999999, amountIn: amountIn, amountOutMinimum: amountOutMin, sqrtPriceLimitX96: 0});\n}\n"
addLiquidity
Variable · @eco-incorp/sauce/protocols/uniswap-v3
addLiquidity = "\nimport { UniswapV3NonfungiblePositionManagerABI as INonfungiblePositionManager } from \"./abis\";\n\nfunction main(nfpmAddress: Address, token0: Address, token1: Address, fee: Uint256, tickLower: Int256, tickUpper: Int256, amount0Desired: Uint256, amount1Desired: Uint256, amount0Min: Uint256, amount1Min: Uint256, recipient: Address): { tokenId: Uint256, liquidity: Uint256, amount0: Uint256, amount1: Uint256 } {\n const nfpm = INonfungiblePositionManager.at(nfpmAddress);\n return nfpm.mint({token0: token0, token1: token1, fee: fee, tickLower: tickLower, tickUpper: tickUpper, amount0Desired: amount0Desired, amount1Desired: amount1Desired, amount0Min: amount0Min, amount1Min: amount1Min, recipient: recipient, deadline: 99999999999});\n}\n"
removeLiquidity
Variable · @eco-incorp/sauce/protocols/uniswap-v3
removeLiquidity = "\nimport { UniswapV3NonfungiblePositionManagerABI as INonfungiblePositionManager } from \"./abis\";\n\nfunction main(nfpmAddress: Address, tokenId: Uint256, liquidity: Uint256, amount0Min: Uint256, amount1Min: Uint256): { amount0: Uint256, amount1: Uint256 } {\n const nfpm = INonfungiblePositionManager.at(nfpmAddress);\n return nfpm.decreaseLiquidity({tokenId: tokenId, liquidity: liquidity, amount0Min: amount0Min, amount1Min: amount1Min, deadline: 99999999999});\n}\n"
