> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# protocols: Per-protocol subpath shape (uniswap-v3)

> Per-protocol subpath shape (uniswap-v3): the declaration and description of each of the 11 exports of @eco-incorp/sauce/protocols/uniswap-v3.

`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.

```typescript theme={null}
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`

```typescript theme={null}
protocolInfo: ProtocolInfo
```

### `deployments`

*Variable* · `@eco-incorp/sauce/protocols/uniswap-v3`

```typescript theme={null}
deployments: ChainDeployment[]
```

### `UniswapV3SwapRouterABI`

*Variable* · `@eco-incorp/sauce/protocols/uniswap-v3`

```typescript theme={null}
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`

```typescript theme={null}
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`

```typescript theme={null}
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`

```typescript theme={null}
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`

```typescript theme={null}
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`

```typescript theme={null}
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`

```typescript theme={null}
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`

```typescript theme={null}
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`

```typescript theme={null}
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"
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.