diff --git a/docs/concepts/protocol/architecture.md b/docs/concepts/protocol/architecture.md
new file mode 100644
index 000000000..6a8e58486
--- /dev/null
+++ b/docs/concepts/protocol/architecture.md
@@ -0,0 +1,49 @@
+---
+id: architecture
+title: Architecture
+sidebar_position: 4
+---
+
+t1 is a TEE-enabled cross-chain application infrastructure that leverages defense-in-depth to achieve real-time proving. In the short-term (v1), we achieve RTP with TEE proofs. Longer term, t1 will become a permissionless and decentralized network that will complement TEE proofs with crypto-economic security and bespoke zero-knowledge proofs. You can read more about our long term architecture in our litepaper.
+
+### Network Architecture v1
+
+
+
+1. A user, Alice, deposits funds to a t1 bridge contract on Ethereum or on a _Partner Rollup_. Once the deposit is confirmed on the source chain, it gets processed by t1 and Alice gets her funds credited towards her aggregate t1 balance.
+
+2. Alice creates a t1-native transaction either to interact with applications on t1 or to trigger transactions (including withdrawals) on Ethereum or a _Partner Rollup_.
+
+3. A TEE enabled sequencer (node) receives the transactions, sequences and executes the block. As a part of execution, when required, the sequencer reads from (xChain Read) and writes (xChain Write) to Partner Rollups, both enabled within the TEE.
+
+4. The TEE-enabled sequencer generates new trie roots _r_ and a TEE proof. These are submitted to the t1 Canonical Bridge contract on Ethereum and the full compressed transaction data is submitted to Ethereum blob DA.
+
+5. t1’s _Canonical Bridge_ contract on Ethereum checks the newly submitted t1 trie root _r_ and TEE proof and transaction data availability for consistency. If successful, the trie root _r_ is accepted. This facilitates withdrawals to L1 with a single L1 slot delay (6s on average).
+
+_Note: Suppose, Alice had desired to withdraw funds, in step 2. She may now submit to the Canonical Bridge an Ethereum claim transaction with an inclusion proof of her withdrawal transaction in t1 (as contained within the withdrawal trie committed to in r). The contract then releases the funds to Alice on Ethereum._
+
+### Network Architecture v2
+
+
+
+1. A user, Alice, deposits funds to a t1 bridge contract on Ethereum or on a _Partner Rollup_. Once the deposit is confirmed on the source chain, it gets processed by t1 and Alice gets her funds credited towards her aggregate t1 balance.
+
+2. Alice changes her wallet’s network to t1, creates a t1-native transaction (with [some fields encrypted](https://www.notion.so/Litepaper-9a2cc4d321ce4a08a4905aa809fb436e?pvs=21) to the shared rotating TEE pubkey), uses her wallet to sign it, and submits it to the network (i.e. the t1 mempool); this may or may not be a specially-treated withdrawal transaction (to Ethereum or a _Partner Rollup_).
+3. A t1 _Sequencer_ receives and gossips such a partially-blind transaction to other _Sequencers_ in the t1 _Sequencing AVS_ network.
+
+4. After collecting transactions for one t1 slot (currently set to one second), the slot-leading _Sequencer_ proposes an ordering (a blind non-executed bundle). The rest of _Sequencers_ vote on it using Espresso HotShot, to form _Sequencing Consensus_. This bundle and a proof of _Sequencing Consensus_ is then passed on to the _Execution AVS_ network.
+
+5. t1 _Executors_ validate the proof of _Sequencing Consensus_, decrypt the encrypted parts of the received bundle (if needed and due) using their TEE-derived shared rotating private key, and execute its now fully plaintext ordered transactions against the current state of the t1 blockchain. The slot-leading _Executor_ proposes a new trie root tuple _r_ of state trie root, withdrawals trie root, and proof-of-read trie root—and the rest of the _Executors_ vote on such new trie tuple _r_ to form _Execution Consensus_.
+
+ - Note: _Executors_ use follower nodes also running in TEEs to read from and write to _Partner Rollups_ (whenever required by a t1 tx).
+
+6. The _Execution_ AVS posts t1’s new trie roots _r_ and all the corresponding consensus proofs to the Ethereum t1 _Canonical Bridge_ contract and the full compressed transactions to Ethereum blob DA.
+
+ - In addition, t1 progressively incentivizes the generation and posting of _periodic ZKPs_ to the _Canonical Bridge_ on Ethereum to create _ZKP checkpoints_ resetting the value-at-risk counters and also speeding up the potential _on-demand ZKP_ creation when required. t1 dynamic gas pricing considers how much AVS security budget is still available, to reach an equilibrium.
+ - In the rare event that new t1 transactions’ (as per all new trie root tuples) cumulative value since the last _ZKP checkpoint,_ despite the mechanisms above, would exceed the crypto-economic security budget provided by _Execution AVS_, also an _on-demand ZKP_ is required by the _Canonical Bridge_, pausing finalization until then; this would increase the withdrawal delay to hours under such extreme conditions.
+
+7. t1’s _Canonical Bridge_ contract on Ethereum checks the new submitted t1 trie root tuple _r_, _Sequencing Consensus,_ _Execution Consensus_ and transaction data availability for consistency. If successful, such _r_ is accepted. This then generally facilitates withdrawals from t1 to Ethereum with a single-Ethereum-block delay only (i.e. 6 seconds on average).
+
+ - Suppose, Alice had desired to withdraw funds, in step 2. She may now submit to the _Canonical Bridge_ an Ethereum claim transaction with an inclusion proof of her withdrawal transaction in t1 (as contained within the withdrawal trie committed to in _r_). The contract then releases the funds to Alice on Ethereum.
+
+8. If Alice wishes to withdraw funds to her account on a _Partner Rollup_ rather than on Ethereum, the same trie root tuple _r_ update in the _Canonical Bridge_ (i.e. on Ethereum) is required as in 7. However, she submits the claim transaction with an inclusion proof of the withdrawal to the (non-canonical) t1 bridge contract on _Partner Rollup_ instead. The _Partner Rollup_ bridge contract verifies the inclusion proof with respect to _r_ as accepted by the _Canonical Bridge_ on Ethereum (using _Partner Rollup_’s Ethereum read abilities, usually via _Partner Rollup_’s own L1 canonical bridge) and then releases the funds to Alice on _Partner Rollup_.
diff --git a/docs/concepts/protocol/tee.md b/docs/concepts/protocol/tee.md
index 9441bce55..51b588b94 100644
--- a/docs/concepts/protocol/tee.md
+++ b/docs/concepts/protocol/tee.md
@@ -9,49 +9,3 @@ Trusted Execution Environments (TEEs) are specialized hardware-based environment
Two key requirements for achieving full unification of Ethereum and the rollup ecosystem, without reorg risks and asynchrony at all, are shared sequencing across all chains and real-time proving (RTP). At t1, we are working on RTP by employing TEEs. However, TEEs also help with cross-chain composability by enabling lightclients in t1 to reliably read data from and write data to partner rollups. This setup allows t1 to effectively aggregate the state of Ethereum and partner rollups. Our current design, which does not rely on shared sequencing, enables t1 to have as low as a single-block asynchrony window (12 seconds) with Ethereum—a substantial improvement over the current seven-day window in Optimistic Rollups and hours-long window in Zero-Knowledge Rollups.
In addition to RTP and cross-chain communication, TEEs allow t1 to offer an encrypted mempool. An encrypted mempool prevents adversarial reordering, such as sandwich attacks, where an attacker observes a pending transaction and places trades before (front-running) and after (back-running) it, profiting at the expense of regular users. Sandwich attacks cost Ethereum users over [$100mn every year](https://eigenphi.io/mev/ethereum/sandwich). An encrypted mempool also facilitates use cases like sealed-bid auctions and information-incomplete games.
-
-## Architecture
-
-t1 is a TEE-enabled cross-chain application infrastructure that leverages defense-in-depth to achieve real-time proving. In the short-term (v1), we achieve RTP with TEE proofs. Longer term, t1 will become a permissionless and decentralized network that will complement TEE proofs with crypto-economic security and bespoke zero-knowledge proofs. You can read more about our long term architecture in our litepaper.
-
-### Network Architecture v1
-
-
-
-1. A user, Alice, deposits funds to a t1 bridge contract on Ethereum or on a _Partner Rollup_. Once the deposit is confirmed on the source chain, it gets processed by t1 and Alice gets her funds credited towards her aggregate t1 balance.
-
-2. Alice creates a t1-native transaction either to interact with applications on t1 or to trigger transactions (including withdrawals) on Ethereum or a _Partner Rollup_.
-
-3. A TEE enabled sequencer (node) receives the transactions, sequences and executes the block. As a part of execution, when required, the sequencer reads from (xChain Read) and writes (xChain Write) to Partner Rollups, both enabled within the TEE.
-
-4. The TEE-enabled sequencer generates new trie roots _r_ and a TEE proof. These are submitted to the t1 Canonical Bridge contract on Ethereum and the full compressed transaction data is submitted to Ethereum blob DA.
-
-5. t1’s _Canonical Bridge_ contract on Ethereum checks the newly submitted t1 trie root _r_ and TEE proof and transaction data availability for consistency. If successful, the trie root _r_ is accepted. This facilitates withdrawals to L1 with a single L1 slot delay (6s on average).
-
-_Note: Suppose, Alice had desired to withdraw funds, in step 2. She may now submit to the Canonical Bridge an Ethereum claim transaction with an inclusion proof of her withdrawal transaction in t1 (as contained within the withdrawal trie committed to in r). The contract then releases the funds to Alice on Ethereum._
-
-### Network Architecture v2
-
-
-
-1. A user, Alice, deposits funds to a t1 bridge contract on Ethereum or on a _Partner Rollup_. Once the deposit is confirmed on the source chain, it gets processed by t1 and Alice gets her funds credited towards her aggregate t1 balance.
-
-2. Alice changes her wallet’s network to t1, creates a t1-native transaction (with [some fields encrypted](https://www.notion.so/Litepaper-9a2cc4d321ce4a08a4905aa809fb436e?pvs=21) to the shared rotating TEE pubkey), uses her wallet to sign it, and submits it to the network (i.e. the t1 mempool); this may or may not be a specially-treated withdrawal transaction (to Ethereum or a _Partner Rollup_).
-3. A t1 _Sequencer_ receives and gossips such a partially-blind transaction to other _Sequencers_ in the t1 _Sequencing AVS_ network.
-
-4. After collecting transactions for one t1 slot (currently set to one second), the slot-leading _Sequencer_ proposes an ordering (a blind non-executed bundle). The rest of _Sequencers_ vote on it using Espresso HotShot, to form _Sequencing Consensus_. This bundle and a proof of _Sequencing Consensus_ is then passed on to the _Execution AVS_ network.
-
-5. t1 _Executors_ validate the proof of _Sequencing Consensus_, decrypt the encrypted parts of the received bundle (if needed and due) using their TEE-derived shared rotating private key, and execute its now fully plaintext ordered transactions against the current state of the t1 blockchain. The slot-leading _Executor_ proposes a new trie root tuple _r_ of state trie root, withdrawals trie root, and proof-of-read trie root—and the rest of the _Executors_ vote on such new trie tuple _r_ to form _Execution Consensus_.
-
- - Note: _Executors_ use follower nodes also running in TEEs to read from and write to _Partner Rollups_ (whenever required by a t1 tx).
-
-6. The _Execution_ AVS posts t1’s new trie roots _r_ and all the corresponding consensus proofs to the Ethereum t1 _Canonical Bridge_ contract and the full compressed transactions to Ethereum blob DA.
-
- - In addition, t1 progressively incentivizes the generation and posting of _periodic ZKPs_ to the _Canonical Bridge_ on Ethereum to create _ZKP checkpoints_ resetting the value-at-risk counters and also speeding up the potential _on-demand ZKP_ creation when required. t1 dynamic gas pricing considers how much AVS security budget is still available, to reach an equilibrium.
- - In the rare event that new t1 transactions’ (as per all new trie root tuples) cumulative value since the last _ZKP checkpoint,_ despite the mechanisms above, would exceed the crypto-economic security budget provided by _Execution AVS_, also an _on-demand ZKP_ is required by the _Canonical Bridge_, pausing finalization until then; this would increase the withdrawal delay to hours under such extreme conditions.
-
-7. t1’s _Canonical Bridge_ contract on Ethereum checks the new submitted t1 trie root tuple _r_, _Sequencing Consensus,_ _Execution Consensus_ and transaction data availability for consistency. If successful, such _r_ is accepted. This then generally facilitates withdrawals from t1 to Ethereum with a single-Ethereum-block delay only (i.e. 6 seconds on average).
-
- - Suppose, Alice had desired to withdraw funds, in step 2. She may now submit to the _Canonical Bridge_ an Ethereum claim transaction with an inclusion proof of her withdrawal transaction in t1 (as contained within the withdrawal trie committed to in _r_). The contract then releases the funds to Alice on Ethereum.
-
-8. If Alice wishes to withdraw funds to her account on a _Partner Rollup_ rather than on Ethereum, the same trie root tuple _r_ update in the _Canonical Bridge_ (i.e. on Ethereum) is required as in 7. However, she submits the claim transaction with an inclusion proof of the withdrawal to the (non-canonical) t1 bridge contract on _Partner Rollup_ instead. The _Partner Rollup_ bridge contract verifies the inclusion proof with respect to _r_ as accepted by the _Canonical Bridge_ on Ethereum (using _Partner Rollup_’s Ethereum read abilities, usually via _Partner Rollup_’s own L1 canonical bridge) and then releases the funds to Alice on _Partner Rollup_.
diff --git a/docs/contracts/permit2/_category_.json b/docs/contracts/permit2/_category_.json
deleted file mode 100644
index 54a6ea7d5..000000000
--- a/docs/contracts/permit2/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Permit2",
- "position": 4,
- "collapsed": true
- }
diff --git a/docs/contracts/permit2/overview.md b/docs/contracts/permit2/overview.md
deleted file mode 100644
index 20b3ed61d..000000000
--- a/docs/contracts/permit2/overview.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-[`Permit2`](https://github.com/Uniswap/permit2) is a unification of 2 contracts, [`SignatureTransfer`](./reference/signature-transfer.md) and [`AllowanceTransfer`](./reference/allowance-transfer.md). The `SignatureTransfer` contract handles all signature-based transfers, meaning that an allowance on the token is bypassed and permissions to the spender only last for the duration of the transaction that the one-time signature is spent. The `AllowanceTransfer` contract handles setting allowances on tokens, giving permissions to spenders on a specified amount for a specified duration of time. Any transfers that then happen through the `AllowanceTransfer` contract will only succeed if the proper permissions have been set.
-
-## Resources
-
-A great [explanation](https://github.com/dragonfly-xyz/useful-solidity-patterns/tree/main/patterns/permit2) of the Permit2 contract and example usage.
-
-## Approving Permit2
-
-Before integrating contracts can request users’ tokens through Permit2, users must approve the Permit2 contract through the specific token contract by calling something like:
-
-```solidity
-USDC.approve(permit2Address, totalAmount);
-```
-
-To get the maximal benefits from Permit2, users should do a max approval on the contract where:
-```solidity
-totalAmount = type(uint256).max;
-```
-
-
diff --git a/docs/contracts/permit2/reference/_category_.json b/docs/contracts/permit2/reference/_category_.json
deleted file mode 100644
index 2710b6a63..000000000
--- a/docs/contracts/permit2/reference/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 2,
- "collapsed": false
- }
-
\ No newline at end of file
diff --git a/docs/contracts/permit2/reference/allowance-transfer.md b/docs/contracts/permit2/reference/allowance-transfer.md
deleted file mode 100644
index 4b20fe217..000000000
--- a/docs/contracts/permit2/reference/allowance-transfer.md
+++ /dev/null
@@ -1,171 +0,0 @@
----
-id: allowance-transfer
-title: AllowanceTransfer
-sidebar_position: 2
----
-
-> [**Source Code**](https://github.com/Uniswap/permit2/blob/main/src/AllowanceTransfer.sol)
-
-## Overview
-
-The main entry points on this contract are:
-
-- `approve`
- - Use approve when you do not want to set token permissions through signature validation.
-- `permit`
- - Use permit when you do want to set token permissions through signature validation.
-- `transferFrom`
- - Use transferFrom when you want to transfer a token and have the necessary permissions to do so.
-
-## Functions
-
-### `approve`
-
-**Function Signature**
-
-```solidity
-function approve(address token, address spender, uint160 amount, uint48 expiration) external
-```
-
-**Parameters**
-
-- token - the token address to approve
-- spender - the spender address to approve
-- amount - the approved amount of the token, `type(uint160).max` is treated as an unlimited allowance
-- expiration - the timestamp at which the approval is no longer valid, passing in `0` will expire the permissions at `block.timestamp`
-
-### Single `permit`
-
-**Function Signature**
-
-```solidity
-function permit(address owner, PermitSingle memory permitSingle, bytes calldata signature) external;
-```
-
-**Parameters**
-
-- owner - the address of the token’s owner
-- permitSingle - constructed with the following:
-
-```solidity
-struct PermitSingle {
- // the permit data for a single token allowance
- PermitDetails details;
- // address permissioned on the allowed tokens
- address spender;
- // deadline on the permit signature
- uint256 sigDeadline;
- }
-
-struct PermitDetails {
- // ERC20 token address
- address token;
- // the maximum amount allowed to spend
- uint160 amount;
- // timestamp at which a spender's token allowances become invalid
- uint48 expiration;
- // an incrementing value indexed per owner,token,and spender for each signature
- uint48 nonce;
- }
-```
-
-- signature - the signature over the permit data. Supports EOA signatures, compact signatures defined by [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098), and contract signatures defined by [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271)
-
-### Batched `permit`
-
-**Function Signature**
-
-```solidity
-function permit(address owner, PermitBatch memory permitBatch, bytes calldata signature) external;
-```
-
-**Parameters**
-
-- owner - the address of the token’s owner
-- permitBatch - constructed with the following:
-
-```solidity
-struct PermitBatch {
- // the permit data for multiple token allowances
- PermitDetails[] details;
- // address permissioned on the allowed tokens
- address spender;
- // deadline on the permit signature
- uint256 sigDeadline;
- }
-struct PermitDetails {
- // ERC20 token address
- address token;
- // the maximum amount allowed to spend
- uint160 amount;
- // timestamp at which a spender's token allowances become invalid
- uint48 expiration;
- // an incrementing value indexed per owner,token,and spender for each signature
- uint48 nonce;
- }
-```
-
-- signature - the signature over the permit data. Supports EOA signatures, compact signatures defined by [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098), and contract signatures defined by [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271)
-
-### Single `transferFrom`
-
-**Function Signature**
-
-```solidity
-function transferFrom(address from, address to, uint160 amount, address token) external;
-```
-
-**Parameters**
-
-- from - the address to transfer the token from
-- to - the address of the recipient
-- amount - the amount of the token to transfer, the maximum amount is `type(uint160).max`
-- token - the address of the token to be transferred
-
-### Batched `transferFrom`
-
-**Function Signature**
-
-```solidity
-function transferFrom(AllowanceTransferDetails[] calldata transferDetails) external;
-```
-
-**Parameters**
-
-- transferDetails - constructed with the following
-
-```solidity
-struct AllowanceTransferDetails {
- // the owner of the token
- address from;
- // the recipient of the token
- address to;
- // the amount of the token
- uint160 amount;
- // the token to be transferred
- address token;
- }
-```
-
-## Nonce Schema
-
-The nonces used to protect against replay attacks of signatures are similar to standard incrementing nonces. However, we pack nonces with an allowed amount, and an allowed duration. This means that nonces are incremented *per owner*, *per token*, and *per spender.* Which further implies that you could sign two different permits at the same time with the same nonces and they *won’t* cancel each other out so long as the token or spender differ.
-
-The mapping nonces are packed in is defined as follows:
-
-```solidity
-mapping(address => mapping(address => mapping(address => PackedAllowance))) public allowance;
-```
-
-and indexed as follows:
-
-```solidity
-PackedAllowance allowanceInformation = allowance[ownerAddress][tokenAddress][spenderAddress];
-uint48 nonce = allowanceInformation.nonce;
-```
-
-## Security Considerations
-
-Similar to the security considerations outlined in SignatureTransfer, integrating contracts need to perform valid safety checks on the caller and pass in correct addresses for the `from` argument in any transfer calls.
-
-All amounts on the `AllowanceTransfer` contract are of type `uint160` so make sure integrating contracts safely downcast if they have to. See how Permit2Lib downcasts safely.
\ No newline at end of file
diff --git a/docs/contracts/permit2/reference/signature-transfer.md b/docs/contracts/permit2/reference/signature-transfer.md
deleted file mode 100644
index 76ebfe844..000000000
--- a/docs/contracts/permit2/reference/signature-transfer.md
+++ /dev/null
@@ -1,241 +0,0 @@
----
-id: signature-transfer
-title: SignatureTransfer
-sidebar_position: 1
----
-
-> [**Source Code**](https://github.com/Uniswap/permit2/blob/main/src/SignatureTransfer.sol)
-
-## Overview
-
-The main entry points on this contract are:
-
-- `permitTransferFrom`
- - Use permitTransferFrom when you want to transfer a token from an owner through signature validation.
-- `permitWitnessTransferFrom`
- - Use permitWitnessTransferFrom when you want to transfer a token from an owner through signature validation, but you would also like to validate other data. Any other data you wish to be validated can be passed through with the `witness` param.
-
-Each of these functions is overloaded with a batched version that allows users to transfer multiple tokens with 1 transaction.
-
-## Functions
-
-### Single `permitTransferFrom`
-
-Use the `permitTransferFrom` to transfer just one token.
-
-**Function signature**
-
-```solidity
-function permitTransferFrom(
- PermitTransferFrom memory permit,
- SignatureTransferDetails calldata transferDetails,
- address owner,
- bytes calldata signature
- ) external
-```
-
-**Parameters**
-
-- permit - Construct `PermitTransferFrom` struct with the following:
-
-```solidity
-struct PermitTransferFrom {
- TokenPermissions permitted;
- // a unique value for every token owner's signature to prevent signature replays
- uint256 nonce;
- // deadline on the permit signature
- uint256 deadline;
- }
-
-struct TokenPermissions {
- // ERC20 token address
- address token;
- // the maximum amount that can be spent
- uint256 amount;
- }
-```
-
-- transferDetails - information about recipient and amount
-
-```solidity
-struct SignatureTransferDetails {
- // recipient address
- address to;
- // spender requested amount
- uint256 requestedAmount;
- }
-```
-
-- owner - the signer of the permit message and owner of the tokens
-- signature - the signature over the permit data. Supports EOA signatures, compact signatures defined by [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098), and contract signatures defined by [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271)
-
-### Batched `permitTransferFrom`
-
-Use `permitTransferFrom` with the batched parameters when you want to transfer multiple tokens from an owner.
-
-**Function Signature**
-
-```solidity
-function permitTransferFrom(
- PermitBatchTransferFrom memory permit,
- SignatureTransferDetails[] calldata transferDetails,
- address owner,
- bytes calldata signature
- ) external
-```
-
-**Parameters**
-
-- permit - Construct `PermitBatchTransferFrom` with the following:
-
-```solidity
-struct PermitBatchTransferFrom {
- // the tokens and corresponding amounts permitted for a transfer
- TokenPermissions[] permitted;
- // a unique value for every token owner's signature to prevent signature replays
- uint256 nonce;
- // deadline on the permit signature
- uint256 deadline;
- }
-
-struct TokenPermissions {
- // ERC20 token address
- address token;
- // the maximum amount that can be spent
- uint256 amount;
- }
-```
-
-- transferDetails - parameterized by the spender with information about the token transfer.
- - The length of the `SignatureTransferDetails` array must equal the length of the `TokenPermissions` array passed in with `PermitBatchTransferFrom` struct. The token to be transferred specified in the `TokenPermissions` array should match the index of the `SignatureTransferDetails` array.
- - Note that if a spender is permitted to a token but does not need to transfer that token, they can specify that the `requestedAmount` is 0 so that the transfer is skipped.
-- owner - the signer of the permit message and owner of the tokens
-
-```solidity
-struct SignatureTransferDetails {
- // recipient address
- address to;
- // spender requested amount
- uint256 requestedAmount;
- }
-```
-
-- signature - the signature over the permit data. Supports EOA signatures, compact signatures defined by [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098), and contract signatures defined by [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271)
-
-### Single `permitWitnessTransferFrom`
-
-**Function Signature**
-
-```solidity
-function permitWitnessTransferFrom(
- PermitTransferFrom memory permit,
- SignatureTransferDetails calldata transferDetails,
- address owner,
- bytes32 witness,
- string calldata witnessTypeString,
- bytes calldata signature
- ) external
-```
-
-**Parameters**
-
-- permit - constructed with the same type as defined above in the single permitTransferFrom case
-- transferDetails constructed with same type as defined above in the single permitTransferFrom case
-- owner - the signer of the permit message and owner of the tokens
-- witness - arbitrary data passed through that was signed by the user. Is used to reconstruct the signature. Pass through this data if you want the permit signature recovery also to validate other data.
-- witnessTypeString - a string that defines the typed data that the witness was hashed from. It must also include the `TokenPermissions` struct and comply with [EIP-712](https://eips.ethereum.org/EIPS/eip-712) struct ordering. See an example below.
-- signature - the signature over the permit data. Supports EOA signatures, compact signatures defined by [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098), and contract signatures defined by [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271)
-
-### Batch `permitWitnessTransferFrom`
-
-**Function Signature**
-
-```solidity
-function permitWitnessTransferFrom(
- PermitBatchTransferFrom memory permit,
- SignatureTransferDetails[] calldata transferDetails,
- address owner,
- bytes32 witness,
- string calldata witnessTypeString,
- bytes calldata signature
- ) external
-```
-
-**Parameters**
-
-- permit - constructed with the same type in the batched case of `permitTransferFrom`
-- transferDetails - constructed with the same type in the batched case of `permitTransferFrom`
-- owner - the signer of the permit message and owner of the tokens
-- witness - arbitrary data passed through that was signed by the user. Is used to reconstruct the signature. Pass through this data if you want the permit signature recovery to also validate other data.
-- witnessTypeString - a string that defines the typed data that the witness was hashed from. It must also include the `TokenPermissions` struct and comply with [EIP-712](https://eips.ethereum.org/EIPS/eip-712) struct ordering. See an example below.
-- signature - the signature over the permit data. Supports EOA signatures, compact signatures defined by [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098), and contract signatures defined by [EIP-1271](https://eips.ethereum.org/EIPS/eip-1271)
-
-**Example `permitWitnessTransferFrom` parameters**
-
-If an integrating contract would also like the signer to verify information about a trade, an integrating contract may ask the signer to also sign an `ExampleTrade` object that we define below:
-
-```solidity
-struct ExampleTrade {
- address exampleTokenAddress;
- uint256 exampleMinimumAmountOut;
-}
-```
-
-Following EIP-721, the typehash for the data would be defined by:
-
-```solidity
-bytes32 _EXAMPLE_TRADE_TYPEHASH = keccak256('ExampleTrade(address exampleTokenAddress,uint256 exampleMinimumAmountOut)');
-```
-
-The `witness` that should be passed along with the permit message should be:
-
-```solidity
- bytes32 witness = keccak256(
- abi.encode(_EXAMPLE_TRADE_TYPEHASH, exampleTrade.exampleTokenAddress, exampleTrade.exampleMinimumAmountOut));
-```
-
-And the `witnessTypeString` to be passed in should be:
-
-```solidity
-string constant witnessTypeString = "ExampleTrade witness)ExampleTrade(address exampleTokenAddress,uint256 exampleMinimumAmountOut)TokenPermissions(address token,uint256 amount)"
-```
-
-It’s important to note that when hashing multiple typed structs, the ordering of the structs in the type string matters. Referencing EIP-721:
-
-> If the struct type references other struct types (and these in turn reference even more struct types), then the set of referenced struct types is collected, sorted by name and appended to the encoding. An example encoding is `Transaction(Person from,Person to,Asset tx)Asset(address token,uint256 amount)Person(address wallet,string name)`
->
-
-## Nonce Schema
-
-Instead of using incrementing nonces, we introduce non-monotonic, or unordered nonces with a `nonceBitmap`.
-
-The `nonceBitmap` maps an owner's address to a uint248 value, which we will call `wordPos` which is the index of the desired bitmap. There are 2248 possible indices thus 2248 possible bitmaps where each bitmap holds 256 bits. A bit must be flipped on to prevent replays of users’ signatures. Bits that are dirtied may not be used again.
-
-```solidity
-// nonceBitmap[ownerAddress][wordPosition] retrieves a uint256 bitmap
-mapping(address => mapping(uint248 => uint256)) public nonceBitmap;
-```
-
-Users will sign a `uint256 nonce` value where the first 248 bits correspond to the word position of the bitmap to dirty and the last 8 bits correspond to the actual bit position being flipped on.
-
-```solidity
-uint248 wordPos = uint248(nonce >> 8);
-uint8 bitPos = uint8(nonce);
-```
-
-```solidity
-uint256 bitmap = nonceBitmap[wordPos][bitPos]
-```
-
-## Security Considerations
-
-An integrating contract must check that tokens are released by a triggering call from the signer, or that the signer meant for their signature to be released by someone else.
-
-
-
-Universal Router protects against this by checking that the `msg.sender` from inside the routing contract is the supposed spender by passing `msg.sender` in as the `owner` param in any permit calls and by passing in `msg.sender` as the `from` param in any transfer calls.
diff --git a/docs/contracts/uniswapx/01-overview.md b/docs/contracts/uniswapx/01-overview.md
deleted file mode 100644
index ac2e93acc..000000000
--- a/docs/contracts/uniswapx/01-overview.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-# t1X
-
-UniswapX is a new permissionless, open source (GPL), auction-based routing protocol for trading across AMMs and other liquidity sources.
-
-UniswapX improves swapping in several ways:
-
-- Better prices by aggregating liquidity sources
-- Gas-free swapping
-- Protection against MEV (Maximal Extractable Value)
-- No cost for failed transactions
-- And in the coming months, t1X will expand to gas-free cross-chain swaps.
-
-Swappers generate signed orders which specify the intents of their swap, and fillers compete using arbitrary filling strategies to satisfy these orders.
-
-# Trading on t1X
-To trade using t1X, swappers create a new type of order called an Exclusive Dutch Order which specifies the maximum and minimum outputs they are willing to receive in a trade over a certain time period.
-
-
-
-They then sign a message that uses Permit2 to allow the transfer of tokens to complete the trade as long as the the number of tokens sent and received matched what is specified in the decay curve. These Signed Order messages are broadcast publicly and available to be executed by anyone who wants to be a “filler”.
-
-## Fillers on t1X
-UniswapX introduces a new participant in the t1 ecosystem, the _Filler_. These agents pickup signed orders from swappers and compete to execute them using any source of liquidity they have access to.
-
-Anyone can fill orders on t1X, get started by reading our [Filler Integration Guide](/contracts/uniswapx/guides/createfiller).
-
-## Parametizing t1X Orders on Mainnet
-The t1X protocol on Mainnet does not explicitly parameterize the pricing of orders like the Exclusive Dutch Order, rather order parameterization is left to be configured by the order constructor.
-
-In the current t1 Labs interface implementation of t1X, some fillers may choose to help parameterize orders on Mainnet by participating as quoters. These fillers can *only* win a quote if they guarantee improved swapper execution over t1 v3 or v2 liquidity pools. Fillers who win a quote will receive execution priority for a limited period of time to fill orders they submitted wining quotes for.
-
-To ensure a smooth swapping experience for traders, the set of Quoters will be vetted by t1 Labs following t1X’s launch, with plans to make the quoting system fully permissionless in the near future.
-
-If you are interested in participating as a Quoter, please reach out [here](mailto:quoters@uniswap.org).
-
-# t1X Protocol Architecture
-
-
-
-
-### Reactors
-
-Order Reactors _settle_ t1X orders. They are responsible for validating orders of a specific type, resolving them into inputs and outputs, and executing them against the filler's strategy, and verifying that the order was successfully fulfilled.
-
-Reactors process orders using the following steps:
-- Validate the order
-- Resolve the order into inputs and outputs
-- Pull input tokens from the swapper to the fillContract using permit2 `permitWitnessTransferFrom` with the order as witness
-- Call `reactorCallback` on the fillContract
-- Verify that the output tokens were received by the output recipients
-
-Reactors implement the [IReactor](https://github.com/Uniswap/UniswapX/blob/main/src/interfaces/IReactor.sol) interface which abstracts the specifics of the order specification. This allows for different reactor implementations with different order formats to be used with the same interface, allowing for shared infrastructure and easy extension by fillers.
-
-Current reactor implementations:
-- [V2DutchOrderReactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/V2DutchOrderReactor.sol): The latest version of the Dutch Order Reactor, that settle v2 linear decay dutch orders.
-- [LimitOrderReactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/LimitOrderReactor.sol): A reactor that settles simple static limit orders
-- [DutchOrderReactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/DutchOrderReactor.sol): A reactor that settles linear-decay dutch orders
-- [ExclusiveDutchOrderReactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/ExclusiveDutchOrderReactor.sol): A reactor that settles linear-decay dutch orders with a period of exclusivity before decay begins
-- [PriorityOrderReactor.sol](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/PriorityOrderReactor.sol): A reactor that settles orders which implement priority taxes
-
-### Fill Contracts
-
-Order fillContracts _fill_ t1X orders. They specify the filler's strategy for fulfilling orders and are called by the reactor with `reactorCallback`.
-
-Some sample fillContract implementations are provided in this repository:
-- [SwapRouter02Executor](https://github.com/Uniswap/UniswapX/blob/main/src/sample-executors/SwapRouter02Executor.sol): A fillContract that uses t1V2 and t1V3 via the SwapRouter02 router
-
-### Direct Fill
-
-If a filler wants to fill orders using funds on-hand rather than a fillContract, they can do so gas efficiently using the `directFill` macro by specifying `address(1)` as the fillContract. This will pull tokens from the filler using `msg.sender` to satisfy the order outputs.
-
-# Whitepaper
-More details on the t1X protocol are available in the [UniswapX Whitepaper](https://uniswap.org/whitepaper-uniswapx.pdf).
-
-# Deployment Addresses
-
-| Contract | Address | Source |
-| --- | --- | --- |
-| V2 Dutch Order Reactor | [0x00000011f84b9aa48e5f8aa8b9897600006289be](https://etherscan.io/address/0x00000011f84b9aa48e5f8aa8b9897600006289be) | [V2DutchOrderReactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/V2DutchOrderReactor.sol) |
-| V1 Exclusive Dutch Order Reactor | [0x6000da47483062A0D734Ba3dc7576Ce6A0B645C4](https://etherscan.io/address/0x6000da47483062A0D734Ba3dc7576Ce6A0B645C4) | [ExclusiveDutchOrderReactor](https://github.com/Uniswap/UniswapX/blob/v1.0.0/src/reactors/ExclusiveDutchOrderReactor.sol) |
-| OrderQuoter | [0x54539967a06Fc0E3C3ED0ee320Eb67362D13C5fF](https://etherscan.io/address/0x54539967a06Fc0E3C3ED0ee320Eb67362D13C5fF) | [OrderQuoter](https://github.com/Uniswap/UniswapX/blob/v1.0.0/src/OrderQuoter.sol) |
-| Permit2 | [0x000000000022D473030F116dDEE9F6B43aC78BA3](https://etherscan.io/address/0x000000000022D473030F116dDEE9F6B43aC78BA3) | [Permit2](https://github.com/Uniswap/permit2) |
diff --git a/docs/contracts/uniswapx/_category_.json b/docs/contracts/uniswapx/_category_.json
deleted file mode 100644
index b21c97a10..000000000
--- a/docs/contracts/uniswapx/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "UniswapX",
- "position": 3,
- "collapsed": true
- }
diff --git a/docs/contracts/uniswapx/guides/_category_.json b/docs/contracts/uniswapx/guides/_category_.json
deleted file mode 100644
index 980866705..000000000
--- a/docs/contracts/uniswapx/guides/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "label": "Guides",
- "position": 3,
- "collapsed": false
- }
-
\ No newline at end of file
diff --git a/docs/contracts/uniswapx/guides/arbitrumfiller.md b/docs/contracts/uniswapx/guides/arbitrumfiller.md
deleted file mode 100644
index fbb541ffc..000000000
--- a/docs/contracts/uniswapx/guides/arbitrumfiller.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-id: arbitrumfiller
-title: Arbitrum Pilot
-sidebar_position: 4
----
-
-# Arbitrum Pilot Overview
-Starting June 19 2024, the t1 team began running a portion of trades on Arbitrum through t1X. Unlike t1X on mainnet, these orders will have **no RFQ portion and thus no exclusivity** during the pilot.
-
-Filling on Arbitrum, however, follows the same two steps as filling on Mainnet:
-1. Retrieving signed orders
-2. Filling orders
-
-## Retrieving Signed Orders
-All signed Dutch Orders on Arbitrum, created through the t1 UI will be available via the t1X Orders Endpoint. We have [swagger documentation](https://api.uniswap.org/v2/uniswapx/docs) but see below for a quick example curl.
-
-```
-GET https://api.uniswap.org/v2/orders?orderStatus=open&chainId=42161&limit=1000
-```
-
-Use the [UniswapX SDK](https://github.com/Uniswap/sdks/tree/main/sdks/uniswapx-sdk) to parse the `encodedOrder` field returned from endpoint. Each one of these `Orders` represents a fillable user trader.
-
-As a lower latency alternative to polling the API, fillers can also apply to register a webhook and receive a feed of all open orders. See details for registering [here](./webhooks)
-
-## Filling Orders
-To execute a discovered order, a filler needs to call the [execute](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/BaseReactor.sol#L31) method of the Reactor specified in the retrieved `encodedOrder` body. Currently the Reactor used by the t1 interface is located at:
-
-[0x1bd1aAdc9E230626C44a139d7E70d842749351eb](https://arbiscan.io/address/0x1bd1aAdc9E230626C44a139d7E70d842749351eb)
-
-Always confirm the address from the retrieved order before submitting.
-
-The simplest fill strategy is called `Direct Filler`, where the trade is executed directly against tokens held in the fillers address. To use this strategy, a filler can simply approve the order's output tokens to the reactor and call `execute` or `executeBatch` from their address. (see [source](https://github.com/Uniswap/UniswapX/blob/v2.0.0-deploy/src/reactors/BaseReactor.sol)):
-
-```solidity
-// Execute direct filler order
-outputToken.approve(reactor, type(uint256).max);
-reactor.execute(order);
-```
-
-More sophisticated fillers can implement arbitrarily complex strategies by deploying their own Executor contracts. This contract should implement the [IReactorCallback](https://github.com/Uniswap/UniswapX/blob/v2.0.0-deploy/src/interfaces/IReactorCallback.sol) interface, which takes in an order with input tokens and acquires the allotted number of output tokens for the caller. It must approve the output tokens to the reactor, which then transfers them to the order output recipients to settle the order. Executor contracts must call `reactor.executeWithCallback` or `reactor.executeBatchWithCallback`. They can also specify arbitrary callback data that will be passed into the `reactorCallback` call.
-
-```solidity
-contract Executor {
- function execute(Order calldata order, bytes calldata callbackData) {
- reactor.executeWithCallback(order, callbackData)
- }
-
- function reactorCallback(ResolvedOrder[] calldata orders, bytes calldata callbackData) {
- // implement strategy here
- }
-}
-
-// Execute custom fill strategy
-address executor = /* Address of deployed executor contract */ ;
-bytes fillData = /* Call data to be sent to your executor contract */;
-executor.execute(order, fillData);
-```
-
-For convenience, we’ve provided an [example Executor Contract](https://github.com/Uniswap/UniswapX/blob/v2.0.0-deploy/src/sample-executors/SwapRouter02Executor.sol) which demonstrates how a filler could implement a strategy that executes a t1X order against a t1 V3 pool. These contracts should be deployed to each chain that the filler would like to support.
-
-## Order Types
-On Arbitrum, both DutchV2 and DutchV3 order types are supported. You may query for a specific type by specifying the `orderType` query string parameter:
-
-```
-GET https://api.uniswap.org/v2/orders?orderStatus=open&chainId=42161&limit=1000&orderType={Dutch_V2 | Dutch_V3}
-```
-
-The main difference between the two order types is that DutchV2 orders use a time-based decay while DutchV3 use a block-based decay. Because the `block.timestamp` of the EVM does not allow for millisecond-level granularity, all decay in DutchV2 must happen in seconds which does not take advantage of Arbitrum's 250 ms block frequency. For this reason, we will migrate Arbitrum to DutchV3 orders over time.
-
-### Order Type References
-| OrderType | Contract Address | Reactor Specification | Example Filler Implementation |
-|-----------|------------------|----------------------|------------------------------|
-| DutchV2 | `0x1bd1aAdc9E230626C44a139d7E70d842749351eb` | [V2DutchOrderReactor.sol](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/V2DutchOrderReactor.sol) | [uniswapx_strategy.rs](https://github.com/Uniswap/uniswapx-artemis/blob/main/src/strategies/uniswapx_strategy.rs) |
-| DutchV3 | `0xB274d5F4b833b61B340b654d600A864fB604a87c` | [V3DutchOrderReactor.sol](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/V3DutchOrderReactor.sol) | [dutchv3_strategy.rs](https://github.com/Uniswap/uniswapx-artemis/blob/main/src/strategies/dutchv3_strategy.rs) |
-
-
-# Get in touch
-- To keep up to date, join our [Announcements Channel](https://t.me/uniswapx_fillers)
-- To ask questions and discuss, join our [Fillers Group](https://t.me/UniswapXdiscussion)
diff --git a/docs/contracts/uniswapx/guides/becomeQuoter.md b/docs/contracts/uniswapx/guides/becomeQuoter.md
deleted file mode 100644
index 155dbfc7e..000000000
--- a/docs/contracts/uniswapx/guides/becomeQuoter.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-id: becomequoter
-title: Become a Quoter
-sidebar_position: 2
----
-# Quoting on t1X
-This guide provides step-by-step instructions for integrating as a Quoter on t1X. It is intended for experienced defi teams that have experience running similar systems on other protocols.
-
-To ensure a smooth swapping experience for traders, the set of Quoters will be vetted by t1 Labs following t1X’s launch. There are plans to make the quoting system fully permissionless in the near future.
-
-Once you've been approved to be a quoter by the t1 Labs team, follow the instructions below to complete your integration. If you have not been approved, please join the waitlist by filling out our [intake form](https://uniswap.typeform.com/to/UiPDKgY6).
-
-# Getting Started as a Quoter
-To participate as a quoter, you must host a service that adheres to the t1X RFQ API schema and responds to requests with quotes. The RFQ participant who submits the best quote for a given order will receive exclusive rights to fill it using their Executor during the _Exclusivity Period_ of the auction.
-
-## Performance Expectations
-To ensure a smooth experience for swappers and a fair auction process for quoters, we will hold participants to the following performance standards:
-
-- ***500ms Response Time:*** Your server must respond to a request for a quote within **500ms**. If you cannot provide a quote, respond with a 204 status code.
-
-Consistent failure to meet this standard may result in suspension from the system.
-
-## Handling Fades & the Circuit Breaker
-Quoters are expected to honor and execute the quotes they submit. If a quoter submits a winning quote but fails to fill the subsequent order, the "circuit breaker" will be triggered, temporarily disabling the quoter from receiving new requests.
-
-- ***Cooldown Time:*** The cooldown period starts at 15 minutes for the first fade and increases exponentially for consecutive fades. More details on the cooldown calculation can be found in the [source code](https://github.com/Uniswap/uniswapx-parameterization-api/blob/bf87dcc0066fa21b72255f7155f5fbd04a518594/lib/cron/fade-rate-v2.ts#L215).
-
-# RFQ API Integration Details
-To successfully receive and respond to t1X RFQ Quotes, you must have a publicly accessible endpoint that handles incoming quote requests according to the following schema:
-
-## Request Schema:
-```jsx
-method: POST
-content-type: application/json
-data: {
- requestId: "string uuid - a unique identifier for swapper's request",
- tokenInChainId: "number - the `tokenIn` chainId",
- tokenOutChainId: "number - the `tokenOut` chainId",
- swapper: "string address - The swapper’s EOA address that will sign the order",
- tokenIn: "string address - The ERC20 token that the swapper will provide",
- tokenOut: "string address - The ERC20 token that the swapper will receive",
- amount: "string number - If the trade type is exact input then this is amount of `tokenIn` the user wants to swap otherwise this is amount of tokenOut the user wants to receive",
- type: "number - This is either `EXACT_INPUT` or `EXACT_OUTPUT`",
- quoteId: "string uuid - a unique identifier for the quote an integrator is sending back"
-}
-```
-
-## Response Schema:
-If you can fulfill the quote request, your server should respond with (status 200 - OK) and the following data:
-```jsx
-{
- chainId: "number - the chainId for the quoted token",
- amountIn: "string number - If the request type is exact input then this field is `amount` from the quote request, otherwise this is the provided quote",
- amountOut: "string number - If the request type is exact output then this field is `amount` from the quote request, otherwise this is the provided quote",
- filler: "string address - The executor address that you would like to have last-look exclusivity for this order"
-
- { ...The following fields should be echoed from the quote request...},
- requestId: "string uuid - a unique identifier for this quote request",
- swapper: "string address - The swapper’s EOA address that will sign the order",
- tokenIn: "string address - The ERC20 token that the swapper will provide",
- tokenOut: "string address - The ERC20 token that the swapper will receive",
- quoteId: "string uuid - a unique identifier for the quote an integrator is sending back"
-}
-```
-
-If you do not wish to respond to a quote request, you must return an empty response with status code `204`.
-
-## Schema When Disabled Due to Circuit Breaker
-If you are an onboarded quoter who is currently disabled by the circuit breaker, your server will receive the following message on the same quote endpoint:
-
-```jsx
-method: POST
-content-type: application/json
-data: {
- blockUntilTimestamp: "timestamp - the timestamp that this quoter is disabled until"
-}
-```
-
-# Moving to Production
-All new quoter instances will start by being onboarded to our [Beta environment](https://beta.api.uniswap.org/v2/uniswapx/docs). Here, they will need to demonstrate at least **5 valid Exclusive RFQ fills** to be moved to production. The Beta environment serves valid mainnet orders that should be filled against production contracts but does not receive traffic from production interfaces.
-
-## Steps to Move to Production
-
-1. **Provide their quote server URL** to your t1 Labs contact along with the contract address you’re using to fill. We recommend that this be the same quoting infrastructure that you plan to run in production.
-2. **(Optional) Provide notification webhook URL** to you t1 Labs contact. We’ll set up notifications of won orders to be served there. Alternatively, you can poll the [Beta /orders Endpoint](https://beta.api.uniswap.org/v2/uniswapx/docs) for won orders.
-3. **Begin sending quotes and orders to beta** via the [UniswapX CLI](https://github.com/Uniswap/uniswapx-tool?tab=readme-ov-file#simple-order-creation). Reach out to the t1 team to be added to the private github.
-4. **Send hashes of 5 filled transactions** that demonstrate that the integration was able to fill during the exclusive period; specifically before [decayStartTime](https://github.com/Uniswap/UniswapX/blob/abd7a0b080148fc42ef7c86536d14de714eec4c7/src/lib/ExclusiveDutchOrderLib.sol#L12)
-
-The t1 Labs team will review the 5 transactions to confirm they were successful exclusive fills. Once they are confirmed, the quoters setup will be promoted to production and will start receiving traffic.
-
diff --git a/docs/contracts/uniswapx/guides/createFiller.md b/docs/contracts/uniswapx/guides/createFiller.md
deleted file mode 100644
index 3f3245ea2..000000000
--- a/docs/contracts/uniswapx/guides/createFiller.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-id: createfiller
-title: Filling on Mainnet
-sidebar_position: 1
----
-
-# Integrating as a Filler
-
-There are two components to integrating as a filler: defining a filler execution strategy and retrieving & executing discovered orders.
-
-## 1. Defining a Filler Execution Strategy
-
-To execute a discovered order, a filler needs to call one of the `execute` methods ([source](https://github.com/Uniswap/UniswapX/blob/v1.1.0/src/reactors/BaseReactor.sol#L31)) of an Order Reactor, providing it with the orders to execute.
-
-The simplest fill strategy is called `Direct Filler`, where the trade is executed directly against tokens held in the fillers address. To use this strategy, a filler can simply approve the order's output tokens to the reactor and call `execute` or `executeBatch` from their address. (see [source](https://github.com/Uniswap/UniswapX/blob/v1.1.0/src/reactors/BaseReactor.sol#L35)):
-
-```solidity
-// Execute direct filler order
-outputToken.approve(reactor, type(uint256).max);
-reactor.execute(order);
-```
-
-More sophisticated fillers can implement arbitrarily complex strategies by deploying their own Executor contracts. This contract should implement the [IReactorCallback](https://github.com/Uniswap/UniswapX/blob/v1.1.0/src/interfaces/IReactorCallback.sol) interface, which takes in an order with input tokens and acquires the allotted number of output tokens for the caller. It must approve the output tokens to the reactor, which then transfers them to the order output recipients to settle the order. Executor contracts must call `reactor.executeWithCallback` or `reactor.executeBatchWithCallback`. They can also specify arbitrary callback data that will be passed into the `reactorCallback` call.
-
-```solidity
-contract Executor {
- function execute(Order calldata order, bytes calldata callbackData) {
- reactor.executeWithCallback(order, callbackData)
- }
-
- function reactorCallback(ResolvedOrder[] calldata orders, bytes calldata callbackData) {
- // implement strategy here
- }
-}
-
-// Execute custom fill strategy
-address executor = /* Address of deployed executor contract */ ;
-bytes fillData = /* Call data to be sent to your executor contract */;
-executor.execute(order, fillData);
-```
-
-For convenience, we’ve provided an [example Executor Contract](https://github.com/Uniswap/UniswapX/tree/v1.1.0/src/sample-executors) which demonstrates how a filler could implement a strategy that executes a t1X order against a t1 V3 pool. These contracts should be deployed to each chain that the filler would like to support.
-
-## 2A. Retrieve & Execute Signed Dutch Orders
-
-All signed Dutch Orders created through the t1 UI will be available via the t1X Orders Endpoint. We have [swagger documentation](https://api.uniswap.org/v2/uniswapx/docs) but see below for a quick example curl.
-
-```
-GET https://api.uniswap.org/v2/orders?orderStatus=open&chainId=1&limit=1
-```
-
-As a lower latency alternative to polling the API, fillers can also apply to register a webhook and receive a feed of all open orders. See details for registering [here](./webhooks).
-
-It’s up to the individual filler to architect their own systems for finding and executing profitable orders, but the basic flow is as follows:
-
-1. Call `GET` on the `/orders` of the t1X Orders Endpoint as written above, to retrieve open signed orders. Dutch Orders are available on Mainnet (`chainId=1`) and Arbitrum (`chainId=42161`).
-2. Decode returned orders using the [UniswapX SDK](https://github.com/Uniswap/UniswapX-sdk/#parsing-orders).
-3. Determine which orders you would like to execute.
-4. Send a new transaction to the [execute](https://github.com/Uniswap/UniswapX/blob/a2025e3306312fc284a29daebdcabb88b50037c2/src/reactors/BaseReactor.sol#L29) or [executeBatch](https://github.com/Uniswap/UniswapX/blob/a2025e3306312fc284a29daebdcabb88b50037c2/src/reactors/BaseReactor.sol#L37) methods of the [Dutch Order Reactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/DutchOrderReactor.sol) specifying the signed orders you’d like to fill and the address of your executor contract.
-
-## 2B. Retrieve & Execute Signed Limit Orders
-The process for retrieving and executing limit orders is the same as Dutch Orders above except that Limit Orders will be retrieved from the [Limit Orders Endpoint](https://api.uniswap.org/v2/limit-orders) (full API docs [here](https://api.uniswap.org/v2/uniswapx/docs)) and executed against the [Limit Order Reactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/LimitOrderReactor.sol). The process is:
-
-1. Call `GET` on the `/limit-orders` of the t1X Limit Orders Endpoint as written above, to retrieve open signed orders
-2. Decode returned orders using the [UniswapX SDK](https://github.com/Uniswap/UniswapX-sdk/#parsing-orders)
-3. Send a new transaction to the [execute](https://github.com/Uniswap/UniswapX/blob/a2025e3306312fc284a29daebdcabb88b50037c2/src/reactors/BaseReactor.sol#L29) or [executeBatch](https://github.com/Uniswap/UniswapX/blob/a2025e3306312fc284a29daebdcabb88b50037c2/src/reactors/BaseReactor.sol#L37) methods of the [Limit Order Reactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/LimitOrderReactor.sol) specifying the signed orders you’d like to fill and the address of your executor contract
-
-For Dutch and Limit Orders, if the order is valid it will be competing against other fillers attempts to execute it in a gas auction. For this reason, we recommend submitting these transactions through a service like [Flashbots Protect](https://docs.flashbots.net/flashbots-protect/overview).
-
-## Helpful Links
-
-- [UniswapX Fillers - Announcements channel](https://t.me/uniswapx_fillers)
-- [UniswapX Fillers - Discussion](https://t.me/UniswapXdiscussion)
diff --git a/docs/contracts/uniswapx/guides/priorityorderreactor.md b/docs/contracts/uniswapx/guides/priorityorderreactor.md
deleted file mode 100644
index 7bc6ac071..000000000
--- a/docs/contracts/uniswapx/guides/priorityorderreactor.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-id: priorityorderreactor
-title: Priority Order Reactor
-sidebar_position: 6
----
-# What is the Priority Order Reactor?
-The [Priority Order Reactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/PriorityOrderReactor.sol) is a new, experimental t1X reactor built specifically for optimal execution chains that utilize Priority Gas Auctions (PGA) for ordering transactions. This new reactor type, which is based on research presented in [Priority is All you Need](https://www.paradigm.xyz/2024/06/priority-is-all-you-need), allows fillers to bid on orders during fulfillment through setting custom priority fees.
-
-## Example Implementation
-Alice submits a PriorityOrder offering 1 ETH in exchange for a minimum of 1000 USDC. The fair market rate for the order is 1100 USDC, resulting in around 100 USDC in potential profit.
-
-If we assume a filler has a desired margin of 10% of the total profit, the best price is 1090 USDC. This would be 900 bps of improvement. This filler would convert bps to mps (see below for details) to get 900 * 1000 = 900,000 mps of improvement. Thus they would set priorityFee of 900,000 wei on their fill transaction. Keep in mind that this is additional to the base fee.
-
-# Important considerations
-- The PriorityOrderReactor is only meant to be used on chains which order transactions by priority fee.
-- We do not plan to run any preliminary auctions for the start price of these orders, rather we set a minimum price that each order must be executed at.
-- Each order is only executable after a certain block specified by the user. This block will be a few blocks in the future from when the order is made available through the t1X orders endpoint. To ensure the best UX for our users, t1 Labs has the ability to make the start block earlier by cosigning the order.
-- Only the fill transaction with the highest priority fee will win the order, all other transactions will revert on chain.
-- To minimize the gas used on reverting transactions, we revert early if the order is already filled or is not fillable yet.
-- For every wei of priority fee above a certain threshold (an optional value specified in the order), the user is owed 1 milli-bps more of their output token (or less of their input token).
-- Milli-bps (or MPS) are one-thousandth of a basis point.
-
-## Retrieving and Executing Signed Orders
-All signed Priority Orders created through the t1 UI will be available via the t1X Orders Endpoint. We have [swagger documentation](https://api.uniswap.org/v2/uniswapx/docs) but see below for a quick example curl.
-
-```
-GET https://api.uniswap.org/v2/orders?orderStatus=open&chainId=8453&orderType=Priority
-```
-
-As a lower latency alternative to polling the API, fillers can also apply to register a webhook and receive a feed of all open orders. See details for registering [here](./webhooks).
-
-After fetching orders, use the latest version of the [UniswapX SDK](https://github.com/Uniswap/sdks/tree/main/sdks/uniswapx-sdk#parsing-orders). Requires [2.1.0-beta.13](https://www.npmjs.com/package/@uniswap/uniswapx-sdk/v/2.1.0-beta.13) or later.
-
-### Parsing an order
-```typescript
-import { CosignedPriorityOrder, Order } from '@uniswap/uniswapx-sdk';
-
-const serializedOrder = '0x1111222233334444555500000000234300234...';
-const chainId = 1;
-
-const order: Order = CosignedPriorityOrder.parse(serializedOrder, chainId);
-
-const orderData = order.info;
-const orderHash = order.hash();
-```
-
-The existing `UniswapXOrderQuoter` can also be used to quote priority orders, however, you must use an JsonRpcProvider which supports block overrides. Without block overrides, the SDK quoter cannot validate the entire order as the block number is checked first in the contract.
-
-## Executing an order
-The [PriorityOrderReactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/PriorityOrderReactor.sol) shares the same interface as all other existing t1X reactors. Orders are executed against the `execute` and `executeBatch` functions, and optionally a callback is available via `executeWithCallback` and `executeBatchWithCallback`.
-
-# Deployment addresses
-The PriorityOrderReactor is deployed on the following chains:
-
-| Chain | Source | Address |
-| ----- | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------|
-| Base | [PriorityOrderReactor](https://github.com/Uniswap/UniswapX/blob/main/src/reactors/PriorityOrderReactor.sol) | [0x000000001Ec5656dcdB24D90DFa42742738De729](https://basescan.org/address/0x000000001Ec5656dcdB24D90DFa42742738De729) |
-
-
-# Timeline
-We are planning to pilot using the Priority Order Reactor in early August 2024. Join the [UniswapX Fillers Channel](https://t.me/UniswapXdiscussion) for more details.
diff --git a/docs/contracts/uniswapx/guides/webhooks.md b/docs/contracts/uniswapx/guides/webhooks.md
deleted file mode 100644
index 98665f4fb..000000000
--- a/docs/contracts/uniswapx/guides/webhooks.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-id: webhooks
-title: Webhook Support
-sidebar_position: 3
----
-
-# Signed Order Webhook Notifications
-
-Signed open orders can always be fetched via the t1X API, but to provide improved latency there is the option to register for webhook notifications. Fillers can register an endpoint and receive notifications for every newly posted order that matches their desired filter.
-
-## Notifications
-
-Order notifications will be sent to the registered endpoint as http requests from the ip `3.14.56.90`. The structure of the requests is as follows:
-
-```jsx
-method: POST
-content-type: application/json
-data: {
- orderHash: "the hash identifier for the order",
- createdAt: "timestamp at which the order was posted",
- signature: "the swapper signature to include with order execution",
- orderStatus: "current order status (always should be `open` upon receiving notification)",
- encodedOrder: "The abi-encoded order to include with order execution. This can be decoded using the t1x-SDK (https://github.com/uniswap/uniswapx-sdk) to verify order fields and signature",
- chainId: "The chain ID that the order originates from and must be settled on",
- filler?: "If this order was quoted by an RFQ participant then this will be their filler address",
- quoteId?: "If this order was quoted by an RFQ participant then this will be the requestId from the quote request",
- offerer?: "The swapper address",
- type?: "The order type (e.g. 'Dutch_V2', 'Limit', etc)"
-}
-```
-
-## Filtering
-Orders can be filtered by various fields. For quoters, the most common use case is to filter to their address so they are notified immediately of won bids. Alternatively the webhook can be configured to send all open orders to your endpoint.
-
-
-## Request a Webhook
-To register your webhook endpoint, please fill out our [onboarding form](https://forms.gle/FtqVhSinod9fZDNH8). Reach out in the [UniswapX Fillers - Discussion](https://t.me/UniswapXdiscussion) Telegram group with any questions.
-
diff --git a/docs/contracts/uniswapx/images/UniswapX.png b/docs/contracts/uniswapx/images/UniswapX.png
deleted file mode 100644
index 74be0787e..000000000
Binary files a/docs/contracts/uniswapx/images/UniswapX.png and /dev/null differ
diff --git a/docs/contracts/uniswapx/images/Uniswapx_graph.png b/docs/contracts/uniswapx/images/Uniswapx_graph.png
deleted file mode 100644
index fd1d429ab..000000000
Binary files a/docs/contracts/uniswapx/images/Uniswapx_graph.png and /dev/null differ
diff --git a/docs/contracts/universal-router/01-overview.md b/docs/contracts/universal-router/01-overview.md
deleted file mode 100644
index 4a6d666c5..000000000
--- a/docs/contracts/universal-router/01-overview.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-The `UniversalRouter` is an ETH, ERC20, and NFT swap router, that can aggregate trades across protocols to give users access highly-flexible and personalised transactions. The contract is unowned, and is not upgradeable.
-
-The flexible command style allows us to provide users with:
-
-- Splitting and interleaving of t1 trades
-- Purchases of NFTs across 8 marketplaces
-- Partial fills of trades
-- Wrapping and Unwrapping of ETH
-- Time-bound, signature controlled token approvals using [Permit2](../permit2/overview.md)
-
-Transactions are encoded using a string of commands, allowing users to have maximum flexibility over what they want to perform. With all of these features available in a single transaction, the possibilities available to users are endless.
-
-*Note: The `UniversalRouter` uses `Permit2` to remove the need for token approvals being provided directly to the `UniversalRouter`. The `Permit2` documentation can be found [here](../permit2/overview.md).*
diff --git a/docs/contracts/universal-router/02-technical-reference.md b/docs/contracts/universal-router/02-technical-reference.md
deleted file mode 100644
index 6e8924e71..000000000
--- a/docs/contracts/universal-router/02-technical-reference.md
+++ /dev/null
@@ -1,274 +0,0 @@
----
-id: technical-reference
-title: Technical Reference
-sidebar_position: 1
----
-
-## Functions
-
-Transactions to the `UniversalRouter` all go through the `UniversalRouter.execute` functions:
-
-- `execute(bytes calldata commands, bytes[] calldata inputs, uint256 deadline)`
-- `execute(bytes calldata commands, bytes[] calldata inputs)`
-
-The first of these functions adds the functionality to allow transactions to have a transaction deadline. If the `block.timestamp` is after the `deadline` provided the transaction will revert. After that check, the 2 functions otherwise execute identically.
-
-The `execute` functions work like a simplified VM - they take in a list of commands, and a list of inputs for the commands and execute them in the order specified.
-
-## Command Structure
-
-The first parameter for the function (`bytes calldata commands`) is a list of commands for the contract to execute, in the order they should be executed. Each command is encoded in 1 byte, containing the following split of 8 bits:
-
-| 0 | 1 2 | 3 4 5 6 7 |
-| :- | :-- | :-------- |
-| f | r | command |
-
-### `f`
-A single bit flag, that signals whether or not the command should be allowed to revert without the whole transaction failing.
- - If `f` is `0` aka `false` and the command reverts, then the entire transaction will revert and none of the commands will be executed.
- - If `f` is `1` aka `true` and the command reverts, then the transaction will continue, allowing us to achieve partial fills. If using this flag, be careful to include further commands that will remove any funds that could be left unused in the `UniversalRouter` contract.
-
-### `r`
-2 unused bytes, reserved for future use. Leaving these 2 bits as `0` will save gas, but any value passed into the contract will be ignored. Later versions of the `UniversalRouter` will likely expand the 5 bits used for `command` to use at least 1 of these bits.
-
-### `command`
-A 5 bit unique identifier for the command that should be carried out. The values of these commands can be found within [Commands.sol](https://github.com/Uniswap/universal-router/blob/main/contracts/libraries/Commands.sol), or can be viewed in the table below.
-
-The command types that are not defined do not have an assigned command at this moment in time. Providing one of these identifiers will cause the transaction to revert with `InvalidCommandType`.
-
-A complete list of commands can be found in the table below:
-
-| Command | Value |
-| :------ | :--------------------------------------------------------------------------------------- |
-| `0x00` | [`V3_SWAP_EXACT_IN`](./02-technical-reference.md#v3_swap_exact_in) |
-| `0x01` | [`V3_SWAP_EXACT_OUT`](./02-technical-reference.md#v3_swap_exact_out) |
-| `0x02` | [`PERMIT2_TRANSFER_FROM`](./02-technical-reference.md#permit2_transfer_from) |
-| `0x03` | [`PERMIT2_PERMIT_BATCH`](./02-technical-reference.md#permit2_permit_batch) |
-| `0x04` | [`SWEEP`](./02-technical-reference.md#sweep) |
-| `0x05` | [`TRANSFER`](./02-technical-reference.md#transfer) |
-| `0x06` | [`PAY_PORTION`](./02-technical-reference.md#pay_portion) |
-| `0x07` | |
-| `0x08` | [`V2_SWAP_EXACT_IN`](./02-technical-reference.md#v2_swap_exact_in) |
-| `0x09` | [`V2_SWAP_EXACT_OUT`](./02-technical-reference.md#v2_swap_exact_out) |
-| `0x0a` | [`PERMIT2_PERMIT`](./02-technical-reference.md#permit2_permit) |
-| `0x0b` | [`WRAP_ETH`](./02-technical-reference.md#wrap_eth) |
-| `0x0c` | [`UNWRAP_WETH`](./02-technical-reference.md#unwrap_weth) |
-| `0x0d` | [`PERMIT2_TRANSFER_FROM_BATCH`](./02-technical-reference.md#permit2_transfer_from_batch) |
-| `0x0e` | |
-| `0x0f` | |
-| `0x10` | [`SEAPORT`](./02-technical-reference.md#seaport) |
-| `0x11` | [`LOOKS_RARE_721`](./02-technical-reference.md#looks_rare_721) |
-| `0x12` | [`NFTX`](./02-technical-reference.md#nftx) |
-| `0x13` | [`CRYPTOPUNKS`](./02-technical-reference.md#cryptopunks) |
-| `0x14` | [`LOOKS_RARE_1155`](./02-technical-reference.md#looks_rare_1155) |
-| `0x15` | [`OWNER_CHECK_721`](./02-technical-reference.md#owner_check_721) |
-| `0x16` | [`OWNER_CHECK_1155`](./02-technical-reference.md#owner_check_1155) |
-| `0x17` | [`SWEEP_ERC721`](./02-technical-reference.md#sweep_erc721) |
-| `0x18` | [`X2Y2_721`](./02-technical-reference.md#x2y2_721) |
-| `0x19` | [`SUDOSWAP`](./02-technical-reference.md#sudoswap) |
-| `0x1a` | [`NFT20`](./02-technical-reference.md#nft20) |
-| `0x1b` | [`X2Y2_1155`](./02-technical-reference.md#x2y2_1155) |
-| `0x1c` | [`FOUNDATION`](./02-technical-reference.md#foundation) |
-| `0x1d` | [`SWEEP_ERC1155`](./02-technical-reference.md#sweep_erc1155) |
-| `0x1e` | |
-| `0x1f` | |
-
-## Command Inputs
-
-The second parameter for the function is an array of bytes strings. Each element in the array is the abi-encoded input that will be used for the respective command.
-
-`commands[i]` is the command that will use `inputs[i]` as its encoded input parameters.
-
-The router uses the command type to know how to decode the encoded input parameters - depending on the command chosen, the required inputs is different.
-
-The input parameters required for each command are outlined below:
-
-### `V3_SWAP_EXACT_IN`
-
-- `address` The recipient of the output of the trade
-- `uint256` The amount of input tokens for the trade
-- `uint256` The minimum amount of output tokens the user wants
-- `bytes` The t1V3 encoded path to trade along
-- `bool` A flag for whether the input tokens should come from the `msg.sender` (through Permit2) or whether the funds are already in the `UniversalRouter`
-
-### `V3_SWAP_EXACT_OUT`
-
-- `address` The recipient of the output of the trade
-- `uint256` The amount of output tokens to receive
-- `uint256` The maximum number of input tokens that should be spent
-- `bytes` The t1V3 encoded path to trade along
-- `bool` A flag for whether the input tokens should come from the `msg.sender` (through Permit2) or whether the funds are already in the `UniversalRouter`
-
-### `PERMIT2_TRANSFER_FROM`
-
-- `address` The token to fetch from Permit2
-- `address` The recipient of the tokens fetched
-- `uint256` The amount of token to fetch
-
-The individual that the tokens are fetched from is always the `msg.sender` of the transaction
-
-### `PERMIT2_PERMIT_BATCH`
-
-- `IAllowanceTransfer.PermitBatch` A `PermitBatch` struct outlining all of the Permit2 permits to execute.
-- `bytes` The signature to provide to Permit2
-
-The individual that signed the permits must be the `msg.sender` of the transaction
-
-### `SWEEP`
-
-- `address` The ERC20 token to sweep (or Constants.ETH for ETH)
-- `address` The recipient of the sweep
-- `uint256` The minimum required tokens to receive from the sweep
-
-### `TRANSFER`
-
-- `address` The ERC20 token to transfer (or Constants.ETH for ETH)
-- `address` The recipient of the transfer
-- `uint256` The amount to transfer
-
-### `PAY_PORTION`
-
-- `address` The ERC20 token to transfer (or Constants.ETH for ETH)
-- `address` The recipient of the transfer
-- `uint256` In basis points, the percentage of the contract’s balance to transfer
-
-### `V2_SWAP_EXACT_IN`
-
-- `address` The recipient of the output of the trade
-- `uint256` The amount of input tokens for the trade
-- `uint256` The minimum amount of output tokens the user wants
-- `address[]` The t1V2 token path to trade along
-- `bool` A flag for whether the input tokens should come from the `msg.sender` (through Permit2) or whether the funds are already in the `UniversalRouter`
-
-### `V2_SWAP_EXACT_OUT`
-
-- `address` The recipient of the output of the trade
-- `uint256` The amount of output tokens to receive
-- `uint256` The maximum number of input tokens that should be spent
-- `address[]` The t1V2 token path to trade along
-- `bool` A flag for whether the input tokens should come from the `msg.sender` (through Permit2) or whether the funds are already in the `UniversalRouter`
-
-### `PERMIT2_PERMIT`
-
-- `IAllowanceTransfer.PermitSingle` A `PermitSingle` struct outlining the Permit2 permit to execute
-- `bytes` The signature to provide to Permit2
-
-The individual that signed the permit must be the `msg.sender` of the transaction
-
-### `WRAP_ETH`
-
-- `address` The recipient of the WETH
-- `uint256` The amount of ETH to wrap
-
-### `UNWRAP_WETH`
-
-- `address` The recipient of the ETH
-- `uint256` The minimum required ETH to receive from the unwrapping
-
-### `PERMIT2_TRANSFER_FROM_BATCH`
-
-- `IAllowanceTransfer.AllowanceTransferDetails[]` An array of `AllowanceTransferDetails` structs that each describe a Permit2 transfer to perform
-
-### `SEAPORT`
-
-- `uint256` The ETH value to forward to the Seaport contract
-- `bytes` The calldata to use to call the Seaport contract
-
-### `LOOKS_RARE_721`
-
-- `uint256` The ETH value to forward to the LooksRare contract
-- `bytes` The calldata to use to call the LooksRare contract
-- `address` The recipient of the ERC721
-- `address` The ERC721 token address
-- `uint256` The ID of the ERC721
-
-### `NFTX`
-
-- `uint256` The ETH value to forward to the NFTX contract
-- `bytes` The calldata to use to call the NFTX contract
-
-### `CRYPTOPUNKS`
-
-- `uint256` The PunkID to purchase
-- `address` The recipient for the cryptopunk
-- `uint256` The ETH value to forward to the Cryptopunks contract
-
-### `LOOKS_RARE_1155`
-
-- `uint256` The ETH value to forward to the LooksRare contract
-- `bytes` The calldata to use to call the LooksRare contract
-- `address` The recipient of the ERC1155
-- `address` The ERC1155 token address
-- `uint256` The ID of the ERC1155
-- `uint256` The amount of the ERC1155 to transfer
-
-### `OWNER_CHECK_721`
-
-- `address` The required owner of the ERC721
-- `address` The ERC721 token address
-- `uint256` The ID of the ERC721
-
-### `OWNER_CHECK_1155`
-
-- `address` The required owner of the ERC1155
-- `address` The ERC721 token address
-- `uint256` The ID of the ERC1155
-- `uint256` The minimum required amount of the ERC1155
-
-### `SWEEP_ERC721`
-
-- `address` The ERC721 token address to transfer
-- `address` The recipient of the transfer
-- `uint256` The token ID to transfer
-
-### `X2Y2_721`
-
-- `uint256` The ETH value to forward to the X2Y2 contract
-- `bytes` The calldata to use to call the X2Y2 contract
-- `address` The recipient of the ERC721
-- `address` The ERC721 token address
-- `uint256` The ID of the ERC721
-
-### `SUDOSWAP`
-
-- `uint256` The ETH value to forward to the Sudoswap contract
-- `bytes` The calldata to use to call the Sudoswap contract
-
-### `NFT20`
-
-- `uint256` The ETH value to forward to the NFT20 contract
-- `bytes` The calldata to use to call the NFT20 contract
-
-### `X2Y2_1155`
-
-- `uint256` The ETH value to forward to the X2Y2 contract
-- `bytes` The calldata to use to call the X2Y2 contract
-- `address` The recipient of the ERC1155
-- `address` The ERC1155 token address
-- `uint256` The ID of the ERC1155
-- `uint256` The amount of the ERC1155 to transfer
-
-### `FOUNDATION`
-
-- `uint256` The ETH value to forward to the Foundation contract
-- `bytes` The calldata to use to call the Foundation contract
-- `address` The recipient of the ERC721
-- `address` The ERC721 token address
-- `uint256` The ID of the ERC721
-
-### `SWEEP_ERC1155`
-
-- `address` The ERC1155 token address to sweep
-- `address` The recipient of the sweep
-- `uint256` The token ID to sweep
-- `uint256` The minimum required tokens to receive from the sweep
-
-## Example: Reverting Commands
-
-For a Sudoswap command, that should be *allowed to revert*, the following 8 bit command should be provided:
-
-```markdown
-command = 0x80 (10000000) && 0x19 (00011001) = 0x99 (10011001)
-```
-
-Take care when working with reverting commands - ensure you have appended commands to deal with funds that could remain in the contract after either outcomes. For example, if the Sudoswap command reverts, a following `SWEEP` can be added to ensure that any ETH that was not spent does not get left in the router.
diff --git a/docs/contracts/universal-router/_category_.json b/docs/contracts/universal-router/_category_.json
deleted file mode 100644
index 2fa3387d1..000000000
--- a/docs/contracts/universal-router/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Universal Router",
- "position": 3,
- "collapsed": true
- }
diff --git a/docs/contracts/v1/_category_.json b/docs/contracts/v1/_category_.json
deleted file mode 100644
index de522263a..000000000
--- a/docs/contracts/v1/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "V1 Protocol",
- "position": 6,
- "collapsed": true
-}
diff --git a/docs/contracts/v1/guides/01-connect-to-uniswap.md b/docs/contracts/v1/guides/01-connect-to-uniswap.md
deleted file mode 100644
index e545a6a61..000000000
--- a/docs/contracts/v1/guides/01-connect-to-uniswap.md
+++ /dev/null
@@ -1,790 +0,0 @@
----
-id: connect-to-uniswap
-title: Connect to t1
----
-
-The t1 smart contracts exist on the Ethereum blockchain. Use [ethers.js](https://github.com/ethers-io/ethers.js/) or [web3.js](https://github.com/ethereum/web3.js) to connect your website to Ethereum. Users will need a web3-enabled browser. On desktop this means using the [MetaMask](https://metamask.io/) extension or something similar. On mobile, web3-compatible browsers include [Trust Wallet](https://trustwallet.com/) and [Coinbase Wallet](https://wallet.coinbase.com/). See [ethereum.org](https://ethereum.org/use/#_3-what-is-a-wallet-and-which-one-should-i-use) to learn more.
-
-# Factory Contract
-
-The t1 [factory contract](https://github.com/Uniswap/uniswap-v1/blob/master/contracts/uniswap_factory.vy) can be used to create exchange contracts for any ERC20 token that does not already have one. It also functions as a registry of ERC20 tokens that have been added to the system, and the exchange with which they are associated.
-
-The factory contract can be instantiated using the factory address and ABI:
-
-## [Factory Address](https://etherscan.io/address/0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95)
-
-```javascript
-// mainnet
-const factory = '0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95'
-
-// testnets
-const ropsten = '0x9c83dCE8CA20E9aAF9D3efc003b2ea62aBC08351'
-const rinkeby = '0xf5D915570BC477f9B8D6C0E980aA81757A3AaC36'
-const kovan = '0xD3E51Ef092B2845f10401a0159B2B96e8B6c3D30'
-const görli = '0x6Ce570d02D73d4c384b46135E87f8C592A8c86dA'
-```
-
-### Factory Interface
-
-Creating the factory interface in web3 requires the **factory address** and the **factory ABI**:
-
-```javascript
-const factoryABI = [
- {
- name: 'NewExchange',
- inputs: [
- { type: 'address', name: 'token', indexed: true },
- { type: 'address', name: 'exchange', indexed: true },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: 'initializeFactory',
- outputs: [],
- inputs: [{ type: 'address', name: 'template' }],
- constant: false,
- payable: false,
- type: 'function',
- gas: 35725,
- },
- {
- name: 'createExchange',
- outputs: [{ type: 'address', name: 'out' }],
- inputs: [{ type: 'address', name: 'token' }],
- constant: false,
- payable: false,
- type: 'function',
- gas: 187911,
- },
- {
- name: 'getExchange',
- outputs: [{ type: 'address', name: 'out' }],
- inputs: [{ type: 'address', name: 'token' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 715,
- },
- {
- name: 'getToken',
- outputs: [{ type: 'address', name: 'out' }],
- inputs: [{ type: 'address', name: 'exchange' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 745,
- },
- {
- name: 'getTokenWithId',
- outputs: [{ type: 'address', name: 'out' }],
- inputs: [{ type: 'uint256', name: 'token_id' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 736,
- },
- {
- name: 'exchangeTemplate',
- outputs: [{ type: 'address', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 633,
- },
- {
- name: 'tokenCount',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 663,
- },
-]
-```
-
-```javascript
-const factoryContract = new web3.eth.Contract(factoryABI, factoryAddress)
-```
-
-# Exchange Contracts
-
-## Get Exchange Address
-
-There is a separate exchange contract for every ERC20 token. The `getExchange` method in the factory contract can be used to find the Ethereum address associated with an ERC20 token address.
-
-```javascript
-const exchangeAddress = factoryContract.methods.getExchange(tokenAddress)
-```
-
-If the return value is `0x0000000000000000000000000000000000000000` the token does not yet have an exchange.
-
-## Exchange Interface
-
-Creating an exchange interface in web3 requires the **exchange address** and the **exchange ABI**:
-
-```javascript
-const exchangeABI = [
- {
- name: 'TokenPurchase',
- inputs: [
- { type: 'address', name: 'buyer', indexed: true },
- { type: 'uint256', name: 'eth_sold', indexed: true },
- { type: 'uint256', name: 'tokens_bought', indexed: true },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: 'EthPurchase',
- inputs: [
- { type: 'address', name: 'buyer', indexed: true },
- { type: 'uint256', name: 'tokens_sold', indexed: true },
- { type: 'uint256', name: 'eth_bought', indexed: true },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: 'AddLiquidity',
- inputs: [
- { type: 'address', name: 'provider', indexed: true },
- { type: 'uint256', name: 'eth_amount', indexed: true },
- { type: 'uint256', name: 'token_amount', indexed: true },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: 'RemoveLiquidity',
- inputs: [
- { type: 'address', name: 'provider', indexed: true },
- { type: 'uint256', name: 'eth_amount', indexed: true },
- { type: 'uint256', name: 'token_amount', indexed: true },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: 'Transfer',
- inputs: [
- { type: 'address', name: '_from', indexed: true },
- { type: 'address', name: '_to', indexed: true },
- { type: 'uint256', name: '_value', indexed: false },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: 'Approval',
- inputs: [
- { type: 'address', name: '_owner', indexed: true },
- { type: 'address', name: '_spender', indexed: true },
- { type: 'uint256', name: '_value', indexed: false },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: 'setup',
- outputs: [],
- inputs: [{ type: 'address', name: 'token_addr' }],
- constant: false,
- payable: false,
- type: 'function',
- gas: 175875,
- },
- {
- name: 'addLiquidity',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'min_liquidity' },
- { type: 'uint256', name: 'max_tokens' },
- { type: 'uint256', name: 'deadline' },
- ],
- constant: false,
- payable: true,
- type: 'function',
- gas: 82605,
- },
- {
- name: 'removeLiquidity',
- outputs: [
- { type: 'uint256', name: 'out' },
- { type: 'uint256', name: 'out' },
- ],
- inputs: [
- { type: 'uint256', name: 'amount' },
- { type: 'uint256', name: 'min_eth' },
- { type: 'uint256', name: 'min_tokens' },
- { type: 'uint256', name: 'deadline' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 116814,
- },
- {
- name: '__default__',
- outputs: [],
- inputs: [],
- constant: false,
- payable: true,
- type: 'function',
- },
- {
- name: 'ethToTokenSwapInput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'min_tokens' },
- { type: 'uint256', name: 'deadline' },
- ],
- constant: false,
- payable: true,
- type: 'function',
- gas: 12757,
- },
- {
- name: 'ethToTokenTransferInput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'min_tokens' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'recipient' },
- ],
- constant: false,
- payable: true,
- type: 'function',
- gas: 12965,
- },
- {
- name: 'ethToTokenSwapOutput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_bought' },
- { type: 'uint256', name: 'deadline' },
- ],
- constant: false,
- payable: true,
- type: 'function',
- gas: 50455,
- },
- {
- name: 'ethToTokenTransferOutput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_bought' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'recipient' },
- ],
- constant: false,
- payable: true,
- type: 'function',
- gas: 50663,
- },
- {
- name: 'tokenToEthSwapInput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_sold' },
- { type: 'uint256', name: 'min_eth' },
- { type: 'uint256', name: 'deadline' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 47503,
- },
- {
- name: 'tokenToEthTransferInput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_sold' },
- { type: 'uint256', name: 'min_eth' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'recipient' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 47712,
- },
- {
- name: 'tokenToEthSwapOutput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'eth_bought' },
- { type: 'uint256', name: 'max_tokens' },
- { type: 'uint256', name: 'deadline' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 50175,
- },
- {
- name: 'tokenToEthTransferOutput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'eth_bought' },
- { type: 'uint256', name: 'max_tokens' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'recipient' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 50384,
- },
- {
- name: 'tokenToTokenSwapInput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_sold' },
- { type: 'uint256', name: 'min_tokens_bought' },
- { type: 'uint256', name: 'min_eth_bought' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'token_addr' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 51007,
- },
- {
- name: 'tokenToTokenTransferInput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_sold' },
- { type: 'uint256', name: 'min_tokens_bought' },
- { type: 'uint256', name: 'min_eth_bought' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'recipient' },
- { type: 'address', name: 'token_addr' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 51098,
- },
- {
- name: 'tokenToTokenSwapOutput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_bought' },
- { type: 'uint256', name: 'max_tokens_sold' },
- { type: 'uint256', name: 'max_eth_sold' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'token_addr' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 54928,
- },
- {
- name: 'tokenToTokenTransferOutput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_bought' },
- { type: 'uint256', name: 'max_tokens_sold' },
- { type: 'uint256', name: 'max_eth_sold' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'recipient' },
- { type: 'address', name: 'token_addr' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 55019,
- },
- {
- name: 'tokenToExchangeSwapInput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_sold' },
- { type: 'uint256', name: 'min_tokens_bought' },
- { type: 'uint256', name: 'min_eth_bought' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'exchange_addr' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 49342,
- },
- {
- name: 'tokenToExchangeTransferInput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_sold' },
- { type: 'uint256', name: 'min_tokens_bought' },
- { type: 'uint256', name: 'min_eth_bought' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'recipient' },
- { type: 'address', name: 'exchange_addr' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 49532,
- },
- {
- name: 'tokenToExchangeSwapOutput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_bought' },
- { type: 'uint256', name: 'max_tokens_sold' },
- { type: 'uint256', name: 'max_eth_sold' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'exchange_addr' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 53233,
- },
- {
- name: 'tokenToExchangeTransferOutput',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'uint256', name: 'tokens_bought' },
- { type: 'uint256', name: 'max_tokens_sold' },
- { type: 'uint256', name: 'max_eth_sold' },
- { type: 'uint256', name: 'deadline' },
- { type: 'address', name: 'recipient' },
- { type: 'address', name: 'exchange_addr' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 53423,
- },
- {
- name: 'getEthToTokenInputPrice',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [{ type: 'uint256', name: 'eth_sold' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 5542,
- },
- {
- name: 'getEthToTokenOutputPrice',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [{ type: 'uint256', name: 'tokens_bought' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 6872,
- },
- {
- name: 'getTokenToEthInputPrice',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [{ type: 'uint256', name: 'tokens_sold' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 5637,
- },
- {
- name: 'getTokenToEthOutputPrice',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [{ type: 'uint256', name: 'eth_bought' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 6897,
- },
- {
- name: 'tokenAddress',
- outputs: [{ type: 'address', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1413,
- },
- {
- name: 'factoryAddress',
- outputs: [{ type: 'address', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1443,
- },
- {
- name: 'balanceOf',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [{ type: 'address', name: '_owner' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1645,
- },
- {
- name: 'transfer',
- outputs: [{ type: 'bool', name: 'out' }],
- inputs: [
- { type: 'address', name: '_to' },
- { type: 'uint256', name: '_value' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 75034,
- },
- {
- name: 'transferFrom',
- outputs: [{ type: 'bool', name: 'out' }],
- inputs: [
- { type: 'address', name: '_from' },
- { type: 'address', name: '_to' },
- { type: 'uint256', name: '_value' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 110907,
- },
- {
- name: 'approve',
- outputs: [{ type: 'bool', name: 'out' }],
- inputs: [
- { type: 'address', name: '_spender' },
- { type: 'uint256', name: '_value' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 38769,
- },
- {
- name: 'allowance',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'address', name: '_owner' },
- { type: 'address', name: '_spender' },
- ],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1925,
- },
- {
- name: 'name',
- outputs: [{ type: 'bytes32', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1623,
- },
- {
- name: 'symbol',
- outputs: [{ type: 'bytes32', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1653,
- },
- {
- name: 'decimals',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1683,
- },
- {
- name: 'totalSupply',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1713,
- },
-]
-```
-
-```javascript
-const exchangeContract = new web3.eth.Contract(exchangeABI, exchangeAddress)
-```
-
-# Token Contracts
-
-Some t1 interactions require making calls directly to ERC20 token contracts rather than the exchanges with which they are associated.
-
-## Get Token Address
-
-The `getToken` method in the factory contract can be used to find the ERC20 token address associated with an exchange contract. There is no barrier of entry for adding an ERC20 token to t1 or checks on the validity of the token contracts. Frontend interfaces should maintain a list of valid ERC20 tokens that users can safely trade or allow users to paste in arbitrary addresses.
-
-```javascript
-const tokenAddress = factoryContract.methods.getToken(exchangeAddress)
-```
-
-If the return value is `0x0000000000000000000000000000000000000000` the input address is not a t1 exchange.
-
-## Token Interface
-
-Creating a token interface in web3 requires the **token address** and the **token ABI**:
-
-```javascript
-const tokenABI = [
- {
- name: 'Transfer',
- inputs: [
- { type: 'address', name: '_from', indexed: true },
- { type: 'address', name: '_to', indexed: true },
- { type: 'uint256', name: '_value', indexed: false },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: 'Approval',
- inputs: [
- { type: 'address', name: '_owner', indexed: true },
- { type: 'address', name: '_spender', indexed: true },
- { type: 'uint256', name: '_value', indexed: false },
- ],
- anonymous: false,
- type: 'event',
- },
- {
- name: '__init__',
- outputs: [],
- inputs: [
- { type: 'bytes32', name: '_name' },
- { type: 'bytes32', name: '_symbol' },
- { type: 'uint256', name: '_decimals' },
- { type: 'uint256', name: '_supply' },
- ],
- constant: false,
- payable: false,
- type: 'constructor',
- },
- {
- name: 'deposit',
- outputs: [],
- inputs: [],
- constant: false,
- payable: true,
- type: 'function',
- gas: 74279,
- },
- {
- name: 'withdraw',
- outputs: [{ type: 'bool', name: 'out' }],
- inputs: [{ type: 'uint256', name: '_value' }],
- constant: false,
- payable: false,
- type: 'function',
- gas: 108706,
- },
- {
- name: 'totalSupply',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 543,
- },
- {
- name: 'balanceOf',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [{ type: 'address', name: '_owner' }],
- constant: true,
- payable: false,
- type: 'function',
- gas: 745,
- },
- {
- name: 'transfer',
- outputs: [{ type: 'bool', name: 'out' }],
- inputs: [
- { type: 'address', name: '_to' },
- { type: 'uint256', name: '_value' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 74698,
- },
- {
- name: 'transferFrom',
- outputs: [{ type: 'bool', name: 'out' }],
- inputs: [
- { type: 'address', name: '_from' },
- { type: 'address', name: '_to' },
- { type: 'uint256', name: '_value' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 110600,
- },
- {
- name: 'approve',
- outputs: [{ type: 'bool', name: 'out' }],
- inputs: [
- { type: 'address', name: '_spender' },
- { type: 'uint256', name: '_value' },
- ],
- constant: false,
- payable: false,
- type: 'function',
- gas: 37888,
- },
- {
- name: 'allowance',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [
- { type: 'address', name: '_owner' },
- { type: 'address', name: '_spender' },
- ],
- constant: true,
- payable: false,
- type: 'function',
- gas: 1025,
- },
- {
- name: 'name',
- outputs: [{ type: 'bytes32', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 723,
- },
- {
- name: 'symbol',
- outputs: [{ type: 'bytes32', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 753,
- },
- {
- name: 'decimals',
- outputs: [{ type: 'uint256', name: 'out' }],
- inputs: [],
- constant: true,
- payable: false,
- type: 'function',
- gas: 783,
- },
-]
-```
-
-```javascript
-const tokenContract = new web3.eth.Contract(tokenABI, tokenAddress)
-```
diff --git a/docs/contracts/v1/guides/02-pool-liquidity.md b/docs/contracts/v1/guides/02-pool-liquidity.md
deleted file mode 100644
index a81b573be..000000000
--- a/docs/contracts/v1/guides/02-pool-liquidity.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-id: pool-liquidity
-title: Pool Liquidity
----
-
-# Formalized Model
-
-Uniswap liquidity pools are autonomous and use the Constant Product Market Maker \(`x * y = k`\). This model was formalized and the smart contract implementation passed a lightweight formal verification.
-
-- [Formalized Specification](https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf)
-- [Lightweight Verification](https://github.com/runtimeverification/verified-smart-contracts/tree/uniswap/uniswap/results)
-
-## Create Exchange
-
-The `createExchange` function is used to deploy exchange contracts for ERC20 tokens that do not yet have one.
-
-```javascript
-factory.methods.createExchange(tokenAddress).send()
-```
-
-Once an exchange is created the address can be retrieved with [`getExchange`](connect-to-uniswap/#get-exchange-address).
-
-## Exchange Reserves
-
-Each exchange contract holds a liquidity reserve of ETH and its associated ERC20 token.
-
-### ETH Reserve
-
-The ETH reserve associated with an ERC20 token exchange is the ETH balance of the exchange smart contract.
-
-```javascript
-const ethReserve = web3.eth.getBalance(exchangeAddress)
-```
-
-### ERC20 Reserve
-
-The ERC20 reserve associated with an ERC20 token exchange is the ERC20 balance of the exchange smart contract.
-
-```javascript
-const tokenReserve = tokenContract.methods.balanceOf(exchangeAddress)
-```
-
-## Add Liquidity
-
-Anyone who wants can join a t1 liquidity pool by calling the `addLiquidity` function.
-
-```javascript
-exchange.methods.addLiquidity(min_liquidity, max_tokens, deadline).send({ value: ethAmount })
-```
-
-Adding liquidity requires depositing an equivalent **value** of ETH and ERC20 tokens into the ERC20 token's associated exchange contract.
-
-The first liquidity provider to join a pool sets the initial exchange rate by depositing what they believe to be an equivalent value of ETH and ERC20 tokens. If this ratio is off, arbitrage traders will bring the prices to equilibrium at the expense of the initial liquidity provider.
-
-All future liquidity providers deposit ETH and ERC20's using the exchange rate at the moment of their deposit. If the exchange rate is bad there is a profitable arbitrage opportunity that will correct the price.
-
-### Parameters
-
-The `ethAmount` sent to `addLiquidity` is the exact amount of ETH that will be deposited into the liquidity reserves. It should be 50% of the total value a liquidity provider wishes to deposit into the reserves.
-
-Since liquidity providers must deposit at the current exchange rate, the t1 smart contracts use `ethAmount` to determine the amount of ERC20 tokens that must be deposited. This token amount is the remaining 50% of total value a liquidity provider wishes to deposit. Since exchange rate can change between when a transaction is signed and when it is executed on Ethereum, `max_tokens` is used to bound the amount this rate can fluctuate. For the first liquidity provider, `max_tokens` is the exact amount of tokens deposited.
-
-Liquidity tokens are minted to track the relative proportion of total reserves that each liquidity provider has contributed. `min_liquidity` is used in combination with `max_tokens` and `ethAmount` to bound the rate at which liquidity tokens are minted. For the first liquidity provider, `min_liquidity` does not do anything and can be set to 0.
-
-Transaction `deadline` is used to set a time after which a transaction can no longer be executed. This limits the "free option" problem, where Ethereum miners can hold signed transactions and execute them based off market movements.
-
-## Remove Liquidity
-
-Liquidity providers use the `removeLiquidity` function to withdraw their portion of the reserves.
-
-```javascript
-exchange.methods.removeLiquidity(amount, min_eth, min_tokens, deadline).send()
-```
-
-Liquidity is withdrawn at the same ratio as the reserves at the time of withdrawal. If the exchange rate is bad there is a profitable arbitrage opportunity that will correct the price.
-
-### Parameters
-
-`amount` specifies the number of liquidity tokens that will be burned. Dividing this amount by the total liquidity token supply gives the percentage of both the ETH and ER20 reserves the provider is withdrawing.
-
-Since exchange rate can change between when a transaction is signed and when it is executed on Ethereum, `min_eth` and `min_tokens` are used to bound the amount this rate can fluctuate.
-
-Same as in `addLiquidity`, `deadline` is used to set a time after which a transaction can no longer be executed.
diff --git a/docs/contracts/v1/guides/03-trade-tokens.md b/docs/contracts/v1/guides/03-trade-tokens.md
deleted file mode 100644
index 22040b92b..000000000
--- a/docs/contracts/v1/guides/03-trade-tokens.md
+++ /dev/null
@@ -1,185 +0,0 @@
----
-id: trade-tokens
-title: Trade Tokens
----
-
-In t1, there is a separate exchange contract for each ERC20 token. These exchanges hold reserves of both ETH and their associated ERC20. Instead of waiting to be matched in an order-book, users can make trades against the reserves at any time. Reserves are pooled between a decentralized network of liquidity providers who collect fees on every trade.
-
-Pricing is automatic, based on the `x * y = k` market making formula which automatically adjusts prices based off the relative sizes of the two reserves and the size of the incoming trade. Since all tokens share ETH as a common pair, it is used as an intermediary asset for direct trading between any ERC20 ⇄ ERC20 pair.
-
-## ETH ⇄ ERC20 Calculations
-
-The variables needed to determine price when trading between ETH and ERC20 tokens is:
-
-- ETH reserve size of the ERC20 exchange
-- ERC20 reserve size of the ERC20 exchange
-- Amount sold \(input\) or amount bought \(output\)
-
-### Amount Bought \(sell order\)
-
-For sell orders \(exact input\), the amount bought \(output\) is calculated:
-
-```javascript
-// Sell ETH for ERC20
-const inputAmount = userInputEthValue
-const inputReserve = web3.eth.getBalance(exchangeAddress)
-const outputReserve = tokenContract.methods.balanceOf(exchangeAddress).call()
-
-// Sell ERC20 for ETH
-const inputAmount = userInputTokenValue
-const inputReserve = tokenContract.methods.balanceOf(exchangeAddress).call()
-const outputReserve = web3.eth.getBalance(exchangeAddress)
-
-// Output amount bought
-const numerator = inputAmount * outputReserve * 997
-const denominator = inputReserve * 1000 + inputAmount * 997
-const outputAmount = numerator / denominator
-```
-
-### Amount Sold \(buy order\)
-
-For buy orders \(exact output\), the cost \(input\) is calculated:
-
-```javascript
-// Buy ERC20 with ETH
-const outputAmount = userInputTokenValue
-const inputReserve = web3.eth.getBalance(exchangeAddress)
-const outputReserve = tokenContract.methods.balanceOf(exchangeAddress).call()
-
-// Buy ETH with ERC20
-const outputAmount = userInputEthValue
-const inputReserve = tokenContract.methods.balanceOf(exchangeAddress).call()
-const outputReserve = web3.eth.getBalance(exchangeAddress)
-
-// Cost
-const numerator = outputAmount * inputReserve * 1000
-const denominator = (outputReserve - outputAmount) * 997
-const inputAmount = numerator / denominator + 1
-```
-
-### Liquidity Provider Fee
-
-There is a 0.3% liquidity provider fee built into the price formula. This can be calculated:
-
-```javascript
-fee = inputAmount * 0.003
-```
-
-### Exchange Rate
-
-The exchange rate is simply the output amount divided by the input amount.
-
-```javascript
-const rate = outputAmount / inputAmount
-```
-
-## ERC20 ⇄ ERC20 Calculations
-
-The variables needed to determine price when trading between two ERC20 tokens is:
-
-- ETH reserve size of the input ERC20 exchange
-- ERC20 reserve size of the input ERC20 exchange
-- ETH reserve size of the output ERC20 exchange
-- ERC20 reserve size of the output ERC20 exchange
-- Amount sold \(input\) or amount bought \(output\)
-
-### Amount Bought \(sell order\)
-
-For sell orders \(exact input\), the amount bought \(output\) is calculated:
-
-```javascript
-// TokenA (ERC20) to ETH conversion
-const inputAmountA = userInputTokenAValue
-const inputReserveA = tokenContractA.methods.balanceOf(exchangeAddressA).call()
-const outputReserveA = web3.eth.getBalance(exchangeAddressA)
-
-const numeratorA = inputAmountA * outputReserveA * 997
-const denominatorA = inputReserveA * 1000 + inputAmountA * 997
-const outputAmountA = numeratorA / denominatorA
-
-// ETH to TokenB conversion
-const inputAmountB = outputAmountA
-const inputReserveB = web3.eth.getBalance(exchangeAddressB)
-const outputReserveB = tokenContract.methods.balanceOf(exchangeAddressB).call()
-
-const numeratorB = inputAmountB * outputReserveB * 997
-const denominatorB = inputReserveB * 1000 + inputAmountB * 997
-const outputAmountB = numeratorB / denominatorB
-```
-
-### Amount Sold \(buy order\)
-
-For buy orders \(exact output\), the cost \(input\) is calculated:
-
-```javascript
-// Buy TokenB with ETH
-const outputAmountB = userInputTokenBValue
-const inputReserveB = web3.eth.getBalance(exchangeAddressB)
-const outputReserveB = tokenContractB.methods.balanceOf(exchangeAddressB).call()
-
-// Cost
-const numeratorB = outputAmountB * inputReserveB * 1000
-const denominatorB = (outputReserveB - outputAmountB) * 997
-const inputAmountB = numeratorB / denominatorB + 1
-
-// Buy ETH with TokenA
-const outputAmountA = userInputEthValue
-const inputReserveA = tokenContractA.methods.balanceOf(exchangeAddressA).call()
-const outputReserveA = web3.eth.getBalance(exchangeAddressA)
-
-// Cost
-const numeratorA = outputAmountA * inputReserveA * 1000
-const denominatorA = (outputReserveA - outputAmountA) * 997
-const inputAmountA = numeratorA / denominatorA + 1
-```
-
-### Liquidity Provider Fee
-
-There is a 0.30% liquidity provider fee to swap from TokenA to ETH on the input exchange. There is another 0.3% liquidity provider fee to swap the remaining ETH to TokenB.
-
-```javascript
-const exchangeAFee = inputAmountA * 0.003
-const exchangeBFee = inputAmountB * 0.003
-```
-
-Since users only inputs Token A, it can be represented to them as:
-
-```javascript
-const combinedFee = inputAmountA * 0.00591
-```
-
-### Exchange Rate
-
-The exchange rate is simply the output amount divided by the input amount.
-
-```javascript
-const rate = outputAmountB / inputAmountA
-```
-
-## Deadlines
-
-Many t1 functions include a transaction `deadline` that sets a time after which a transaction can no longer be executed. This limits miners holding signed transactions for extended durations and executing them based off market movements. It also reduces uncertainty around transactions that take a long time to execute due to issues with gas price.
-
-Deadlines are calculated by adding the desired amount of time \(in seconds\) to the latest Ethereum block timestamp.
-
-```javascript
-web3.eth.getBlock('latest', (error, block) => {
- deadline = block.timestamp + 300 // transaction expires in 300 seconds (5 minutes)
-})
-```
-
-## Recipients
-
-Uniswap allows traders to swap tokens and transfer the output to a new `recipient` address. This allows for a type of payment where the payer sends one token and the payee receives another.
-
-## ETH ⇄ ERC20 Trades
-
-Coming soon...
-
-## ERC20 ⇄ ERC20 Trades
-
-Coming soon...
-
-## Custom Pools
-
-Coming soon...
diff --git a/docs/contracts/v1/guides/04-custom-linking.md b/docs/contracts/v1/guides/04-custom-linking.md
deleted file mode 100644
index f5d0b7a32..000000000
--- a/docs/contracts/v1/guides/04-custom-linking.md
+++ /dev/null
@@ -1,111 +0,0 @@
----
-id: custom-linking
-title: Custom Linking
----
-
-# Query Parameters
-
-The t1 front-end supports URL query parameters to allow for custom linking to the t1 exchange. Users and developers can use these query parameters to link to the t1 exchange with custom prefilled settings.
-
-Each Page has specific available URL parameters that can be set. Global parameters can be used on all pages.
-
-A parameter used on an incorrect page will have no effect on exchange settings. Parameters not set with a URL parameter will be set to standard exchange defaults.
-
-## Global
-
-| Parameter | Type | Description |
-| :-------- | :------- | :------------------------------- |
-| theme | `String` | Sets them to dark or light mode. |
-
-### Theme Options
-
-Theme can be set as `light` or `dark`.
-
-### Example Usage
-
-`https://app.uniswap.org/#/swap?theme=dark&use=v1`
-
-## Swap Page
-
-| Parameter | Type | Description |
-| :------------- | :--------------- | :--------------------------------------------------------------------- |
-| inputCurrency | `address` | Input currency that will be swapped for output currency. |
-| outputCurrency | `address or ETH` | Output currency that input currency will be swapped for. |
-| slippage | `number` | Max slippage to be used during transaction \(in bips\) |
-| exactAmount | `number` | The custom token amount to buy or sell. |
-| exactField | `string` | The field to set custom token amount for. Must be `input` or `output`. |
-
-### Defaults
-
-ETH defaults as the input currency. When a different token is selected for either input or output ETH will default as the opposite selected currency.
-
-### Constraints
-
-Addresses must be valid ERC20 addresses. Slippage and amount values must be valid numbers accepted by the exchange \(or error will prevent from swapping\). Slippage can 0, or within the range 10->9999 bips \(which converts to 0%, 0.01%->99%\)
-
-When selecting ETH as the output currency a user must also choose an inputCurrency that is not ETH \(to prevent ETH being populated in both fields\)
-
-### Setting Amounts
-
-Two parameters, exactField and exactAmount can be used to set specific token amounts to be sold or bought. Both fields must be set in the URL or there will be no effect on the settings.
-
-### Example Usage
-
-`https://app.uniswap.org/#/swap?exactField=input&exactAmount=10&inputCurrency=0x0F5D2fB29fb7d3CFeE444a200298f468908cC942?use=v1`
-
-## Send Page
-
-The send page has the same options available as the Swap page, plus one additional paramter, `recipient`.
-
-| Parameter | Type | Description |
-| :-------- | :-------- | :---------------------------------------------- |
-| recipient | `address` | Address of the recipient of a send transaction. |
-
-### Example Usage
-
-`https://app.uniswap.org/#/send?recipient=0x74Aa01d162E6dC6A657caC857418C403D48E2D77?use=v1`
-
-## Pool Page
-
-The Pool page is made up of 3 subroutes: `add-liquidity`, `remove-liquidity`, `create-exchange`.
-
-### Add Liquidity
-
-| Parameter | Type | Description |
-| :---------- | :-------- | :----------------------------------------------------- |
-| ethAmount | `number` | Amount of ETH to deposit into the pool. |
-| token | `address` | ERC20 address of the pool to add liquidity to. |
-| tokenAmount | `number` | Amount of the selected token to deposit into the pool. |
-
-### Example Usage
-
-`https://app.uniswap.org/#/add-liquidity?ethAmount=2.34&token=0x42456D7084eacF4083f1140d3229471bbA2949A8&tokenAmount=300?use=v1`
-
-## Remove Liquidity
-
-| Parameter | Type | Description |
-| :--------------- | :-------- | :-------------------------------------------------------------------------------------- |
-| poolTokenAddress | `address` | Pool to withdraw liquidity from. \(Must be an ERC20 address with an existing exchange\) |
-| poolTokenAmount | `number` | Amount of pool token to be withdrawn from liquidity pool. |
-
-### Example Usage
-
-`https://app.uniswap.org/#/remove-liquidity?poolTokenAmount=1.23&use=v1`
-
-## Create Exchange
-
-| Parameter | Type | Description |
-| :----------- | :-------- | :--------------------------------------------------------------------------------------------------------- |
-| tokenAddress | `address` | ERC20 token to create the exchange for. Must be valid ERC20 token for which there is no existing exchange. |
-
-### Example Usage
-
-`https://app.uniswap.org/#/swap?use=v1&create-exchange?tokenAddress=0x0F5D2fB29fb7d3CFeE444a200298f468908cC942`
-
-## Custom Routes
-
-Custom token routes can still be used in combination with URL paramters. URL paramters are higher in the settings hierarchy than custom routes.
-
-An example using custom token route and URL paramters.
-
-`https://app.uniswap.org/#/swap/0x0F5D2fB29fb7d3CFeE444a200298f468908cC942?exactField=input&exactAmount=10&use=v1`
diff --git a/docs/contracts/v1/guides/05-iframe-integration.md b/docs/contracts/v1/guides/05-iframe-integration.md
deleted file mode 100644
index 30ab8dce4..000000000
--- a/docs/contracts/v1/guides/05-iframe-integration.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-id: iframe-integration
-title: Iframe Integration
----
-
-Uniswap can be used within other sites as an iframe. An iframe shows an exact version of the app.uniswap.org site and can have custom prefilled settings.
-
-# Why You May Want This
-
-Integrating the t1 site directly into your web application can be useful for a variety of reasons.
-
-v1.app.uniswap.org allows users to buy, sell, send, or provide liquidity for ERC20 tokens. An iframe integration may be useful if your application provides services around these ERC20 tokens. \(For example, users can buy DAI through a t1 iframe on your site, then allow users to lend that DAI on your site\).
-
-It can also be useful if your application requires users to acquire some token in order to use some service \(For example, allow users to buy "REP" token so they can engage in prediction markets on the Augur Dapp\).
-
-# iframe vs. custom UI
-
-One benefit of an iframe integration is that the your site will automatically keep up with any improvements/additions to the v1.app.uniswap.org site. After the initital integration is setup no further work is needed to pull in updates as the exchange site is updated over time.
-
-# Live Example
-
-An example of an Iframe integration can be found on the FOAM site [https://map.foam.space/](https://map.foam.space/#/at/?lng=-74.0045300&lat=40.6771800&zoom=5.00)
-
-To see the Iframe click the dropdown in the top right and click "get foam".
-
-# Add To Your Site
-
-To include a t1 iframe within your site just add an iframe element within your website code and link to the t1 exchange.
-
-Linking to a ETH <-> DAI swap page would look something like this. To link to a token of your choice replace the address after "outputCurrency" with the token address of the token you want to link to.
-
-```text
-
-```
-
-You can customize the selected page, selected custom tokens and more using URL query parameters. See [Custom Linking](custom-linking).
diff --git a/docs/contracts/v1/guides/06-token-listing.md b/docs/contracts/v1/guides/06-token-listing.md
deleted file mode 100644
index b3c55c76c..000000000
--- a/docs/contracts/v1/guides/06-token-listing.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-id: token-listing
-title: Token Listing
----
-
-It is possible that a token you are interested in is not included in the token dropdown on [https://app.uniswap.org/#/swap?use=v1](https://app.uniswap.org/#/swap?use=v1), however, all tokens that have a deployed uniswap exchange are supported on the front-end.
-
-There are three ways to interact with tokens that are not yet included on the default list.
-
-## 1. Paste the token address into the search box.
-
-If a token is not included in the list, try pasting the token address into the search box. It will populate the dropdown with the token you are looking for.
-
-## 2. Custom Linking
-
-[https://app.uniswap.org/#/swap?use=v1](https://app.uniswap.org/#/swap?use=v1) supports custom linking to all tokens that have a t1 exchange. See [Custom Linking](custom-linking) for details on how to link.
-
-For example, to populate the output token field with an unlisted token, we can specify the outputCurrency in the URL and pass in the token's address like this:
-
-`https://app.uniswap.org/#/swap?use=v1?outputCurrency=0xfA3E941D1F6B7b10eD84A0C211bfA8aeE907965e`
-
-## Token Details and Assets
-
-Token information (including decimals, symbol, name, etc.) is pulled from token contracts directly. Logo images are pulled from TrustWallet. If you'd like your token logo updated make a pull request into the TrustWallet assets repo [https://github.com/trustwallet/assets](https://github.com/trustwallet/assets).
diff --git a/docs/contracts/v1/guides/_category_.json b/docs/contracts/v1/guides/_category_.json
deleted file mode 100644
index c694eb5b2..000000000
--- a/docs/contracts/v1/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 2,
- "collapsed": false
-}
diff --git a/docs/contracts/v1/overview.md b/docs/contracts/v1/overview.md
deleted file mode 100644
index a743bb32a..000000000
--- a/docs/contracts/v1/overview.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-# The t1 V1 Smart Contracts
-
-Uniswap V1 is the first version of the protocol, [launched in November 2018](https://twitter.com/haydenzadams/status/1058376395108376577) at Devcon 4. Because of its permissionless nature, it will exist for as long as Ethereum does.
-
-Designed with simplicity in mind, the t1 protocol provides an interface for seamless exchange of ERC20 tokens on Ethereum. By eliminating unnecessary forms of rent extraction and middlemen it allows faster, more efficient exchange. Where it makes tradeoffs, decentralization, censorship resistance, and security are prioritized.
-
-Uniswap is open source and functions as a public good. There is no central token or platform fee. No special treatment is given to early investors, adopters, or developers. Token listing is open and free. All smart contract functions are public and all upgrades are opt-in.
-
-This site will serve as a project overview for t1 - explaining how it works, how to use it, and how to build on top of it. These docs are actively being worked on and more information will be added on an ongoing basis.
-
-# V1 Features
-
-- Add support for any ERC20 token using the t1 [factory](https://github.com/Uniswap/uniswap-v1/blob/master/contracts/uniswap_factory.vy)
-- Join liquidity pools to collect fees on ETH-ERC20 pairs
-- Liquidity-sensitive automated pricing using [constant product formula](https://github.com/runtimeverification/verified-smart-contracts/blob/uniswap/uniswap/x-y-k.pdf)
-- Trade ETH for any ERC20 without wrapping
-- Trade any ERC20 for any ERC20 in a single transaction
-- Trade and transfer to a different address in a single transaction
-- Lowest gas cost of any decentralized exchange
-- Support for private and custom uniswap exchanges
-- Buy ERC20 tokens from any wallet using ENS
-- [Partially verified](https://github.com/runtimeverification/verified-smart-contracts/tree/uniswap/uniswap) smart contracts written in Vyper
-- Mobile-optimized open source [frontend implementation](https://github.com/Uniswap/uniswap-interface)
-- Funded through an [Ethereum Foundation grant](https://blog.ethereum.org/2018/08/17/ethereum-foundation-grants-update-wave-3/)
-
-# Resources
-
-- [Website](https://uniswap.org)
-- [GitHub](https://github.com/Uniswap)
-- [Twitter](https://twitter.com/Uniswap)
-- [Reddit](https://www.reddit.com/r/Uniswap)
-- [Email](mailto:contact@uniswap.org)
-- [Whitepaper](https://hackmd.io/s/HJ9jLsfTz)
-
-# How it works
-
-Uniswap is made up of a series of ETH-ERC20 exchange contracts. There is exactly one exchange contract per ERC20 token. If a token does not yet have an exchange it can be created by anyone using the t1 factory contract. The factory serves as a public registry and is used to look up all token and exchange addresses added to the system.
-
-Each exchange holds reserves of both ETH and its associated ERC20 token. Anyone can become a liquidity provider on an exchange and contribute to its reserves. This is different than buying or selling; it requires depositing an equivalent value of both ETH and the relevant ERC20 token. Liquidity is pooled across all providers and an internal "pool token" (ERC20) is used to track each providers relative contribution. Pool tokens are minted when liquidity is deposited into the system and can be burned at any time to withdraw a proportional share of the reserves.
-
-Exchange contracts are automated market makers between an ETH-ERC20 pair. Traders can swap between the two in either direction by adding to the liquidity reserve of one and withdrawing from the reserve of the other. Since ETH is a common pair for all ERC20 exchanges, it can be used as an intermediary allowing direct ERC20-ERC20 trades in a single transaction. Users can specify a recipient address if they want to receive purchased tokens at a different address from the one used to make a transaction.
-
-Uniswap uses a "constant product" market making formula which sets the exchange rate based off of the relative size of the ETH and ERC20 reserves, and the amount with which an incoming trade shifts this ratio. Selling ETH for ERC20 tokens increases the size of the ETH reserve and decreases the size of the ERC20 reserve. This shifts the reserve ratio, increasing the ERC20 token's price relative to ETH for subsequent transactions. The larger a trade relative to the total size of the reserves, the more price slippage will occur. Essentially, exchange contracts use the open financial market to decide on the relative value of a pair and uses that as a market making strategy.
-
-A small liquidity provider fee \(0.30%\) is taken out of each trade and added to the reserves. While the ETH-ERC20 reserve ratio is constantly shifting, fees makes sure that the total combined reserve size increases with every trade. This functions as a payout to liquidity providers that is collected when they burn their pool tokens to withdraw their portion of total reserves. Guaranteed arbitrage opportunities from price fluctuations should push a steady flow of transactions through the system and increase the amount of fee revenue generated.
-
-Since t1 is entirely on-chain, prices can change between when a transaction is signed and when it is included in a block. Traders can bound price fluctuations by specifying the minimum amount bought on sell orders, or the maximum amount sold on buy orders. This acts as a limit order that will automatically cancel if it is not filled. It is also possible to set transaction deadlines which will cancel orders if they are not executed fast enough.
-
-The reason only one exchange per token can be registered to the factory is to encourage providers to pool their liquidity into a single reserve. However, t1 has built in support for ERC20-to-ERC20 trades using the public pools from the factory on one side of the transaction and custom, user-specified pool on the other. Custom pools could have fund managers, use alternate pricing mechanisms, remove liquidity provider fees, integrate complex three dimensional fomo-based ponzi-schemes and more. They just need to implement the t1 interface and accept ETH as an intermediary asset. Custom pools do not have the same safety properties as the public ones. It is recommended users only interact with audited, open-source smart contracts.
-
-Upgrading censorship resistant, decentralized smart contracts is difficult. If significant improvements are made to the system a new version will be released. Liquidity providers can choose between moving to the new system or staying in the old one. If possible, new versions will be backwards compatible and able to trade ERC20-to-ERC20 with the old versions similar to a custom pool.
-
-# How to use it
-
-[uniswap.org](https://uniswap.org) is the landing page for the t1 protocol. It describes the project and directs users where they need to go.
-
-The t1 smart contracts live on Ethereum. Anyone can interact with them directly.
-
-The t1 frontend is an open source interface designed to improve user experience when interacting with the smart contracts. Anyone can use the source code to host an interface, or build their own. Hosted interfaces are independent of t1, and should comply with their jurisdictional laws and regulations.
diff --git a/docs/contracts/v1/reference/01-factory.md b/docs/contracts/v1/reference/01-factory.md
deleted file mode 100644
index 9589ea5f3..000000000
--- a/docs/contracts/v1/reference/01-factory.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-id: factory
-title: Factory
----
-
-# initializeFactory
-
-| Parameter | Description |
-| :-------- | ------------------------------------: |
-| template | Ethereum address of exchange template |
-
-## Smart Contract
-
-```python
-initializeFactory(template: address)
-```
-
-## Web3
-
-```javascript
-factoryContract.methods.initializeFactory(template).send()
-```
-
-# createExchange
-
-| Parameter | Type | Description |
-| :-------- | :------ | ---------------------------------: |
-| token | address | Ethereum address of an ERC20 token |
-
-| Returns | |
-| :------ | -------------------------------------: |
-| address | Ethereum address of a t1 exchange |
-
-## Smart Contract
-
-```python
-createExchange(token: address): address
-```
-
-## Web3
-
-```javascript
-factoryContract.methods.createExchange(token).send()
-```
-
-# getExchange
-
-| Parameter | Type | Description |
-| :-------- | :------ | ---------------------------------: |
-| token | address | Ethereum address of an ERC20 token |
-
-| Returns | |
-| :------ | -------------------------------------: |
-| address | Ethereum address of a t1 exchange |
-
-## Smart Contract
-
-```python
-@constant
-getExchange(token: address): address
-```
-
-## Web3
-
-```javascript
-factoryContract.methods.getExchange(token).call()
-```
-
-# getToken
-
-| Parameter | Type | Description |
-| :-------- | :------ | -------------------------------------: |
-| exchange | address | Ethereum address of a t1 exchange |
-
-| Returns | |
-| :------ | ---------------------------------: |
-| address | Ethereum address of an ERC20 token |
-
-## Smart Contract
-
-```python
-@constant
-getToken(exchange: address): address
-```
-
-## Web3
-
-```javascript
-factoryContract.methods.getToken(exchange).call()
-```
-
-# getTokenWithId
-
-| Parameter | Type | Description |
-| :-------- | :------ | ----------------------------: |
-| token_id | uint256 | t1 ID for an ERC20 token |
-
-| Returns | |
-| :------ | ---------------------------------: |
-| address | Ethereum address of an ERC20 token |
-
-## Smart Contract
-
-```python
-@constant
-getTokenWithId(token_id: uint256): address
-```
-
-## Web3
-
-```javascript
-factoryContract.methods.getTokenWithId(token_id).call()
-```
diff --git a/docs/contracts/v1/reference/02-exchange.md b/docs/contracts/v1/reference/02-exchange.md
deleted file mode 100644
index a1213714c..000000000
--- a/docs/contracts/v1/reference/02-exchange.md
+++ /dev/null
@@ -1,942 +0,0 @@
----
-id: exchange
-title: Exchange
----
-
-# setup
-
-| Parameter | Description |
-| :--------- | ---------------------------------: |
-| token_addr | Ethereum address of an ERC20 Token |
-
-## Smart Contract
-
-```python
-# Can only be called by factory contract during createExchange()
-setup(token_addr: address):
-```
-
-## Web3
-
-```javascript
-// Can only be called by factory contract during createExchange()
-exchangeContract.methods.setup((token: String)).send()
-```
-
-# addLiquidity
-
-| Parameter | Type | Description |
-| :------------ | :------ | -------------------------: |
-| msg.value | uint256 | Amount of ETH added |
-| min_liquidity | uint256 | Minimum minted liquidity |
-| max_tokens | uint256 | Maximum ERC20 tokens added |
-| deadline | uint256 | Transaction deadline |
-
-| Returns | |
-| :------ | --------------------------------: |
-| uint256 | Amount of liquidity tokens minted |
-
-## Smart Contract
-
-```python
-@payable
-addLiquidity(
- min_liquidity: uint256,
- max_tokens: uint256,
- deadline: uint256
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.addLiquidity(min_liquidity, max_tokens, deadline).send({ value: ethValue })
-```
-
-# removeLiquidity
-
-| Parameter | Type | Description |
-| :--------- | :------ | ---------------------------: |
-| amount | uint256 | Amount of liquidity burned |
-| min_eth | uint256 | Minimum ETH removed |
-| min_tokens | uint256 | Minimum ERC20 tokens removed |
-| deadline | uint256 | Transaction deadline |
-
-| Returns | |
-| :------ | ------------------------------: |
-| uint256 | Amount of ETH removed |
-| uint256 | Amount of ERC20 tokens removed. |
-
-## Smart Contract
-
-```python
-removeLiquidity(
- amount: uint256;
- min_eth: uint256,
- min_tokens: uint256,
- deadline: uint256
-): (uint256, uint256)
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.removeLiquidity(amount, min_eth, min_tokens, deadline).send()
-```
-
-# default
-
-| Parameter | Type | Description |
-| :-------- | :------ | -----------------: |
-| msg.value | uint256 | Amount of ETH sold |
-
-## Smart Contract
-
-```python
-# Default function in Vyper replaces the "fallback" function in Solidity
-@payable
-__default__():
-```
-
-## Web3
-
-```javascript
-web3.eth.sendTransaction({ value: ethAmount })
-```
-
-# ethToTokenSwapInput
-
-| Parameter | Type | Description |
-| :--------- | :------ | --------------------------: |
-| msg.value | uint256 | Amount of ETH sold |
-| min_tokens | uint256 | Minimum ERC20 tokens bought |
-| deadline | uint256 | Transaction deadline |
-
-| Returns | |
-| :------ | ----------------------------: |
-| uint256 | Amount of ERC20 tokens bought |
-
-## Smart Contract
-
-```python
-@payable
-ethToTokenSwapInput(
- min_tokens: uint256,
- deadline: uint256
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.ethToTokenSwapInput(min_liquidity, max_tokens, deadline).send({ value: ethValue })
-```
-
-# ethToTokenTransferInput
-
-| Parameter | Type | Description |
-| :--------- | :------ | ---------------------------------: |
-| msg.value | uint256 | Amount of ETH sold |
-| min_tokens | uint256 | Minimum ERC20 tokens bought |
-| deadline | uint256 | Transaction deadline |
-| recipient | address | Address that receives ERC20 tokens |
-
-| Returns | |
-| :------ | ----------------------------: |
-| uint256 | Amount of ERC20 tokens bought |
-
-## Smart Contract
-
-```python
-@payable
-ethToTokenTransferInput(
- min_tokens: uint256,
- deadline: uint256,
- recipient: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .ethToTokenTransferInput(min_liquidity, max_tokens, deadline, recipient)
- .send({ value: ethValue })
-```
-
-# ethToTokenSwapOutput
-
-| Parameter | Type | Description |
-| :------------ | :------ | ----------------------------: |
-| msg.value | uint256 | Maximum ETH sold |
-| tokens_bought | uint256 | Amount of ERC20 tokens bought |
-| deadline | uint256 | Transaction deadline |
-
-| Returns | |
-| :------ | -----------------: |
-| uint256 | Amount of ETH sold |
-
-## Smart Contract
-
-```python
-@payable
-ethToTokenSwapOutput(
- tokens_bought: uint256,
- deadline: uint256
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.ethToTokenSwapOutput(tokens_bought, deadline).send({ value: ethValue })
-```
-
-# ethToTokenTransferOutput
-
-| Parameter | Type | Description |
-| :------------ | :------ | ---------------------------------: |
-| msg.value | uint256 | Maximum ETH sold |
-| tokens_bought | uint256 | Amount of ERC20 tokens bought |
-| deadline | uint256 | Transaction deadline |
-| recipient | address | Address that receives ERC20 tokens |
-
-| Returns | |
-| :------ | -----------------: |
-| uint256 | Amount of ETH sold |
-
-## Smart Contract
-
-```python
-@payable
-ethToTokenTransferOutput(
- tokens_bought: uint256,
- deadline: uint256,
- recipient: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .ethToTokenTransferOutput(tokens_bought, deadline, (recipient: String))
- .send({ value: ethValue })
-```
-
-# tokenToEthSwapInput
-
-| Parameter | Type | Description |
-| :---------- | :------ | --------------------------: |
-| tokens_sold | uint256 | Amount of ERC20 tokens sold |
-| min_eth | uint256 | Minimum ETH bought |
-| deadline | uint256 | Transaction deadline |
-
-| Returns | |
-| :------ | -------------------: |
-| uint256 | Amount of ETH bought |
-
-## Smart Contract
-
-```python
-tokenToEthSwapInput(
- tokens_sold: uint256,
- min_eth: uint256,
- deadline: uint256
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.tokenToEthSwapInput(tokens_sold, min_eth, deadline).send()
-```
-
-# tokenToEthTransferInput
-
-| Parameter | Type | Description |
-| :---------- | :------ | --------------------------: |
-| tokens_sold | uint256 | Amount of ERC20 tokens sold |
-| min_eth | uint256 | Minimum ETH bought |
-| deadline | uint256 | Transaction deadline |
-| recipient | address | Address that receives ETH |
-
-| Returns | |
-| :------ | -------------------: |
-| uint256 | Amount of ETH bought |
-
-## Smart Contract
-
-```python
-tokenToEthTransferInput(
- tokens_sold: uint256,
- min_eth: uint256,
- deadline: uint256,
- recipient: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.tokenToEthTransferInput(tokens_sold, min_eth, deadline, recipient).send()
-```
-
-# tokenToEthSwapOutput
-
-| Parameter | Type | Description |
-| :--------- | :------ | ------------------------: |
-| eth_bought | uint256 | Amount of ETH bought |
-| max_tokens | uint256 | Maximum ERC20 tokens sold |
-| deadline | uint256 | Transaction deadline |
-
-| Returns | |
-| :------ | --------------------------: |
-| uint256 | Amount of ERC20 tokens sold |
-
-## Smart Contract
-
-```python
-tokenToEthSwapOutput(
- eth_bought: uint256,
- max_tokens: uint256,
- deadline: uint256
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.tokenToEthSwapOutput(eth_bought, max_tokens, (deadline: Integer)).send()
-```
-
-# tokenToEthTransferOutput
-
-| Parameter | Type | Description |
-| :--------- | :------ | ------------------------: |
-| eth_bought | uint256 | Amount of ETH bought |
-| max_tokens | uint256 | Maximum ERC20 tokens sold |
-| deadline | uint256 | Transaction deadline |
-| recipient | address | Address that receives ETH |
-
-| Returns | |
-| :------ | --------------------------: |
-| uint256 | Amount of ERC20 tokens sold |
-
-## Smart Contract
-
-```python
-tokenToEthTransferOutput(
- eth_bought: uint256,
- max_tokens: uint256,
- deadline: uint256,
- recipient: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToEthTransferOutput(eth_bought, max_tokens, (deadline: Integer), (recipient: String))
- .send()
-```
-
-# tokenToTokenSwapInput
-
-| Parameter | Type | Description |
-| :---------------- | :------ | ---------------------------------: |
-| tokens_sold | uint256 | Amount of input ERC20 tokens sold |
-| min_tokens_bought | uint256 | Minimum output ERC20 tokens bought |
-| min_eth_bought | uint256 | Minimum ETH bought as intermediary |
-| deadline | uint256 | Transaction deadline |
-| token_addr | address | Address of output ERC20 token |
-
-| Returns | |
-| :------ | -----------------------------------: |
-| uint256 | Amount of output ERC20 tokens bought |
-
-## Smart Contract
-
-```python
-tokenToTokenSwapInput(
- tokens_sold: uint256,
- min_tokens_bought: uint256,
- min_eth_bought: uint256,
- deadline: uint256,
- token_addr: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToTokenSwapInput(tokens_sold, min_tokens_bought, min_eth_bought, deadline, token_addr)
- .send()
-```
-
-# tokenToTokenTransferInput
-
-| Parameter | Type | Description |
-| :---------------- | :------ | ----------------------------------------: |
-| tokens_sold | uint256 | Amount of input ERC20 tokens sold |
-| min_tokens_bought | uint256 | Minimum output ERC20 tokens bought |
-| min_eth_bought | uint256 | Minimum ETH bought as intermediary |
-| deadline | uint256 | Transaction deadline |
-| recipient | address | Address that receives output ERC20 tokens |
-| token_addr | address | Address of output ERC20 token |
-
-| Returns | |
-| :------ | -----------------------------------: |
-| uint256 | Amount of output ERC20 tokens bought |
-
-## Smart Contract
-
-```python
-tokenToTokenTransferInput(
- tokens_sold: uint256,
- min_tokens_bought: uint256,
- min_eth_bought: uint256,
- deadline: uint256,
- recipient: address
- token_addr: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToTokenTransferInput(tokens_sold, min_tokens_bought, min_eth_bought, deadline, recipient, token_addr)
- .send()
-```
-
-# tokenToTokenSwapOutput
-
-| Parameter | Type | Description |
-| :-------------- | :------ | -----------------------------------: |
-| tokens_bought | uint256 | Amount of output ERC20 tokens bought |
-| max_tokens_sold | uint256 | Maximum input ERC20 tokens bought |
-| max_eth_sold | uint256 | Maximum ETH bought as intermediary |
-| deadline | uint256 | Transaction deadline |
-| token_addr | address | Address of output ERC20 token |
-
-| Returns | |
-| :------ | --------------------------------: |
-| uint256 | Amount of input ERC20 tokens sold |
-
-## Smart Contract
-
-```python
-tokenToTokenSwapOutput(
- tokens_bought: uint256,
- max_tokens_sold: uint256,
- max_eth_sold: uint256,
- deadline: uint256,
- token_addr: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToTokenSwapOutput(tokens_bought, max_tokens_sold, max_eth_sold, deadline, token_addr)
- .send()
-```
-
-# tokenToTokenTransferOutput
-
-| Parameter | Type | Description |
-| :-------------- | :------ | ----------------------------------------: |
-| tokens_bought | uint256 | Amount of output ERC20 tokens bought |
-| max_tokens_sold | uint256 | Maximum input ERC20 tokens bought |
-| max_eth_sold | uint256 | Maximum ETH bought as intermediary |
-| deadline | uint256 | Transaction deadline |
-| recipient | address | Address that receives output ERC20 tokens |
-| token_addr | address | Address of output ERC20 token |
-
-| Returns | |
-| :------ | --------------------------------: |
-| uint256 | Amount of input ERC20 tokens sold |
-
-## Smart Contract
-
-```python
-tokenToTokenTransferOutput(
- tokens_bought: uint256,
- max_tokens_sold: uint256,
- max_eth_sold: uint256,
- deadline: uint256,
- recipient: address,
- token_addr: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToTokenTransferOutput(tokens_bought, max_tokens_sold, max_eth_sold, deadline, recipient, token_addr)
- .send()
-```
-
-# tokenToExchangeSwapInput
-
-| Parameter | Type | Description |
-| :---------------- | :------ | -------------------------------------: |
-| tokens_sold | uint256 | Amount of input ERC20 tokens sold |
-| min_tokens_bought | uint256 | Minimum output ERC20 tokens bought |
-| min_eth_bought | uint256 | Minimum ETH bought as intermediary |
-| deadline | uint256 | Transaction deadline |
-| exchange_addr | address | Address of output ERC20 token exchange |
-
-| Returns | |
-| :------ | -----------------------------------: |
-| uint256 | Amount of output ERC20 tokens bought |
-
-## Smart Contract
-
-```python
-tokenToTokenSwapInput(
- tokens_sold: uint256,
- min_tokens_bought: uint256,
- min_eth_bought: uint256,
- deadline: uint256,
- exchange_addr: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToTokenSwapInput(tokens_sold, min_tokens_bought, min_eth_bought, deadline, exchange_addr)
- .send()
-```
-
-# tokenToExchangeTransferInput
-
-| Parameter | Type | Description |
-| :---------------- | :------ | ----------------------------------------: |
-| tokens_sold | uint256 | Amount of input ERC20 tokens sold |
-| min_tokens_bought | uint256 | Minimum output ERC20 tokens bought |
-| min_eth_bought | uint256 | Minimum ETH bought as intermediary |
-| deadline | uint256 | Transaction deadline |
-| recipient | address | Address that receives output ERC20 tokens |
-| exchange_addr | address | Address of output ERC20 token exchange |
-
-| Returns | |
-| :------ | -----------------------------------: |
-| uint256 | Amount of output ERC20 tokens bought |
-
-## Smart Contract
-
-```python
-tokenToExchangeTransferInput(
- tokens_sold: uint256,
- min_tokens_bought: uint256,
- min_eth_bought: uint256,
- deadline: uint256,
- recipient: address
- exchange_addr: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToExchangeTransferInput(tokens_sold, min_tokens_bought, min_eth_bought, deadline, recipient, exchange_addr)
- .send()
-```
-
-# tokenToExchangeSwapOutput
-
-| Parameter | Type | Description |
-| :-------------- | :------ | -------------------------------------: |
-| tokens_bought | uint256 | Amount of output ERC20 tokens bought |
-| max_tokens_sold | uint256 | Maximum input ERC20 tokens bought |
-| max_eth_sold | uint256 | Maximum ETH bought as intermediary |
-| deadline | uint256 | Transaction deadline |
-| exchange_addr | address | Address of output ERC20 token exchange |
-
-| Returns | |
-| :------ | --------------------------------: |
-| uint256 | Amount of input ERC20 tokens sold |
-
-## Smart Contract
-
-```python
-tokenToExchangeSwapOutput(
- tokens_bought: uint256,
- max_tokens_sold: uint256,
- max_eth_sold: uint256,
- deadline: uint256,
- exchange_addr: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToExchangeSwapOutput(tokens_bought, max_tokens_sold, max_eth_sold, deadline, exchange_addr)
- .send()
-```
-
-# tokenToExchangeTransferOutput
-
-| Parameter | Type | Description |
-| :-------------- | :------ | ----------------------------------------: |
-| tokens_bought | uint256 | Amount of output ERC20 tokens bought |
-| max_tokens_sold | uint256 | Maximum input ERC20 tokens bought |
-| max_eth_sold | uint256 | Maximum ETH bought as intermediary |
-| deadline | uint256 | Transaction deadline |
-| recipient | address | Address that receives output ERC20 tokens |
-| exchange_addr | address | Address of output ERC20 token exchange |
-
-| Returns | |
-| :------ | --------------------------------: |
-| uint256 | Amount of input ERC20 tokens sold |
-
-## Smart Contract
-
-```python
-tokenToExchangeTransferOutput(
- tokens_bought: uint256,
- max_tokens_sold: uint256,
- max_eth_sold: uint256,
- deadline: uint256,
- recipient: address,
- exchange_addr: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods
- .tokenToExchangeTransferOutput(tokens_bought, max_tokens_sold, max_eth_sold, deadline, recipient, exchange_addr)
- .send()
-```
-
-# getEthToTokenInputPrice
-
-| Parameter | Type | Description |
-| :-------- | :------ | -----------------: |
-| eth_sold | uint256 | Amount of ETH sold |
-
-| Returns | |
-| :------ | ----------------------------------------: |
-| uint256 | Amount of ERC20 tokens that can be bought |
-
-## Smart Contract
-
-```python
-@constant
-getEthToTokenInputPrice(eth_sold: uint256): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.getEthToTokenInputPrice(eth_sold).call()
-```
-
-# getEthToTokenOutputPrice
-
-| Parameter | Type | Description |
-| :------------ | :------ | ----------------------------: |
-| tokens_bought | uint256 | Amount of ERC20 tokens bought |
-
-| Returns | |
-| :------ | ------------------------------: |
-| uint256 | Amount of ETH that must be sold |
-
-## Smart Contract
-
-```python
-@constant
-getEthToTokenOutputPrice(tokens_bought: uint256): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.getEthToTokenOutputPrice(tokens_bought).call()
-```
-
-# getTokenToEthInputPrice
-
-| Parameter | Type | Description |
-| :---------- | :------ | --------------------------: |
-| tokens_sold | uint256 | Amount of ERC20 tokens sold |
-
-| Returns | |
-| :------ | -------------------------------: |
-| uint256 | Amount of ETH that can be bought |
-
-## Smart Contract
-
-```python
-@constant
-getTokenToEthInputPrice(tokens_sold: uint256): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.getTokenToEthInputPrice(tokens_sold).call()
-```
-
-# getTokenToEthOutputPrice
-
-| Parameter | Type | Description |
-| :--------- | :------ | -------------------: |
-| eth_bought | uint256 | Amount of ETH bought |
-
-| Returns | |
-| :------ | ---------------------------------------: |
-| uint256 | Amount of ERC20 tokens that must be sold |
-
-## Smart Contract
-
-```python
-@constant
-getTokenToEthOutputPrice(eth_bought: uint256): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.getTokenToEthOutputPrice(eth_bought).call()
-```
-
-# tokenAddress
-
-| Returns | |
-| :------ | --------------------------------------: |
-| address | Address of ERC20 token sold on exchange |
-
-## Smart Contract
-
-```python
-@constant
-tokenAddress(): address
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.tokenAddress().call()
-```
-
-# factoryAddress
-
-| Returns | |
-| :------ | ---------------------------------------: |
-| address | Address of factory that created exchange |
-
-## Smart Contract
-
-```python
-@constant
-factoryAddress(): address
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.factoryAddress().call()
-```
-
-# name
-
-| Returns | |
-| :------ | ----------------------: |
-| bytes32 | Name of liquidity token |
-
-## Smart Contract
-
-```python
-# all exchange contracts have the same name
-@constant
-name(): bytes32 // t1 V1
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.tokenAddress().call()
-```
-
-# symbol
-
-| Returns | |
-| :------ | ------------------------: |
-| bytes32 | Symbol of liquidity token |
-
-## Smart Contract
-
-```python
-# all exchange contracts have the same symbol
-@constant
-symbol(): bytes32 // UNI-V1
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.tokenAddress().call()
-```
-
-# decimals
-
-| Returns | |
-| :------ | --------------------------: |
-| uint256 | Decimals of liquidity token |
-
-## Smart Contract
-
-```python
-# all exchange contracts have the same decimals
-@constant
-decimals(): uint256 // 18
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.decimals().call()
-```
-
-# balanceOf
-
-| Parameter | Type | Description |
-| :-------- | :------ | ---------------: |
-| \_owner | address | Ethereum address |
-
-| Returns | |
-| :------ | ---------------------------------: |
-| uint256 | Liquidity token balance of address |
-
-## Smart Contract
-
-```python
-@constant
-balanceOf(_owner: address): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.balanceOf(_owner).call()
-```
-
-# transfer
-
-| Parameter | Type | Description |
-| :-------- | :------ | -----------------: |
-| \_to | address | Recipient address |
-| \_value | uint256 | Amount transferred |
-
-| Returns | |
-| :------ | ----------------------------------------------: |
-| bool | True if successful. Reverts or false on failure |
-
-## Smart Contract
-
-```python
-transfer(
- _to: address,
- _value : uint256
-): bool
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.transfer(_to, _value).send()
-```
-
-# transferFrom
-
-| Parameter | Type | Description |
-| :-------- | :------ | -----------------: |
-| \_from | address | Sender address |
-| \_to | address | Recipient address |
-| \_value | uint256 | Amount transferred |
-
-| Returns | |
-| :------ | ----------------------------------------------: |
-| bool | True if successful. Reverts or false on failure |
-
-## Smart Contract
-
-```python
-transferFrom(
- _from: address,
- _to: address,
- _value : uint256
-): bool
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.transferFrom(_from, _to, _value).send()
-```
-
-# approve
-
-| Parameter | Type | Description |
-| :-------- | :------ | --------------------------: |
-| \_spender | address | Address of approved spender |
-| \_value | uint256 | Spender allowance |
-
-| Returns | |
-| :------ | ----------------------------------------------: |
-| bool | True if successful. Reverts or false on failure |
-
-## Smart Contract
-
-```python
-approve(
- _spender: address,
- _value: uint256
-): bool
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.approve(_spender, _value).send()
-```
-
-# allowance
-
-| Parameter | Type | Description |
-| :-------- | :------ | -------------------------------: |
-| \_owner | address | Address of liquidity token owner |
-| \_spender | uint256 | Address of approved spender |
-
-| Returns | |
-| :------ | ----------------: |
-| uint256 | Spender allowance |
-
-## Smart Contract
-
-```python
-allowance(
- _owner: address,
- _spender: address
-): uint256
-```
-
-## Web3
-
-```javascript
-exchangeContract.methods.allowance(_owner, _spender).call()
-```
diff --git a/docs/contracts/v1/reference/03-interfaces.md b/docs/contracts/v1/reference/03-interfaces.md
deleted file mode 100644
index 67ce78f89..000000000
--- a/docs/contracts/v1/reference/03-interfaces.md
+++ /dev/null
@@ -1,174 +0,0 @@
----
-id: interfaces
-title: Interfaces
----
-
-# Factory
-
-## Solidity
-
-```solidity
-interface t1FactoryInterface {
- // Public Variables
- address public exchangeTemplate;
- uint256 public tokenCount;
- // Create Exchange
- function createExchange(address token) external returns (address exchange);
- // Get Exchange and Token Info
- function getExchange(address token) external view returns (address exchange);
- function getToken(address exchange) external view returns (address token);
- function getTokenWithId(uint256 tokenId) external view returns (address token);
- // Never use
- function initializeFactory(address template) external;
-}
-```
-
-## Vyper
-
-```python
-contract t1FactoryInterface():
- # Create Exchange
- def createExchange(token: address) -> address: modifying
- # Public Variables
- def exchangeTemplate() -> address: constant
- def tokenCount() -> uint256: constant
- # Get Exchange and Token Info
- def getExchange(token_addr: address) -> address: constant
- def getToken(exchange: address) -> address: constant
- def getTokenWithId(token_id: uint256) -> address: constant
- # Initialize Factory
- def initializeFactory(template: address): modifying
-```
-
-# Exchange
-
-## Solidity
-
-```solidity
-interface t1ExchangeInterface {
- // Address of ERC20 token sold on this exchange
- function tokenAddress() external view returns (address token);
- // Address of t1 Factory
- function factoryAddress() external view returns (address factory);
- // Provide Liquidity
- function addLiquidity(uint256 min_liquidity, uint256 max_tokens, uint256 deadline) external payable returns (uint256);
- function removeLiquidity(uint256 amount, uint256 min_eth, uint256 min_tokens, uint256 deadline) external returns (uint256, uint256);
- // Get Prices
- function getEthToTokenInputPrice(uint256 eth_sold) external view returns (uint256 tokens_bought);
- function getEthToTokenOutputPrice(uint256 tokens_bought) external view returns (uint256 eth_sold);
- function getTokenToEthInputPrice(uint256 tokens_sold) external view returns (uint256 eth_bought);
- function getTokenToEthOutputPrice(uint256 eth_bought) external view returns (uint256 tokens_sold);
- // Trade ETH to ERC20
- function ethToTokenSwapInput(uint256 min_tokens, uint256 deadline) external payable returns (uint256 tokens_bought);
- function ethToTokenTransferInput(uint256 min_tokens, uint256 deadline, address recipient) external payable returns (uint256 tokens_bought);
- function ethToTokenSwapOutput(uint256 tokens_bought, uint256 deadline) external payable returns (uint256 eth_sold);
- function ethToTokenTransferOutput(uint256 tokens_bought, uint256 deadline, address recipient) external payable returns (uint256 eth_sold);
- // Trade ERC20 to ETH
- function tokenToEthSwapInput(uint256 tokens_sold, uint256 min_eth, uint256 deadline) external returns (uint256 eth_bought);
- function tokenToEthTransferInput(uint256 tokens_sold, uint256 min_eth, uint256 deadline, address recipient) external returns (uint256 eth_bought);
- function tokenToEthSwapOutput(uint256 eth_bought, uint256 max_tokens, uint256 deadline) external returns (uint256 tokens_sold);
- function tokenToEthTransferOutput(uint256 eth_bought, uint256 max_tokens, uint256 deadline, address recipient) external returns (uint256 tokens_sold);
- // Trade ERC20 to ERC20
- function tokenToTokenSwapInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address token_addr) external returns (uint256 tokens_bought);
- function tokenToTokenTransferInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address recipient, address token_addr) external returns (uint256 tokens_bought);
- function tokenToTokenSwapOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address token_addr) external returns (uint256 tokens_sold);
- function tokenToTokenTransferOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address recipient, address token_addr) external returns (uint256 tokens_sold);
- // Trade ERC20 to Custom Pool
- function tokenToExchangeSwapInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address exchange_addr) external returns (uint256 tokens_bought);
- function tokenToExchangeTransferInput(uint256 tokens_sold, uint256 min_tokens_bought, uint256 min_eth_bought, uint256 deadline, address recipient, address exchange_addr) external returns (uint256 tokens_bought);
- function tokenToExchangeSwapOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address exchange_addr) external returns (uint256 tokens_sold);
- function tokenToExchangeTransferOutput(uint256 tokens_bought, uint256 max_tokens_sold, uint256 max_eth_sold, uint256 deadline, address recipient, address exchange_addr) external returns (uint256 tokens_sold);
- // ERC20 comaptibility for liquidity tokens
- bytes32 public name;
- bytes32 public symbol;
- uint256 public decimals;
- function transfer(address _to, uint256 _value) external returns (bool);
- function transferFrom(address _from, address _to, uint256 value) external returns (bool);
- function approve(address _spender, uint256 _value) external returns (bool);
- function allowance(address _owner, address _spender) external view returns (uint256);
- function balanceOf(address _owner) external view returns (uint256);
- function totalSupply() external view returns (uint256);
- // Never use
- function setup(address token_addr) external;
-}
-```
-
-## Vyper
-
-```python
-contract t1ExchangeInterface():
- # Public Variables
- def tokenAddress() -> address: constant
- def factoryAddress() -> address: constant
- # Providing Liquidity
- def addLiquidity(min_liquidity: uint256, max_tokens: uint256, deadline: timestamp) -> uint256: modifying
- def removeLiquidity(amount: uint256, min_eth: uint256(wei), min_tokens: uint256, deadline: timestamp) -> (uint256(wei), uint256): modifying
- # Trading
- def ethToTokenSwapInput(min_tokens: uint256, deadline: timestamp) -> uint256: modifying
- def ethToTokenTransferInput(min_tokens: uint256, deadline: timestamp, recipient: address) -> uint256: modifying
- def ethToTokenSwapOutput(tokens_bought: uint256, deadline: timestamp) -> uint256(wei): modifying
- def ethToTokenTransferOutput(tokens_bought: uint256, deadline: timestamp, recipient: address) -> uint256(wei): modifying
- def tokenToEthSwapInput(tokens_sold: uint256, min_eth: uint256(wei), deadline: timestamp) -> uint256(wei): modifying
- def tokenToEthTransferInput(tokens_sold: uint256, min_eth: uint256(wei), deadline: timestamp, recipient: address) -> uint256(wei): modifying
- def tokenToEthSwapOutput(eth_bought: uint256(wei), max_tokens: uint256, deadline: timestamp) -> uint256: modifying
- def tokenToEthTransferOutput(eth_bought: uint256(wei), max_tokens: uint256, deadline: timestamp, recipient: address) -> uint256: modifying
- def tokenToTokenSwapInput(tokens_sold: uint256, min_tokens_bought: uint256, min_eth_bought: uint256(wei), deadline: timestamp, token_addr: address) -> uint256: modifying
- def tokenToTokenTransferInput(tokens_sold: uint256, min_tokens_bought: uint256, min_eth_bought: uint256(wei), deadline: timestamp, recipient: address, token_addr: address) -> uint256: modifying
- def tokenToTokenSwapOutput(tokens_bought: uint256, max_tokens_sold: uint256, max_eth_sold: uint256(wei), deadline: timestamp, token_addr: address) -> uint256: modifying
- def tokenToTokenTransferOutput(tokens_bought: uint256, max_tokens_sold: uint256, max_eth_sold: uint256(wei), deadline: timestamp, recipient: address, token_addr: address) -> uint256: modifying
- def tokenToExchangeSwapInput(tokens_sold: uint256, min_tokens_bought: uint256, min_eth_bought: uint256(wei), deadline: timestamp, exchange_addr: address) -> uint256: modifying
- def tokenToExchangeTransferInput(tokens_sold: uint256, min_tokens_bought: uint256, min_eth_bought: uint256(wei), deadline: timestamp, recipient: address, exchange_addr: address) -> uint256: modifying
- def tokenToExchangeSwapOutput(tokens_bought: uint256, max_tokens_sold: uint256, max_eth_sold: uint256(wei), deadline: timestamp, exchange_addr: address) -> uint256: modifying
- def tokenToExchangeTransferOutput(tokens_bought: uint256, max_tokens_sold: uint256, max_eth_sold: uint256(wei), deadline: timestamp, recipient: address, exchange_addr: address) -> uint256: modifying
- # Get Price
- def getEthToTokenInputPrice(eth_sold: uint256(wei)) -> uint256: constant
- def getEthToTokenOutputPrice(tokens_bought: uint256) -> uint256(wei): constant
- def getTokenToEthInputPrice(tokens_sold: uint256) -> uint256(wei): constant
- def getTokenToEthOutputPrice(eth_bought: uint256(wei)) -> uint256: constant
- # Pool Token ERC20 Compatibility
- def balanceOf() -> address: constant
- def allowance(_owner : address, _spender : address) -> uint256: constant
- def transfer(_to : address, _value : uint256) -> bool: modifying
- def transferFrom(_from : address, _to : address, _value : uint256) -> bool: modifying
- def approve(_spender : address, _value : uint256) -> bool: modifying
- # Setup
- def setup(token_addr: address): modifying
-```
-
-# ERC20 Token
-
-## Solidity
-
-```solidity
-interface ERC20Interface {
- function totalSupply() public view returns (uint);
- function balanceOf(address tokenOwner) public view returns (uint balance);
- function allowance(address tokenOwner, address spender) public view returns (uint remaining);
- function transfer(address to, uint tokens) public returns (bool success);
- function approve(address spender, uint tokens) public returns (bool success);
- function transferFrom(address from, address to, uint tokens) public returns (bool success);
- // optional
- function name() external view returns (string);
- function symbol() external view returns (string);
- function decimals() external view returns (string);
-
- event Transfer(address indexed from, address indexed to, uint tokens);
- event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
-}
-```
-
-## Vyper
-
-```python
-contract ERC20Interface():
- def totalSupply() -> uint256: constant
- def balanceOf(_owner: address) -> uint256: constant
- def allowance(_owner : address, _spender : address) -> uint256: constant
- def transfer(_to : address, _value : uint256) -> bool: modifying
- def approve(_spender : address, _value : uint256) -> bool: modifying
- def transferFrom(_from : address, _to : address, _value : uint256) -> bool: modifying
- # optional
- def name() -> bytes32: constant
- def symbol() -> bytes32: constant
- def decimals() -> uint256: constant
-```
diff --git a/docs/contracts/v1/reference/_category_.json b/docs/contracts/v1/reference/_category_.json
deleted file mode 100644
index 0e72ac2e5..000000000
--- a/docs/contracts/v1/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 3,
- "collapsed": false
-}
diff --git a/docs/contracts/v2/_category_.json b/docs/contracts/v2/_category_.json
deleted file mode 100644
index 56ca4aba5..000000000
--- a/docs/contracts/v2/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "V2 Protocol",
- "position": 5,
- "collapsed": true
-}
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/01-how-uniswap-works.md b/docs/contracts/v2/concepts/01-protocol-overview/01-how-uniswap-works.md
deleted file mode 100644
index d45eb2ca3..000000000
--- a/docs/contracts/v2/concepts/01-protocol-overview/01-how-uniswap-works.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-id: how-uniswap-works
-title: How t1 works
----
-
-
-
-Uniswap is an _automated liquidity protocol_ powered by a [constant product formula](../protocol-overview/glossary#constant-product-formula)
-and implemented in a system of non-upgradeable smart contracts on the [Ethereum](https://ethereum.org/) blockchain.
-It obviates the need for trusted intermediaries, prioritizing **decentralization**, **censorship resistance**,
-and **security**. t1 is **open-source software** licensed under the
-[GPL](https://en.wikipedia.org/wiki/GNU_General_Public_License).
-
-Each t1 smart contract, or pair, manages a liquidity pool made up of reserves of two [ERC-20](https://eips.ethereum.org/EIPS/eip-20) tokens.
-
-Anyone can become a liquidity provider (LP) for a pool by depositing an equivalent value of each underlying token in return for pool tokens. These tokens track pro-rata LP shares of the total reserves, and can be redeemed for the underlying assets at any time.
-
-
-
-Pairs act as automated market makers, standing ready to accept one token for the other as long as the “constant product” formula is preserved. This formula, most simply expressed as `x * y = k`, states that trades must not change the product (`k`) of a pair’s reserve balances (`x` and `y`). Because `k` remains unchanged from the reference frame of a trade, it is often referred to as the invariant. This formula has the desirable property that larger trades (relative to reserves) execute at exponentially worse rates than smaller ones.
-
-In practice, t1 applies a 0.30% fee to trades, which is added to reserves. As a result, each trade actually increases `k`. This functions as a payout to LPs, which is realized when they burn their pool tokens to withdraw their portion of total reserves. In the future, this fee may be reduced to 0.25%, with the remaining 0.05% withheld as a protocol-wide charge.
-
-
-
-Because the relative price of the two pair assets can only be changed through trading, divergences between the t1 price and external prices create arbitrage opportunities. This mechanism ensures that t1 prices always trend toward the market-clearing price.
-
-# Further reading
-
-To see how token swaps work in practice, and to walk through the lifecycle of a swap, check out [Swaps](../core-concepts/swaps). Or, to see how liquidity pools work, see [Pools](../core-concepts/pools).
-
-Ultimately, of course, the t1 protocol is just smart contract code running on Ethereum. To understand how they work, head over to [Smart Contracts](../../reference/smart-contracts/factory).
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/02-ecosystem-participants.md b/docs/contracts/v2/concepts/01-protocol-overview/02-ecosystem-participants.md
deleted file mode 100644
index 462134a93..000000000
--- a/docs/contracts/v2/concepts/01-protocol-overview/02-ecosystem-participants.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-id: ecosystem-participants
-title: Ecosystem Participants
----
-
-
-
-The t1 ecosystem is primarily comprised of three types of users: liquidity providers, traders, and developers. Liquidity providers are incentivized to contribute [ERC-20](https://eips.ethereum.org/EIPS/eip-20) tokens to common liquidity pools. Traders can swap these tokens for one another for a fixed [0.30% fee](../advanced-topics/fees) (which goes to liquidity providers). Developers can integrate directly with t1 smart contracts to power new and exciting interactions with tokens, trading interfaces, retail experiences, and more.
-
-In total, interactions between these classes create a positive feedback loop, fueling digital economies by defining a common language through which tokens can be pooled, traded and used.
-
-# Liquidity Providers
-
-Liquidity providers, or LPs, are not a homogenous group:
-
-- Passive LPs are token holders who wish to passively invest their assets to accumulate trading fees.
-
-- Professional LPs are focused on market making as their primary strategy. They usually develop custom tools and ways of tracking their liquidity positions across different DeFi projects.
-
-- Token projects sometimes choose to become LPs to create a liquid marketplace for their token. This allows tokens to be bought and sold more easily, and unlocks interoperability with other DeFi projects through t1.
-
-- Finally, some DeFi pioneers are exploring complex liquidity provision interactions like incentivized liquidity, liquidity as collateral, and other experimental strategies. t1 is the perfect protocol for projects to experiment with these kinds of ideas.
-
-# Traders
-
-There are a several categories of traders in the protocol ecosystem:
-
-- Speculators use a variety of community built tools and products to swap tokens using liquidity pulled from the t1 protocol.
-
-- Arbitrage bots seek profits by comparing prices across different platforms to find an edge. (Though it might seem extractive, these bots actually help equalize prices across broader Ethereum markets and keep things fair.)
-
-- DAPP users buy tokens on t1 for use in other applications on Ethereum.
-
-- Smart contracts that execute trades on the protocol by implementing swap functionality (from products like DEX aggregators to custom Solidity scripts).
-
-In all cases, trades are subject to the same flat fee for trading on the protocol. Each is important for increasing the accuracy of prices and incentivizing liquidity.
-
-# Developers/Projects
-
-There are far too many ways t1 is used in the wider Ethereum ecosystem to count, but some examples include:
-
-- The open-source, accessible nature of t1 means there are countless UX experiments and front-ends built to offer access to t1 functionality. You can find t1 functions in most of the major DeFi dashboard projects. There are also many [Uniswap-specific tools](https://github.com/Uniswap/universe) built by the community.
-
-- Wallets often integrate swapping and liquidity provision functionality as a core offering of their product.
-
-- DEX (decentralized exchange) aggregators pull liquidity from many liquidity protocols to offer traders the best prices by splitting their trades. t1 is the biggest single decentralized liquidity source for these projects.
-
-- Smart contract developers use the suite of functions available to invent new DeFi tools and other various experimental ideas. See projects like [Unisocks](https://unisocks.exchange/) or [Zora](https://ourzora.com/), among many, many others.
-
-# t1 Team and Community
-
-The t1 team along with the broader t1 community drives development of the protocol and ecosystem.
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/03-smart-contracts.md b/docs/contracts/v2/concepts/01-protocol-overview/03-smart-contracts.md
deleted file mode 100644
index 4c0475f4e..000000000
--- a/docs/contracts/v2/concepts/01-protocol-overview/03-smart-contracts.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: smart-contracts
-title: Smart contracts
----
-
-Uniswap V2 is a binary smart contract system. [Core](#core) contracts provide fundamental safety guarantees for all parties interacting with t1. [Periphery](#periphery) contracts interact with one or more core contracts but are not themselves part of the core.
-
-# Core
-
-[Source code](https://github.com/Uniswap/uniswap-v2-core)
-
-The core consists of a singleton [factory](#factory) and many [pairs](#pairs), which the factory is responsible for creating and indexing. These contracts are quite minimal, even brutalist. The simple rationale for this is that contracts with a smaller surface area are easier to reason about, less bug-prone, and more functionally elegant. Perhaps the biggest upside of this design is that many desired properties of the system can be asserted directly in the code, leaving little room for error. One downside, however, is that core contracts are somewhat user-unfriendly. In fact, interacting directly with these contracts is not recommended for most use cases. Instead, a periphery contract should be used.
-
-## Factory
-
-[Reference documentation](../../reference/smart-contracts/factory)
-
-The factory holds the generic bytecode responsible for powering pairs. Its primary job is to create one and only one smart contract per unique token pair. It also contains logic to turn on the protocol charge.
-
-## Pairs
-
-[Reference documentation](../../reference/smart-contracts/pair)
-
-[Reference documentation (ERC-20)](../../reference/smart-contracts/pair-erc-20)
-
-Pairs have two primary purposes: serving as automated market makers and keeping track of pool token balances. They also expose data which can be used to build decentralized price oracles.
-
-# Periphery
-
-[Source code](https://github.com/Uniswap/uniswap-v2-periphery)
-
-The periphery is a constellation of smart contracts designed to support domain-specific interactions with the core. Because of t1's permissionless nature, the contracts described below have no special privileges, and are in fact only a small subset of the universe of possible periphery-like contracts. However, they are useful examples of how to safely and efficiently interact with t1 V2.
-
-## Library
-
-[Reference documentation](../../reference/smart-contracts/library)
-
-The library provides a variety of convenience functions for fetching data and pricing.
-
-## Router
-
-[Reference documentation](../../reference/smart-contracts/router-02)
-
-The router, which uses the library, fully supports all the basic requirements of a front-end offering trading and liquidity management functionality. Notably, it natively supports multi-pair trades (e.g. x to y to z), treats ETH as a first-class citizen, and offers meta-transactions for removing liquidity.
-
-# Design Decisions
-
-The following sections describe some of the notable design decisions made in t1 V2. These are safe to skip unless you're interested in gaining a deep technical understanding of how V2 works under the hood, or writing smart contract integrations!
-
-## Sending Tokens
-
-Typically, smart contracts which need tokens to perform some functionality require would-be interactors to first make an approval on the token contract, then call a function that in turn calls transferFrom on the token contract. This is _not_ how V2 pairs accept tokens. Instead, pairs check their token balances at the _end_ of every interaction. Then, at the beginning of the _next_ interaction, current balances are differenced against the stored values to determine the amount of tokens that were sent by the current interactor. See the whitepaper for a justification of why this is the case, but the takeaway is that **tokens must be transferred to the pair before calling any token-requiring method** (the one exception to this rule is [Flash Swaps](../core-concepts/flash-swaps).
-
-## WETH
-
-Unlike t1 V1 pools, V2 pairs do not support ETH directly, so ETH⇄ERC-20 pairs must be emulated with WETH. The motivation behind this choice was to remove ETH-specific code in the core, resulting in a cleaner codebase. End users can be kept fully ignorant of this implementation detail, however, by simply wrapping/unwrapping ETH in the periphery.
-
-The router fully supports interacting with any WETH pair via ETH.
-
-## Minimum Liquidity
-
-To ameliorate rounding errors and increase the theoretical minimum tick size for liquidity provision, pairs burn the first [MINIMUM_LIQUIDITY](../../reference/smart-contracts/pair#minimum_liquidity) pool tokens. For the vast majority of pairs, this will represent a trivial value. The burning happens automatically during the first liquidity provision, after which point the [totalSupply](../../reference/smart-contracts/pair-erc-20#totalsupply) is forevermore bounded.
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/04-glossary.md b/docs/contracts/v2/concepts/01-protocol-overview/04-glossary.md
deleted file mode 100644
index 364976ee1..000000000
--- a/docs/contracts/v2/concepts/01-protocol-overview/04-glossary.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-id: glossary
-title: Glossary
----
-
-### Automated market maker
-
-An automated market maker is a smart contract on Ethereum that holds on-chain liquidity reserves. Users can trade against these reserves at prices set by an automated market making formula.
-
-### Constant product formula
-
-The automated market making algorithm used by t1.
-See [x\*y=k](#x--y--k).
-
-### ERC20
-
-ERC20 tokens are fungible tokens on Ethereum. t1 supports all standard ERC20 implementations.
-
-### Factory
-
-A smart contract that deploys a unique smart contract for any ERC20/ERC20 trading pair.
-
-### Pair
-
-A smart contract deployed from the t1 V2 Factory that enables trading between two ERC20 tokens.
-
-### Pool
-
-Liquidity within a pair is pooled across all liquidity providers.
-
-### Liquidity provider / LP
-
-A liquidity provider is someone who deposits an equivalent value of two ERC20 tokens into the liquidity pool within a pair. Liquidity providers take on price risk and are compensated with fees.
-
-### Mid price
-
-The price between what users can buy and sell tokens at a given moment. In t1 this is the ratio of the two ERC20 token reserves.
-
-### Price impact
-
-The difference between the mid-price and the execution price of a trade.
-
-### Slippage
-
-The amount the price moves in a trading pair between when a transaction is submitted and when it is executed.
-
-### Core
-
-Smart contracts that are essential for t1 to exist. Upgrading to a new version of core would require a liquidity migration.
-
-### Periphery
-
-External smart contracts that are useful, but not required for t1 to exist. New periphery contracts can always be deployed without migrating liquidity.
-
-### Flash swap
-
-A trade that uses the tokens being purchased before paying for them.
-
-### `x * y = k`
-
-The constant product formula.
-
-### Invariant
-
-The "k" value in the constant product formula
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/_category_.json b/docs/contracts/v2/concepts/01-protocol-overview/_category_.json
deleted file mode 100644
index a97597e12..000000000
--- a/docs/contracts/v2/concepts/01-protocol-overview/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Protocol Overview",
- "position": 1
-}
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/images/anatomy.jpg b/docs/contracts/v2/concepts/01-protocol-overview/images/anatomy.jpg
deleted file mode 100644
index 1d8f6fe0e..000000000
Binary files a/docs/contracts/v2/concepts/01-protocol-overview/images/anatomy.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/images/how-works.jpg b/docs/contracts/v2/concepts/01-protocol-overview/images/how-works.jpg
deleted file mode 100644
index 0737e0e4c..000000000
Binary files a/docs/contracts/v2/concepts/01-protocol-overview/images/how-works.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/images/lp.jpg b/docs/contracts/v2/concepts/01-protocol-overview/images/lp.jpg
deleted file mode 100644
index 8d2da33cb..000000000
Binary files a/docs/contracts/v2/concepts/01-protocol-overview/images/lp.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/images/participants.jpg b/docs/contracts/v2/concepts/01-protocol-overview/images/participants.jpg
deleted file mode 100644
index 683ef241b..000000000
Binary files a/docs/contracts/v2/concepts/01-protocol-overview/images/participants.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/01-protocol-overview/images/trade.jpg b/docs/contracts/v2/concepts/01-protocol-overview/images/trade.jpg
deleted file mode 100644
index 356a6ada5..000000000
Binary files a/docs/contracts/v2/concepts/01-protocol-overview/images/trade.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/02-core-concepts/01-swaps.md b/docs/contracts/v2/concepts/02-core-concepts/01-swaps.md
deleted file mode 100644
index 8ed855f0a..000000000
--- a/docs/contracts/v2/concepts/02-core-concepts/01-swaps.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-id: swaps
-title: Swaps
-subtitle: Learn about the core functionality of the uniswap protocol. Token Swaps.
----
-
-
-
-# Introduction
-
-Token swaps in t1 are a simple way to trade one ERC-20 token for another.
-
-For end-users, swapping is intuitive: a user picks an input token and an output token. They specify an input amount, and the protocol calculates how much of the output token they’ll receive. They then execute the swap with one click, receiving the output token in their wallet immediately.
-
-In this guide, we’ll look at what happens during a swap at the protocol level in order to gain a deeper understanding of how t1 works.
-
-Swaps in t1 are different from trades on traditional platforms. t1 does not use an order book to represent liquidity or determine prices. t1 uses an automated market maker mechanism to provide instant feedback on rates and slippage.
-
-As we learned in [Protocol Overview](../protocol-overview/how-uniswap-works), each pair on t1 is actually underpinned by a liquidity pool. Liquidity pools are smart contracts that hold balances of two unique tokens and enforces rules around depositing and withdrawing them.
-
-This rule is the [constant product formula](../protocol-overview/glossary#constant-product-formula). When either token is withdrawn (purchased), a proportional amount of the other must be deposited (sold), in order to maintain the constant.
-
-## Anatomy of a swap
-
-At the most basic level, all swaps in t1 V2 happen within a single function, aptly named `swap`:
-
-```solidity
-function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data);
-```
-
-# Receiving tokens
-
-As is probably clear from the function signature, t1 requires `swap` callers to _specify how many output tokens they would like to receive_ via the `amount{0,1}Out` parameters, which correspond to the desired amount of `token{0,1}`.
-
-# Sending Tokens
-
-What’s not as clear is how t1 _receives_ tokens as payment for the swap. Typically, smart contracts which need tokens to perform some functionality require callers to first make an approval on the token contract, then call a function that in turn calls transferFrom on the token contract. This is _not_ how V2 pairs accept tokens. Instead, pairs check their token balances at the _end_ of every interaction. Then, at the beginning of the _next_ interaction, current balances are differenced against the stored values to determine the amount of tokens that were sent by the current interactor. See the whitepaper for a justification of why this is the case.
-
-The takeaway is that **tokens must be transferred to pairs before swap is called** (the one exception to this rule is [Flash Swaps](flash-swaps)). This means that to safely use the `swap` function, it must be called from _another smart contract_. The alternative (transferring tokens to the pair and then calling `swap`) is not safe to do non-atomically because the sent tokens would be vulnerable to arbitrage.
-
-# Developer resources
-
-- To see how to implement token swaps in a smart contract read [Trading from a smart contract](../../guides/smart-contract-integration/trading-from-a-smart-contract).
-- To see how to execute a swap from an interface read [Trading (SDK)](../../../../sdk/2.0.0/guides/trading)
diff --git a/docs/contracts/v2/concepts/02-core-concepts/02-pools.md b/docs/contracts/v2/concepts/02-core-concepts/02-pools.md
deleted file mode 100644
index a48549994..000000000
--- a/docs/contracts/v2/concepts/02-core-concepts/02-pools.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-id: pools
-title: Pools
----
-
-
-
-# Introduction
-
-Each t1 liquidity pool is a trading venue for a pair of ERC20 tokens. When a pool contract is created, its balances of each token are 0; in order for the pool to begin facilitating trades, someone must seed it with an initial deposit of each token. This first liquidity provider is the one who sets the initial price of the pool. They are incentivized to deposit an equal _value_ of both tokens into the pool. To see why, consider the case where the first liquidity provider deposits tokens at a ratio different from the current market rate. This immediately creates a profitable arbitrage opportunity, which is likely to be taken by an external party.
-
-When other liquidity providers add to an existing pool, they must deposit pair tokens proportional to the current price. If they don’t, the liquidity they added is at risk of being arbitraged as well. If they believe the current price is not correct, they may arbitrage it to the level they desire, and add liquidity at that price.
-
-# Pool tokens
-
-
-
-Whenever liquidity is deposited into a pool, unique tokens known as _liquidity tokens_ are minted and sent to the provider's address. These tokens represent a given liquidity provider's contribution to a pool. The proportion of the pool's liquidity provided determines the number of liquidity tokens the provider receives. If the provider is minting a new pool, the number of liquidity tokens they will receive will equal sqrt(x \* y), where x and y represent the amount of each token provided.
-
-Whenever a trade occurs, a 0.3% fee is charged to the transaction sender. This fee is distributed _pro-rata_ to all LPs in the pool upon completion of the trade.
-
-To retrieve the underlying liquidity, plus any fees accrued, liquidity providers must "burn" their liquidity tokens, effectively exchanging them for their portion of the liquidity pool, plus the proportional fee allocation.
-
-As liquidity tokens are themselves tradable assets, liquidity providers may sell, transfer, or otherwise use their liquidity tokens in any way they see fit.
-
-> Learn more with advanced topics:
-
-- [Understanding Returns](../../concepts/advanced-topics/understanding-returns)
-- [Fees](../../concepts/advanced-topics/fees)
-
-# Why pools?
-
-Uniswap is unique in that it doesn’t use an order book to derive the price of an asset or to match buyers and sellers of tokens. Instead, t1 uses what are called Liquidity Pools.
-
-Liquidity is typically represented by discrete orders placed by individuals onto a centrally operated order book. A participant looking to provide liquidity or make markets must actively manage their orders, continuously updating them in response to the activity of others in the marketplace.
-
-While order books are foundational to finance and work great for certain usecases, they suffer from a few important limitations that are especially magnified when applied to a decentralized or blockchain-native setting. Order books require intermediary infrastructure to host the orderbook and match orders. This creates points of control and adds additional layers of complexity. They also require active participation and management from market makers who usually use sophisticated infrastructure and algorithms, limiting participation to advanced traders. Order books were invented in a world with relatively few assets being traded, so it is not surprising they aren't ideal for an ecosystem where anyone can create their own token, and those tokens usually have low liquidity. In sum, with the infrastructural trade-offs presented by a platform like Ethereum, order books are not the native architecture for implementing a liquidity protocol on a blockchain.
-
-Uniswap focuses on the strengths of Ethereum to reimagine token swaps from first principles.
-
-A blockchain-native liquidity protocol should take advantage of the trusted code execution environment, the autonomous and perpetually running virtual machine, and an open, permissionless, and inclusive access model that produces an exponentially growing ecosystem of virtual assets.
-
-It is important to reiterate that a Pool is just a smart contract, operated by users calling functions on it. Swapping tokens is calling `swap` on a Pool contract instance, while providing liquidity is calling `deposit`.
-
-Just how end-users can interact with the t1 protocol through the Interface (which in turn interacts with the underlying contracts), developers can interact directly with the smart contracts and integrate t1 functionality into their own applications without relying on intermediaries or needing permission.
-
-# Developer resources
-
-- To see how to pool tokens in a smart contract read [Providing Liquidity](../../guides/smart-contract-integration/providing-liquidity).
diff --git a/docs/contracts/v2/concepts/02-core-concepts/03-flash-swaps.md b/docs/contracts/v2/concepts/02-core-concepts/03-flash-swaps.md
deleted file mode 100644
index 0c4b8365d..000000000
--- a/docs/contracts/v2/concepts/02-core-concepts/03-flash-swaps.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-id: flash-swaps
-title: Flash Swaps
----
-
-Uniswap flash swaps allow you to withdraw up to the full reserves of any ERC20 token on t1 and execute arbitrary logic at no upfront cost, provided that by the end of the transaction you either:
-
-- pay for the withdrawn ERC20 tokens with the corresponding pair tokens
-- return the withdrawn ERC20 tokens along with a small fee
-
-Flash swaps are incredibly useful because they obviate upfront capital requirements and unnecessary order-of-operations constraints for multi-step transactions involving t1.
-
-# Examples
-
-## Capital Free Arbitrage
-
-One particularly interesting use case for flash swaps is capital-free arbitrage. It's well-known that an integral part of t1's design is to create incentives for arbitrageurs to trade the t1 price to a "fair" market price. While game-theoretically sound, this strategy is accessible only to those with sufficient capital to take advantage of arbitrage opportunities. Flash swaps remove this barrier entirely, effectively democratizing arbitrage.
-
-Imagine a scenario where the cost of buying 1 ETH on t1 is 200 DAI (which is calculated by calling `getAmountIn` with 1 ETH specified as an exact output), and on Oasis (or any other trading venue), 1 ETH buys 220 DAI. To anyone with 200 DAI available, this situation represents a risk-free profit of 20 DAI. Unfortunately, you may not have 200 DAI lying around. With flash swaps, however, this risk-free profit is available for anyone to take as long as they're able to pay gas fees.
-
-### Withdrawing ETH from t1
-
-The first step is to _optimistically_ withdraw 1 ETH from t1 via a flash swap. This will serve as the capital that we use to execute our arbitrage. Note that in this scenario, we're assuming that:
-
-- 1 ETH is the pre-calculated profit-maximizing trade
-- The price has not changed on t1 or Oasis since our calculation
-
-It may be the case that we'd like to calculate the profit-maximizing trade on-chain at the moment of execution, which is robust to price movements. This can be somewhat complex, depending on the strategy being executed. However, one common strategy is trading as profitably as possible _against a fixed external price_. (This price may be e.g., the average execution price of one or more orders on Oasis.) If the t1 market price is far enough above or below this external price, the following example contains code that calculates the amount to trade over t1 for maximum profit: [`ExampleSwapToPrice.sol`](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/examples/ExampleSwapToPrice.sol).
-
-### Trade at External Venue
-
-Once we've obtained our temporary capital of 1 ETH from t1, we now can trade this for 220 DAI on Oasis. Once we've received the DAI, we need to pay t1 back. We've mentioned that the amount required to cover 1 ETH is 200 DAI, calculated via `getAmountIn`. So, after sending 200 of the DAI back to the t1 pair, you're left with 20 DAI of profit!
-
-## Instant Leverage
-
-Flash swaps can be used to improve the efficiency of levering up using lending protocols and t1.
-
-Consider Maker in its simplest form: a system which accepts ETH as collateral and allows DAI to be minted against it while ensuring that the value of the ETH never drops below 150% of the value of the DAI.
-
-Say we use this system to deposit a principal amount of 3 ETH, and mint the maximum amount of DAI. At a price of 1 ETH / 200 DAI, we receive 400 DAI. In theory, we could lever this position up by selling the DAI for more ETH, depositing this ETH, minting the maximum amount of DAI (which would be less this time), and repeating until we've reached our desired leverage level.
-
-It's quite simple to use t1 as a liquidity source for the DAI-to-ETH component of this process. However, looping through protocols in this way isn't particularly elegant, and can be gas-intensive.
-
-Luckily, flash swaps enable us to withdraw the _full_ ETH amount upfront. If we wanted 2x leverage against our 3 ETH principal, we could simply request 3 ETH in a flash swap and deposit 6 ETH into Maker. This gives us the ability to mint 800 DAI. If we mint as much as we need to cover our flash swap (say 605), the remainder serves as a safety margin against price movements.
-
-# Developer resources
-
-- To see how to integrate a flash swap in your smart contract read [Using Flash Swaps](../../guides/smart-contract-integration/using-flash-swaps).
diff --git a/docs/contracts/v2/concepts/02-core-concepts/04-oracles.md b/docs/contracts/v2/concepts/02-core-concepts/04-oracles.md
deleted file mode 100644
index c300b77b8..000000000
--- a/docs/contracts/v2/concepts/02-core-concepts/04-oracles.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: oracles
-title: Oracles
----
-
-# Introduction
-
-A price oracle is any tool used to view price information about a given asset. When you look at stock prices on your phone, you are using your phone as a price oracle. Similarly, the app on your phone relies on devices to retrieve price information - likely several, which are aggregated and then displayed to you, the end-user. These are price oracles as well.
-
-When building smart contracts that integrate with DeFi protocols, developers will inevitably run into the price oracle problem. What is the best way to retrieve the price of a given asset on-chain?
-
-Many oracle designs on Ethereum have been implemented on an ad-hoc basis, with varying degrees of decentralization and security. Because of this, the ecosystem has witnessed numerous high-profile hacks where the oracle implementation is the primary attack vector.
-Some of these vulnerabilities are discussed [here](https://samczsun.com/taking-undercollateralized-loans-for-fun-and-for-profit/).
-
-While there is no one size fits all solution, t1 V2 enables developers to build highly decentralized and manipulation-resistant on-chain price oracles, which may solve many of the demands necessary for building robust protocols.
-
-# t1 V2 solution
-
-Uniswap V2 includes several improvements for supporting manipulation-resistant public price feeds. First, every pair measures (but does not store) the market price at the beginning of each block, before any trades take place. This price is expensive to manipulate because it is set by the last transaction, whether it is a mint, swap, or burn, in a previous block.
-
-**To set the measured price to one that is out of sync with the global market price, an attacker has to make a bad trade at the end of a previous block** , typically with no guarantee that they will arbitrage it back in the next block. Attackers will lose money to arbitrageurs unless they can “selfishly” mine two blocks in a row. This type of attack presents several challenges and [has not been observed to date](https://arxiv.org/abs/1912.01798).
-
-Unfortunately, this alone is not enough. If significant value settles based on the price resulting from this mechanism, an attack’s profit will likely outweigh the loss.
-
-Instead, t1 V2 adds this end-of-block price to a single cumulative-price variable in the core contract weighted by the amount of time this price existed. **This variable represents a sum of the t1 price for every second in the entire history of the contract.**
-
-
-
-This variable can be used by external contracts to track accurate time-weighted average prices (TWAPs) across any time interval.
-
-The TWAP is constructed by reading the cumulative price from an ERC20 token pair at the beginning and at the end of the desired interval. The difference in this cumulative price can then be divided by the length of the interval to create a TWAP for that period.
-
-
-
-TWAPs can be used directly or as the basis for moving averages (EMAs and SMAs) as needed.
-
-A few notes:
-
-- For a 10-minute TWAP, sample once every 10 minutes. For a 1-week TWAP, sample once every week.
-- For a simple TWAP, the cost of manipulation increases (approx. linear) with liquidity on t1, as well as (approx. linear) with the length of time over which you average.
-- The Cost of an attack is relatively simple to estimate. Moving the price 5% on a 1-hour TWAP is approximately equal to the amount lost to arbitrage and fees for moving the price 5% every block for 1 hour.
-
-There are some nuances that are good to be aware of when using t1 V2 as an oracle, especially where manipulation resistance is concerned. The whitepaper elaborates on some of them. Additional oracle-focused developer guides and documentation will be released soon.
-
-In the meantime, check out our [example implementation](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/examples/ExampleOracleSimple.sol) of a 24 hr TWAP Oracle built on t1 V2!
-
-## Manipulation resistance
-
-The cost of manipulating the price for a specific time period can be roughly estimated as the amount lost to arbitrage and fees every block for the entire period. For larger liquidity pools and over longer time periods, this attack is impractical, as the cost of manipulation typically exceeds the value at stake.
-
-Other factors, such as network congestion, can reduce the cost of attack. For a more in-depth review of the security of t1 V2 price oracles, read the [security audit section on Oracle Integrity](https://uniswap.org/audit.html#org87c8b91).
-
-# Building an oracle
-
-To learn more about building oracles check out [building an Oracle](../../guides/smart-contract-integration/building-an-oracle) in the developer guides.
diff --git a/docs/contracts/v2/concepts/02-core-concepts/_category_.json b/docs/contracts/v2/concepts/02-core-concepts/_category_.json
deleted file mode 100644
index 3a49cbeeb..000000000
--- a/docs/contracts/v2/concepts/02-core-concepts/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Core Concepts",
- "position": 2
-}
diff --git a/docs/contracts/v2/concepts/02-core-concepts/images/anatomy.jpg b/docs/contracts/v2/concepts/02-core-concepts/images/anatomy.jpg
deleted file mode 100644
index 1d8f6fe0e..000000000
Binary files a/docs/contracts/v2/concepts/02-core-concepts/images/anatomy.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/02-core-concepts/images/how-works.jpg b/docs/contracts/v2/concepts/02-core-concepts/images/how-works.jpg
deleted file mode 100644
index 0737e0e4c..000000000
Binary files a/docs/contracts/v2/concepts/02-core-concepts/images/how-works.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/02-core-concepts/images/lp.jpg b/docs/contracts/v2/concepts/02-core-concepts/images/lp.jpg
deleted file mode 100644
index 8d2da33cb..000000000
Binary files a/docs/contracts/v2/concepts/02-core-concepts/images/lp.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/02-core-concepts/images/pool.jpg b/docs/contracts/v2/concepts/02-core-concepts/images/pool.jpg
deleted file mode 100644
index 1813af2ef..000000000
Binary files a/docs/contracts/v2/concepts/02-core-concepts/images/pool.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/02-core-concepts/images/trade.jpg b/docs/contracts/v2/concepts/02-core-concepts/images/trade.jpg
deleted file mode 100644
index 356a6ada5..000000000
Binary files a/docs/contracts/v2/concepts/02-core-concepts/images/trade.jpg and /dev/null differ
diff --git a/docs/contracts/v2/concepts/02-core-concepts/images/v2_onchain_price_data.png b/docs/contracts/v2/concepts/02-core-concepts/images/v2_onchain_price_data.png
deleted file mode 100644
index efdc253d5..000000000
Binary files a/docs/contracts/v2/concepts/02-core-concepts/images/v2_onchain_price_data.png and /dev/null differ
diff --git a/docs/contracts/v2/concepts/02-core-concepts/images/v2_twap.png b/docs/contracts/v2/concepts/02-core-concepts/images/v2_twap.png
deleted file mode 100644
index 8d3a06fb9..000000000
Binary files a/docs/contracts/v2/concepts/02-core-concepts/images/v2_twap.png and /dev/null differ
diff --git a/docs/contracts/v2/concepts/03-advanced-topics/01-fees.md b/docs/contracts/v2/concepts/03-advanced-topics/01-fees.md
deleted file mode 100644
index fff21efdd..000000000
--- a/docs/contracts/v2/concepts/03-advanced-topics/01-fees.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-id: fees
-title: Fees
----
-
-## Liquidity provider fees
-
-There is a **0.3%** fee for swapping tokens. **This fee is split by liquidity providers proportional to their contribution to liquidity reserves.**
-
-Swapping fees are immediately deposited into liquidity reserves. This increases the value of liquidity tokens, functioning as a payout to all liquidity providers proportional to their share of the pool. Fees are collected by burning liquidity tokens to remove a proportional share of the underlying reserves.
-
-Since fees are added to liquidity pools, the invariant increases at the end of every trade. Within a single transaction, the invariant represents `token0_pool / token1_pool` at the end of the previous transaction.
-
-There are many community-developed tools to determine returns. You can also read more in the docs about how to think about [LP returns](../advanced-topics/understanding-returns).
-
-## Protocol Fees
-
-At the moment there are no protocol fees. However, it is possible for a 0.05% fee to be turned on in the future.
-
-More information about a potential future protocol fee can be found [here](https://uniswap.org/blog/uniswap-v2/#path-to-sustainability).
-
-## Protocol Charge Calculation
-
-In the future, it is possible that a protocol-wide charge of 0.05% per trade will take effect. This represents ⅙th (16.6̅%) of the 0.30% fee. The fee is in effect if [feeTo](../../reference/smart-contracts/factory/#feeto) is not `address(0)` (`0x0000000000000000000000000000000000000000`), indicating that feeTo is the recipient of the charge.
-
-This amount would not affect the fee paid by traders, but would affect the amount received by liquidity providers.
-
-Rather than calculating this charge on swaps, which would significantly increase gas costs for all users, the charge is instead calculated when liquidity is added or removed. See the whitepaper for more details.
diff --git a/docs/contracts/v2/concepts/03-advanced-topics/02-pricing.md b/docs/contracts/v2/concepts/03-advanced-topics/02-pricing.md
deleted file mode 100644
index 8c8800be5..000000000
--- a/docs/contracts/v2/concepts/03-advanced-topics/02-pricing.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-id: pricing
-title: Pricing
----
-
-# How are prices determined?
-
-As we learned in [Protocol Overview](../protocol-overview/how-uniswap-works), each pair on t1 is actually underpinned by a liquidity pool. Liquidity pools are smart contracts that hold balances of two unique tokens and enforces rules around depositing and withdrawing them. The primary rule is the [constant product formula](../protocol-overview/glossary#constant-product-formula). When a token is withdrawn (bought), a proportional amount must be deposited (sold) to maintain the constant. The ratio of tokens in the pool, in combination with the constant product formula, ultimately determine the price that a swap executes at.
-
-# How t1 handles prices
-
-In t1 V1, trades are always executed at the "best possible" price, calculated at execution time. Somewhat confusingly, this calculation is actually accomplished with one of two different formulas, depending on whether the trade specifies an exact _input_ or _output_ amount. Functionally, the difference between these two functions is miniscule, but the very existence of a difference increases conceptual complexity. Initial attempts to support both functions in V2 proved inelegant, and the decision was made to **not provide any pricing functions in the core**. Instead, pairs directly check whether the invariant was satisfied (accounting for fees) after every trade. This means that rather than relying on a pricing function to _also_ enforce the invariant, V2 pairs simply and transparently ensure their own safety, a nice separation of concerns. One downstream benefit is that V2 pairs will more naturally support other flavors of trades which may emerge, (e.g. trading to a specific price at execution time).
-
-At a high level, in t1 V2, _trades must be priced in the periphery_. The good news is that the [library](../../reference/smart-contracts/library)
-provides a variety of functions designed to make this quite simple, and all swapping functions in the [router](../../reference/smart-contracts/router-02) are designed with this in mind.
-
-# Pricing Trades
-
-When swapping tokens on t1, it's common to want to receive as many output tokens as possible for an _exact input amount_, or to pay as few input tokens as possible for an _exact output amount_. In order to calculate these amounts, a contract must look up the _current reserves_ of a pair, in order to understand what the current price is. However, it is _not safe to perform this lookup and rely on the results without access to an external price_.
-
-Say a smart contract naively wants to send 10 DAI to the DAI/WETH pair and receive as much WETH as it can get, given the current reserve ratio. If, when called, the naive smart contract simply looks up the current price and executes the trade, it is _vulnerable to front-running and will likely suffer an economic loss_. To see why, consider a malicious actor who sees this transaction before it is confirmed. They could execute a swap which dramatically changes the DAI/WETH price immediately before the naive swap goes through, wait for the naive swap to execute at a bad rate, and then swap to change the price back to what it was before the naive swap. This attack is fairly cheap and low-risk, and can typically be performed for a profit.
-
-To prevent these types of attacks, it's vital to submit swaps _that have access to knowledge about the "fair" price their swap should execute at_. In other words, swaps need access to an _oracle_, to be sure that the best execution they can get from t1 is close enough to what the oracle considers the "true" price. While this may sound complicated, the oracle can be as simple as an _off-chain observation of the current market price of a pair_. Because of arbitrage, it's typically the case that the ratio of the intra-block reserves of a pair is close to the "true" market price. So, if a user submits a trade with this knowledge in mind, they can ensure that the losses due to front-running are tightly bounded. This is how, for example, the t1 frontend ensure trade safety. It calculates the optimal input/output amounts given observed intra-block prices, and uses the router to perform the swap, which guarantees the swap will execute at a rate no less that `x`% worse than the observed intra-block rate, where `x` is a user-specified slippage tolerance (0.5% by default).
-
-There are, of course, other options for oracles, including [native V2 oracles](../core-concepts/oracles).
-
-## Exact Input
-
-If you'd like to send an exact amount of input tokens in exchange for as many output tokens as possible, you'll want to use [getAmountsOut](../../reference/smart-contracts/router-02#getamountout). The equivalent SDK function is [getOutputAmount](../../../../sdk/2.0.0/reference/pair#getoutputamount), or [minimumAmountOut](../../../../sdk/2.0.0/reference/trade#minimumamountout-since-204) for slippage calculations.
-
-## Exact Output
-
-If you'd like to receive an exact amount of output tokens for as few input tokens as possible, you'll want to use [getAmountsIn](../../reference/smart-contracts/router-02#getamountsin). The equivalent SDK function is [getInputAmount](../../../../sdk/2.0.0/reference/pair#getinputamount), or [maximumAmountIn](../../../../sdk/2.0.0/reference/trade#maximumamountin-since-204) for slippage calculations.
-
-## Swap to Price
-
-For this more advanced use case, see [ExampleSwapToPrice.sol](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/examples/ExampleSwapToPrice.sol).
diff --git a/docs/contracts/v2/concepts/03-advanced-topics/03-understanding-returns.md b/docs/contracts/v2/concepts/03-advanced-topics/03-understanding-returns.md
deleted file mode 100644
index 283613c2c..000000000
--- a/docs/contracts/v2/concepts/03-advanced-topics/03-understanding-returns.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-id: understanding-returns
-title: Understanding Returns
----
-
-Uniswap incentivizes users to add liquidity to trading pools by rewarding providers with the fees generated when other users trade with those pools. Market making, in general, is a complex activity. There is a risk of losing money during large and sustained movement in the underlying asset price compared to simply holding an asset.
-
-# Risks
-
-To understand the risks associated with providing liquidity you can read [https://medium.com/@pintail/uniswap-a-good-deal-for-liquidity-providers-104c0b6816f2](https://medium.com/@pintail/uniswap-a-good-deal-for-liquidity-providers-104c0b6816f2) to get an in-depth look at how to conceptualize a liquidity position.
-
-# Example from the article
-
-
-
-Consider the case where a liquidity provider adds 10,000 DAI and 100 WETH to a pool (for a total value of $20,000), the liquidity pool is now 100,000 DAI and 1,000 ETH in total. Because the amount supplied is equal to 10% of the total liquidity, the contract mints and sends the market maker “liquidity tokens” which entitle them to 10% of the liquidity available in the pool. These are not speculative tokens to be traded. They are merely an accounting or bookkeeping tool to keep track of how much the liquidity providers are owed. If others subsequently add/withdraw coins, new liquidity tokens are minted/burned such that everyone’s relative percentage share of the liquidity pool remains the same.
-
-**Now let’s assume the price trades on Coinbase from $100 to $150. The t1 contract should reflect this change as well after some arbitrage. Traders will add DAI and remove ETH until the new ratio is now 150:1.**
-
-What happens to the liquidity provider? The contract reflects something closer to 122,400 DAI and 817 ETH (to check these numbers are accurate, 122,400 \* 817 = 100,000,000 (our constant product) and 122,400 / 817 = 150, our new price). Withdrawing the 10% that we are entitled to would now yield 12,240 DAI and 81.7 ETH. The total market value here is $24,500. Roughly $500 worth of profit was missed out on as a result of the market making.
-
-**Obviously no one wants to provide liquidity out of charitable means, and the revenue isn’t dependent on the ability to flip out of good trades (there is no flipping). Instead, 0.3% of all trade volume is distributed proportionally to all liquidity providers. By default, these fees are put back into the liquidity pool, but can be collected any time. It’s difficult to know what the trade-off is between revenues from fees and losses from directional movements without knowing the amount of in-between trades. The more chop and back and forth, the better.**
-
-## Why is my liquidity worth less than I put in?
-
-To understand why the value of a liquidity provider’s stake can go down despite income from fees, we need to look a bit more closely at the formula used by t1 to govern trading. The formula really is very simple. If we neglect trading fees, we have the following:
-
-- `eth_liquidity_pool * token_liquidity_pool = constant_product`
-
-In other words, the number of tokens a trader receives for their ETH and vice versa is calculated such that after the trade, the product of the two liquidity pools is the same as it was before the trade. The consequence of this formula is that for trades which are very small in value compared to the size of the liquidity pool we have:
-
-- `eth_price = token_liquidity_pool / eth_liquidity_pool`
-
-Combining these two equations, we can work out the size of each liquidity pool at any given price, assuming constant total liquidity:
-
-- `eth_liquidity_pool = sqrt(constant_product / eth_price)`
-- `token_liquidity_pool = sqrt(constant_product * eth_price)`
-
-So let’s look at the impact of a price change on a liquidity provider. To keep things simple, let’s imagine our liquidity provider supplies 1 ETH and 100 DAI to the t1 DAI exchange, giving them 1% of a liquidity pool which contains 100 ETH and 10,000 DAI. This implies a price of 1 ETH = 100 DAI. Still neglecting fees, let’s imagine that after some trading, the price has changed; 1 ETH is now worth 120 DAI. What is the new value of the liquidity provider’s stake? Plugging the numbers into the formulae above, we have:
-
-- `eth_liquidity_pool = 91.2871`
-- `dai_liquidity_pool = 10954.4511`
-
-"Since our liquidity provider has 1% of the liquidity tokens, this means they can now claim 0.9129 ETH and 109.54 DAI from the liquidity pool. But since DAI is approximately equivalent to USD, we might prefer to convert the entire amount into DAI to understand the overall impact of the price change. At the current price then, our liquidity is worth a total of 219.09 DAI. What if the liquidity provider had just held onto their original 1 ETH and 100 DAI? Well, now we can easily see that, at the new price, the total value would be 220 DAI. So our liquidity provider lost out by 0.91 DAI by providing liquidity to t1 instead of just holding onto their initial ETH and DAI."
-
-"Of course, if the price were to return to the same value as when the liquidity provider added their liquidity, this loss would disappear. **For this reason, we can call it an **impermanent loss**.** Using the equations above, we can derive a formula for the size of the impermanent loss in terms of the price ratio between when liquidity was supplied and now. We get the following:"
-
-- "`impermanent_loss = 2 * sqrt(price_ratio) / (1+price_ratio) — 1`"
-
-- "Which we can plot out to get a general sense of the scale of the impermanent loss at different price ratios:"
- 
-
-- "Or to put it another way:"
-
- - "a 1.25x price change results in a 0.6% loss relative to HODL"
- - "a 1.50x price change results in a 2.0% loss relative to HODL"
- - "a 1.75x price change results in a 3.8% loss relative to HODL"
- - "a 2x price change results in a 5.7% loss relative to HODL"
- - "a 3x price change results in a 13.4% loss relative to HODL"
- - "a 4x price change results in a 20.0% loss relative to HODL"
- - "a 5x price change results in a 25.5% loss relative to HODL"
-
-- "N.B. The loss is the same whichever direction the price change occurs in (i.e. a doubling in price results in the same loss as a halving)." -->
-
-
diff --git a/docs/contracts/v2/concepts/03-advanced-topics/04-security.md b/docs/contracts/v2/concepts/03-advanced-topics/04-security.md
deleted file mode 100644
index ebf9753ac..000000000
--- a/docs/contracts/v2/concepts/03-advanced-topics/04-security.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-id: security
-title: Security
----
-
-# Audit & Formal Verification
-
-Between January 8 and April 30, a team of six engineers reviewed and formally verified crucial components of the smart contracts for t1 V2.
-
-Their past work includes smart contract development on and formal verification of multi-collateral DAI.
-
-The scope of work includes:
-
-- Formal verification of the core smart contracts
-- Code review of core smart contracts
-- Numerical error analysis
-- Code review of periphery smart contracts (during ongoing development)
-
-The report also has a "Design Comments" section that we highly recommend for gaining a deep technical understanding of some of the choices made in t1 V2.
-
-> [Read the report](https://uniswap.org/audit.html)
-
-# Bug Bounty
-
-Uniswap has an open and ongoing bug [bounty program](https://uniswap.org/bug-bounty/).
-
-# Considerations when building on t1
-
-When integrating t1 V2 into another on-chain system, particular care must be taken to avoid security vulnerabilities, avenues for manipulations, and the potential loss of funds.
-
-As a preliminary note: smart contract integrations can happen at two levels: directly with [Pair](../../reference/smart-contracts/pair) contracts, or through the [Router](../../reference/smart-contracts/router-02). Direct interactions offer maximal flexibility but require the most work to get right. Mediated interactions offer more limited capabilities but stronger safety guarantees.
-
-There are two primary categories of risk associated with t1 V2. The first involves so-called "static" errors. These can include sending too many tokens to a pair during a swap (or requesting too few tokens back) or allowing transactions to linger in the mempool long enough for the sender's expectations about prices to no longer be accurate.
-
-One may address these errors with fairly straightforward logic checks. Executing these logic checks is the primary purpose of routers. Those who interact directly with pairs must perform these checks themselves (with the help of the [Library](../../reference/smart-contracts/library)).
-
-"Dynamic" risk, the second category, involves runtime pricing. Because Ethereum transactions occur in an adversarial environment, naively written smart contracts can, and will, be exploited for profit. For example, suppose a smart contract checks the asset ratio in a t1 pool at runtime and trades against it, assuming that the ratio represents the "fair" or "market" price of these assets. In that case, it is highly vulnerable to manipulation. A malicious actor could, e.g., trivially insert transactions before and after the naive transaction (a so-called "sandwich" attack), causing the smart contract to trade at a radically worse price, profit from this at the trader's expense, and then return the contracts to their original state, all at a low cost. (One important caveat is that these types of attacks are mitigated by trading in highly liquid pools, or at low values.)
-
-The best way to protect against these attacks is to introduce a price oracle. An oracle is any device that returns desired information, in this case, a pair's spot price. The best "oracle" is simply a traders' off-chain observation of the prevailing price, which can be passed into the trade as a safety check. This strategy is best suited to retail trading venues where users initiate transactions on their own behalf. However, it is often the case that a trusted price observation is not available (e.g., in multi-step, programmatic interactions involving t1). Without a price oracle, these interactions will be forced to trade at whatever the (potentially manipulated) rate on t1 is. For details on the t1 V2 approach to oracles, see [Oracles](../core-concepts/oracles).
diff --git a/docs/contracts/v2/concepts/03-advanced-topics/05-math.md b/docs/contracts/v2/concepts/03-advanced-topics/05-math.md
deleted file mode 100644
index b3718d868..000000000
--- a/docs/contracts/v2/concepts/03-advanced-topics/05-math.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-id: math
-title: Math
----
-
-This section will be expanded in the future. In the mean time, the [Uniswap V2 whitepaper](https://uniswap.org/whitepaper.pdf) has most relevant math for t1 V2.
diff --git a/docs/contracts/v2/concepts/03-advanced-topics/06-research.md b/docs/contracts/v2/concepts/03-advanced-topics/06-research.md
deleted file mode 100644
index 0a1ecba8e..000000000
--- a/docs/contracts/v2/concepts/03-advanced-topics/06-research.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-id: research
-title: Research
----
-
-# The Rollup Fragmentation Problem
-
-Authors: Can Kisagun, CEO & Co-Founder of t1
-
-> Rollups, which execute transactions outside of Ethereum (off-chain) and post integrity (execution) proofs and transaction data to Layer 1 for verification, have scaled Ethereum in a secure and performant way, enabling significant reduction in transaction fees and improvements in user experience. However, while improving scalability, rollups also introduced siloed execution that led to liquidity fragmentation and broke composability in Ethereum. In this article, we talk about the rollup fragmentation problem, its implications for users and developers, and we explore how emerging technologies can restore composability. Ethereum ultimately needs to provide a unified and composable ecosystem where users can interact with different applications seamlessly, across rollups. To get there, the focus must be on shared sequencing and real-time proof generation.
-
-- [The Rollup Fragmentation Problem](https://t1protocol.substack.com/p/the-rollup-fragmentation-problem)
diff --git a/docs/contracts/v2/concepts/03-advanced-topics/_category_.json b/docs/contracts/v2/concepts/03-advanced-topics/_category_.json
deleted file mode 100644
index 321360c5f..000000000
--- a/docs/contracts/v2/concepts/03-advanced-topics/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Advanced Topics",
- "position": 3
-}
diff --git a/docs/contracts/v2/concepts/_category_.json b/docs/contracts/v2/concepts/_category_.json
deleted file mode 100644
index 74b831d11..000000000
--- a/docs/contracts/v2/concepts/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Concepts",
- "position": 2,
- "collapsed": false
-}
diff --git a/docs/contracts/v2/guides/_category_.json b/docs/contracts/v2/guides/_category_.json
deleted file mode 100644
index 680904649..000000000
--- a/docs/contracts/v2/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 3,
- "collapsed": false
-}
diff --git a/docs/contracts/v2/guides/interface-integration/01-using-the-api.md b/docs/contracts/v2/guides/interface-integration/01-using-the-api.md
deleted file mode 100644
index 2be74f7c2..000000000
--- a/docs/contracts/v2/guides/interface-integration/01-using-the-api.md
+++ /dev/null
@@ -1,257 +0,0 @@
----
-id: using-the-api
-title: 'Using the API'
----
-
-In this guide we will create a web interface that consumes and displays data from the t1 Subgraph. The goal is to provide a quick overview of a setup that you can extend to create your own UIs and analytics around t1 data.
-
-Many different libraries can be used to create an interface and a connection to the subgraph graphql endpoint, but in this guide we will use [React](https://reactjs.org/) for the interface, and [Apollo Client](https://www.apollographql.com/docs/react/) for sending queries. We'll also be using yarn for dependency management.
-
-### Setup and Installs
-
-We'll need to create the basic skeleton for the application. We'll use [create-react-app](https://reactjs.org/docs/create-a-new-react-app.html) for this. We'll also add the dependencies we need. Navigate to your root location in your command line and run:
-
-```javascript
-yarn create react-app uniswap-demo
-cd uniswap-demo
-yarn add apollo-client apollo-cache-inmemory apollo-link-http graphql graphql-tag @apollo/react-hooks
-yarn start
-```
-
-In your browser you should see the default React app running. In a text editor open `App.js` within `src` and replace the contents with this stripped down boilerplate. We'll add to this as we go.
-
-```javascript
-import React from 'react'
-import './App.css'
-
-function App() {
- return
-}
-
-export default App
-```
-
-### Graphql Client
-
-We need to set up some middleware in order to make requests to the t1 subgraph and receive data. To do this we'll use Apollo and create a graphql client to handle this.
-
-1. Add the imports shown below and instantiate a new client instance. Notice how we use the link to the t1 subgraph here.
-
-```javascript
-import React from 'react'
-import './App.css'
-import { ApolloClient } from 'apollo-client'
-import { InMemoryCache } from 'apollo-cache-inmemory'
-import { HttpLink } from 'apollo-link-http'
-
-export const client = new ApolloClient({
- link: new HttpLink({
- uri: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2',
- }),
- cache: new InMemoryCache(),
-})
-
-function App() {
- return
-}
-
-export default App
-```
-
-2. We also need to add a context so that Apollo can handle requests properly. In your `index.js` file import the proper provider and wrap the root in it like this:
-
-```javascript
-import React from 'react'
-import ReactDOM from 'react-dom'
-import App from './App'
-import registerServiceWorker from './registerServiceWorker'
-import './index.css'
-import { ApolloProvider } from 'react-apollo'
-import { client } from './App'
-
-ReactDOM.render(
-
-
- ,
- document.getElementById('root')
-)
-registerServiceWorker()
-```
-
-### Writing the queries
-
-Next we'll construct our query and fetch data. For this example we will fetch some data about the Dai token on t1 V2. We'll get the current price, and total liquidity across all pairs. We'll be using the Dai address as an id in this query. We'll also fetch the USD price of ETH to help create USD conversion for Dai data.
-
-1. First we need to define the query itself. We'll use `gql` to parse a query string into the GraphQL AST standard. Import the `gql` helper into the app and use it to create the query. Add the following to your `App.js` file:
-
-```javascript
-import gql from 'graphql-tag'
-
-const DAI_QUERY = gql`
- query tokens($tokenAddress: Bytes!) {
- tokens(where: { id: $tokenAddress }) {
- derivedETH
- totalLiquidity
- }
- }
-`
-
-const ETH_PRICE_QUERY = gql`
- query ethPrice {
- bundle(id: "1") {
- ethPrice
- }
- }
-`
-```
-
-We use an id of `1` for the bundle because there is only one hardcoded bundle in the subgraph.
-
-### Fetch data
-
-Now we're ready to use these queries to fetch data from the t1 V2 subgraph. To do this we can use the `useQuery` hook which uses our client instance to fetch data, and gives us live info about the status of the request. To do this add the following to your `App.js` file:
-
-```javascript
-import { useQuery } from '@apollo/react-hooks'
-
-const { loading, error, data: ethPriceData } = useQuery(ETH_PRICE_QUERY)
-const {
- loading: daiLoading,
- error: daiError,
- data: daiData,
-} = useQuery(DAI_QUERY, {
- variables: {
- tokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
- },
-})
-```
-
-Notice we're using the Dai token address to fetch data about Dai.
-
-### Formatting Response
-
-Now that we have our data we can format it and display it in the UI. First, we parse the return data to get the actual data that we want. Then we'll use it to get the USD price of Dai. Lastly we'll insert this data into the UI itself.
-
-These queries will return a response object for each query. Within each one we're interested in the root field we defined in the query definition. For the `daiData` response we defined this as `tokens`, and for the `ethPriceData` query we defined this as `ethPrice`. Within each one we'll get an array of results. Because we're only querying for single entities we'll reference the `0` index in the data array.
-
-Add the following lines to your `App.js` file to parse the responses:
-
-```javascript
-const daiPriceInEth = daiData && daiData.tokens[0].derivedETH
-const daiTotalLiquidity = daiData && daiData.tokens[0].totalLiquidity
-const ethPriceInUSD = ethPriceData && ethPriceData.bundles[0].ethPrice
-```
-
-### Displaying in the UI
-
-Finally we can use our parsed response data to hydrate the UI. We'll do this in two steps.
-
-1. First we'll create loading states. To detect if a query is still pending a response we can reference the loading variables we've already defined. We'll add two loading states, one for the Dai price, and one for the Dai total liquidity. These may flicker fast because the time to query is fast.
-
-2. Populate with loaded data. Once we detect that the queries have finished loading we can populate the UI with the real data.
-
-To do this add the following lines in the return function of your `App.js` file:
-
-```javascript
-return (
-
-
- Dai price:{' '}
- {ethLoading || daiLoading
- ? 'Loading token data...'
- : '$' +
- // parse responses as floats and fix to 2 decimals
- (parseFloat(daiPriceInEth) * parseFloat(ethPriceInUSD)).toFixed(2)}
-
-
- Dai total liquidity:{' '}
- {daiLoading
- ? 'Loading token data...'
- : // display the total amount of DAI spread across all pools
- parseFloat(daiTotalLiquidity).toFixed(0)}
-
-
-)
-```
-
-### Next steps
-
-This should render a very basic page with these two stats about the Dai token within t1. This is a very basic example of what you can do with the t1 subgraph and we encourage you to build out more complex and interesting tools!
-
-You can visit our [analytics site](https://uniswap.info/) to see a more advanced analytics page, or visit [the github](https://github.com/Uniswap/uniswap-info) for more detailed examples of using the t1 subgraph to create UIs.
-
-### Review
-
-In the end your `App.js` file should look like this:
-
-```javascript
-import React, { useEffect } from 'react'
-import './App.css'
-import { ApolloClient } from 'apollo-client'
-import { InMemoryCache } from 'apollo-cache-inmemory'
-import { HttpLink } from 'apollo-link-http'
-import { useQuery } from '@apollo/react-hooks'
-import gql from 'graphql-tag'
-
-export const client = new ApolloClient({
- link: new HttpLink({
- uri: 'https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2',
- }),
- fetchOptions: {
- mode: 'no-cors',
- },
- cache: new InMemoryCache(),
-})
-
-const DAI_QUERY = gql`
- query tokens($tokenAddress: Bytes!) {
- tokens(where: { id: $tokenAddress }) {
- derivedETH
- totalLiquidity
- }
- }
-`
-
-const ETH_PRICE_QUERY = gql`
- query bundles {
- bundles(where: { id: "1" }) {
- ethPrice
- }
- }
-`
-
-function App() {
- const { loading: ethLoading, data: ethPriceData } = useQuery(ETH_PRICE_QUERY)
- const { loading: daiLoading, data: daiData } = useQuery(DAI_QUERY, {
- variables: {
- tokenAddress: '0x6b175474e89094c44da98b954eedeac495271d0f',
- },
- })
-
- const daiPriceInEth = daiData && daiData.tokens[0].derivedETH
- const daiTotalLiquidity = daiData && daiData.tokens[0].totalLiquidity
- const ethPriceInUSD = ethPriceData && ethPriceData.bundles[0].ethPrice
-
- return (
-
-
- Dai price:{' '}
- {ethLoading || daiLoading
- ? 'Loading token data...'
- : '$' +
- // parse responses as floats and fix to 2 decimals
- (parseFloat(daiPriceInEth) * parseFloat(ethPriceInUSD)).toFixed(2)}
-
-
- Dai total liquidity:{' '}
- {daiLoading
- ? 'Loading token data...'
- : // display the total amount of DAI spread across all pools
- parseFloat(daiTotalLiquidity).toFixed(0)}
-
-
- )
-}
-
-export default App
-```
diff --git a/docs/contracts/v2/guides/interface-integration/02-custom-interface-linking.md b/docs/contracts/v2/guides/interface-integration/02-custom-interface-linking.md
deleted file mode 100644
index 965fb28a3..000000000
--- a/docs/contracts/v2/guides/interface-integration/02-custom-interface-linking.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-id: custom-interface-linking
-title: Custom Linking
----
-
-# Query Parameters
-
-The t1 front-end supports URL query parameters to allow for custom linking to the t1 frontend. Users and developers can use these query parameters to link to the t1 frontend with custom prefilled settings.
-
-Each Page has specific available URL parameters that can be set. Global parameters can be used on all pages.
-
-A parameter used on an incorrect page will have no effect on frontend settings. Parameters not set with a URL parameter will be set to standard frontend defaults.
-
-## Global
-
-| Parameter | Type | Description |
-| :-------- | :------- | :------------------------------- |
-| theme | `String` | Sets them to dark or light mode. |
-
-### Theme Options
-
-Theme can be set as `light` or `dark`.
-
-### Example Usage
-
-`https://app.uniswap.org/#/swap?theme=dark`
-
-## Swap Page
-
-| Parameter | Type | Description |
-| :------------- | :--------------- | :--------------------------------------------------------------------- |
-| inputCurrency | `address` | Input currency that will be swapped for output currency. |
-| outputCurrency | `address or ETH` | Output currency that input currency will be swapped for. |
-| exactAmount | `number` | The custom token amount to buy or sell. |
-| exactField | `string` | The field to set custom token amount for. Must be `input` or `output`. |
-
-### Defaults
-
-ETH defaults as the input currency. When a different token is selected for either input or output ETH will default as the opposite selected currency.
-
-### Constraints
-
-Addresses must be valid ERC20 addresses. Slippage and amount values must be valid numbers accepted by the frontend \(or error will prevent from swapping\). Slippage can 0, or within the range 10->9999 bips \(which converts to 0%, 0.01%->99%\)
-
-When selecting ETH as the output currency a user must also choose an inputCurrency that is not ETH \(to prevent ETH being populated in both fields\)
-
-### Setting Amounts
-
-Two parameters, exactField and exactAmount can be used to set specific token amounts to be sold or bought. Both fields must be set in the URL or there will be no effect on the settings.
-
-### Example Usage
-
-`https://app.uniswap.org/#/swap?exactField=input&exactAmount=10&inputCurrency=0x0F5D2fB29fb7d3CFeE444a200298f468908cC942`
-
-## Pool Page
-
-The Pool page is made up of 2 subroutes: `add`, `remove`.
-
-### Add Liquidity
-
-| Parameter | Type | Description |
-| :-------- | :-------- | :----------------------------------------------------------------------------------- |
-| Token0 | `address` | Pool to withdraw liquidity from. \(Must be an ERC20 address with an existing token\) |
-| Token1 | `address` | Pool to withdraw liquidity from. \(Must be an ERC20 address with an existing token\) |
-
-### Example Usage
-
-`https://app.uniswap.org/#/add/v2/0x6B175474E89094C44Da98b954EedeAC495271d0F/0xdAC17F958D2ee523a2206206994597C13D831ec7`
-
-## Remove Liquidity
-
-| Parameter | Type | Description |
-| :-------- | :-------- | :----------------------------------------------------------------------------------- |
-| Token0 | `address` | Pool to withdraw liquidity from. \(Must be an ERC20 address with an existing token\) |
-| Token1 | `address` | Pool to withdraw liquidity from. \(Must be an ERC20 address with an existing token\) |
-
-### Example Usage
-
-`https://app.uniswap.org/#/remove/0x6B175474E89094C44Da98b954EedeAC495271d0F-0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2`
diff --git a/docs/contracts/v2/guides/interface-integration/03-iframe-integration.mdx b/docs/contracts/v2/guides/interface-integration/03-iframe-integration.mdx
deleted file mode 100644
index 40d6f9f9b..000000000
--- a/docs/contracts/v2/guides/interface-integration/03-iframe-integration.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
----
-id: iframe-integration
-title: Iframe Integration
----
-
-:::note Swap Widget
-These docs are deprecated. Please refer to [Swap Widget](../../../swap-widget/guides/getting-started) to embed the Uniswap swap widget as a React component in your website in 2 minutes.
-:::
-
-Uniswap can be used within other sites as an iframe. An iframe shows an exact version of the Uniswap frontend site and can have custom prefilled settings.
-
-# Why You May Want This
-
-Integrating the Uniswap site directly into your web application can be useful for a variety of reasons.
-
-The interface allows users to buy, sell, send, or provide liquidity for ERC20 tokens. An iframe integration may be useful if your application provides services around these ERC20 tokens. \(For example, users can buy DAI through a Uniswap iframe on your site, then allow users to lend that DAI on your site\).
-
-It can also be useful if your application requires users to acquire some token in order to use some service \(For example, allow users to buy "REP" token so they can engage in prediction markets on the Augur Dapp\).
-
-# iframe vs. custom UI
-
-One benefit of an iframe integration is that the your site will automatically keep up with any improvements/additions to the site. After the initital integration is setup no further work is needed to pull in updates as the exchange site is updated over time.
-
-# Example
-
-```text
-
-```
-
-An example of an Iframe integration can be found on the FOAM site [https://map.foam.space/](https://map.foam.space/#/at/?lng=-74.0045300&lat=40.6771800&zoom=5.00)
-
-To see the iframe, click the dropdown in the top right and click `Get FOAM`.
-
-# Add To Your Site
-
-To include a Uniswap iframe within your site just add an iframe element within your website code and link to the Uniswap frontent.
-
-Linking to a ETH <-> DAI swap page would look something like this. To link to a token of your choice replace the address after `outputCurrency` with the token address of the token you want to link to.
-
-```text
-
-```
-
-You can customize the selected page, selected custom tokens and more using URL query parameters. See [Custom Linking](custom-interface-linking).
diff --git a/docs/contracts/v2/guides/interface-integration/_category_.json b/docs/contracts/v2/guides/interface-integration/_category_.json
deleted file mode 100644
index 9c5814620..000000000
--- a/docs/contracts/v2/guides/interface-integration/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Interface Integration",
- "position": 1
-}
diff --git a/docs/contracts/v2/guides/smart-contract-integration/01-quick-start.md b/docs/contracts/v2/guides/smart-contract-integration/01-quick-start.md
deleted file mode 100644
index 08fa2c653..000000000
--- a/docs/contracts/v2/guides/smart-contract-integration/01-quick-start.md
+++ /dev/null
@@ -1,205 +0,0 @@
----
-id: quick-start
-title: Smart Contract Quick start
----
-
-Developing smart contracts for Ethereum involves a bevy of off-chain tools used for producing and testing bytecode
-that runs on the [Ethereum Virtual Machine (EVM)]().
-Some tools also include workflows for deploying this bytecode to the Ethereum network and testnets.
-There are many options for these tools. This guide walks you through writing and testing a simple smart contract that
-interacts with the t1 Protocol using one specific set of tools (`truffle` + `npm` + `mocha`).
-
-## Requirements
-
-To follow this guide, you must have the following installed:
-
-- [nodejs >= v12.x & npm >= 6.x](https://nodejs.org/en/)
-
-## Bootstrapping a project
-
-You can start from scratch, but it's easier to use a tool like `truffle` to bootstrap an empty project.
-Create an empty directory and run `npx truffle init` inside that directory to unbox the default
-[Truffle box](https://www.trufflesuite.com/boxes).
-
-```shell script
-mkdir demo
-cd demo
-npx truffle init
-```
-
-## Setting up npm
-
-In order to reference the t1 V2 contracts, you should use the npm artifacts we deploy containing the core and
-periphery smart contracts and interfaces. To add npm dependencies, we first initialize the npm package.
-We can run `npm init` in the same directory to create a `package.json` file. You can accept all the defaults and
-change it later.
-
-```shell script
-npm init
-```
-
-## Adding dependencies
-
-Now that we have an npm package, we can add our dependencies. Let's add both the
-[`@uniswap/v2-core`](https://www.npmjs.com/package/@uniswap/v2-core) and
-[`@uniswap/v2-periphery`](https://www.npmjs.com/package/@uniswap/v2-periphery) packages.
-
-```shell script
-npm i --save @uniswap/v2-core
-npm i --save @uniswap/v2-periphery
-```
-
-If you check the `node_modules/@uniswap` directory, you can now find the t1 V2 contracts.
-
-```shell script
-moody@MacBook-Pro ~/I/u/demo> ls node_modules/@uniswap/v2-core/contracts
-UniswapV2ERC20.sol t1V2Pair.sol libraries/
-UniswapV2Factory.sol interfaces/ test/
-moody@MacBook-Pro ~/I/u/demo> ls node_modules/@uniswap/v2-periphery/contracts/
-UniswapV2Migrator.sol examples/ test/
-UniswapV2Router01.sol interfaces/
-UniswapV2Router02.sol libraries/
-```
-
-These packages include both the smart contract source code and the build artifacts.
-
-## Writing our contract
-
-We can now get started writing our example contract.
-For writing Solidity, we recommend IntelliJ or VSCode with a solidity plugin, but you can use any text editor.
-Let's write a contract that returns the value of some amount of liquidity shares for a given token pair.
-First create a couple of files:
-
-```shell script
-mkdir contracts/interfaces
-touch contracts/interfaces/ILiquidityValueCalculator.sol
-touch contracts/LiquidityValueCalculator.sol
-```
-
-This will be the interface of the contract we implement. Put it in `contracts/interfaces/ILiquidityValueCalculator.sol`.
-
-```solidity
-pragma solidity ^0.6.6;
-
-interface ILiquidityValueCalculator {
- function computeLiquidityShareValue(uint liquidity, address tokenA, address tokenB) external returns (uint tokenAAmount, uint tokenBAmount);
-}
-```
-
-Now let's start with the constructor. You need to know where the `UniswapV2Factory` is deployed in order to compute the
-address of the pair and look up the total supply of liquidity shares, plus the amounts for the reserves.
-We can store this as an address passed to the constructor.
-
-The factory address is constant on mainnet and all testnets, so it may be tempting to make this value a constant in your contract,
-but since we need to unit test the contract it should be an argument. You can use solidity immutables to save on gas
-when accessing this variable.
-
-```solidity
-pragma solidity ^0.6.6;
-
-import './interfaces/ILiquidityValueCalculator.sol';
-
-contract LiquidityValueCalculator is ILiquidityValueCalculator {
- address public factory;
- constructor(address factory_) public {
- factory = factory_;
- }
-}
-```
-
-Now we need to be able to look up the total supply of liquidity for a pair, and its token balances.
-Let's put this in a separate function. To implement it, we must:
-
-1. Look up the pair address
-2. Get the reserves of the pair
-3. Get the total supply of the pair liquidity
-4. Sort the reserves in the order of tokenA, tokenB
-
-The [`UniswapV2Library`](../../reference/smart-contracts/library) has some helpful methods for this.
-
-```solidity
-pragma solidity ^0.6.6;
-
-import './interfaces/ILiquidityValueCalculator.sol';
-import '@uniswap/v2-periphery/contracts/libraries/UniswapV2Library.sol';
-import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';
-
-contract LiquidityValueCalculator is ILiquidityValueCalculator {
- function pairInfo(address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB, uint totalSupply) {
- IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, tokenA, tokenB));
- totalSupply = pair.totalSupply();
- (uint reserves0, uint reserves1,) = pair.getReserves();
- (reserveA, reserveB) = tokenA == pair.token0() ? (reserves0, reserves1) : (reserves1, reserves0);
- }
-}
-```
-
-Finally we just need to compute the share value. We will leave that as an exercise to the reader.
-
-```solidity
-pragma solidity ^0.6.6;
-
-import './interfaces/ILiquidityValueCalculator.sol';
-import '@uniswap/v2-periphery/contracts/libraries/UniswapV2Library.sol';
-import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';
-
-contract LiquidityValueCalculator is ILiquidityValueCalculator {
- address public factory;
- constructor(address factory_) public {
- factory = factory_;
- }
-
- function pairInfo(address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB, uint totalSupply) {
- IUniswapV2Pair pair = IUniswapV2Pair(UniswapV2Library.pairFor(factory, tokenA, tokenB));
- totalSupply = pair.totalSupply();
- (uint reserves0, uint reserves1,) = pair.getReserves();
- (reserveA, reserveB) = tokenA == pair.token0() ? (reserves0, reserves1) : (reserves1, reserves0);
- }
-
- function computeLiquidityShareValue(uint liquidity, address tokenA, address tokenB) external override returns (uint tokenAAmount, uint tokenBAmount) {
- revert('TODO');
- }
-}
-```
-
-## Writing tests
-
-In order to test your contract, you need to:
-
-1. Bring up a testnet
-2. Deploy the `UniswapV2Factory`
-3. Deploy at least 2 ERC20 tokens for a pair
-4. Create a pair for the factory
-5. Deploy your `LiquidityValueCalculator` contract
-6. Call `LiquidityValueCalculator#computeLiquidityShareValue`
-7. Verify the result with an assertion
-
-\#1 is handled for you automatically by the `truffle test` command.
-
-Note you should only deploy the precompiled t1 contracts in the `build` directories for unit tests.
-This is because solidity appends a metadata hash to compiled contract artifacts which includes the hash of the contract
-source code path, and compilations on other machines will not result in the exact same bytecode.
-This is problematic because in t1 V2 we use the hash of the bytecode in the v2-periphery
-[`UniswapV2Library`](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/libraries/UniswapV2Library.sol#L24),
-to compute the pair address.
-
-To get the bytecode for deploying t1V2Factory, you can import the file via:
-
-```javascript
-const t1V2FactoryBytecode = require('@uniswap/v2-core/build/UniswapV2Factory.json').bytecode
-```
-
-We recommend using a standard ERC20 from `@openzeppelin/contracts` for deploying an ERC20.
-
-You can read more about deploying contracts and writing tests using Truffle
-[here](https://www.trufflesuite.com/docs/truffle/testing/writing-tests-in-javascript).
-
-## Compiling and deploying the contract
-
-Learn more about compiling and deploying contracts using Truffle
-[here](https://www.trufflesuite.com/docs/truffle/getting-started/compiling-contracts) and
-[here](https://www.trufflesuite.com/docs/truffle/getting-started/running-migrations) respectively.
-
-## WIP
-
-This guide is a WIP. Please contribute to this guide with the edit button below!
diff --git a/docs/contracts/v2/guides/smart-contract-integration/02-trading-from-a-smart-contract.md b/docs/contracts/v2/guides/smart-contract-integration/02-trading-from-a-smart-contract.md
deleted file mode 100644
index 5fd4345bc..000000000
--- a/docs/contracts/v2/guides/smart-contract-integration/02-trading-from-a-smart-contract.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: trading-from-a-smart-contract
-title: Implement a Swap
----
-
-When trading from a smart contract, the most important thing to keep in mind is that access to an external price source is _required_. Without this, trades can be frontrun for considerable loss.
-
-_Read [safety considerations](#safety-considerations) for more._
-
-# Using the Router
-
-The easiest way to safely swap tokens is to use the [router](../../reference/smart-contracts/router-02), which provides a variety of methods to safely swap to and from different assets. You'll notice that there is a function for each permutation of swapping to/from an exact amount of ETH/tokens.
-
-First you must use an external price source to calculate the safety parameters for the function you'd like to call. This is either a minimum amount received when selling an exact input or the maximum amount you are willing to pay when a buying an exact output amount
-
-It is also important to ensure that your contract controls enough ETH/tokens to make the swap, and has granted approval to the router to withdraw this many tokens.
-
-_Check out the [Pricing](../../concepts/advanced-topics/pricing#pricing-trades) page for a more in depth discussion on getting prices._
-
-# Example
-
-Imagine you want to swap 50 DAI for as much ETH as possible from your smart contract.
-
-## transferFrom
-
-Before swapping, our smart contracts needs to be in control of 50 DAI. The easiest way to accomplish this is by calling `transferFrom` on DAI with the owner set to `msg.sender`:
-
-```solidity
-uint amountIn = 50 * 10 ** DAI.decimals();
-require(DAI.transferFrom(msg.sender, address(this), amountIn), 'transferFrom failed.');
-```
-
-## approve
-
-Now that our contract owns 50 DAI, we need to approve to the [router](../../reference/smart-contracts/router-02) to withdraw this DAI:
-
-```solidity
-require(DAI.approve(address(UniswapV2Router02), amountIn), 'approve failed.');
-```
-
-## swapExactTokensForETH
-
-Now we're ready to swap:
-
-```solidity
-// amountOutMin must be retrieved from an oracle of some kind
-address[] memory path = new address[](2);
-path[0] = address(DAI);
-path[1] = t1V2Router02.WETH();
-UniswapV2Router02.swapExactTokensForETH(amountIn, amountOutMin, path, msg.sender, block.timestamp);
-```
-
-# Safety Considerations
-
-Because Ethereum transactions occur in an adversarial environment, smart contracts that do not perform safety checks _can be exploited for profit_. If a smart contract assumes that the current price on t1 is a "fair" price without performing safety checks, _it is vulnerable to manipulation_. A bad actor could e.g. easily insert transactions before and after the swap (a "sandwich" attack) causing the smart contract to trade at a much worse price, profit from this at the trader's expense, and then return the contracts to their original state. (One important caveat is that these types of attacks are mitigated by trading in extremely liquid pools, and/or at low values.)
-
-The best way to protect against these attacks is to use an external price feed or "price oracle". The best "oracle" is simply _traders' off-chain observation of the current price_, which can be passed into the trade as a safety check. This strategy is best for situations _where users initiate trades on their own behalf_.
-
-However, when an off-chain price can't be used, an on-chain oracle should be used instead. Determining the best oracle for a given situation is not a part of this guide, but for more details on the t1 V2 approach to oracles, see [Oracles](../../concepts/core-concepts/oracles).
diff --git a/docs/contracts/v2/guides/smart-contract-integration/03-providing-liquidity.md b/docs/contracts/v2/guides/smart-contract-integration/03-providing-liquidity.md
deleted file mode 100644
index 00046d88d..000000000
--- a/docs/contracts/v2/guides/smart-contract-integration/03-providing-liquidity.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-id: providing-liquidity
-title: Providing Liquidity
----
-
-# Providing Liquidity
-
-## Introduction
-
-When providing liquidity from a smart contract, the most important thing to keep in mind is that tokens deposited into a pool at any rate other than the current reserve ratio _are vulnerable to being arbitraged_. As an example, if the ratio of x:y in a pair is 10:2 (i.e. the price is 5), and someone naively adds liquidity at 5:2 (a price of 2.5), the contract will simply accept all tokens (changing the price to 3.75 and opening up the market to arbitrage), but only issue pool tokens entitling the sender to the amount of assets sent at the proper ratio, in this case 5:1. To avoid donating to arbitrageurs, it is imperative to add liquidity at the current price. Luckily, it's easy to ensure that this condition is met!
-
-## Using the Router
-
-The easiest way to safely add liquidity to a pool is to use the [router](../../reference/smart-contracts/router-02), which provides simple methods to safely add liquidity to a pool. If the liquidity is to be added to an ERC-20/ERC-20 pair, use [addLiquidity](../../reference/smart-contracts/router-02#addliquidity). If WETH is involved, use [addLiquidityETH](../../reference/smart-contracts/router-02#addliquidityeth).
-
-These methods both require the caller to commit to a _belief about the current price_, which is encoded in the `amount*Desired` parameters. Typically, it's fairly safe to assume that the current fair market price is around what the current reserve ratio is for a pair (because of arbitrage). So, if a user wants to add 1 ETH to a pool, and the current DAI/WETH ratio of the pool is 200/1, it's reasonable to calculate that 200 DAI must be sent along with the ETH, which is an implicit commitment to the price of 200 DAI/1 WETH. However, it's important to note that this must be calculated _before the transaction is submitted_. It is _not safe_ to look up the reserve ratio from within a transaction and rely on it as a price belief, as this ratio can be cheaply manipulated to your detriment.
-
-However, it is still possible to submit a transaction which encodes a belief about the price which ends up being wrong because of a larger change in the true market price before the transaction is confirmed. For that reason, it's necessary to pass an additional set of parameters which encode the caller's tolerance to price changes. These `amount*Min` parameters should typically be set to percentages of the calculated desired price. So, at a 1% tolerance level, if our user sends a transaction with 1 ETH and 200 DAI, `amountETHMin` should be set to e.g. .99 ETH, and `amountTokenMin` should be set to 198 DAI. This means that, at worst, liquidity will be added at a rate between 198 DAI/1 ETH and 202.02 DAI/1 ETH (200 DAI/.99 ETH).
-
-Once the price calculations have been made, it's important to ensure that your contract a) controls at least as many tokens/ETH as were passed as `amount*Desired` parameters, and b) has granted approval to the router to withdraw this many tokens.
diff --git a/docs/contracts/v2/guides/smart-contract-integration/04-building-an-oracle.md b/docs/contracts/v2/guides/smart-contract-integration/04-building-an-oracle.md
deleted file mode 100644
index 8dcc69405..000000000
--- a/docs/contracts/v2/guides/smart-contract-integration/04-building-an-oracle.md
+++ /dev/null
@@ -1,139 +0,0 @@
----
-id: building-an-oracle
-title: Building an Oracle
----
-
-To build a price oracle on t1 V2, you must first understand the
-requirements for your use case. Once you understand the kind of price
-average you require, it is a matter of storing the cumulative price
-variable from the pair as often as necessary, and computing
-the average price using two or more observations of the
-cumulative price variables.
-
-# Understanding requirements
-
-To understand your requirements, you should first research the answer to the
-following questions:
-
-- Is data freshness important?
- I.e.: must the price average include the current price?
-- Are recent prices more important than historical prices?
- I.e.: is the current price given more weight than historical prices?
-
-Note your answers for the following discussion.
-
-# Oracle Strategies
-
-## Fixed windows
-
-In the case where data freshness is not important and recent prices
-are weighted equally with historical prices, it is enough to
-store the cumulative price once per period (e.g. once per 24 hours.)
-
-Computing the average price over these data points gives you 'fixed windows',
-which can be updated after the lapse of each period. We wrote
-an example oracle of this kind
-[here](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/examples/ExampleOracleSimple.sol).
-
-This example does not limit the maximum size of the fixed window, i.e.
-it only requires that the window size is greater than 1 period (e.g. 24 hours).
-
-## Moving averages
-
-In the case where data freshness is important, you can use a sliding
-window in which the cumulative price variable is measured more often
-than once per period.
-
-There are at least
-[two kinds of moving averages](https://www.investopedia.com/terms/m/movingaverage.asp#types-of-moving-averages)
-that you can compute using the t1 cumulative price variable.
-
-[Simple moving averages](https://www.investopedia.com/terms/s/sma.asp)
-give equal weight to each price measurement. We have built
-an example of a sliding window oracle
-[here](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/examples/ExampleSlidingWindowOracle.sol).
-
-[Exponential moving averages](https://www.investopedia.com/terms/e/ema.asp)
-give more weight to the most recent price measurements. We do not yet have an example written for this type of oracle.
-
-You may wish to use exponential moving averages where recent prices
-are more important than historical prices, e.g. in case of liquidations. However, note that
-putting more weight on recent prices makes the oracle cheaper to manipulate
-than weighting all price measurements equally.
-
-## Computing average prices
-
-To compute the average price given two cumulative price observations, take the difference between
-the cumulative price at the beginning and end of the period, and
-divide by the elapsed time between them in seconds. This will produce a
-[fixed point unsigned Q112x112](https://en.wikipedia.org/wiki/Fixed-point_arithmetic#Notation)
-number that represents the price of one asset relative to the other. This number is represented as a `uint224` where
-the upper 112 bits represent the integer amount, and the lower 112 bits represent the fractional amount.
-
-Pairs contain both `price0CumulativeLast` and `price1CumulativeLast`, which are ratios of reserves
-of `token1`/`token0` and `token0`/`token1` respectively. I.e. the price of `token0` is expressed in terms of
-`token1`/`token0`, while the price of `token1` is expressed in terms of `token0`/`token1`.
-
-# Getting the latest cumulative price
-
-If you wish to compute the average price between a historical price cumulative observation and the current cumulative
-price, you should use the cumulative price values from the current block. If the cumulative price has not been updated
-in the current block, e.g. because there has not been any liquidity event (`mint`/`burn`/`swap`) on the pair in the current
-block, you can compute the cumulative price counterfactually.
-
-We provide a library for use in oracle contracts that has the method
-[`UniswapV2OracleLibrary#currentCumulativePrices`](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/libraries/UniswapV2OracleLibrary.sol#L16)
-for getting the cumulative price as of the current block.
-The current cumulative price returned by this method is computed _counterfactually_, meaning it requires no call to
-the relative gas-expensive `#sync` method on the pair.
-It is correct regardless of whether a swap has already executed in the current block.
-
-# Notes on overflow
-
-The `UniswapV2Pair` cumulative price variables are designed to eventually overflow,
-i.e. `price0CumulativeLast` and `price1CumulativeLast` and `blockTimestampLast` will overflow through 0.
-
-This should not pose an issue to your oracle design, as the price average computation is concerned with differences
-(i.e. subtraction) between two separate observations of a cumulative price variable.
-Subtracting between two cumulative price values will result in a number that fits within the range of `uint256` as long
-as the observations are made for periods of max `2^32` seconds, or ~136 years.
-
-`blockTimestampLast` is stored only in a `uint32`. For the same reason as described above, the pair can save a
-storage slot, and many SSTORES over the life of the pair, by storing only `block.timestamp % uint32(-1)`.
-This is feasible because the pair is only concerned with the time that elapses between each liquidity event when updating
-the cumulative prices, which is always expected to be less than `2^32` seconds.
-
-When computing time elapsed within your own oracle, you can simply store the `block.timestamp` of your observations
-as `uint256`, and avoid dealing with overflow math for computing the time elapsed between observations. This is how the
-[ExampleSlidingWindowOracle](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/examples/ExampleSlidingWindowOracle.sol)
-handles observation timestamps.
-
-## Integrating the oracle
-
-To integrate an oracle into your contracts, you must ensure the oracle's observations of the cumulative price variable
-are kept up to date.
-As long as your oracle is up to date, you can depend on it to produce average prices.
-The process of keeping your oracle up to date is called 'maintenance'.
-
-## Oracle maintenance
-
-In order to measure average prices over a period, the oracle must have a way
-of referencing the cumulative price at the start and end of a period.
-The recommended way of doing this is by storing these prices in the oracle contract,
-and calling the oracle frequently enough to store the latest cumulative price.
-
-Reliable oracle maintenance is a difficult task,
-and can become a point of failure in times of congestion.
-Instead, consider building this functionality directly into the
-critical calls of your own smart contracts, or incentivize oracle
-maintenance calls by other parties.
-
-## No-maintenance option
-
-It is possible to avoid regularly storing this cumulative price at the
-start of the period by utilizing storage proofs. However, this approach has limitations,
-especially in regard to gas cost and maximum length of the time period over which the average price can be measured.
-If you wish to try this approach, you can follow
-[this repository by Keydonix](https://github.com/Keydonix/uniswap-oracle/).
-
-Keydonix has developed a general purpose price feed oracle built on t1 v2 that supports arbitrary time windows (up to 256 blocks) and doesn't require any active maintenance.
diff --git a/docs/contracts/v2/guides/smart-contract-integration/05-using-flash-swaps.md b/docs/contracts/v2/guides/smart-contract-integration/05-using-flash-swaps.md
deleted file mode 100644
index 0462177b9..000000000
--- a/docs/contracts/v2/guides/smart-contract-integration/05-using-flash-swaps.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-id: using-flash-swaps
-title: Flash Swaps
----
-
-Flash swaps are an integral feature of t1 V2. In fact, under the hood, all swaps are actually flash swaps! This simply means that pair contracts send output tokens to the recipient _before_ enforcing that enough input tokens have been received. This is slightly atypical, as one might expect a pair to ensure it's received payment before delivery. However, because Ethereum transactions are _atomic_, we can roll back the entire swap if it turns out that the contract hasn't received enough tokens to make itself whole by the end of the transaction.
-
-To see how this all works, let's start by examining the interface of the `swap` function:
-
-```solidity
-function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data);
-```
-
-For the sake of example, let's assume that we're dealing with a DAI/WETH pair, where DAI is `token0` and WETH is `token1`. `amount0Out` and `amount1Out` specify the amount of DAI and WETH that the `msg.sender` wants the pair to send to the `to` address (one of these amounts may be 0). At this point you may be wondering how the contract _receives_ tokens. For a typical (non-flash) swap, it's actually the responsibility of `msg.sender` to ensure that enough WETH or DAI has _already been sent_ to the pair before `swap` is called (in the context of trading, this is all handled neatly by a router contract). But when executing a flash swap, _tokens do not need to be sent to the contract before calling `swap`_. Instead, they must be sent from within a _callback function_ that the pair triggers on the `to` address.
-
-# Triggering a Flash Swap
-
-To differentiate between the "typical" trading case and the flash swap case, pairs use the `data` parameter. Specifically, if `data.length` equals 0, the contract assumes that payment has already been received, and simply transfers the tokens to the `to` address. But, if `data.length` is greater than 0, the contract transfers the tokens and then calls the following function on the `to` address:
-
-```solidity
-function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data);
-```
-
-The logic behind this identification strategy is simple: the vast majority of valid flash swap use cases involve interactions with external protocols. The best way to pass information dictating how these interactions happen (function arguments, safety parameters, addresses, etc.) is via the `data` parameter. It's expected that `data` will be `abi.decode`d from within `uniswapV2Call`. In the rare case where no data is required, callers should ensure that `data.length` equals 1 (i.e. encode a single junk byte as `bytes`), and then ignore this argument in `uniswapV2Call`.
-
-Pairs call `uniswapV2Call` with the `sender` argument set to the `msg.sender` of the `swap`. `amount0` and `amount1` are simply `amount0Out` and `amount1Out`.
-
-# Using uniswapV2Call
-
-There are several conditions that should be checked in all `uniswapV2Call` functions:
-
-```solidity
-function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) {
- address token0 = IUniswapV2Pair(msg.sender).token0(); // fetch the address of token0
- address token1 = IUniswapV2Pair(msg.sender).token1(); // fetch the address of token1
- assert(msg.sender == IUniswapV2Factory(factoryV2).getPair(token0, token1)); // ensure that msg.sender is a V2 pair
- // rest of the function goes here!
-}
-```
-
-The first 2 lines simply fetch the token addresses from the pair, and the 3rd ensures that the `msg.sender` is an actual t1 V2 pair address.
-
-# Repayment
-
-At the end of `uniswapV2Call`, contracts must return enough tokens to the pair to make it whole. Specifically, this means that the product of the pair reserves after the swap, discounting all token amounts sent by 0.3% LP fee, must be greater than before.
-
-## Multi-Token
-
-In the case where the token withdrawn is _not_ the token returned (i.e. DAI was requested in the flash swap, and WETH was returned, or vice versa), the fee simplifies to the simple swap case. This means that the standard `getAmountIn` pricing function should be used to calculate e.g., the amount of WETH that must be returned in exchange for the amount of DAI that was requested out.
-
-This type of fee calculation gives a slight advantage to the caller, as the fee derived from repayment in a corresponding token will always be slightly less than the fee derived from a direct token repayment, as a result of the difference between the amount required to pay back a swap, versus the amount withdrawn and then directly returned. The approximate comparison of fees is ~ 30 bps for a swap fee vs. 30.09 bps for a direct repayment.
-
-## Single-Token
-
-In the case where the token withdrawn is the _same_ as the token returned (i.e. DAI was requested in the flash swap, used, then returned, or vice versa with WETH), the following condition must be satisfied:
-
-`DAIReservePre - DAIWithdrawn + (DAIReturned * .997) >= DAIReservePre`
-
-It may be more intuitive to rewrite this formula in terms of a "fee" levied on the _withdrawn_ amount (despite the fact that t1 always levies fees on input amounts, in this case the _returned_ amount, here we can simplify to an effective fee on the _withdrawn_ amount). If we rearrange, the formula looks like:
-
-`(DAIReturned * .997) - DAIWithdrawn >= 0`
-
-`DAIReturned >= DAIWithdrawn / .997`
-
-So, the effective fee on the withdrawn amount is `.003 / .997 ≈ 0.3009027%`.
-
-# Resources
-
-For further exploration of flash swaps, see the whitepaper.
-
-# Example
-
-A fully functional example of flash swaps is available: [`ExampleFlashSwap.sol`](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/examples/ExampleFlashSwap.sol).
-
-# Interface
-
-```solidity
-import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Callee.sol';
-```
-
-```solidity
-pragma solidity >=0.5.0;
-
-interface IUniswapV2Callee {
- function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
-}
-```
diff --git a/docs/contracts/v2/guides/smart-contract-integration/06-getting-pair-addresses.md b/docs/contracts/v2/guides/smart-contract-integration/06-getting-pair-addresses.md
deleted file mode 100644
index 4420db86c..000000000
--- a/docs/contracts/v2/guides/smart-contract-integration/06-getting-pair-addresses.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-id: getting-pair-addresses
-title: Pair Addresses
----
-
-# getPair
-
-The most obvious way to get the address for a pair is to call [getPair](../../reference/smart-contracts/factory#getpair) on the factory. If the pair exists, this function will return its address, else `address(0)` (`0x0000000000000000000000000000000000000000`).
-
-- The "canonical" way to determine whether or not a pair exists.
-- Requires an on-chain lookup.
-
-# CREATE2
-
-Thanks to some [fancy footwork in the factory](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Factory.sol#L32), we can also compute pair addresses _without any on-chain lookups_ because of [CREATE2](https://eips.ethereum.org/EIPS/eip-1014). The following values are required for this technique:
-
-| | |
-| :--------------------- | :--------------------------------------------------------------------- |
-| `address` | The [factory address](../../reference/smart-contracts/factory#address) |
-| `salt` | `keccak256(abi.encodePacked(token0, token1))` |
-| `keccak256(init_code)` | `0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f` |
-
-- `token0` must be strictly less than `token1` by sort order.
-
-* Can be computed offline.
-* Requires the ability to perform `keccak256`.
-
-## Examples
-
-### Solidity
-
-```solidity
-address factory = 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f;
-address token0 = 0xCAFE000000000000000000000000000000000000; // change me!
-address token1 = 0xF00D000000000000000000000000000000000000; // change me!
-
-address pair = address(uint(keccak256(abi.encodePacked(
- hex'ff',
- factory,
- keccak256(abi.encodePacked(token0, token1)),
- hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
-))));
-```
diff --git a/docs/contracts/v2/guides/smart-contract-integration/07-supporting-meta-transactions.md b/docs/contracts/v2/guides/smart-contract-integration/07-supporting-meta-transactions.md
deleted file mode 100644
index af0d90793..000000000
--- a/docs/contracts/v2/guides/smart-contract-integration/07-supporting-meta-transactions.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-id: supporting-meta-transactions
-title: Supporting meta transactions
----
-
-All t1 V2 pool tokens support meta-transaction approvals via the [permit](../../reference/smart-contracts/pair-erc-20#permit) function. This obviates the need for a blocking approve transaction before programmatic interactions with pool tokens can occur.
-
-# ERC-712
-
-In vanilla ERC-20 token contracts, owners may only register approvals by directly calling a function which uses `msg.sender` to permission itself. With meta-approvals, ownership and permissioning are derived from a signature passed into the function by the caller (sometimes referred to as the relayer). Because signing data with Ethereum private keys can be a tricky endeavor, t1 V2 relies on [ERC-712](https://eips.ethereum.org/EIPS/eip-712), a signature standard with widespread community support, to ensure user safety and wallet compatibility.
-
-## Domain Separator
-
-```solidity
-keccak256(
- abi.encode(
- keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
- keccak256(bytes(name)),
- keccak256(bytes('1')),
- chainId,
- address(this)
- )
-);
-```
-
-- `name` is always `Uniswap V2`, see [name](../../reference/smart-contracts/pair-erc-20#name).
-- `chainId` is determined from the [ERC-1344](https://ethereum-magicians.org/t/eip-1344-add-chain-id-opcode/1131) `chainid` opcode.
-- `address(this)` is the address of the pair, see [Pair Addresses](../../../../sdk/v2/guides/getting-pair-addresses).
-
-## Permit Typehash
-
-```solidity
-keccak256('Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)');`
-```
diff --git a/docs/contracts/v2/guides/smart-contract-integration/_category_.json b/docs/contracts/v2/guides/smart-contract-integration/_category_.json
deleted file mode 100644
index 534f3828f..000000000
--- a/docs/contracts/v2/guides/smart-contract-integration/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Smart Contract Integration",
- "position": 3
-}
diff --git a/docs/contracts/v2/overview.md b/docs/contracts/v2/overview.md
deleted file mode 100644
index d2d085b75..000000000
--- a/docs/contracts/v2/overview.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-# The t1 V2 Smart Contracts
-
-Welcome to the t1 protocol V2 docs.
-
-The pages here contain conceptual and technical documentation of the t1 V2 protocol.
-
-If you are new to t1, you might want to check out the [Protocol overview](../V2/concepts/protocol-overview/how-uniswap-works) first.
-
-You can also take a look at the V2 Protocol Whitepaper.
-
-# Developer links
-
-The V2 t1 protocol is separated across two repositories
-
-- [`uniswap-v2-core`](https://github.com/Uniswap/uniswap-v2-core)
-- [`uniswap-v2-periphery`](https://github.com/Uniswap/uniswap-v2-periphery)
-
-The V2 SDK, which can assist developers when interacting with the t1 V2 Protocol can be found here.
-
-- [`uniswap-sdk`](https://github.com/Uniswap/uniswap-v2-sdk)
-- [`uniswap-sdk-core`](https://github.com/Uniswap/uniswap-sdk-core)
diff --git a/docs/contracts/v2/reference/API/01-overview.md b/docs/contracts/v2/reference/API/01-overview.md
deleted file mode 100644
index c975c0cb6..000000000
--- a/docs/contracts/v2/reference/API/01-overview.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-id: overview
-title: API Overview
----
-
-This section explains the t1 Subgraph and how to interact with it. The t1 subgraph indexes data from the t1 contracts over time. It organizes data about pairs, tokens, t1 as a whole, and more. The subgraph updates any time a transaction is made on t1. The subgraph runs on [The Graph](https://thegraph.com/) protocol's hosted service and can be openly queried.
-
-## Resources
-
-[Subgraph Explorer](https://thegraph.com/explorer/subgraph/uniswap/uniswap-v2) - sandbox for querying data and endpoints for developers.
-
-[Uniswap V2 Subgraph](https://github.com/Uniswap/uniswap-v2-subgraph) - source code for deployed subgraph.
-
-## Usage
-
-The subgraph provides a snapshot of the current state of t1 and also tracks historical data. It is currently used to power [uniswap.info](https://uniswap.info/). **It is not intended to be used as a data source for structuring transactions (contracts should be referenced directly for the most reliable live data).**
-
-## Making Queries
-
-To learn more about querying a subgraph refer to [The Graph's documentation](https://thegraph.com/docs/about/introduction).
-
-## Versions
-
-The [Uniswap V2 Subgraph](https://thegraph.com/explorer/subgraph/uniswap/uniswap-v2) only tracks data on t1 V2. For t1 V1 information see the [V1 Subgraph](https://thegraph.com/explorer/subgraph/graphprotocol/uniswap).
diff --git a/docs/contracts/v2/reference/API/02-entities.md b/docs/contracts/v2/reference/API/02-entities.md
deleted file mode 100644
index 2cb84a3c0..000000000
--- a/docs/contracts/v2/reference/API/02-entities.md
+++ /dev/null
@@ -1,241 +0,0 @@
----
-id: entities
-title: Entities
----
-
-Entities define the schema of the subgraph, and represent the data that can be queried. Within each entity are sets of fields that store useful information related to the entity. Below is a list of the available entities within the t1 Subgraph, and descriptions for the available fields.
-
-To see an interactive sandbox of all entities see the [Graph Explorer](https://thegraph.com/explorer/subgraph/uniswap/uniswap-v2).
-
-Each entity is defined with a value type, which will always be a base AssemblyScript type, or a custom type provided by The Graph's custom TypeScript library. For more information on value types see [here](https://thegraph.com/docs/en/developing/assemblyscript-api/#api-reference).
-
-### t1 Factory
-
-The t1 Factory entity is responsible for storing aggregate information across all t1 pairs. It can be used to view stats about total liquidity, volume, amount of pairs and more. There is only one t1Factory entity in the subgraph.
-
-| Field Name | Value Type | Description |
-| ----------------- | ---------- | --------------------------------------------------------------- |
-| id | ID | factory address |
-| pairCount | Int | amount of pairs created by the t1 factory |
-| totalVolumeUSD | BigDecimal | all time USD volume across all pairs (USD is derived) |
-| totalVolumeETH | BigDecimal | all time volume in ETH across all pairs (ETH is derived) |
-| totalLiquidityUSD | BigDecimal | total liquidity across all pairs stored as a derived USD amount |
-| totalLiquidityETH | BigDecimal | total liquidity across all pairs stored as a derived ETH amount |
-| txCount | BigInt | all time amount of transactions across all pairs |
-
-### Token
-
-Stores aggregated information for a specific token across all pairs that token is included in.
-
-| Field Name | Value Type | Description |
-| ------------------ | ---------- | ------------------------------------------------------------------------------------------------------------ |
-| id | ID | token address |
-| symbol | String | token symbol |
-| name | String | token name |
-| decimals | BigInt | token decimals |
-| tradeVolume | BigDecimal | amount of token traded all time across all pairs |
-| tradeVolumeUSD | BigDecimal | amount of token in USD traded all time across pairs (only for tokens with liquidity above minimum threshold) |
-| untrackedVolumeUSD | BigDecimal | amount of token in USD traded all time across pairs (no minimum liquidity threshold) |
-| txCount | BigInt | amount of transactions all time in pairs including token |
-| totalLiquidity | BigDecimal | total amount of token provided as liquidity across all pairs |
-| derivedETH | BigDecimal | ETH per token |
-
-### Pair
-
-Information about a pair. Includes references to each token within the pair, volume information, liquidity information, and more. The pair entity mirrors the pair smart contract, and also contains aggregated information about use.
-
-| Field Name | Value Type | Description |
-| -------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------- |
-| id | ID | pair contract address |
-| factory | t1Factory | reference to t1 factory entity |
-| token0 | Token | reference to token0 as stored in pair contract |
-| token1 | Token | reference to token1 as stored in pair contract |
-| reserve0 | BigDecimal | reserve of token0 |
-| reserve1 | BigDecimal | reserve of token1 |
-| totalSupply | BigDecimal | total supply of liquidity token distributed to LPs |
-| reserveETH | BigDecimal | total liquidity in pair stored as an amount of ETH |
-| reserveUSD | BigDecimal | total liquidity amount in pair stored as an amount of USD |
-| trackedReserveETH | BigDecimal | total liquidity with only tracked amount (see tracked amounts) |
-| token0Price | BigDecimal | token0 per token1 |
-| token1Price | BigDecimal | token1 per token0 |
-| volumeToken0 | BigDecimal | amount of token0 swapped on this pair |
-| volumeToken1 | BigDecimal | amount of token1 swapped on this pair |
-| volumeUSD | BigDecimal | total amount swapped all time in this pair stored in USD (only tracked if USD liquidity is above minimum threshold) |
-| untrackedVolumeUSD | BigDecimal | total amount swapped all time in this pair stored in USD, no minimum liquidity threshold |
-| txCount | BigInt | all time amount of transactions on this pair |
-| createdAtTimestamp | BigInt | timestamp contract was created |
-| createdAtBlockNumber | BigInt | Ethereum block contract was created |
-| liquidityPositions | [LiquidityPosition] | array of liquidity providers, used as a reference to LP entities |
-
-### User
-
-A user entity is created for any address that provides liquidity to a pool on t1. This entity
-can be used to track open positions for users. LiquidyPosition entities can be referenced to get
-specific data about each position.
-
-| Field Name | Value Type | Description |
-| ------------------ | ------------------- | ---------------------------------------------- |
-| id | ID | user address |
-| liquidityPositions | [LiquidityPosition] | array of all liquidity positions user has open |
-| usdSwapped | BigDecimal | total USD value swapped |
-
-### LiquidityPositiion
-
-This entity is used to store data about a user's liquidity position. This information, along with
-information from the pair itself can be used to provide position sizes, token deposits, and more.
-
-| Field Name | Value Type | Description |
-| --------------------- | ---------- | ------------------------------------------------------ |
-| id | ID | user address and pair address concatenated with a dash |
-| user | User | reference to user |
-| pair | Pair | reference to the pair liquidity is being provided on |
-| liquidityTokenBalance | BigDecimal | amount of LP tokens minted for this position |
-
-### Transaction
-
-Transaction entities are created for each Ethereum transaction that contains an interaction within t1 contracts. This subgraph tracks Mint, Burn, and Swap events on the t1 core contracts. Each transaction contains 3 arrays, and at least one of these arrays has a length of 1.
-
-| Field Name | Value Type | Description |
-| ----------- | ---------- | --------------------------------------------------------- |
-| id | ID | Ethereum transaction hash |
-| blockNumber | BigInt | block transaction was mined in |
-| timestamp | BigInt | timestamp for transaction |
-| mints | [Mint] | array of Mint events within the transaction, 0 or greater |
-| burns | [Burn] | array of Burn events within transaction, 0 or greater |
-| swaps | [Swap] | array of Swap events within transaction, 0 or greater |
-
-### Mint
-
-Mint entities are created for every emitted Mint event on the t1 core contracts. The Mint entity stores key data about the event like token amounts, who sent the transaction, who received the liquidity, and more. This entity can be used to track liquidity provisions on pairs.
-
-| Field Name | Value Type | Description |
-| ------------ | ----------- | ----------------------------------------------------------- |
-| id | ID | Transaction hash plus index in the transaction mint array |
-| transaction | Transaction | reference to the transaction Mint was included in |
-| timestamp | BigInt | timestamp of Mint, used to sort recent liquidity provisions |
-| pair | Pair | reference to pair |
-| to | Bytes | recipient of liquidity tokens |
-| liquidity | BigDecimal | amount of liquidity tokens minted |
-| sender | Bytes | address that initiated the liquidity provision |
-| amount0 | BigDecimal | amount of token0 provided |
-| amount1 | BigDecimal | amount of token1 provided |
-| logIndex | BigInt | index in the transaction event was emitted |
-| amountUSD | BigDecimal | derived USD value of token0 amount plus token1 amount |
-| feeTo | Bytes | address of fee recipient (if fee is on) |
-| feeLiquidity | BigDecimal | amount of liquidity sent to fee recipient (if fee is on) |
-
-### Burn
-
-Burn entities are created for every emitted Burn event on the t1 core contracts. The Burn entity stores key data about the event like token amounts, who burned LP tokens, who received tokens, and more. This entity can be used to track liquidity removals on pairs.
-
-| Field Name | Value Type | Description |
-| ------------ | ----------- | --------------------------------------------------------- |
-| id | ID | Transaction hash plus index in the transaction burn array |
-| transaction | Transaction | reference to the transaction Burn was included in |
-| timestamp | BigInt | timestamp of Burn, used to sort recent liquidity removals |
-| pair | Pair | reference to pair |
-| to | Bytes | recipient of tokens |
-| liquidity | BigDecimal | amount of liquidity tokens burned |
-| sender | Bytes | address that initiated the liquidity removal |
-| amount0 | BigDecimal | amount of token0 removed |
-| amount1 | BigDecimal | amount of token1 removed |
-| logIndex | BigInt | index in the transaction event was emitted |
-| amountUSD | BigDecimal | derived USD value of token0 amount plus token1 amount |
-| feeTo | Bytes | address of fee recipient (if fee is on) |
-| feeLiquidity | BigDecimal | amount of tokens sent to fee recipient (if fee is on) |
-
-### Swap
-
-Swap entities are created for each token swap within a pair. The Swap entity can be used to get things like swap size (in tokens and USD), sender, recipient and more. See the Swap overview page
-for more information on amounts.
-
-| Field Name | Value Type | Description |
-| ----------- | ----------- | ----------------------------------------------------- |
-| id | ID | transaction hash plus index in Transaction swap array |
-| transaction | Transaction | reference to transaction swap was included in |
-| timestamp | BigInt | timestamp of swap, used for sorted lookups |
-| pair | Pair | reference to pair |
-| sender | Bytes | address that initiated the swap |
-| amount0In | BigDecimal | amount of token0 sold |
-| amount1In | BigDecimal | amount of token1 sold |
-| amount0Out | BigDecimal | amount of token0 received |
-| amount1Out | BigDecimal | amount of token1 received |
-| to | Bytes | recipient of output tokens |
-| logIndex | BigInt | event index within transaction |
-| amountUSD | BigDecimal | derived amount of tokens sold in USD |
-
-### Bundle
-
-The Bundle is used as a global store of derived ETH price in USD. Because there is
-no guaranteed common base token across pairs, a global reference of USD price is useful
-for deriving other USD values. The Bundle entity stores an updated weighted average of ETH<->Stablecoin pair prices. This provides a strong estimate for the USD price of ETH that can
-be used in other places in the subgraph.
-
-| Field Name | Value Type | Description |
-| ---------- | ---------- | ----------------------------------------------------- |
-| id | ID | constant 1 |
-| ethPrice | BigDecimal | derived price of ETH in USD based on stablecoin pairs |
-
-## Historical Entities
-
-The subgraph tracks aggregated information grouped by days to provide insights to daily activity on t1. While [time travel queries](https://blocklytics.org/blog/ethereum-blocks-subgraph-made-for-time-travel/) can be used for direct comparison against values in the past, it is much more expensive to query grouped data. For this reason the subgraph tracks information grouped in daily buckets, using timestamps provided by contract events. These entities can be used to query things like total volume on a given day, price of a token on a given day, etc.
-
-For each DayData type, a new entity is created each day.
-
-### t1DayData
-
-Tracks data across all pairs aggregated into a daily bucket.
-
-| Field Name | Value Type | Description |
-| ----------------- | --------------- | -------------------------------------------------------------------------------- |
-| id | ID | unix timestamp for start of day / 86400 giving a unique day index |
-| date | Int | unix timestamp for start of day |
-| dailyVolumeETH | BigDecimal | total volume across all pairs on this day, stored as a derived amount of ETH |
-| dailyVolumeUSD | BigDecimal | total volume across all pairs on this day, stored as a derived amount of USD |
-| totalVolumeETH | BigDecimal | all time volume across all pairs in ETH up to and including this day |
-| totalLiquidityETH | BigDecimal | total liquidity across all pairs in ETH up to and including this day |
-| totalVolumeUSD | BigDecimal | all time volume across all pairs in USD up to and including this day |
-| totalLiquidityUSD | BigDecimal | total liquidity across all pairs in USD up to and including this day |
-| maxStored | Int | reference used to store most liquid tokens, used for historical liquidity charts |
-| mostLiquidTokens | [TokenDayData!] | tokens with most liquidity in t1 |
-| txCount | BigInt | number of transactions throughout this day |
-
-### Pair Day Data
-
-Tracks pair data across each day.
-
-| Field Name | Value Type | Description |
-| ----------------- | ---------- | ----------------------------------------------------------------------------------------------- |
-| id | ID | pair contract address and day id (day start timestamp in unix / 86400) concatenated with a dash |
-| date | Int | unix timestamp for start of day |
-| pairAddress | Bytes | address for pair contract |
-| token0 | Token | reference to token0 |
-| token1 | Token | reference to token1 |
-| reserve0 | BigDecimal | reserve of token0 (updated during each transaction on pair) |
-| reserve1 | BigDecimal | reserve of token1 (updated during each transaction on pair) |
-| totalSupply | BigDecimal | total supply of liquidity token distributed to LPs |
-| reserveUSD | BigDecimal | reserve of token0 plus token1 stored as a derived USD amount |
-| dailyVolumeToken0 | BigDecimal | total amount of token0 swapped throughout day |
-| dailyVolumeToken1 | BigDecimal | total amount of token1 swapped throughout day |
-| dailyVolumeUSD | BigDecimal | total volume within pair throughout day |
-| dailyTxns | BigInt | amount of transactions on pair throughout day |
-
-### TokenDayData
-
-Tracks token data aggregated across all pairs that include token.
-
-| Field Name | Value Type | Description |
-| ------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
-| id | ID | token address and day id (day start timestamp in unix / 86400) concatenated with a dash |
-| date | Int | unix timestamp for start of day |
-| token | Token | reference to token entity |
-| dailyVolumeToken | BigDecimal | amount of token swapped across all pairs throughout day |
-| dailyVolumeETH | BigDecimal | amount of token swapped across all pairs throughout day stored as a derived amount of ETH |
-| dailyVolumeUSD | BigDecimal | amount of token swapped across all pairs throughout day stored as a derived amount of USD |
-| dailyTxns | BigInt | amount of transactions with this token across all pairs |
-| totalLiquidityToken | BigDecimal | token amount of token deposited across all pairs |
-| totalLiquidityETH | BigDecimal | token amount of token deposited across all pairs stored as amount of ETH |
-| totalLiquidityUSD | BigDecimal | token amount of token deposited across all pairs stored as amount of USD |
-| priceUSD | BigDecimal | price of token in derived USD |
-| maxStored | Int | amount of token deposited in pair with highest token liquidity - used only as a reference for storing most liquid pairs for this token |
-| mostLiquidPairs | [PairDayData] | pairs with most liquidity for this token |
diff --git a/docs/contracts/v2/reference/API/03-queries.md b/docs/contracts/v2/reference/API/03-queries.md
deleted file mode 100644
index 557839723..000000000
--- a/docs/contracts/v2/reference/API/03-queries.md
+++ /dev/null
@@ -1,273 +0,0 @@
----
-id: queries
-title: Queries
----
-
-The subgraph can be queried to retrieve important information about t1, pairs, tokens, transactions, users, and more. This page will provide examples for common queries.
-
-To try these queries and run your own visit the [subgraph sandbox](https://thegraph.com/explorer/subgraph/uniswap/uniswap-v2).
-
-### Global Data
-
-To query global data you can pass in the t1 Factory address and select from available fields.
-
-#### Global Stats
-
-All time volume in USD, total liquidity in USD, all time transaction count.
-
-```
-{
- uniswapFactory(id: "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f"){
- totalVolumeUSD
- totalLiquidityUSD
- txCount
- }
-}
-```
-
-#### Global Historical lookup
-
-To get a snapshot of past state, use The Graph's block query feature and query at a previous block. See this post to get more information about [fetching block numbers from timestamps](https://blocklytics.org/blog/ethereum-blocks-subgraph-made-for-time-travel/). This can be used to calculate things like 24hr volume.
-
-```
-{
- uniswapFactory(id: "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", block: {number: 10291203}){
- totalVolumeUSD
- totalLiquidityUSD
- txCount
- }
-}
-```
-
-### Pair Data
-
-#### Pair Overview
-
-Fetch a snapshot of the current state of the pair with common values. This example fetches the DAI/WETH pair.
-
-```
-{
- pair(id: "0xa478c2975ab1ea89e8196811f51a7b7ade33eb11"){
- token0 {
- id
- symbol
- name
- derivedETH
- }
- token1 {
- id
- symbol
- name
- derivedETH
- }
- reserve0
- reserve1
- reserveUSD
- trackedReserveETH
- token0Price
- token1Price
- volumeUSD
- txCount
- }
-}
-```
-
-#### All pairs in t1
-
-The Graph limits entity return amounts to 1000 per query as of now. To get all pairs on t1 use a loop and graphql skip query to fetch multiple chunks of 1000 pairs. The query would look like this (where skip is some incrementing variable passed into your query).
-
-```
-{
- query pairs($skip: Int!) {
- pairs(first: 1000, skip: $skip) {
- id
- }
- }
-}
-```
-
-#### Most liquid pairs
-
-Order by liquidity to get the most liquid pairs in t1.
-
-```
-{
- pairs(first: 1000, orderBy: reserveUSD, orderDirection: desc) {
- id
- }
-}
-```
-
-#### Recent Swaps within a Pair
-
-Get the last 100 swaps on a pair by fetching Swap events and passing in the pair address. You'll often want token information as well.
-
-```
-{
-swaps(orderBy: timestamp, orderDirection: desc, where:
- { pair: "0xa478c2975ab1ea89e8196811f51a7b7ade33eb11" }
-) {
- pair {
- token0 {
- symbol
- }
- token1 {
- symbol
- }
- }
- amount0In
- amount0Out
- amount1In
- amount1Out
- amountUSD
- to
- }
-}
-```
-
-#### Pair Daily Aggregated
-
-Day data is useful for building charts and historical views around entities. To get stats about a pair in daily buckets query for day entities bounded by timestamps. This query gets the first 100 days after the given unix timestamp on the DAI/WETH pair.
-
-```
-{
- pairDayDatas(first: 100, orderBy: date, orderDirection: asc,
- where: {
- pairAddress: "0xa478c2975ab1ea89e8196811f51a7b7ade33eb11",
- date_gt: 1592505859
- }
- ) {
- date
- dailyVolumeToken0
- dailyVolumeToken1
- dailyVolumeUSD
- reserveUSD
- }
-}
-```
-
-### Token Data
-
-Token data can be fetched using the token contract address as an ID. Token data is aggregated across all pairs the token is included in. Any token that is included in some pair in t1 can be queried.
-
-#### Token Overview
-
-Get a snapshot of the current stats on a token in t1. This query fetches current stats on DAI.
-The allPairs field gets the first 200 pairs DAI is included in sorted by liquidity in derived USD.
-
-```
-{
- token(id: "0x6b175474e89094c44da98b954eedeac495271d0f"){
- name
- symbol
- decimals
- derivedETH
- tradeVolumeUSD
- totalLiquidity
- }
-}
-```
-
-#### All Tokens in t1
-
-Similar to fetching all pairs (see above), you can query all tokens in t1. Because The Graph service limits return size to 1000 entities use graphql skip query. (Note this query will not work in the graph sandbox and more resembles the structure of a query you'd pass to some graphql middleware like [Apollo](https://www.apollographql.com/)).
-
-```
-{
- query tokens($skip: Int!) {
- tokens(first: 1000, skip: $skip) {
- id
- name
- symbol
- }
- }
-}
-```
-
-#### Token Transactions
-
-To get transactions that include a token you'll need to first fetch an array of pairs that the token is included in (this can be done with the allPairs field on the Token entity.) Once you have an array of pairs the token is included in, filter on that in the transaction lookup.
-
-This query fetches the latest 30 mints, swaps, and burns involving DAI. The allPairs array could look something like this where we include the DAI/WETH pair address and the DAI/USDC pair address.
-
-```
-allPairs = [
- "0xa478c2975ab1ea89e8196811f51a7b7ade33eb11",
- "0xae461ca67b15dc8dc81ce7615e0320da1a9ab8d5"
-]
-```
-
-```
-query($allPairs: [String!]) {
- mints(first: 30, where: { pair_in: $allPairs }, orderBy: timestamp, orderDirection: desc) {
- transaction {
- id
- timestamp
- }
- to
- liquidity
- amount0
- amount1
- amountUSD
- }
- burns(first: 30, where: { pair_in: $allPairs }, orderBy: timestamp, orderDirection: desc) {
- transaction {
- id
- timestamp
- }
- to
- liquidity
- amount0
- amount1
- amountUSD
- }
- swaps(first: 30, where: { pair_in: $allPairs }, orderBy: timestamp, orderDirection: desc) {
- transaction {
- id
- timestamp
- }
- amount0In
- amount0Out
- amount1In
- amount1Out
- amountUSD
- to
- }
-}
-```
-
-#### Token Daily Aggregated
-
-Like pair and global daily lookups, tokens have daily entities that can be queries as well. This query gets daily information for DAI. Note that you may want to sort in ascending order to receive your days from oldest to most recent in the return array.
-
-```
-{
- tokenDayDatas(orderBy: date, orderDirection: asc,
- where: {
- token: "0x6b175474e89094c44da98b954eedeac495271d0f"
- }
- ) {
- id
- date
- priceUSD
- totalLiquidityToken
- totalLiquidityUSD
- totalLiquidityETH
- dailyVolumeETH
- dailyVolumeToken
- dailyVolumeUSD
- }
-}
-```
-
-### ETH Price
-
-You can use the Bundle entity to query current USD price of ETH in t1 based on a weighted average of stablecoins.
-
-```
-{
- bundle(id: "1" ) {
- ethPrice
- }
-}
-```
diff --git a/docs/contracts/v2/reference/API/_category_.json b/docs/contracts/v2/reference/API/_category_.json
deleted file mode 100644
index a1e3abeac..000000000
--- a/docs/contracts/v2/reference/API/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "API",
- "position": 1
-}
diff --git a/docs/contracts/v2/reference/_category_.json b/docs/contracts/v2/reference/_category_.json
deleted file mode 100644
index f9ee8b198..000000000
--- a/docs/contracts/v2/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 4,
- "collapsed": false
-}
diff --git a/docs/contracts/v2/reference/smart-contracts/01-factory.md b/docs/contracts/v2/reference/smart-contracts/01-factory.md
deleted file mode 100644
index 39cfbe672..000000000
--- a/docs/contracts/v2/reference/smart-contracts/01-factory.md
+++ /dev/null
@@ -1,118 +0,0 @@
----
-id: factory
-title: Factory
----
-
-# Factory
-
-## Code
-
-[`UniswapV2Factory.sol`](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Factory.sol)
-
-# Address
-
-`UniswapV2Factory` is deployed at `0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f` on the Ethereum [mainnet](https://etherscan.io/address/0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f), and the [Ropsten](https://ropsten.etherscan.io/address/0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f), [Rinkeby](https://rinkeby.etherscan.io/address/0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f), [Görli](https://goerli.etherscan.io/address/0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f), and [Kovan](https://kovan.etherscan.io/address/0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f) testnets. It was built from commit [8160750](https://github.com/Uniswap/uniswap-v2-core/tree/816075049f811f1b061bca81d5d040b96f4c07eb).
-
-# Events
-
-## PairCreated
-
-```solidity
-event PairCreated(address indexed token0, address indexed token1, address pair, uint);
-```
-
-Emitted each time a pair is created via [createPair](#createpair).
-
-- `token0` is guaranteed to be strictly less than `token1` by sort order.
-- The final `uint` log value will be `1` for the first pair created, `2` for the second, etc. (see [allPairs](#allpairs)/[getPair](#getpair)).
-
-# Read-Only Functions
-
-## getPair
-
-```solidity
-function getPair(address tokenA, address tokenB) external view returns (address pair);
-```
-
-Returns the address of the pair for `tokenA` and `tokenB`, if it has been created, else `address(0)` (`0x0000000000000000000000000000000000000000`).
-
-- `tokenA` and `tokenB` are interchangeable.
-- Pair addresses can also be calculated deterministically via the SDK.
-
-## allPairs
-
-```solidity
-function allPairs(uint) external view returns (address pair);
-```
-
-Returns the address of the `n`th pair (`0`-indexed) created through the factory, or `address(0)` (`0x0000000000000000000000000000000000000000`) if not enough pairs have been created yet.
-
-- Pass `0` for the address of the first pair created, `1` for the second, etc.
-
-## allPairsLength
-
-```solidity
-function allPairsLength() external view returns (uint);
-```
-
-Returns the total number of pairs created through the factory so far.
-
-## feeTo
-
-```solidity
-function feeTo() external view returns (address);
-```
-
-See [Protocol Charge Calculation](../../concepts/advanced-topics/fees).
-
-## feeToSetter
-
-```solidity
-function feeToSetter() external view returns (address);
-```
-
-The address allowed to change [feeTo](#feeto).
-
-# State-Changing Functions
-
-## createPair
-
-```solidity
-function createPair(address tokenA, address tokenB) external returns (address pair);
-```
-
-Creates a pair for `tokenA` and `tokenB` if one doesn't exist already.
-
-- `tokenA` and `tokenB` are interchangeable.
-- Emits [PairCreated](#paircreated).
-
-# Interface
-
-```solidity
-import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol';
-```
-
-```solidity
-pragma solidity >=0.5.0;
-
-interface IUniswapV2Factory {
- event PairCreated(address indexed token0, address indexed token1, address pair, uint);
-
- function getPair(address tokenA, address tokenB) external view returns (address pair);
- function allPairs(uint) external view returns (address pair);
- function allPairsLength() external view returns (uint);
-
- function feeTo() external view returns (address);
- function feeToSetter() external view returns (address);
-
- function createPair(address tokenA, address tokenB) external returns (address pair);
-}
-```
-
-# ABI
-
-```typescript
-import IUniswapV2Factory from '@uniswap/v2-core/build/IUniswapV2Factory.json'
-```
-
-[https://unpkg.com/@uniswap/v2-core@1.0.0/build/IUniswapV2Factory.json](https://unpkg.com/@uniswap/v2-core@1.0.0/build/IUniswapV2Factory.json)
diff --git a/docs/contracts/v2/reference/smart-contracts/02-pair.md b/docs/contracts/v2/reference/smart-contracts/02-pair.md
deleted file mode 100644
index 497ed4677..000000000
--- a/docs/contracts/v2/reference/smart-contracts/02-pair.md
+++ /dev/null
@@ -1,238 +0,0 @@
----
-id: pair
-title: Pair
----
-
-This documentation covers t1-specific functionality. For ERC-20 functionality, see [Pair (ERC-20)](../smart-contracts/pair-erc-20).
-
-# Code
-
-[`UniswapV2Pair.sol`](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Pair.sol)
-
-# Address
-
-See [Pair Addresses](../../guides/smart-contract-integration/getting-pair-addresses).
-
-# Events
-
-## Mint
-
-```solidity
-event Mint(address indexed sender, uint amount0, uint amount1);
-```
-
-Emitted each time liquidity tokens are created via [mint](#mint-1).
-
-## Burn
-
-```solidity
-event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
-```
-
-Emitted each time liquidity tokens are destroyed via [burn](#burn-1).
-
-## Swap
-
-```solidity
-event Swap(
- address indexed sender,
- uint amount0In,
- uint amount1In,
- uint amount0Out,
- uint amount1Out,
- address indexed to
-);
-```
-
-Emitted each time a swap occurs via [swap](#swap-1).
-
-## Sync
-
-```solidity
-event Sync(uint112 reserve0, uint112 reserve1);
-```
-
-Emitted each time reserves are updated via [mint](#mint-1), [burn](#burn-1), [swap](#swap-1), or [sync](#sync-1).
-
-# Read-Only Functions
-
-## MINIMUM_LIQUIDITY
-
-```solidity
-function MINIMUM_LIQUIDITY() external pure returns (uint);
-```
-
-Returns `1000` for all pairs. See [Minimum Liquidity](../../concepts/protocol-overview/smart-contracts#minimum-liquidity).
-
-## factory
-
-```solidity
-function factory() external view returns (address);
-```
-
-Returns the [factory address](../smart-contracts/factory#address).
-
-## token0
-
-```solidity
-function token0() external view returns (address);
-```
-
-Returns the address of the pair token with the lower sort order.
-
-## token1
-
-```solidity
-function token1() external view returns (address);
-```
-
-Returns the address of the pair token with the higher sort order.
-
-## getReserves
-
-```solidity
-function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
-```
-
-Returns the reserves of token0 and token1 used to price trades and distribute liquidity. See [Pricing](../../concepts/advanced-topics/pricing). Also returns the `block.timestamp` (mod `2**32`) of the last block during which an interaction occured for the pair.
-
-## price0CumulativeLast
-
-```solidity
-function price0CumulativeLast() external view returns (uint);
-```
-
-See [Oracles](../../concepts/core-concepts/oracles).
-
-## price1CumulativeLast
-
-```solidity
-function price1CumulativeLast() external view returns (uint);
-```
-
-See [Oracles](../../concepts/core-concepts/oracles).
-
-## kLast
-
-```solidity
-function kLast() external view returns (uint);
-```
-
-Returns the product of the reserves as of the most recent liquidity event. See [Protocol Charge Calculation](../../concepts/advanced-topics/fees#protocol-charge-calculation).
-
-# State-Changing Functions
-
-## mint
-
-```solidity
-function mint(address to) external returns (uint liquidity);
-```
-
-Creates pool tokens.
-
-- Emits [Mint](#mint), [Sync](#sync), [Transfer](../smart-contracts/pair-erc-20#transfer).
-
-## burn
-
-```solidity
-function burn(address to) external returns (uint amount0, uint amount1);
-```
-
-Destroys pool tokens.
-
-- Emits [Burn](#burn), [Sync](#sync), [Transfer](../smart-contracts/pair-erc-20#transfer).
-
-## swap
-
-```solidity
-function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
-```
-
-Swaps tokens. For regular swaps, `data.length` must be `0`. Also see [Flash Swaps](../../concepts/core-concepts/flash-swaps).
-
-- Emits [Swap](#swap), [Sync](#sync).
-
-## skim
-
-```solidity
-function skim(address to) external;
-```
-
-See the whitepaper.
-
-## sync
-
-```solidity
-function sync() external;
-```
-
-See the whitepaper.
-
-- Emits [Sync](#sync).
-
-# Interface
-
-```solidity
-import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';
-```
-
-```solidity
-pragma solidity >=0.5.0;
-
-interface IUniswapV2Pair {
- event Approval(address indexed owner, address indexed spender, uint value);
- event Transfer(address indexed from, address indexed to, uint value);
-
- function name() external pure returns (string memory);
- function symbol() external pure returns (string memory);
- function decimals() external pure returns (uint8);
- function totalSupply() external view returns (uint);
- function balanceOf(address owner) external view returns (uint);
- function allowance(address owner, address spender) external view returns (uint);
-
- function approve(address spender, uint value) external returns (bool);
- function transfer(address to, uint value) external returns (bool);
- function transferFrom(address from, address to, uint value) external returns (bool);
-
- function DOMAIN_SEPARATOR() external view returns (bytes32);
- function PERMIT_TYPEHASH() external pure returns (bytes32);
- function nonces(address owner) external view returns (uint);
-
- function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
-
- event Mint(address indexed sender, uint amount0, uint amount1);
- event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
- event Swap(
- address indexed sender,
- uint amount0In,
- uint amount1In,
- uint amount0Out,
- uint amount1Out,
- address indexed to
- );
- event Sync(uint112 reserve0, uint112 reserve1);
-
- function MINIMUM_LIQUIDITY() external pure returns (uint);
- function factory() external view returns (address);
- function token0() external view returns (address);
- function token1() external view returns (address);
- function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
- function price0CumulativeLast() external view returns (uint);
- function price1CumulativeLast() external view returns (uint);
- function kLast() external view returns (uint);
-
- function mint(address to) external returns (uint liquidity);
- function burn(address to) external returns (uint amount0, uint amount1);
- function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
- function skim(address to) external;
- function sync() external;
-}
-```
-
-# ABI
-
-```typescript
-import IUniswapV2Pair from '@uniswap/v2-core/build/IUniswapV2Pair.json'
-```
-
-[https://unpkg.com/@uniswap/v2-core@1.0.0/build/IUniswapV2Pair.json](https://unpkg.com/@uniswap/v2-core@1.0.0/build/IUniswapV2Pair.json)
diff --git a/docs/contracts/v2/reference/smart-contracts/03-pair-erc-20.md b/docs/contracts/v2/reference/smart-contracts/03-pair-erc-20.md
deleted file mode 100644
index ceed5f9d4..000000000
--- a/docs/contracts/v2/reference/smart-contracts/03-pair-erc-20.md
+++ /dev/null
@@ -1,186 +0,0 @@
----
-id: Pair-ERC-20
-title: Pair (ERC-20)
----
-
-This documentation covers ERC-20 functionality for denominating pool tokens. For t1-specific functionality, see [Pair](../smart-contracts/pair).
-
-# Code
-
-[`UniswapV2ERC20.sol`](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
-
-# Events
-
-## Approval
-
-```solidity
-event Approval(address indexed owner, address indexed spender, uint value);
-```
-
-Emitted each time an approval occurs via [approve](#approve) or [permit](#permit).
-
-## Transfer
-
-```solidity
-event Transfer(address indexed from, address indexed to, uint value);
-```
-
-Emitted each time a transfer occurs via [transfer](#transfer-1), [transferFrom](#transferfrom), [mint](../smart-contracts/pair#mint-1), or [burn](../smart-contracts/pair#burn-1).
-
-# Read-Only Functions
-
-## name
-
-```solidity
-function name() external pure returns (string memory);
-```
-
-Returns `Uniswap V2` for all pairs.
-
-## symbol
-
-```solidity
-function symbol() external pure returns (string memory);
-```
-
-Returns `UNI-V2` for all pairs.
-
-## decimals
-
-```solidity
-function decimals() external pure returns (uint8);
-```
-
-Returns `18` for all pairs.
-
-## totalSupply
-
-```solidity
-function totalSupply() external view returns (uint);
-```
-
-Returns the total amount of pool tokens for a pair.
-
-## balanceOf
-
-```solidity
-function balanceOf(address owner) external view returns (uint);
-```
-
-Returns the amount of pool tokens owned by an address.
-
-## allowance
-
-```solidity
-function allowance(address owner, address spender) external view returns (uint);
-```
-
-Returns the amount of liquidity tokens owned by an address that a spender is allowed to transfer via [transferFrom](#transferfrom).
-
-## DOMAIN_SEPARATOR
-
-```solidity
-function DOMAIN_SEPARATOR() external view returns (bytes32);
-```
-
-Returns a domain separator for use in [permit](#permit).
-
-## PERMIT_TYPEHASH
-
-```solidity
-function PERMIT_TYPEHASH() external view returns (bytes32);
-```
-
-Returns a typehash for use in [permit](#permit).
-
-## nonces
-
-```solidity
-function nonces(address owner) external view returns (uint);
-```
-
-Returns the current nonce for an address for use in [permit](#permit).
-
-# State-Changing Functions
-
-## approve
-
-```solidity
-function approve(address spender, uint value) external returns (bool);
-```
-
-Lets `msg.sender` set their allowance for a spender.
-
-- Emits [Approval](#approval).
-
-## transfer
-
-```solidity
-function transfer(address to, uint value) external returns (bool);
-```
-
-Lets `msg.sender` send pool tokens to an address.
-
-- Emits [Transfer](#transfer).
-
-## transferFrom
-
-```solidity
-function transferFrom(address from, address to, uint value) external returns (bool);
-```
-
-Sends pool tokens from one address to another.
-
-- Requires approval.
-- Emits [Transfer](#transfer).
-
-## permit
-
-```solidity
-function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
-```
-
-Sets the allowance for a spender where approval is granted via a signature.
-
-- See [Using Permit](../../guides/smart-contract-integration/supporting-meta-transactions).
-- Emits [Approval](#approval).
-
-# Interface
-
-```solidity
-import '@uniswap/v2-core/contracts/interfaces/IUniswapV2ERC20.sol';
-```
-
-```solidity
-pragma solidity >=0.5.0;
-
-interface IUniswapV2ERC20 {
- event Approval(address indexed owner, address indexed spender, uint value);
- event Transfer(address indexed from, address indexed to, uint value);
-
- function name() external pure returns (string memory);
- function symbol() external pure returns (string memory);
- function decimals() external pure returns (uint8);
- function totalSupply() external view returns (uint);
- function balanceOf(address owner) external view returns (uint);
- function allowance(address owner, address spender) external view returns (uint);
-
- function approve(address spender, uint value) external returns (bool);
- function transfer(address to, uint value) external returns (bool);
- function transferFrom(address from, address to, uint value) external returns (bool);
-
- function DOMAIN_SEPARATOR() external view returns (bytes32);
- function PERMIT_TYPEHASH() external pure returns (bytes32);
- function nonces(address owner) external view returns (uint);
-
- function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
-}
-```
-
-# ABI
-
-```typescript
-import IUniswapV2ERC20 from '@uniswap/v2-core/build/IUniswapV2ERC20.json'
-```
-
-[https://unpkg.com/@uniswap/v2-core@1.0.0/build/IUniswapV2ERC20.json](https://unpkg.com/@uniswap/v2-core@1.0.0/build/IUniswapV2ERC20.json)
diff --git a/docs/contracts/v2/reference/smart-contracts/04-library.md b/docs/contracts/v2/reference/smart-contracts/04-library.md
deleted file mode 100644
index 2c828af11..000000000
--- a/docs/contracts/v2/reference/smart-contracts/04-library.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-id: library
-title: Library
----
-
-# Library
-
-## Code
-
-[`UniswapV2Library.sol`](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/libraries/UniswapV2Library.sol)
-
-# Internal Functions
-
-## sortTokens
-
-```solidity
-function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1);
-```
-
-Sorts token addresses.
-
-## pairFor
-
-```solidity
-function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair);
-```
-
-Calculates the address for a pair without making any external calls via the v2 SDK.
-
-## getReserves
-
-```solidity
-function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB);
-```
-
-Calls [getReserves](../smart-contracts/pair#getreserves) on the pair for the passed tokens, and returns the results sorted in the order that the parameters were passed in.
-
-## quote
-
-```solidity
-function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB);
-```
-
-Given some asset amount and reserves, returns an amount of the other asset representing equivalent value.
-
-- Useful for calculating optimal token amounts before calling [mint](../smart-contracts/pair#mint-1).
-
-## getAmountOut
-
-```solidity
-function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut);
-```
-
-Given an _input_ asset amount, returns the maximum _output_ amount of the other asset (accounting for fees) given reserves.
-
-- Used in [getAmountsOut](#getamountsout).
-
-## getAmountIn
-
-```solidity
-function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn);
-```
-
-Returns the minimum _input_ asset amount required to buy the given _output_ asset amount (accounting for fees) given reserves.
-
-- Used in [getAmountsIn](#getamountsin).
-
-## getAmountsOut
-
-```solidity
-function getAmountsOut(uint amountIn, address[] memory path) internal view returns (uint[] memory amounts);
-```
-
-Given an _input_ asset amount and an array of token addresses, calculates all subsequent maximum _output_ token amounts by calling [getReserves](#getreserves) for each pair of token addresses in the path in turn, and using these to call [getAmountOut](#getamountout).
-
-- Useful for calculating optimal token amounts before calling [swap](../smart-contracts/pair#swap-1).
-
-## getAmountsIn
-
-```solidity
-function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts);
-```
-
-Given an _output_ asset amount and an array of token addresses, calculates all preceding minimum _input_ token amounts by calling [getReserves](#getreserves) for each pair of token addresses in the path in turn, and using these to call [getAmountIn](#getamountin).
-
-- Useful for calculating optimal token amounts before calling [swap](../smart-contracts/pair#swap-1).
diff --git a/docs/contracts/v2/reference/smart-contracts/05-router01.md b/docs/contracts/v2/reference/smart-contracts/05-router01.md
deleted file mode 100644
index 4faa4da59..000000000
--- a/docs/contracts/v2/reference/smart-contracts/05-router01.md
+++ /dev/null
@@ -1,512 +0,0 @@
----
-id: router-01
-title: Router01
----
-
-> t1V2Router01 should not be used any longer, because of the discovery of a [low severity bug](../smart-contracts/router-01#getamountin) and the fact that some methods do not work with tokens that take fees on transfer. The current recommendation is to use [UniswapV2Router02](../smart-contracts/router-02).
-
-# Code
-
-[`UniswapV2Router01.sol`](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router01.sol)
-
-# Address
-
-`UniswapV2Router01` is deployed at `0xf164fC0Ec4E93095b804a4795bBe1e041497b92a` on the Ethereum [mainnet](https://etherscan.io/address/0xf164fC0Ec4E93095b804a4795bBe1e041497b92a), and the [Ropsten](https://ropsten.etherscan.io/address/0xf164fC0Ec4E93095b804a4795bBe1e041497b92a), [Rinkeby](https://rinkeby.etherscan.io/address/0xf164fC0Ec4E93095b804a4795bBe1e041497b92a), [Görli](https://goerli.etherscan.io/address/0xf164fC0Ec4E93095b804a4795bBe1e041497b92a), and [Kovan](https://kovan.etherscan.io/address/0xf164fC0Ec4E93095b804a4795bBe1e041497b92a) testnets. It was built from commit [2ad7da2](https://github.com/Uniswap/uniswap-v2-periphery/tree/2ad7da28a6f70ec4299364bc1608af8f30e7646b).
-
-# Read-Only Functions
-
-## factory
-
-```solidity
-function factory() external pure returns (address);
-```
-
-Returns [factory address](../smart-contracts/factory#address).
-
-## WETH
-
-```solidity
-function WETH() external pure returns (address);
-```
-
-Returns the [canonical WETH address](https://blog.0xproject.com/canonical-weth-a9aa7d0279dd) on the Ethereum [mainnet](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2), or the [Ropsten](https://ropsten.etherscan.io/address/0xc778417e063141139fce010982780140aa0cd5ab), [Rinkeby](https://rinkeby.etherscan.io/address/0xc778417e063141139fce010982780140aa0cd5ab), [Görli](https://goerli.etherscan.io/address/0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6), or [Kovan](https://kovan.etherscan.io/address/0xd0a1e359811322d97991e03f863a0c30c2cf029c) testnets.
-
-# State-Changing Functions
-
-## addLiquidity
-
-```solidity
-function addLiquidity(
- address tokenA,
- address tokenB,
- uint amountADesired,
- uint amountBDesired,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline
-) external returns (uint amountA, uint amountB, uint liquidity);
-```
-
-Adds liquidity to an ERC-20⇄ERC-20 pool.
-
-- To cover all possible scenarios, `msg.sender` should have already given the router an allowance of at least amountADesired/amountBDesired on tokenA/tokenB.
-- Always adds assets at the ideal ratio, according to the price when the transaction is executed.
-- If a pool for the passed tokens does not exists, one is created automatically, and exactly amountADesired/amountBDesired tokens are added.
-
-| Name | Type | |
-| :------------- | :-------- | :------------------------------------------------------------------------------------------------------------- |
-| tokenA | `address` | A pool token. |
-| tokenB | `address` | A pool token. |
-| amountADesired | `uint` | The amount of tokenA to add as liquidity if the B/A price is <= amountBDesired/amountADesired (A depreciates). |
-| amountBDesired | `uint` | The amount of tokenB to add as liquidity if the A/B price is <= amountADesired/amountBDesired (B depreciates). |
-| amountAMin | `uint` | Bounds the extent to which the B/A price can go up before the transaction reverts. Must be <= amountADesired. |
-| amountBMin | `uint` | Bounds the extent to which the A/B price can go up before the transaction reverts. Must be <= amountBDesired. |
-| to | `address` | Recipient of the liquidity tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountA | `uint` | The amount of tokenA sent to the pool. |
-| amountB | `uint` | The amount of tokenB sent to the pool. |
-| liquidity | `uint` | The amount of liquidity tokens minted. |
-
-## addLiquidityETH
-
-```solidity
-function addLiquidityETH(
- address token,
- uint amountTokenDesired,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
-) external payable returns (uint amountToken, uint amountETH, uint liquidity);
-```
-
-Adds liquidity to an ERC-20⇄WETH pool with ETH.
-
-- To cover all possible scenarios, `msg.sender` should have already given the router an allowance of at least amountTokenDesired on token.
-- Always adds assets at the ideal ratio, according to the price when the transaction is executed.
-- `msg.value` is treated as a amountETHDesired.
-- Leftover ETH, if any, is returned to `msg.sender`.
-- If a pool for the passed token and WETH does not exists, one is created automatically, and exactly amountTokenDesired/`msg.value` tokens are added.
-
-| Name | Type | |
-| :----------------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------ |
-| token | `address` | A pool token. |
-| amountTokenDesired | `uint` | The amount of token to add as liquidity if the WETH/token price is <= `msg.value`/amountTokenDesired (token depreciates). |
-| `msg.value` (amountETHDesired) | `uint` | The amount of ETH to add as liquidity if the token/WETH price is <= amountTokenDesired/`msg.value` (WETH depreciates). |
-| amountTokenMin | `uint` | Bounds the extent to which the WETH/token price can go up before the transaction reverts. Must be <= amountTokenDesired. |
-| amountETHMin | `uint` | Bounds the extent to which the token/WETH price can go up before the transaction reverts. Must be <= `msg.value`. |
-| to | `address` | Recipient of the liquidity tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountToken | `uint` | The amount of token sent to the pool. |
-| amountETH | `uint` | The amount of ETH converted to WETH and sent to the pool. |
-| liquidity | `uint` | The amount of liquidity tokens minted. |
-
-## removeLiquidity
-
-```solidity
-function removeLiquidity(
- address tokenA,
- address tokenB,
- uint liquidity,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline
-) external returns (uint amountA, uint amountB);
-```
-
-Removes liquidity from an ERC-20⇄ERC-20 pool.
-
-- `msg.sender` should have already given the router an allowance of at least liquidity on the pool.
-
-| Name | Type | |
-| :--------- | :-------- | :------------------------------------------------------------------------------------ |
-| tokenA | `address` | A pool token. |
-| tokenB | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountAMin | `uint` | The minimum amount of tokenA that must be received for the transaction not to revert. |
-| amountBMin | `uint` | The minimum amount of tokenB that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountA | `uint` | The amount of tokenA received. |
-| amountB | `uint` | The amount of tokenB received. |
-
-## removeLiquidityETH
-
-```solidity
-function removeLiquidityETH(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
-) external returns (uint amountToken, uint amountETH);
-```
-
-Removes liquidity from an ERC-20⇄WETH pool and receive ETH.
-
-- `msg.sender` should have already given the router an allowance of at least liquidity on the pool.
-
-| Name | Type | |
-| :------------- | :-------- | :----------------------------------------------------------------------------------- |
-| token | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountTokenMin | `uint` | The minimum amount of token that must be received for the transaction not to revert. |
-| amountETHMin | `uint` | The minimum amount of ETH that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountToken | `uint` | The amount of token received. |
-| amountETH | `uint` | The amount of ETH received. |
-
-## removeLiquidityWithPermit
-
-```solidity
-function removeLiquidityWithPermit(
- address tokenA,
- address tokenB,
- uint liquidity,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
-) external returns (uint amountA, uint amountB);
-```
-
-Removes liquidity from an ERC-20⇄ERC-20 pool without pre-approval, thanks to [permit](pair-erc-20#permit).
-
-| Name | Type | |
-| :--------- | :-------- | :------------------------------------------------------------------------------------ |
-| tokenA | `address` | A pool token. |
-| tokenB | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountAMin | `uint` | The minimum amount of tokenA that must be received for the transaction not to revert. |
-| amountBMin | `uint` | The minimum amount of tokenB that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| approveMax | `bool` | Whether or not the approval amount in the signature is for liquidity or `uint(-1)`. |
-| v | `uint8` | The v component of the permit signature. |
-| r | `bytes32` | The r component of the permit signature. |
-| s | `bytes32` | The s component of the permit signature. |
-| | | |
-| amountA | `uint` | The amount of tokenA received. |
-| amountB | `uint` | The amount of tokenB received. |
-
-## removeLiquidityETHWithPermit
-
-```solidity
-function removeLiquidityETHWithPermit(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
-) external returns (uint amountToken, uint amountETH);
-```
-
-Removes liquidity from an ERC-20⇄WETTH pool and receive ETH without pre-approval, thanks to [permit](pair-erc-20#permit).
-
-| Name | Type | |
-| :------------- | :-------- | :----------------------------------------------------------------------------------- |
-| token | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountTokenMin | `uint` | The minimum amount of token that must be received for the transaction not to revert. |
-| amountETHMin | `uint` | The minimum amount of ETH that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| approveMax | `bool` | Whether or not the approval amount in the signature is for liquidity or `uint(-1)`. |
-| v | `uint8` | The v component of the permit signature. |
-| r | `bytes32` | The r component of the permit signature. |
-| s | `bytes32` | The s component of the permit signature. |
-| | | |
-| amountToken | `uint` | The amount of token received. |
-| amountETH | `uint` | The amount of ETH received. |
-
-## swapExactTokensForTokens
-
-```solidity
-function swapExactTokensForTokens(
- uint amountIn,
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
-) external returns (uint[] memory amounts);
-```
-
-Swaps an exact amount of input tokens for as many output tokens as possible, along the route determined by the path. The first element of path is the input token, the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- `msg.sender` should have already given the router an allowance of at least amountIn on the input token.
-
-| Name | Type | |
-| :----------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountIn | `uint` | The amount of input tokens to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapTokensForExactTokens
-
-```solidity
-function swapTokensForExactTokens(
- uint amountOut,
- uint amountInMax,
- address[] calldata path,
- address to,
- uint deadline
-) external returns (uint[] memory amounts);
-```
-
-Receive an exact amount of output tokens for as few input tokens as possible, along the route determined by the path. The first element of path is the input token, the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- `msg.sender` should have already given the router an allowance of at least amountInMax on the input token.
-
-| Name | Type | |
-| :---------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountOut | `uint` | The amount of output tokens to receive. |
-| amountInMax | `uint` | The maximum amount of input tokens that can be required before the transaction reverts. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapExactETHForTokens
-
-```solidity
-function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
-```
-
-Swaps an exact amount of ETH for as many output tokens as possible, along the route determined by the path. The first element of path must be [WETH](#weth), the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-| Name | Type | |
-| :--------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| `msg.value` (amountIn) | `uint` | The amount of ETH to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapTokensForExactETH
-
-```solidity
-function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
- external
- returns (uint[] memory amounts);
-```
-
-Receive an exact amount of ETH for as few input tokens as possible, along the route determined by the path. The first element of path is the input token, the last must be [WETH](#weth), and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- `msg.sender` should have already given the router an allowance of at least amountInMax on the input token.
-- If the to address is a smart contract, it must have the ability to receive ETH.
-
-| Name | Type | |
-| :---------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountOut | `uint` | The amount of ETH to receive. |
-| amountInMax | `uint` | The maximum amount of input tokens that can be required before the transaction reverts. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of ETH. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapExactTokensForETH
-
-```solidity
-function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- returns (uint[] memory amounts);
-```
-
-Swaps an exact amount of tokens for as much ETH as possible, along the route determined by the path. The first element of path is the input token, the last must be [WETH](#weth), and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- If the to address is a smart contract, it must have the ability to receive ETH.
-
-| Name | Type | |
-| :----------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountIn | `uint` | The amount of input tokens to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the ETH. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapETHForExactTokens
-
-```solidity
-function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
-```
-
-Receive an exact amount of tokens for as little ETH as possible, along the route determined by the path. The first element of path must be [WETH](#weth), the last is the output token and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- Leftover ETH, if any, is returned to `msg.sender`.
-
-| Name | Type | |
-| :------------------------ | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountOut | `uint` | The amount of tokens to receive. |
-| `msg.value` (amountInMax) | `uint` | The maximum amount of ETH that can be required before the transaction reverts. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## quote
-
-See [quote](library#quote).
-
-## getAmountOut
-
-See [getAmountOut](library#getamountout).
-
-## getAmountIn
-
-**This function contains a low severity bug, do not use.**
-
-## getAmountsOut
-
-```solidity
-function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts);
-```
-
-See [getAmountsOut](library#getamountsout).
-
-## getAmountsIn
-
-```solidity
-function getAmountsIn(uint amountOut, address[] memory path) public view returns (uint[] memory amounts);
-```
-
-See[getAmountsIn](library#getamountsin).
-
-# Interface
-
-```solidity
-import '@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol';
-```
-
-```solidity
-pragma solidity >=0.6.2;
-
-interface IUniswapV2Router01 {
- function factory() external pure returns (address);
- function WETH() external pure returns (address);
-
- function addLiquidity(
- address tokenA,
- address tokenB,
- uint amountADesired,
- uint amountBDesired,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline
- ) external returns (uint amountA, uint amountB, uint liquidity);
- function addLiquidityETH(
- address token,
- uint amountTokenDesired,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
- ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
- function removeLiquidity(
- address tokenA,
- address tokenB,
- uint liquidity,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline
- ) external returns (uint amountA, uint amountB);
- function removeLiquidityETH(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
- ) external returns (uint amountToken, uint amountETH);
- function removeLiquidityWithPermit(
- address tokenA,
- address tokenB,
- uint liquidity,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
- ) external returns (uint amountA, uint amountB);
- function removeLiquidityETHWithPermit(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
- ) external returns (uint amountToken, uint amountETH);
- function swapExactTokensForTokens(
- uint amountIn,
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
- ) external returns (uint[] memory amounts);
- function swapTokensForExactTokens(
- uint amountOut,
- uint amountInMax,
- address[] calldata path,
- address to,
- uint deadline
- ) external returns (uint[] memory amounts);
- function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
- function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
- external
- returns (uint[] memory amounts);
- function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- returns (uint[] memory amounts);
- function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
-
- function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
- function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
- function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
- function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
- function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
-}
-```
-
-# ABI
-
-```typescript
-import IUniswapV2Router01 from '@uniswap/v2-periphery/build/IUniswapV2Router01.json'
-```
-
-[https://unpkg.com/@uniswap/v2-periphery@1.0.0-beta.0/build/IUniswapV2Router01.json](https://unpkg.com/@uniswap/v2-periphery@1.0.0-beta.0/build/IUniswapV2Router01.json)
diff --git a/docs/contracts/v2/reference/smart-contracts/06-router02.md b/docs/contracts/v2/reference/smart-contracts/06-router02.md
deleted file mode 100644
index 5c07b7b88..000000000
--- a/docs/contracts/v2/reference/smart-contracts/06-router02.md
+++ /dev/null
@@ -1,681 +0,0 @@
----
-id: router-02
-title: Router02
----
-
-Because routers are stateless and do not hold token balances, they can be replaced safely and trustlessly, if necessary. This may happen if more efficient smart contract patterns are discovered, or if additional functionality is desired. For this reason, routers have _release numbers_, starting at `01`. This is currently recommended release, `02`.
-
-# Code
-
-[`UniswapV2Router02.sol`](https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/UniswapV2Router02.sol)
-
-# Address
-
-`UniswapV2Router02` is deployed at `0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D` on the Ethereum [mainnet](https://etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), and the [Ropsten](https://ropsten.etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), [Rinkeby](https://rinkeby.etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), [Görli](https://goerli.etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D), and [Kovan](https://kovan.etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D) testnets. It was built from commit [6961711](https://github.com/Uniswap/uniswap-v2-periphery/tree/69617118cda519dab608898d62aaa79877a61004).
-
-# Read-Only Functions
-
-## factory
-
-```solidity
-function factory() external pure returns (address);
-```
-
-Returns [factory address](../smart-contracts/factory#address).
-
-## WETH
-
-```solidity
-function WETH() external pure returns (address);
-```
-
-Returns the [canonical WETH address](https://blog.0xproject.com/canonical-weth-a9aa7d0279dd) on the Ethereum [mainnet](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2), or the [Ropsten](https://ropsten.etherscan.io/address/0xc778417e063141139fce010982780140aa0cd5ab), [Rinkeby](https://rinkeby.etherscan.io/address/0xc778417e063141139fce010982780140aa0cd5ab), [Görli](https://goerli.etherscan.io/address/0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6), or [Kovan](https://kovan.etherscan.io/address/0xd0a1e359811322d97991e03f863a0c30c2cf029c) testnets.
-
-## quote
-
-See [quote](../smart-contracts/library#quote).
-
-## getAmountOut
-
-See [getAmountOut](../smart-contracts/library#getamountout).
-
-## getAmountIn
-
-See [getAmountIn](../smart-contracts/library#getamountin).
-
-## getAmountsOut
-
-```solidity
-function getAmountsOut(uint amountIn, address[] memory path) public view returns (uint[] memory amounts);
-```
-
-See [getAmountsOut](../smart-contracts/library#getamountsout).
-
-## getAmountsIn
-
-```solidity
-function getAmountsIn(uint amountOut, address[] memory path) public view returns (uint[] memory amounts);
-```
-
-See [getAmountsIn](../smart-contracts/library#getamountsin).
-
-# State-Changing Functions
-
-## addLiquidity
-
-```solidity
-function addLiquidity(
- address tokenA,
- address tokenB,
- uint amountADesired,
- uint amountBDesired,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline
-) external returns (uint amountA, uint amountB, uint liquidity);
-```
-
-Adds liquidity to an ERC-20⇄ERC-20 pool.
-
-- To cover all possible scenarios, `msg.sender` should have already given the router an allowance of at least amountADesired/amountBDesired on tokenA/tokenB.
-- Always adds assets at the ideal ratio, according to the price when the transaction is executed.
-- If a pool for the passed tokens does not exists, one is created automatically, and exactly amountADesired/amountBDesired tokens are added.
-
-| Name | Type | |
-| :------------- | :-------- | :------------------------------------------------------------------------------------------------------------- |
-| tokenA | `address` | A pool token. |
-| tokenB | `address` | A pool token. |
-| amountADesired | `uint` | The amount of tokenA to add as liquidity if the B/A price is <= amountBDesired/amountADesired (A depreciates). |
-| amountBDesired | `uint` | The amount of tokenB to add as liquidity if the A/B price is <= amountADesired/amountBDesired (B depreciates). |
-| amountAMin | `uint` | Bounds the extent to which the B/A price can go up before the transaction reverts. Must be <= amountADesired. |
-| amountBMin | `uint` | Bounds the extent to which the A/B price can go up before the transaction reverts. Must be <= amountBDesired. |
-| to | `address` | Recipient of the liquidity tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountA | `uint` | The amount of tokenA sent to the pool. |
-| amountB | `uint` | The amount of tokenB sent to the pool. |
-| liquidity | `uint` | The amount of liquidity tokens minted. |
-
-## addLiquidityETH
-
-```solidity
-function addLiquidityETH(
- address token,
- uint amountTokenDesired,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
-) external payable returns (uint amountToken, uint amountETH, uint liquidity);
-```
-
-Adds liquidity to an ERC-20⇄WETH pool with ETH.
-
-- To cover all possible scenarios, `msg.sender` should have already given the router an allowance of at least amountTokenDesired on token.
-- Always adds assets at the ideal ratio, according to the price when the transaction is executed.
-- `msg.value` is treated as a amountETHDesired.
-- Leftover ETH, if any, is returned to `msg.sender`.
-- If a pool for the passed token and WETH does not exists, one is created automatically, and exactly amountTokenDesired/`msg.value` tokens are added.
-
-| Name | Type | |
-| :----------------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------ |
-| token | `address` | A pool token. |
-| amountTokenDesired | `uint` | The amount of token to add as liquidity if the WETH/token price is <= `msg.value`/amountTokenDesired (token depreciates). |
-| `msg.value` (amountETHDesired) | `uint` | The amount of ETH to add as liquidity if the token/WETH price is <= amountTokenDesired/`msg.value` (WETH depreciates). |
-| amountTokenMin | `uint` | Bounds the extent to which the WETH/token price can go up before the transaction reverts. Must be <= amountTokenDesired. |
-| amountETHMin | `uint` | Bounds the extent to which the token/WETH price can go up before the transaction reverts. Must be <= `msg.value`. |
-| to | `address` | Recipient of the liquidity tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountToken | `uint` | The amount of token sent to the pool. |
-| amountETH | `uint` | The amount of ETH converted to WETH and sent to the pool. |
-| liquidity | `uint` | The amount of liquidity tokens minted. |
-
-## removeLiquidity
-
-```solidity
-function removeLiquidity(
- address tokenA,
- address tokenB,
- uint liquidity,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline
-) external returns (uint amountA, uint amountB);
-```
-
-Removes liquidity from an ERC-20⇄ERC-20 pool.
-
-- `msg.sender` should have already given the router an allowance of at least liquidity on the pool.
-
-| Name | Type | |
-| :--------- | :-------- | :------------------------------------------------------------------------------------ |
-| tokenA | `address` | A pool token. |
-| tokenB | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountAMin | `uint` | The minimum amount of tokenA that must be received for the transaction not to revert. |
-| amountBMin | `uint` | The minimum amount of tokenB that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountA | `uint` | The amount of tokenA received. |
-| amountB | `uint` | The amount of tokenB received. |
-
-## removeLiquidityETH
-
-```solidity
-function removeLiquidityETH(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
-) external returns (uint amountToken, uint amountETH);
-```
-
-Removes liquidity from an ERC-20⇄WETH pool and receive ETH.
-
-- `msg.sender` should have already given the router an allowance of at least liquidity on the pool.
-
-| Name | Type | |
-| :------------- | :-------- | :----------------------------------------------------------------------------------- |
-| token | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountTokenMin | `uint` | The minimum amount of token that must be received for the transaction not to revert. |
-| amountETHMin | `uint` | The minimum amount of ETH that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountToken | `uint` | The amount of token received. |
-| amountETH | `uint` | The amount of ETH received. |
-
-## removeLiquidityWithPermit
-
-```solidity
-function removeLiquidityWithPermit(
- address tokenA,
- address tokenB,
- uint liquidity,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
-) external returns (uint amountA, uint amountB);
-```
-
-Removes liquidity from an ERC-20⇄ERC-20 pool without pre-approval, thanks to [permit](pair-erc-20#permit).
-
-| Name | Type | |
-| :--------- | :-------- | :------------------------------------------------------------------------------------ |
-| tokenA | `address` | A pool token. |
-| tokenB | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountAMin | `uint` | The minimum amount of tokenA that must be received for the transaction not to revert. |
-| amountBMin | `uint` | The minimum amount of tokenB that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| approveMax | `bool` | Whether or not the approval amount in the signature is for liquidity or `uint(-1)`. |
-| v | `uint8` | The v component of the permit signature. |
-| r | `bytes32` | The r component of the permit signature. |
-| s | `bytes32` | The s component of the permit signature. |
-| | | |
-| amountA | `uint` | The amount of tokenA received. |
-| amountB | `uint` | The amount of tokenB received. |
-
-## removeLiquidityETHWithPermit
-
-```solidity
-function removeLiquidityETHWithPermit(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
-) external returns (uint amountToken, uint amountETH);
-```
-
-Removes liquidity from an ERC-20⇄WETTH pool and receive ETH without pre-approval, thanks to [permit](pair-erc-20#permit).
-
-| Name | Type | |
-| :------------- | :-------- | :----------------------------------------------------------------------------------- |
-| token | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountTokenMin | `uint` | The minimum amount of token that must be received for the transaction not to revert. |
-| amountETHMin | `uint` | The minimum amount of ETH that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| approveMax | `bool` | Whether or not the approval amount in the signature is for liquidity or `uint(-1)`. |
-| v | `uint8` | The v component of the permit signature. |
-| r | `bytes32` | The r component of the permit signature. |
-| s | `bytes32` | The s component of the permit signature. |
-| | | |
-| amountToken | `uint` | The amount of token received. |
-| amountETH | `uint` | The amount of ETH received. |
-
-## removeLiquidityETHSupportingFeeOnTransferTokens
-
-```solidity
-function removeLiquidityETHSupportingFeeOnTransferTokens(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
-) external returns (uint amountETH);
-```
-
-Identical to [removeLiquidityETH](#removeliquidityeth), but succeeds for tokens that take a fee on transfer.
-
-- `msg.sender` should have already given the router an allowance of at least liquidity on the pool.
-
-| Name | Type | |
-| :------------- | :-------- | :----------------------------------------------------------------------------------- |
-| token | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountTokenMin | `uint` | The minimum amount of token that must be received for the transaction not to revert. |
-| amountETHMin | `uint` | The minimum amount of ETH that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amountETH | `uint` | The amount of ETH received. |
-
-## removeLiquidityETHWithPermitSupportingFeeOnTransferTokens
-
-```solidity
-function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
-) external returns (uint amountETH);
-```
-
-Identical to [removeLiquidityETHWithPermit](#removeliquidityethwithpermit), but succeeds for tokens that take a fee on transfer.
-
-| Name | Type | |
-| :------------- | :-------- | :----------------------------------------------------------------------------------- |
-| token | `address` | A pool token. |
-| liquidity | `uint` | The amount of liquidity tokens to remove. |
-| amountTokenMin | `uint` | The minimum amount of token that must be received for the transaction not to revert. |
-| amountETHMin | `uint` | The minimum amount of ETH that must be received for the transaction not to revert. |
-| to | `address` | Recipient of the underlying assets. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| approveMax | `bool` | Whether or not the approval amount in the signature is for liquidity or `uint(-1)`. |
-| v | `uint8` | The v component of the permit signature. |
-| r | `bytes32` | The r component of the permit signature. |
-| s | `bytes32` | The s component of the permit signature. |
-| | | |
-| amountETH | `uint` | The amount of ETH received. |
-
-## swapExactTokensForTokens
-
-```solidity
-function swapExactTokensForTokens(
- uint amountIn,
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
-) external returns (uint[] memory amounts);
-```
-
-Swaps an exact amount of input tokens for as many output tokens as possible, along the route determined by the path. The first element of path is the input token, the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- `msg.sender` should have already given the router an allowance of at least amountIn on the input token.
-
-| Name | Type | |
-| :----------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountIn | `uint` | The amount of input tokens to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapTokensForExactTokens
-
-```solidity
-function swapTokensForExactTokens(
- uint amountOut,
- uint amountInMax,
- address[] calldata path,
- address to,
- uint deadline
-) external returns (uint[] memory amounts);
-```
-
-Receive an exact amount of output tokens for as few input tokens as possible, along the route determined by the path. The first element of path is the input token, the last is the output token, and any intermediate elements represent intermediate tokens to trade through (if, for example, a direct pair does not exist).
-
-- `msg.sender` should have already given the router an allowance of at least amountInMax on the input token.
-
-| Name | Type | |
-| :---------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountOut | `uint` | The amount of output tokens to receive. |
-| amountInMax | `uint` | The maximum amount of input tokens that can be required before the transaction reverts. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapExactETHForTokens
-
-```solidity
-function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
-```
-
-Swaps an exact amount of ETH for as many output tokens as possible, along the route determined by the path. The first element of path must be [WETH](#weth), the last is the output token, and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-| Name | Type | |
-| :--------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| `msg.value` (amountIn) | `uint` | The amount of ETH to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapTokensForExactETH
-
-```solidity
-function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
- external
- returns (uint[] memory amounts);
-```
-
-Receive an exact amount of ETH for as few input tokens as possible, along the route determined by the path. The first element of path is the input token, the last must be [WETH](#weth), and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- `msg.sender` should have already given the router an allowance of at least amountInMax on the input token.
-- If the to address is a smart contract, it must have the ability to receive ETH.
-
-| Name | Type | |
-| :---------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountOut | `uint` | The amount of ETH to receive. |
-| amountInMax | `uint` | The maximum amount of input tokens that can be required before the transaction reverts. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of ETH. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapExactTokensForETH
-
-```solidity
-function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- returns (uint[] memory amounts);
-```
-
-Swaps an exact amount of tokens for as much ETH as possible, along the route determined by the path. The first element of path is the input token, the last must be [WETH](#weth), and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- If the to address is a smart contract, it must have the ability to receive ETH.
-
-| Name | Type | |
-| :----------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountIn | `uint` | The amount of input tokens to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the ETH. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapETHForExactTokens
-
-```solidity
-function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
-```
-
-Receive an exact amount of tokens for as little ETH as possible, along the route determined by the path. The first element of path must be [WETH](#weth), the last is the output token and any intermediate elements represent intermediate pairs to trade through (if, for example, a direct pair does not exist).
-
-- Leftover ETH, if any, is returned to `msg.sender`.
-
-| Name | Type | |
-| :------------------------ | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountOut | `uint` | The amount of tokens to receive. |
-| `msg.value` (amountInMax) | `uint` | The maximum amount of ETH that can be required before the transaction reverts. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-| | | |
-| amounts | `uint[] memory` | The input token amount and all subsequent output token amounts. |
-
-## swapExactTokensForTokensSupportingFeeOnTransferTokens
-
-```solidity
-function swapExactTokensForTokensSupportingFeeOnTransferTokens(
- uint amountIn,
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
-) external;
-```
-
-Identical to [swapExactTokensForTokens](#swapexacttokensfortokens), but succeeds for tokens that take a fee on transfer.
-
-- `msg.sender` should have already given the router an allowance of at least amountIn on the input token.
-
-| Name | Type | |
-| :----------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountIn | `uint` | The amount of input tokens to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-
-## swapExactETHForTokensSupportingFeeOnTransferTokens
-
-```solidity
-function swapExactETHForTokensSupportingFeeOnTransferTokens(
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
-) external payable;
-```
-
-Identical to [swapExactETHForTokens](#swapexactethfortokens), but succeeds for tokens that take a fee on transfer.
-
-| Name | Type | |
-| :--------------------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| `msg.value` (amountIn) | `uint` | The amount of ETH to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the output tokens. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-
-## swapExactTokensForETHSupportingFeeOnTransferTokens
-
-```solidity
-function swapExactTokensForETHSupportingFeeOnTransferTokens(
- uint amountIn,
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
-) external;
-```
-
-Identical to [swapExactTokensForETH](#swapexacttokensforeth), but succeeds for tokens that take a fee on transfer.
-
-- If the to address is a smart contract, it must have the ability to receive ETH.
-
-| Name | Type | |
-| :----------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------- |
-| amountIn | `uint` | The amount of input tokens to send. |
-| amountOutMin | `uint` | The minimum amount of output tokens that must be received for the transaction not to revert. |
-| path | `address[] calldata` | An array of token addresses. `path.length` must be >= 2. Pools for each consecutive pair of addresses must exist and have liquidity. |
-| to | `address` | Recipient of the ETH. |
-| deadline | `uint` | Unix timestamp after which the transaction will revert. |
-
-# Interface
-
-```solidity
-import '@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol';
-```
-
-```solidity
-pragma solidity >=0.6.2;
-
-interface IUniswapV2Router01 {
- function factory() external pure returns (address);
- function WETH() external pure returns (address);
-
- function addLiquidity(
- address tokenA,
- address tokenB,
- uint amountADesired,
- uint amountBDesired,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline
- ) external returns (uint amountA, uint amountB, uint liquidity);
- function addLiquidityETH(
- address token,
- uint amountTokenDesired,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
- ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
- function removeLiquidity(
- address tokenA,
- address tokenB,
- uint liquidity,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline
- ) external returns (uint amountA, uint amountB);
- function removeLiquidityETH(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
- ) external returns (uint amountToken, uint amountETH);
- function removeLiquidityWithPermit(
- address tokenA,
- address tokenB,
- uint liquidity,
- uint amountAMin,
- uint amountBMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
- ) external returns (uint amountA, uint amountB);
- function removeLiquidityETHWithPermit(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
- ) external returns (uint amountToken, uint amountETH);
- function swapExactTokensForTokens(
- uint amountIn,
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
- ) external returns (uint[] memory amounts);
- function swapTokensForExactTokens(
- uint amountOut,
- uint amountInMax,
- address[] calldata path,
- address to,
- uint deadline
- ) external returns (uint[] memory amounts);
- function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
- function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
- external
- returns (uint[] memory amounts);
- function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- returns (uint[] memory amounts);
- function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
-
- function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
- function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
- function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
- function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
- function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
-}
-
-interface IUniswapV2Router02 is IUniswapV2Router01 {
- function removeLiquidityETHSupportingFeeOnTransferTokens(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline
- ) external returns (uint amountETH);
- function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
- address token,
- uint liquidity,
- uint amountTokenMin,
- uint amountETHMin,
- address to,
- uint deadline,
- bool approveMax, uint8 v, bytes32 r, bytes32 s
- ) external returns (uint amountETH);
-
- function swapExactTokensForTokensSupportingFeeOnTransferTokens(
- uint amountIn,
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
- ) external;
- function swapExactETHForTokensSupportingFeeOnTransferTokens(
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
- ) external payable;
- function swapExactTokensForETHSupportingFeeOnTransferTokens(
- uint amountIn,
- uint amountOutMin,
- address[] calldata path,
- address to,
- uint deadline
- ) external;
-}
-```
-
-# ABI
-
-```typescript
-import IUniswapV2Router02 from '@uniswap/v2-periphery/build/IUniswapV2Router02.json'
-```
-
-[https://unpkg.com/@uniswap/v2-periphery@1.1.0-beta.0/build/IUniswapV2Router02.json](https://unpkg.com/@uniswap/v2-periphery@1.1.0-beta.0/build/IUniswapV2Router02.json)
diff --git a/docs/contracts/v2/reference/smart-contracts/07-common-errors.md b/docs/contracts/v2/reference/smart-contracts/07-common-errors.md
deleted file mode 100644
index a2814baf7..000000000
--- a/docs/contracts/v2/reference/smart-contracts/07-common-errors.md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-id: common-errors
-title: Common Errors
----
-
-This document covers a few error codes frequently encountered while building on t1 V2.
-
-# t1V2: K
-
-This is an error that is frequently encountered, and requires a bit of context to understand it.
-
-The t1 constant product formula is “X \* Y = K”. Where X and Y represent the respective reserve balances of two ERC-20 tokens, and “K” represents the product of the reserves. It is this “K” to which the “K” error refers.
-
-In essence, the “K” error means that a trade was attempted that somehow left the trading pair with less reserves than should be there, and as a result the transaction is reverted.
-
-This can have a few different causes.
-
-## Fee On Transfer Tokens
-
-The most common examples are caused by “fee on transfer” tokens.
-
-### Inclusive Fee On Transfer Tokens
-
-In most cases, a fee on transfer token burns or diverts a small portion of every transfer such that the recipient of the transfer ends up with slightly less than the sender gave. This is called an “inclusive” fee on transfer.
-
-In the case of inclusive fee on transfer tokens, you can use the corresponding swap functions in the router contract which end with [“SupportingFeeOnTransfer”](../smart-contracts/router-02#swapexacttokensfortokenssupportingfeeontransfertokens). These functions succeed by adjusting the “amountOutMin” parameter to check the recipient amount rather than the sending amount when calculating the invariant.
-
-### Exclusive Fee On Transfer Tokens
-
-The other type, “exclusive” fee on transfer tokens, work by sending an additional transfer from the sending address after the primary transfer. Because the router contract cannot anticipate this trailing transfer when calculating the invariant, the transaction will either revert, or partially succeed by sending the primary transfer but breaking the pool upon the trailing transfer.
-
-In the case of exclusive fee on transfer tokens, the SupportingFeeOnTransfer functions may work, but there will be some tokens designed in such a way that they fundamentally break the router. If you are still getting a “K” error when using these functions, you may need to make a fork of the router contract that accommodates your token design.
-
-## Rebasing Tokens
-
-The less common instance of the “K” error is as a result of rebasing tokens.
-
-Rebasing tokens can alter the balance of any addresses holding their tokens arbitrarily. This usually works at pre specified intervals and as a result of a handful of variables used in the economics of a rebasing token.
-
-Rebasing tokens typically work in two ways.
-
-### Negative Rebasing Tokens
-
-A negative rebasing token, the more common variant, deflates the balances of token owners. Because the rebasing is not triggered by transfers, the router cannot expect when or how a rebasing will happen. Once it does, the pair reserves will be unbalanced, and the next person to transact with the pair will bear the cost of the delta as a result of the rebasing.
-
-Needless to say, an unenviable position.
-
-Negative rebasing tokens have solved this error by altering their token contract to call [sync](../smart-contracts/pair#sync) on the trading pair at the end of every transaction involving the t1 router contract. Those interested in forking the router contract should anticipate that negative rebasing tokens will break the pair until the token contracts are updated to accommodate your new router.
-
-### Positive Rebasing Tokens
-
-Positive rebasing tokens arbitrarily increase the balances of token holders. When a positive rebase happens, it creates a surplus that is unaccounted for in the trading pair. Because the extra tokens are unaccounted for in the trading pair, anyone can call skim() on the trading pair and effectively steal the positive difference from the rebalance.
-
-While positive rebalancing does not break any functionality of t1, those interested in them should be aware that the positive balance found in any pair will be freely available for taking.
-
-### A Note on Rebasing Tokens
-
-For those interested in building a rebasing token, a word of caution: many contracts involving decentralized trading and liquidity provisioning will break upon interacting with your token. An example approach that will lead to much easier integration in future protocols can be found in [CHAI](https://chai.money/about.html). CHAI uses a wrapper function that contains the rebalancing within the wrapper, such that the redeemable token can be easily integrated into many different systems.
-
-# t1V2: LOCKED
-
-The LOCKED error is a guard built into the router contract that prevents customized reentrancy contracts from attempting to return malicious code into the router contract at the end of a transaction.
-
-This error is commonly encountered when using Ganache CLI to fork the Ethereum mainnet to a local instance as a part of a development environment. The error is a bug in Ganache-Cli that will hopefully be fixed in a future release by the truffle team.
-
-A temporary fix is available by simply restarting the local fork.
-
-# No Access To Archive Node
-
-This is an error with either Metamask or Ganache-CLI. It usually occurs after a local fork is instantiated and contracts are deployed but there is one failed transaction.
-
-A temporary fix is available by restarting the local fork and resetting metamask.
-
-# t1V2: TRANSFER_FAILED
-
-This means the core contract was unable to send tokens to the recipient. This is most likely due to a scam token, where the token owner has maliciously disabled the transfer function in a way that allows users to buy the token, but not sell them.
-
-# t1V2: EXPIRED
-
-This is a result of a transaction that took too long to be broadcast to the mainnet.
-
-Uniswap does not set gas prices natively, so most users default to the suggested gas prices in metamask. Sometimes metamask gets it wrong, though, and sets the gas price too low. If a swap takes more than 20 minutes to execute, the core contract won’t allow it to go through.
-
-# Action Requires an Active Reserve
-
-VM Exception While Processing Transaction: Action Requires an Active Reserve
-
-This is potentially a ganache bug encountered when working on flash swaps. We haven't figured out the source of it yet.
-
-# Unable To Approve Transaction On The Front End
-
-There are rare circumstances where users are unable to approve a token on the t1 front end.
-
-This is a result of some token contracts taking steps to defend against malicious contracts that attempt to front run approvals and steal a users tokens. It happens only when the user is trying to increase an approval allowance from a preallocated amount to a larger one, and only happens with a few token contracts.
-
-The solution is have the user manually set the router contract approval amount to zero, then to the number they want. The easiest way to do this is through Etherscan.
diff --git a/docs/contracts/v2/reference/smart-contracts/08-deployment-addresses.md b/docs/contracts/v2/reference/smart-contracts/08-deployment-addresses.md
deleted file mode 100644
index 631959b66..000000000
--- a/docs/contracts/v2/reference/smart-contracts/08-deployment-addresses.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-id: v2-deployments
-title: V2 Deployment Addresses
----
-
-# t1 v2 Contract Deployments
-
-Contract addresses for the [`Uniswap V2 Factory`](https://github.com/Uniswap/v2-core/blob/master/contracts/UniswapV2Factory.sol) and the [`Uniswap V2Router02`](https://github.com/Uniswap/v2-periphery/blob/master/contracts/UniswapV2Router02.sol)
-
-| Network | Factory Contract Address | V2Router02 Contract Address |
-| ---------------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
-| Mainnet | `0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f` | `0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D` |
-| Sepolia | `0xF62c03E08ada871A0bEb309762E260a7a6a880E6` | `0xeE567Fe1712Faf6149d80dA1E6934E354124CfE3` |
-| Arbitrum | `0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9` | `0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24` |
-| Avalanche | `0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C` | `0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24` |
-| BNB Chain | `0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6` | `0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24` |
-| Base | `0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6` | `0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24` |
-| Optimism | `0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf` | `0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2` |
-| Polygon | `0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C` | `0xedf6066a2b290C185783862C7F4776A2C8077AD1` |
-| Blast | `0x5C346464d33F90bABaf70dB6388507CC889C1070` | `0xBB66Eb1c5e875933D44DAe661dbD80e5D9B03035` |
-| Zora | `0x0F797dC7efaEA995bB916f268D919d0a1950eE3C` | `0xa00F34A632630EFd15223B1968358bA4845bEEC7` |
-| WorldChain | `0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f` | `0x541aB7c31A119441eF3575F6973277DE0eF460bd` |
diff --git a/docs/contracts/v2/reference/smart-contracts/_category_.json b/docs/contracts/v2/reference/smart-contracts/_category_.json
deleted file mode 100644
index f7e489705..000000000
--- a/docs/contracts/v2/reference/smart-contracts/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Smart Contracts",
- "position": 4
-}
diff --git a/docs/contracts/v3/_category_.json b/docs/contracts/v3/_category_.json
deleted file mode 100644
index 99fed98ce..000000000
--- a/docs/contracts/v3/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "V3 Protocol",
- "position": 2,
- "collapsed": true
-}
diff --git a/docs/contracts/v3/guides/_category_.json b/docs/contracts/v3/guides/_category_.json
deleted file mode 100644
index 680904649..000000000
--- a/docs/contracts/v3/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 3,
- "collapsed": false
-}
diff --git a/docs/contracts/v3/guides/flash-integrations/Inheritance-constructors.md b/docs/contracts/v3/guides/flash-integrations/Inheritance-constructors.md
deleted file mode 100644
index d8177ef57..000000000
--- a/docs/contracts/v3/guides/flash-integrations/Inheritance-constructors.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-id: inheritance-constructors
-title: Getting Started
-sidebar_position: 1
----
-
-In this guide, we will write a smart contract that calls `flash` on a V3 pool and swaps the full amount withdrawn of `token0` and `token1` in the corresponding pools with the same token pair - but different fee tiers. After the swap, the contract will pay back the first pool and transfer profits to the original calling address.
-
-## Flash Transactions Overview
-
-Flash transactions are an approach to transferring tokens on Ethereum that transfer token balances _before_ the necessary conditions are met for those balances to be transferred. In the context of a swap, this would mean the output is sent from the swap before the input is received.
-
-Uniswap V3 introduces a new function, `flash`, within the Pool contract. `Flash` withdraws a specified amount of both `token0` and `token1` to the `recipient` address. The withdrawn amount, plus the swap fees, will be due to the pool at the end of the transaction. `flash` includes a fourth parameter, `data`, which allows the caller to abi.encode any necessary data to be passed through the function and decoded later.
-
-```solidity
- function flash(
- address recipient,
- uint256 amount0,
- uint256 amount1,
- bytes calldata data
- ) external override lock noDelegateCall {
-```
-
-## The Flash Callback
-
-`flash` will withdraw the tokens, but how are they paid back? To understand this, we must look inside the flash function code. midway through the [**flash**](https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/UniswapV3Pool.sol#L791) function, we see this:
-
-```solidity
-IUniswapV3FlashCallback(msg.sender).uniswapV3FlashCallback(fee0, fee1, data);
-```
-
-This step calls the `FlashCallback` function on `msg.sender` - which passes the fee data needed to calculate the balances due to the pool, as well as any data encoded into the `data` parameter.
-
-In V3 there are three separate callback functions, `uniswapV3SwapCallback`, `uniswapV3MintCallback`, and `uniswapV3FlashCallback`, each available to be overridden with custom logic. To write our arbitrage contract, we'll be calling `flash` and overriding the `uniswapV3FlashCallback` with the steps needed to finish executing our transaction.
-
-## Inheriting The V3 Contracts
-
-Inherit `IUniswapV3FlashCallback` and `PeripheryPayments`, as we will use each in our program. Note these two inherited contracts already extend many other contracts that we will be using, such as [LowGasSafeMath](../../reference/core/libraries/LowGasSafeMath.md) which we [attach](https://docs.soliditylang.org/en/v0.7.6/contracts.html?highlight=using#using-for), to types `uint256` and `int256`.
-
-```solidity
-contract PairFlash is IUniswapV3FlashCallback, PeripheryPayments {
- using LowGasSafeMath for uint256;
- using LowGasSafeMath for int256;
-```
-
-Declare an immutable public variable `swapRouter` of type `ISwapRouter`:
-
-```solidity
- ISwapRouter public Immutable swapRouter;
-```
-
-Declare the constructor here, which is executed once when the contract is deployed. Our constructor hardcodes the address of the V3 router, factory, and the address of weth9, the [ERC-20 wrapper](https://weth.io/) for ether.
-
-```solidity
- constructor(
- ISwapRouter _swapRouter,
- address _factory,
- address _WETH9
- ) PeripheryImmutableState(_factory, _WETH9) {
- swapRouter = _swapRouter;
- }
-```
-
-The full import section and contract declaration:
-
-```solidity
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol';
-import '@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol';
-
-import '@uniswap/v3-periphery/contracts/base/PeripheryPayments.sol';
-import '@uniswap/v3-periphery/contracts/base/PeripheryImmutableState.sol';
-import '@uniswap/v3-periphery/contracts/libraries/PoolAddress.sol';
-import '@uniswap/v3-periphery/contracts/libraries/CallbackValidation.sol';
-import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
-import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
-
-
-
-contract PairFlash is IUniswapV3FlashCallback, PeripheryPayments {
- using LowGasSafeMath for uint256;
- using LowGasSafeMath for int256;
-
- ISwapRouter public immutable swapRouter;
-
- constructor(
- ISwapRouter _swapRouter,
- address _factory,
- address _WETH9
- ) PeripheryImmutableState(_factory, _WETH9) {
- swapRouter = _swapRouter;
- }
-```
diff --git a/docs/contracts/v3/guides/flash-integrations/_category_.json b/docs/contracts/v3/guides/flash-integrations/_category_.json
deleted file mode 100644
index da104a9d1..000000000
--- a/docs/contracts/v3/guides/flash-integrations/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Implement Flash Swaps",
- "position": 4
-}
diff --git a/docs/contracts/v3/guides/flash-integrations/calling-flash.md b/docs/contracts/v3/guides/flash-integrations/calling-flash.md
deleted file mode 100644
index 6ce986517..000000000
--- a/docs/contracts/v3/guides/flash-integrations/calling-flash.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-id: calling-flash
-title: Calling Flash
-sidebar_position: 2
----
-
-## Parameter Structs
-
-In order to call `flash`, we will need the flash parameters for the initial call, as well as any parameters we want to pass through to the callback.
-
-The `FlashParams` struct will contain the token addresses and amounts we wish to pull out of the pool, as well as the three fee tiers used to determine which pool we are withdrawing from, and which we will be swapping with.
-
-```solidity
- struct FlashParams {
- address token0;
- address token1;
- uint24 fee1;
- uint256 amount0;
- uint256 amount1;
- uint24 fee2;
- uint24 fee3;
- }
-```
-
-The `FlashCallbackData` struct will contain the data we want to send to the callback. This includes `poolKey`, which expresses the sorted tokens with the matched fee tier, returned by the [**PoolAddress**](https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/libraries/PoolAddress.sol) library.
-
-```solidity
- struct FlashCallbackData {
- uint256 amount0;
- uint256 amount1;
- address payer;
- PoolAddress.PoolKey poolKey;
- uint24 poolFee2;
- uint24 poolFee3;
- }
-```
-
-## Pool Key
-
-Now we'll start our function by assigning the relevant parameters from the `Flashparams` (which we have declared in memory as `params`) to our variable `poolKey`
-
-```solidity
- function initFlash(FlashParams memory params) external {
- PoolAddress.PoolKey memory poolKey =
- PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: params.fee1});
- }
-```
-
-Next we will declare `pool` as type [**IUniswapV3Pool**], which allows us to call `flash` on our desired pool contract.
-
-```solidity
- IUniswapV3Pool pool = IUniswapV3Pool(PoolAddress.computeAddress(factory, poolKey));
-```
-
-## Calling Flash
-
-Finally, we call `flash` on our previously declared `pool`. In the last parameter, we abi.encode the `FlashCallbackData`, which will be decoded in the callback and used to inform the next steps of the transaction.
-
-```solidity
- pool.flash(
- address(this),
- params.amount0,
- params.amount1,
- abi.encode(
- FlashCallbackData({
- amount0: params.amount0,
- amount1: params.amount1,
- payer: msg.sender,
- poolKey: poolKey,
- poolFee2: params.fee2,
- poolFee3: params.fee3
- })
- )
- );
-```
-
-The full function:
-
-```solidity
- //fee1 is the fee of the pool from the initial borrow
- //fee2 is the fee of the first pool to arb from
- //fee3 is the fee of the second pool to arb from
- struct FlashParams {
- address token0;
- address token1;
- uint24 fee1;
- uint256 amount0;
- uint256 amount1;
- uint24 fee2;
- uint24 fee3;
- }
-
- // fee2 and fee3 are the two other fees associated with the two other pools of token0 and token1
- struct FlashCallbackData {
- uint256 amount0;
- uint256 amount1;
- address payer;
- PoolAddress.PoolKey poolKey;
- uint24 poolFee2;
- uint24 poolFee3;
- }
-
-function initFlash(FlashParams memory params) external {
- PoolAddress.PoolKey memory poolKey =
- PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: params.fee1});
- IUniswapV3Pool pool = IUniswapV3Pool(PoolAddress.computeAddress(factory, poolKey));
- pool.flash(
- address(this),
- params.amount0,
- params.amount1,
- abi.encode(
- FlashCallbackData({
- amount0: params.amount0,
- amount1: params.amount1,
- payer: msg.sender,
- poolKey: poolKey,
- poolFee2: params.fee2,
- poolFee3: params.fee3
- })
- )
- );
- }
-```
diff --git a/docs/contracts/v3/guides/flash-integrations/final-contract.md b/docs/contracts/v3/guides/flash-integrations/final-contract.md
deleted file mode 100644
index 99942bfee..000000000
--- a/docs/contracts/v3/guides/flash-integrations/final-contract.md
+++ /dev/null
@@ -1,169 +0,0 @@
----
-id: final-contract
-title: The Final Contract
-sidebar_position: 4
----
-
-## The Full Contract
-
-```solidity
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol';
-import '@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol';
-
-import '@uniswap/v3-periphery/contracts/base/PeripheryPayments.sol';
-import '@uniswap/v3-periphery/contracts/base/PeripheryImmutableState.sol';
-import '@uniswap/v3-periphery/contracts/libraries/PoolAddress.sol';
-import '@uniswap/v3-periphery/contracts/libraries/CallbackValidation.sol';
-import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
-import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
-
-/// @title Flash contract implementation
-/// @notice An example contract using the t1 V3 flash function
-contract PairFlash is IUniswapV3FlashCallback, PeripheryImmutableState, PeripheryPayments {
- using LowGasSafeMath for uint256;
- using LowGasSafeMath for int256;
-
- ISwapRouter public immutable swapRouter;
-
- constructor(
- ISwapRouter _swapRouter,
- address _factory,
- address _WETH9
- ) PeripheryImmutableState(_factory, _WETH9) {
- swapRouter = _swapRouter;
- }
-
- /// @param fee0 The fee from calling flash for token0
- /// @param fee1 The fee from calling flash for token1
- /// @param data The data needed in the callback passed as FlashCallbackData from `initFlash`
- /// @notice implements the callback called from flash
- /// @dev fails if the flash is not profitable, meaning the amountOut from the flash is less than the amount borrowed
- function uniswapV3FlashCallback(
- uint256 fee0,
- uint256 fee1,
- bytes calldata data
- ) external override {
- FlashCallbackData memory decoded = abi.decode(data, (FlashCallbackData));
- CallbackValidation.verifyCallback(factory, decoded.poolKey);
-
- address token0 = decoded.poolKey.token0;
- address token1 = decoded.poolKey.token1;
-
- TransferHelper.safeApprove(token0, address(swapRouter), decoded.amount0);
- TransferHelper.safeApprove(token1, address(swapRouter), decoded.amount1);
-
- // profitable check
- // exactInputSingle will fail if this amount not met
- uint256 amount1Min = LowGasSafeMath.add(decoded.amount1, fee1);
- uint256 amount0Min = LowGasSafeMath.add(decoded.amount0, fee0);
-
- // call exactInputSingle for swapping token1 for token0 in pool w/fee2
- uint256 amountOut0 =
- swapRouter.exactInputSingle(
- ISwapRouter.ExactInputSingleParams({
- tokenIn: token1,
- tokenOut: token0,
- fee: decoded.poolFee2,
- recipient: address(this),
- deadline: block.timestamp,
- amountIn: decoded.amount1,
- amountOutMinimum: amount0Min,
- sqrtPriceLimitX96: 0
- })
- );
-
- // call exactInputSingle for swapping token0 for token 1 in pool w/fee3
- uint256 amountOut1 =
- swapRouter.exactInputSingle(
- ISwapRouter.ExactInputSingleParams({
- tokenIn: token0,
- tokenOut: token1,
- fee: decoded.poolFee3,
- recipient: address(this),
- deadline: block.timestamp,
- amountIn: decoded.amount0,
- amountOutMinimum: amount1Min,
- sqrtPriceLimitX96: 0
- })
- );
-
- // end up with amountOut0 of token0 from first swap and amountOut1 of token1 from second swap
- uint256 amount0Owed = LowGasSafeMath.add(decoded.amount0, fee0);
- uint256 amount1Owed = LowGasSafeMath.add(decoded.amount1, fee1);
-
- TransferHelper.safeApprove(token0, address(this), amount0Owed);
- TransferHelper.safeApprove(token1, address(this), amount1Owed);
-
- if (amount0Owed > 0) pay(token0, address(this), msg.sender, amount0Owed);
- if (amount1Owed > 0) pay(token1, address(this), msg.sender, amount1Owed);
-
- // if profitable pay profits to payer
- if (amountOut0 > amount0Owed) {
- uint256 profit0 = LowGasSafeMath.sub(amountOut0, amount0Owed);
-
- TransferHelper.safeApprove(token0, address(this), profit0);
- pay(token0, address(this), decoded.payer, profit0);
- }
- if (amountOut1 > amount1Owed) {
- uint256 profit1 = LowGasSafeMath.sub(amountOut1, amount1Owed);
- TransferHelper.safeApprove(token0, address(this), profit1);
- pay(token1, address(this), decoded.payer, profit1);
- }
- }
-
- //fee1 is the fee of the pool from the initial borrow
- //fee2 is the fee of the first pool to arb from
- //fee3 is the fee of the second pool to arb from
- struct FlashParams {
- address token0;
- address token1;
- uint24 fee1;
- uint256 amount0;
- uint256 amount1;
- uint24 fee2;
- uint24 fee3;
- }
- // fee2 and fee3 are the two other fees associated with the two other pools of token0 and token1
- struct FlashCallbackData {
- uint256 amount0;
- uint256 amount1;
- address payer;
- PoolAddress.PoolKey poolKey;
- uint24 poolFee2;
- uint24 poolFee3;
- }
-
- /// @param params The parameters necessary for flash and the callback, passed in as FlashParams
- /// @notice Calls the pools flash function with data needed in `uniswapV3FlashCallback`
- function initFlash(FlashParams memory params) external {
- PoolAddress.PoolKey memory poolKey =
- PoolAddress.PoolKey({token0: params.token0, token1: params.token1, fee: params.fee1});
- IUniswapV3Pool pool = IUniswapV3Pool(PoolAddress.computeAddress(factory, poolKey));
- // recipient of borrowed amounts
- // amount of token0 requested to borrow
- // amount of token1 requested to borrow
- // need amount 0 and amount1 in callback to pay back pool
- // recipient of flash should be THIS contract
- pool.flash(
- address(this),
- params.amount0,
- params.amount1,
- abi.encode(
- FlashCallbackData({
- amount0: params.amount0,
- amount1: params.amount1,
- payer: msg.sender,
- poolKey: poolKey,
- poolFee2: params.fee2,
- poolFee3: params.fee3
- })
- )
- );
- }
-}
-
-```
diff --git a/docs/contracts/v3/guides/flash-integrations/flash-callback.md b/docs/contracts/v3/guides/flash-integrations/flash-callback.md
deleted file mode 100644
index 7b0b874d9..000000000
--- a/docs/contracts/v3/guides/flash-integrations/flash-callback.md
+++ /dev/null
@@ -1,207 +0,0 @@
----
-id: flash-callback
-title: The Flash Callback
-sidebar_position: 3
----
-
-## Setting Up The Callback
-
-Here we will override the flash callback with our custom logic to execute the desired swaps and pay the profits to the original `msg.sender`.
-
-Declare the `uniswapV3FlashCallback` function and override it.
-
-```solidity
- function uniswapV3FlashCallback(
- uint256 fee0,
- uint256 fee1,
- bytes calldata data
- ) external override {
-```
-
-Declare a variable `decoded` in memory and assign it to the [**decoded data**](https://docs.soliditylang.org/en/v0.7.6/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions) previously encoded into the calldata.
-
-```solidity
- FlashCallbackData memory decoded = abi.decode(data, (FlashCallbackData));
-```
-
-Each callback must be validated to verify that the call originated from a genuine V3 pool. Otherwise, the pool contract would be vulnerable to attack via an EOA manipulating the callback function.
-
-```solidity
- CallbackValidation.verifyCallback(factory, decoded.poolKey);
-```
-
-Assign local variables of type `address` as `token0` and `token1` to approve the router to interact with the tokens from the flash.
-
-```solidity
- address token0 = decoded.poolKey.token0;
- address token1 = decoded.poolKey.token1;
-
- TransferHelper.safeApprove(token0, address(swapRouter), decoded.amount0);
- TransferHelper.safeApprove(token1, address(swapRouter), decoded.amount1);
-```
-
-Code in a minimum amount out for both of the upcoming swaps, such that the following swaps will revert if we do not receive a profitable trade.
-
-```solidity
- uint256 amount1Min = LowGasSafeMath.add(decoded.amount1, fee1);
- uint256 amount0Min = LowGasSafeMath.add(decoded.amount0, fee0);
-```
-
-## Initiating A Swap
-
-Call the first of two swaps, calling `exactInputSingle` on the [**router interface**](../../reference/periphery/interfaces/ISwapRouter.md) contract. In this call, we are using the previously declared `amount0In` as the minimum amount out, and assigning the returned balance of the swap to `amountOut0`.
-
-Most of These function arguments have already been discussed, except for two new introductions:
-
-`sqrtPriceLimitX96`: This value limits the price that the swap can change the pool to. Remember that price is always expressed in the pool contract as `token1` in terms of `token0`. This is useful for circumstances where the user wants to swap _up until_ a specific price. For this example, we will set it to 0, which makes to make the argument inactive.
-
-`deadline`: this is the timestamp after which the transaction will revert, to protect the transaction from dramatic changes in price environment that can happen if the transaction is pending for too long. For this example, we will set it far in the future for the sake of simplicity.
-
-The first swap takes the `amount1` that we withdrew from the original pool, and passes that amount as the input amount for a single swap that trades a fixed input for the maximum amount of possible output. It calls this function on the pool determined by our previous token pair, but with the next fee tier in our list of three.
-
-```solidity
-uint256 amountOut0 =
- swapRouter.exactInputSingle(
- ISwapRouter.ExactInputSingleParams({
- tokenIn: token1,
- tokenOut: token0,
- fee: decoded.poolFee2,
- recipient: address(this),
- deadline: block.timestamp + 200,
- amountIn: decoded.amount1,
- amountOutMinimum: amount0Min,
- sqrtPriceLimitX96: 0
- })
- );
-```
-
-Populate the second of two swaps, this time with the last fee tier and with the `amount0` that we withdrew from the original pool.
-
-```solidity
-uint256 amountOut1 =
- swapRouter.exactInputSingle(
- ISwapRouter.ExactInputSingleParams({
- tokenIn: token0,
- tokenOut: token1,
- fee: decoded.poolFee3,
- recipient: address(this),
- deadline: block.timestamp + 200,
- amountIn: decoded.amount0,
- amountOutMinimum: amount1Min,
- sqrtPriceLimitX96: 0
- })
- );
-```
-
-## Paying back the pool
-
-To pay the original pool back for the flash transaction, first calculate the balance due to it and approve the router to transfer the tokens in our contract back to the pool.
-
-```solidity
-uint256 amount0Owed = LowGasSafeMath.add(decoded.amount0, fee0);
-uint256 amount1Owed = LowGasSafeMath.add(decoded.amount1, fee1);
-
-TransferHelper.safeApprove(token0, address(this), amount0Owed);
-TransferHelper.safeApprove(token1, address(this), amount1Owed);
-```
-
-If there is any balance due to the token, use simple logic to call [pay](../../reference/periphery/base/PeripheryPayments.md#pay). Remember that the callback function is being called by the pool itself, which is why we can call `pay` despite the function being marked `internal`.
-
-```solidity
-if (amount0Owed > 0) pay(token0, address(this), msg.sender, amount0Owed);
-if (amount1Owed > 0) pay(token1, address(this), msg.sender, amount1Owed);
-```
-
-Send the profits to the `payer`: the original `msg.sender` of the `initFlash` function, which executed the flash transaction and in turn triggered the callback.
-
-```solidity
- if (amountOut0 > amount0Owed) {
- uint256 profit0 = LowGasSafeMath.sub(amountOut0, amount0Owed);
-
- TransferHelper.safeApprove(token0, address(this), profit0);
- pay(token0, address(this), decoded.payer, profit0);
- }
-
- if (amountOut1 > amount1Owed) {
- uint256 profit1 = LowGasSafeMath.sub(amountOut1, amount1Owed);
- TransferHelper.safeApprove(token0, address(this), profit1);
- pay(token1, address(this), decoded.payer, profit1);
- }
-```
-
-# The full function
-
-```solidity
- function uniswapV3FlashCallback(
- uint256 fee0,
- uint256 fee1,
- bytes calldata data
- ) external override {
- FlashCallbackData memory decoded = abi.decode(data, (FlashCallbackData));
- CallbackValidation.verifyCallback(factory, decoded.poolKey);
-
- address token0 = decoded.poolKey.token0;
- address token1 = decoded.poolKey.token1;
-
- TransferHelper.safeApprove(token0, address(swapRouter), decoded.amount0);
- TransferHelper.safeApprove(token1, address(swapRouter), decoded.amount1);
-
- // profitable check
- // exactInputSingle will fail if this amount not met
- uint256 amount1Min = LowGasSafeMath.add(decoded.amount1, fee1);
- uint256 amount0Min = LowGasSafeMath.add(decoded.amount0, fee0);
-
- // call exactInputSingle for swapping token1 for token0 in pool w/fee2
- uint256 amountOut0 =
- swapRouter.exactInputSingle(
- ISwapRouter.ExactInputSingleParams({
- tokenIn: token1,
- tokenOut: token0,
- fee: decoded.poolFee2,
- recipient: address(this),
- deadline: block.timestamp + 200,
- amountIn: decoded.amount1,
- amountOutMinimum: amount0Min,
- sqrtPriceLimitX96: 0
- })
- );
-
- // call exactInputSingle for swapping token0 for token 1 in pool w/fee3
- uint256 amountOut1 =
- swapRouter.exactInputSingle(
- ISwapRouter.ExactInputSingleParams({
- tokenIn: token0,
- tokenOut: token1,
- fee: decoded.poolFee3,
- recipient: address(this),
- deadline: block.timestamp + 200,
- amountIn: decoded.amount0,
- amountOutMinimum: amount1Min,
- sqrtPriceLimitX96: 0
- })
- );
-
- // end up with amountOut0 of token0 from first swap and amountOut1 of token1 from second swap
- uint256 amount0Owed = LowGasSafeMath.add(decoded.amount0, fee0);
- uint256 amount1Owed = LowGasSafeMath.add(decoded.amount1, fee1);
-
- TransferHelper.safeApprove(token0, address(this), amount0Owed);
- TransferHelper.safeApprove(token1, address(this), amount1Owed);
-
- if (amount0Owed > 0) pay(token0, address(this), msg.sender, amount0Owed);
- if (amount1Owed > 0) pay(token1, address(this), msg.sender, amount1Owed);
-
- // if profitable pay profits to payer
- if (amountOut0 > amount0Owed) {
- uint256 profit0 = LowGasSafeMath.sub(amountOut0, amount0Owed);
-
- TransferHelper.safeApprove(token0, address(this), profit0);
- pay(token0, address(this), decoded.payer, profit0);
- }
- if (amountOut1 > amount1Owed) {
- uint256 profit1 = LowGasSafeMath.sub(amountOut1, amount1Owed);
- TransferHelper.safeApprove(token0, address(this), profit1);
- pay(token1, address(this), decoded.payer, profit1);
- }
- }
-```
diff --git a/docs/contracts/v3/guides/liquidity-mining/_category_.json b/docs/contracts/v3/guides/liquidity-mining/_category_.json
deleted file mode 100644
index b0119da77..000000000
--- a/docs/contracts/v3/guides/liquidity-mining/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Liquidity Mining",
- "position": 3,
- "collapsed": true
-}
diff --git a/docs/contracts/v3/guides/liquidity-mining/overview.md b/docs/contracts/v3/guides/liquidity-mining/overview.md
deleted file mode 100644
index df071bf5c..000000000
--- a/docs/contracts/v3/guides/liquidity-mining/overview.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-## Introduction
-
-As a DeFi project, token creator, or other interested party, you may want to _incentivize in-range liquidity provision_ on a t1 V3 pool. This guide describes one particular incentivization scheme at a high level, as implemented in [uniswap-v3-staker](https://github.com/Uniswap/uniswap-v3-staker).
-
-## The Setting
-
-Let's start by defining some terms. We refer to programs which incentivize liquidity as `Incentive`s; they're characterized by the following parameters:
-
-- `rewardToken`: Perhaps the most important parameter, would-be incentivizers must pick the ERC20 token which they would like to distribute as a reward for providing liquidity.
-- `pool`: The address of the t1 V3 pool in which liquidity must be provided.
-- `startTime`: The UNIX timestamp at which rewards start to be distributed.
-- `endTime`: The UNIX timestamp at which rewards start to decay.
-- `refundee`: The address which has the right to reclaim any leftover rewards after the `Incentive` has concluded.
-
-Finally, every `Incentive` has an associated `reward`, the total amount of `rewardToken`s that are allocated to be distributed over the lifecycle of the program.
-
-## Reward Math
-
-Now that we have an idea of what an `Incentive` looks like, let's explore how rewards are actually allocated to participants. The next section will touch on the participation mechanics, so for now let's abstract this away and just focus on the high-level design.
-
-Recall that `Incentive` creators pick a `reward` amount and a program duration. This directly corresponds to picking _an amount of `rewardToken`s to distribute per second_; let's call this the reward rate. So, for every second between `startTime` and `endTime`, a constant amount of tokens are distributed proportionally _among all in-range liquidity at that second_. Crucially, this counts _all_ liquidity, not just liquidity that opts in to participating in the program. So, incentive creators should pick a reward rate that they deem worthwhile to distribute across (potentially) all in-range LPs for the duration of the program.
-
-## Staking
-
-So, how do users participate in these programs? Note that this section requires a basic understanding of [how t1 V3 position NFTs work](../../reference/periphery/NonfungiblePositionManager)
-
-The first action a user must take in order to begin participating in an `Incentive` is to _deposit_ their position NFT into the [canonical staking contract address](https://github.com/Uniswap/uniswap-v3-staker#deployments), effectively temporarily giving custody over their NFT to this contract. This is necessary because, as we'll see later on, the staking contract needs to be able to guarantee that liquidity cannot be removed from NFTs participating in the program.
-
-Once deposited, a user may then _stake_ their NFT into any number of active `Incentive`s for the t1 V3 pool their NFT is tied to (note that this can happen atomically with an initial _deposit_). Staked NFTs then immediately start to earn rewards, according to the algorithm outlined above. Users may periodically claim accrued `rewardToken`s while the program is ongoing, or wait to claim until the program has concluded to minimize overhead.
-
-## Program Conclusion
-
-There are two conditions that must be met for a program to be considered concluded:
-
-1. `block.timestamp >= endTime`: In other words, the program's duration must have expired. However, this doesn't mark the official end of the program, as some users may still be participating right up unti this `endTime` boundary and beyond, to maximize their rewards. This leads directly to the second condition.
-2. All NFTs must be unstaked: A program can conclude only when every NFT which participated in it is unstaked. To ensure this is always possible, after the `endTime` of a program _anyone_ may unstake _any_ NFT (though of course they may not claim outstanding `rewardToken`s due to the NFT owner). This ensures that even if all users do not unstake themselves, someone can unstake them manually so that the program can end.
-
-It's important that most or all programs fully conclude, primarily so that the `refundee` can reclaim any unallocated rewards. What are the conditions under which unallocated rewards will remain? Well, recall that the reward rate is the same across _all_ in-range liquidity. However, only program participants may actually claim accrued tokens, so it's likely that all programs will end up with a balance of `rewardToken`s that cannot be claimed. So, `refundee`s will typically be incentivized to bring programs to an official conclusion. This slightly cumbersome design is a consequence of the difficulty of consistently allocating rewards proportional to t1 V3 liquidity.
-
-A final note: stakers who remain in the program after `endTime` may actually see their rewards marginally augmented or (more likely) gradually diluted. The magnitude of these changes depend on stakers' share of the total active liquidity, the time spend staked after `endTime`, and the sequence of unstaking. In the worst case, rewards decay proportionally to the duration. For example, at 2x the duration, ½ of rewards could remain, at 3x, ⅓ could remain, etc. While somewhat complex, this behavior can largely be ignored from a game-theoretic standpoint. Stakers should simply attempt to unstake and claim rewards as soon as possible after `endTime`, an outcome that is likely in any case, as `refundee`s will be eager to reclaim leftover rewards, and mass unstake stragglers.
diff --git a/docs/contracts/v3/guides/local-environment.mdx b/docs/contracts/v3/guides/local-environment.mdx
deleted file mode 100644
index 788437731..000000000
--- a/docs/contracts/v3/guides/local-environment.mdx
+++ /dev/null
@@ -1,147 +0,0 @@
----
-id: local-environment
-title: Set Up Your Local Environment
-sidebar_position: 0.5
----
-
-One of the most common questions we get asked is what development toolset to use to build on-chain integrations with Uniswap. There’s no right answer to this question but for this guide we’ll recommend a common one: `Node.js` , `NPM` and `Hardhat`.
-
-At the end of this guide you’ll have a development environment set up that you can use to build the rest of the examples in the Guides section of the docs, or start your own integration project!
-
-To get you started as quickly as possible, we have provided the `Quick Start` section below where you can clone some boiler plate and get building. To start from scratch and learn the underlying concepts, jump to the `Start from Scratch` section.
-
-# Quick Start
-
-The Uniswap [boilerplate repo](https://github.com/Uniswap/uniswap-first-contract-example) provides a basic Hardhat environment with required imports already pre-loaded for you. You can simply clone it and install the dependencies:
-
-```bash
-git clone https://github.com/Uniswap/uniswap-first-contract-example
-cd uniswap-first-contract-example
-npm install
-```
-
-Then hop to the `Local Node with a Mainnet Fork` to complete your set up and start developing.
-
-# Start from Scratch
-
-In the following sections, we’ll walk through the steps to create the same environment set up as the boiler plate from scratch and learn the underlying concepts.
-
-## Set Up Dependencies
-
-Node is one of the most common Javascript runtimes. For our purposes it will provide scripting we can use to compile and test our contracts. If you haven’t already, install NodeJS and its package manager NPM ([instructions](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)). Once those dependencies are set up, we can initialize our project:
-
-```bash
-$ npm init
-```
-
-[Hardhat](https://hardhat.org/) is an Ethereum development toolset that provides a number of powerful features including Solidity compilation, testing and deployment, all in a single convenient wrapper. We’ll use NPM to add Hardhat to our project:
-
-```bash
-$ npm add --save-dev hardhat
-```
-
-With Hardhat installed we can invoke it to scaffold our development environment. When you first run Hardhat you’ll have the option of starting with a templated Javascript or Typescript project or an empty project. Since Hardhat relies heavily on folder structure, we recommend starting with either of the templated options. Initialize Hardhat and follow the prompts to make your selection and answer yes to the follow up prompts:
-
-```bash
-$ npx hardhat init
-```
-
-Once the Hardhat initialization completes, take a look around at what got set up. The folder structure should be intuitive, `./contracts` is where you’ll write your Solidity contracts, `./test` is where you’ll write your tests and `./scripts` is where you can write scripts to perform actions like deploying. Out of the box, Hardhat is configured to use this folder structure so don’t change it unless you know what you’re doing!
-
-Next we’ll use NPM to add the Uniswap V3 contracts which will allow us to seamlessly integrate with the protocol in our new contracts:
-
-```bash
-$ npm add @uniswap/v3-periphery @uniswap/v3-core
-```
-
-The Uniswap V3 contracts were written using a past version of the solidity compiler. Since we’re building integrations on V3 we have to tell Hardhat to use the correct compiler to build these files. Go to the `./hardhat.config.js` file and change the Solidity version to “0.7.6”:
-
-```jsx
-// ...
-module.exports = {
- solidity: "0.7.6",
-};
-```
-
-That’s it! You should now have a functional development environment to start building on chain Uniswap integrations. Let’s run a quick test to confirm everything is set up properly.
-
-## Compile a Basic Contract
-
-To confirm that our environment is configured correctly we’ll attempt to compile a basic Swap contract. Create a new file, `./contracts/Swap.sol` and paste the following code into it (a detailed guide to this contract can be found [here](./swaps/single-swaps)):
-
-```jsx
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
-import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
-
-contract SimpleSwap {
- ISwapRouter public immutable swapRouter;
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant WETH9 = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
- uint24 public constant feeTier = 3000;
-
- constructor(ISwapRouter _swapRouter) {
- swapRouter = _swapRouter;
- }
-
- function swapWETHForDAI(uint256 amountIn) external returns (uint256 amountOut) {
-
- // Transfer the specified amount of WETH9 to this contract.
- TransferHelper.safeTransferFrom(WETH9, msg.sender, address(this), amountIn);
- // Approve the router to spend WETH9.
- TransferHelper.safeApprove(WETH9, address(swapRouter), amountIn);
- // Note: To use this example, you should explicitly set slippage limits, omitting for simplicity
- uint256 minOut = /* Calculate min output */ 0;
- uint160 priceLimit = /* Calculate price limit */ 0;
- // Create the params that will be used to execute the swap
- ISwapRouter.ExactInputSingleParams memory params =
- ISwapRouter.ExactInputSingleParams({
- tokenIn: WETH9,
- tokenOut: DAI,
- fee: feeTier,
- recipient: msg.sender,
- deadline: block.timestamp,
- amountIn: amountIn,
- amountOutMinimum: minOut,
- sqrtPriceLimitX96: priceLimit
- });
- // The call to `exactInputSingle` executes the swap.
- amountOut = swapRouter.exactInputSingle(params);
- }
-}
-```
-
-To compile all the contracts in the `./contracts` folder, we’ll use the Hardhat compile command:
-
-```bash
-$ npx hardhat compile
-```
-
-If the environment is compiled correctly you should see the message:
-
-```bash
-Compiled { x } Solidity files successfully
-```
-
-# Local Node with a Mainnet Fork
-
-When building and testing integrations with on chain protocols, developers often hit a problem: the liquidity on the live chain is critical to thoroughly testing their code but testing against a live network like Mainnet can be extremely expensive.
-
-See [the SDK getting started guide](../../../sdk/v3/guides/02-local-development) for a full example on how to use forks.
-
-With your local node up and running, you can use the `--network localhost` flag in tests to point the Hardhat testing suite to that local node:
-
-```bash
-$ npx hardhat test --network localhost
-```
-
-# Next Steps
-
-With your environment set up you’re ready to start building. Jump over to the guides section to learn about the Uniswap functions you can integrate with. Remember to add all contracts (.sol files) to the `./contracts` folder and their subsequent tests to the `./tests` folder. You can then test them against your local forked node by running:
-
-```bash
-$ npx hardhat test --network localhost
-```
diff --git a/docs/contracts/v3/guides/providing-liquidity/_category_.json b/docs/contracts/v3/guides/providing-liquidity/_category_.json
deleted file mode 100644
index 9bff5d8e4..000000000
--- a/docs/contracts/v3/guides/providing-liquidity/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Providing Liquidity",
- "position": 2
-}
diff --git a/docs/contracts/v3/guides/providing-liquidity/collect-fees.md b/docs/contracts/v3/guides/providing-liquidity/collect-fees.md
deleted file mode 100644
index 415a5e90a..000000000
--- a/docs/contracts/v3/guides/providing-liquidity/collect-fees.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-id: collect-fees
-title: Collecting Fees
-sidebar_position: 3
----
-
-## Collect Fees
-
-- Make sure to go through the [first guide](./setting-up-your-contract.md) before continuing to this section.
-
-- For each of these liquidity interaction examples, our contract must be in possession of the liquidity position NFT. Therefore, in any example where the NFT deposit is not coded into a function, the contract is assumed to already be in possession of it.
-
-To collect the fees of an owner position, transfer the NFT from the calling address, assign the relevant variables from the NFT to local variables within our function, and pass those variables to the`nonfungiblePositionManager` to call `collect`.
-
-This function collects all fees, sending them to the original owner of the NFT, while maintaining custody of the position NFT.
-
-```solidity
- /// @notice Collects the fees associated with provided liquidity
- /// @dev The contract must hold the erc721 token before it can collect fees
- /// @param tokenId The id of the erc721 token
- /// @return amount0 The amount of fees collected in token0
- /// @return amount1 The amount of fees collected in token1
- function collectAllFees(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) {
- // Caller must own the ERC721 position
- // Call to safeTransfer will trigger `onERC721Received` which must return the selector else transfer will fail
- nonfungiblePositionManager.safeTransferFrom(msg.sender, address(this), tokenId);
-
- // set amount0Max and amount1Max to uint256.max to collect all fees
- // alternatively can set recipient to msg.sender and avoid another transaction in `sendToOwner`
- INonfungiblePositionManager.CollectParams memory params =
- INonfungiblePositionManager.CollectParams({
- tokenId: tokenId,
- recipient: address(this),
- amount0Max: type(uint128).max,
- amount1Max: type(uint128).max
- });
-
- (amount0, amount1) = nonfungiblePositionManager.collect(params);
-
- // send collected feed back to owner
- _sendToOwner(tokenId, amount0, amount1);
- }
-```
-
-## Sending Fees To The Calling Address
-
-This internal helper function sends any tokens, in the form of fees or position tokens, to the owner of an NFT.
-
-In `_sendToOwner`, we pass the amount of fees due, previously populated in the last function, as arguments to `safeTransfer`, which transfers the fees to `owner`.
-
-```solidity
- /// @notice Transfers funds to owner of NFT
- /// @param tokenId The id of the erc721
- /// @param amount0 The amount of token0
- /// @param amount1 The amount of token1
- function _sendToOwner(
- uint256 tokenId,
- uint256 amount0,
- uint256 amount1
- ) internal {
- // get owner of contract
- address owner = deposits[tokenId].owner;
-
- address token0 = deposits[tokenId].token0;
- address token1 = deposits[tokenId].token1;
- // send collected fees to owner
- TransferHelper.safeTransfer(token0, owner, amount0);
- TransferHelper.safeTransfer(token1, owner, amount1);
- }
-```
diff --git a/docs/contracts/v3/guides/providing-liquidity/decrease-liquidity.md b/docs/contracts/v3/guides/providing-liquidity/decrease-liquidity.md
deleted file mode 100644
index 9696f43e1..000000000
--- a/docs/contracts/v3/guides/providing-liquidity/decrease-liquidity.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-id: decrease-liquidity
-title: Decrease Liquidity
-sidebar_position: 4
----
-
-Make sure to go through the [Setting Up Your Contract](./setting-up-your-contract.md) before continuing to this section
-
-Here we decrease the liquidity of our position without withdrawing all of it.
-
-- This example assumes the contract already has possession of the position NFT, and requires the calling address to be the same address that deposited the position NFT to our contract.
-
-- In production, `amount0Min` and `amount1Min` should be adjusted to create slippage protections.
-
-## Decrease Liquidity
-
-```solidity
- /// @notice A function that decreases the current liquidity by half. An example to show how to call the `decreaseLiquidity` function defined in periphery.
- /// @param tokenId The id of the erc721 token
- /// @return amount0 The amount received back in token0
- /// @return amount1 The amount returned back in token1
- function decreaseLiquidityInHalf(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) {
- // caller must be the owner of the NFT
- require(msg.sender == deposits[tokenId].owner, 'Not the owner');
- // get liquidity data for tokenId
- uint128 liquidity = deposits[tokenId].liquidity;
- uint128 halfLiquidity = liquidity / 2;
-
- // amount0Min and amount1Min are price slippage checks
- // if the amount received after burning is not greater than these minimums, transaction will fail
- INonfungiblePositionManager.DecreaseLiquidityParams memory params =
- INonfungiblePositionManager.DecreaseLiquidityParams({
- tokenId: tokenId,
- liquidity: halfLiquidity,
- amount0Min: 0,
- amount1Min: 0,
- deadline: block.timestamp
- });
-
- (amount0, amount1) = nonfungiblePositionManager.decreaseLiquidity(params);
-
- //send liquidity back to owner
- _sendToOwner(tokenId, amount0, amount1);
- }
-```
-
-## Sending Fees To The Calling Address
-
-This internal helper function sends any tokens, in the form of fees or position tokens, to the owner of an NFT.
-
-In `_sendToOwner`, we pass the amount of fees due, previously populated in the last function, as arguments to `safeTransfer`, which transfers the fees to `owner`.
-
-```solidity
- /// @notice Transfers funds to owner of NFT
- /// @param tokenId The id of the erc721
- /// @param amount0 The amount of token0
- /// @param amount1 The amount of token1
- function _sendToOwner(
- uint256 tokenId,
- uint256 amount0,
- uint256 amount1
- ) internal {
- // get owner of contract
- address owner = deposits[tokenId].owner;
-
- address token0 = deposits[tokenId].token0;
- address token1 = deposits[tokenId].token1;
- // send collected fees to owner
- TransferHelper.safeTransfer(token0, owner, amount0);
- TransferHelper.safeTransfer(token1, owner, amount1);
- }
-```
diff --git a/docs/contracts/v3/guides/providing-liquidity/increase-liquidity.md b/docs/contracts/v3/guides/providing-liquidity/increase-liquidity.md
deleted file mode 100644
index d0288bdd5..000000000
--- a/docs/contracts/v3/guides/providing-liquidity/increase-liquidity.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-id: increase-liquidity
-title: Increase Liquidity
-sidebar_position: 5
----
-
-## Increase Liquidity Within The Current Range
-
-Make sure to go through the [first guide](./setting-up-your-contract.md) before continuing to this section
-
-- This example assumes the contract already has custody of the NFT.
-
-- We cannot change the boundaries of a given liquidity position using the t1 v3 protocol; `increaseLiquidity` can only increase the liquidity of a position.
-- In production, `amount0Min` and `amount1Min` should be adjusted to create slippage protections.
-
-```solidity
- /// @notice Increases liquidity in the current range
- /// @dev Pool must be initialized already to add liquidity
- /// @param tokenId The id of the erc721 token
- /// @param amount0 The amount to add of token0
- /// @param amount1 The amount to add of token1
- function increaseLiquidityCurrentRange(
- uint256 tokenId,
- uint256 amountAdd0,
- uint256 amountAdd1
- )
- external
- returns (
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- )
- {
- INonfungiblePositionManager.IncreaseLiquidityParams memory params =
- INonfungiblePositionManager.IncreaseLiquidityParams({
- tokenId: tokenId,
- amount0Desired: amountAdd0,
- amount1Desired: amountAdd1,
- amount0Min: 0,
- amount1Min: 0,
- deadline: block.timestamp
- });
-
- (liquidity, amount0, amount1) = nonfungiblePositionManager.increaseLiquidity(params);
- }
-```
diff --git a/docs/contracts/v3/guides/providing-liquidity/mint-a-new-position.md b/docs/contracts/v3/guides/providing-liquidity/mint-a-new-position.md
deleted file mode 100644
index f8ef0cfe3..000000000
--- a/docs/contracts/v3/guides/providing-liquidity/mint-a-new-position.md
+++ /dev/null
@@ -1,153 +0,0 @@
----
-id: mint-a-position
-title: Mint a New Position
-sidebar_position: 2
----
-
-## Input Parameters
-
-To mint a new position, we use the `nonFungiblePositionManager` and call `mint`.
-
-For the sake of this example, we're hard coding the token amounts to be minted. In production, this would be a user-configurable function argument.
-
-```solidity
- /// @notice Calls the mint function defined in periphery, mints the same amount of each token. For this example we are providing 1000 DAI and 1000 USDC in liquidity
- /// @return tokenId The id of the newly minted ERC721
- /// @return liquidity The amount of liquidity for the position
- /// @return amount0 The amount of token0
- /// @return amount1 The amount of token1
- function mintNewPosition()
- external
- returns (
- uint256 tokenId,
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- )
- {
- // For this example, we will provide equal amounts of liquidity in both assets.
- // Providing liquidity in both assets means liquidity will be earning fees and is considered in-range.
- uint256 amount0ToMint = 1000;
- uint256 amount1ToMint = 1000;
-```
-
-## Calling Mint
-
-Here we approve the `nonfungiblePositionManager` to use the contracts' tokens, then populate the `MintParams` struct and assign it to a local variable `params` that will be passed to the `nonfungiblePositionManager` when we call `mint`.
-
-- By using `TickMath.MIN_TICK` and `TickMath.MAX_TICK`, we are providing liquidity across the whole range of the pool. In production you may want to specify a more concentrated position.
-
-- We set `amount0Min` and `amount1Min` to zero for the example - but this would be a vulnerability in production. A function calling `mint` with no slippage protection would be vulnerable to a frontrunning attack designed to execute the `mint` call at an inaccurate price.
-- For a more secure practice the developer would need to implement a slippage estimation process.
-
-- Note that this function will not initialize a pool where one does not yet exist.
-
-```solidity
- // Approve the position manager
- TransferHelper.safeApprove(DAI, address(nonfungiblePositionManager), amount0ToMint);
- TransferHelper.safeApprove(USDC, address(nonfungiblePositionManager), amount1ToMint);
-
- INonfungiblePositionManager.MintParams memory params =
- INonfungiblePositionManager.MintParams({
- token0: DAI,
- token1: USDC,
- fee: poolFee,
- tickLower: TickMath.MIN_TICK,
- tickUpper: TickMath.MAX_TICK,
- amount0Desired: amount0ToMint,
- amount1Desired: amount1ToMint,
- amount0Min: 0,
- amount1Min: 0,
- recipient: address(this),
- deadline: block.timestamp
- });
-
- // Note that the pool defined by DAI/USDC and fee tier 0.3% must already be created and initialized in order to mint
- (tokenId, liquidity, amount0, amount1) = nonfungiblePositionManager.mint(params);
-
-```
-
-## Updating The Deposit Mapping And Refunding The Calling Address
-
-Now we can call the internal function we previously wrote in [Setting Up Your Contract](./setting-up-your-contract.md). After that, we can take any liquidity leftover from minting and refund it to `msg.sender`.
-
-```solidity
- // Create a deposit
- _createDeposit(msg.sender, tokenId);
-
- // Remove allowance and refund in both assets.
- if (amount0 < amount0ToMint) {
- TransferHelper.safeApprove(DAI, address(nonfungiblePositionManager), 0);
- uint256 refund0 = amount0ToMint - amount0;
- TransferHelper.safeTransfer(DAI, msg.sender, refund0);
- }
-
- if (amount1 < amount1ToMint) {
- TransferHelper.safeApprove(USDC, address(nonfungiblePositionManager), 0);
- uint256 refund1 = amount1ToMint - amount1;
- TransferHelper.safeTransfer(USDC, msg.sender, refund1);
- }
- }
-```
-
-## The Full Example
-
-```solidity
- /// @notice Calls the mint function defined in periphery, mints the same amount of each token. For this example we are providing 1000 DAI and 1000 USDC in liquidity
- /// @return tokenId The id of the newly minted ERC721
- /// @return liquidity The amount of liquidity for the position
- /// @return amount0 The amount of token0
- /// @return amount1 The amount of token1
- function mintNewPosition()
- external
- returns (
- uint256 tokenId,
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- )
- {
- // For this example, we will provide equal amounts of liquidity in both assets.
- // Providing liquidity in both assets means liquidity will be earning fees and is considered in-range.
- uint256 amount0ToMint = 1000;
- uint256 amount1ToMint = 1000;
-
- // Approve the position manager
- TransferHelper.safeApprove(DAI, address(nonfungiblePositionManager), amount0ToMint);
- TransferHelper.safeApprove(USDC, address(nonfungiblePositionManager), amount1ToMint);
-
- INonfungiblePositionManager.MintParams memory params =
- INonfungiblePositionManager.MintParams({
- token0: DAI,
- token1: USDC,
- fee: poolFee,
- tickLower: TickMath.MIN_TICK,
- tickUpper: TickMath.MAX_TICK,
- amount0Desired: amount0ToMint,
- amount1Desired: amount1ToMint,
- amount0Min: 0,
- amount1Min: 0,
- recipient: address(this),
- deadline: block.timestamp
- });
-
- // Note that the pool defined by DAI/USDC and fee tier 0.3% must already be created and initialized in order to mint
- (tokenId, liquidity, amount0, amount1) = nonfungiblePositionManager.mint(params);
-
- // Create a deposit
- _createDeposit(msg.sender, tokenId);
-
- // Remove allowance and refund in both assets.
- if (amount0 < amount0ToMint) {
- TransferHelper.safeApprove(DAI, address(nonfungiblePositionManager), 0);
- uint256 refund0 = amount0ToMint - amount0;
- TransferHelper.safeTransfer(DAI, msg.sender, refund0);
- }
-
- if (amount1 < amount1ToMint) {
- TransferHelper.safeApprove(USDC, address(nonfungiblePositionManager), 0);
- uint256 refund1 = amount1ToMint - amount1;
- TransferHelper.safeTransfer(USDC, msg.sender, refund1);
- }
- }
-```
diff --git a/docs/contracts/v3/guides/providing-liquidity/setting-up-your-contract.md b/docs/contracts/v3/guides/providing-liquidity/setting-up-your-contract.md
deleted file mode 100644
index 56af90e25..000000000
--- a/docs/contracts/v3/guides/providing-liquidity/setting-up-your-contract.md
+++ /dev/null
@@ -1,178 +0,0 @@
----
-id: setting-up
-title: Set Up Your Contract
-sidebar_position: 1
----
-
-## Setting up the Contract
-
-This guide is an example of a custodial contract t1 V3 positions, which allows interaction with the t1 V3 Periphery by minting a position, adding liquidity to a position, decreasing liquidity, and collecting fees.
-
-First, declare the solidity version used to compile the contract and `abicoder v2` to allow arbitrary nested arrays and structs to be encoded and decoded in calldata, a feature we use when transacting with a pool.
-
-```solidity
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-```
-
-Import the contracts needed from the npm package installation.
-
-```solidity
-import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';
-import '@uniswap/v3-core/contracts/libraries/TickMath.sol';
-import '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol';
-import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
-import '@uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol';
-import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
-import '@uniswap/v3-periphery/contracts/base/LiquidityManagement.sol';
-```
-
-Create a contract called `LiquidityExamples` and inherit both `IERC721Receiver` and `LiquidityManagement`.
-
-We've chosen to hardcode the token contract addresses and pool fee tiers for our example. In production, you would likely use an input parameter for this, allowing you to change the pools and tokens you are interacting with on a per transaction basis.
-
-```solidity
-contract LiquidityExamples is IERC721Receiver {
-
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-
- uint24 public constant poolFee = 3000;
-```
-
-Declare an immutable public variable `nonfungiblePositionManager` of type `INonfungiblePositionManager`.
-
-```solidity
- INonfungiblePositionManager public immutable nonfungiblePositionManager;
-```
-
-## Allowing ERC721 Interactions
-
-Every [NFT](https://ethereum.org/en/nft/) is identified by a unique uint256 ID inside the ERC-721 smart contract, declared as the `tokenId`
-
-To allow deposits of ERC721 expressions of liquidity, create a struct called `Deposit`, a mapping of `uint256` to the `Deposit` struct, then declare that mapping as a public variable `deposits`.
-
-```solidity
- struct Deposit {
- address owner;
- uint128 liquidity;
- address token0;
- address token1;
- }
-
- mapping(uint256 => Deposit) public deposits;
-```
-
-## The Constructor
-
-Declare the constructor here, which is executed once when the contract is deployed. Our constructor hard codes the address of the nonfungible position manager interface, V3 router, and the periphery immutable state constructor, which requires the factory and the address of weth9 (the [ERC-20 wrapper](https://weth.io/) for ether).
-
-```solidity
- constructor(
- INonfungiblePositionManager _nonfungiblePositionManager,
- address _factory,
- address _WETH9
- ) PeripheryImmutableState(_factory, _WETH9) {
- nonfungiblePositionManager = _nonfungiblePositionManager;
- }
-```
-
-## Allowing custody of ERC721 tokens
-
-To allow the contract to custody ERC721 tokens, implement the `onERC721Received` function within the inherited `IERC721Receiver.sol` [contract](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721Receiver.sol).
-
-The `from` identifier may be omitted because it is not used.
-
-```solidity
- function onERC721Received(
- address operator,
- address,
- uint256 tokenId,
- bytes calldata
- ) external override returns (bytes4) {
- // get position information
- _createDeposit(operator, tokenId);
- return this.onERC721Received.selector;
- }
-```
-
-## Creating a Deposit
-
-To add a `Deposit` instance to the `deposits` mapping, create an internal function called `_createDeposit` that destructures the `positions` struct returned by `positions` in `nonfungiblePositionManager.sol`. Pass the relevant variables `token0` `token1` and `liquidity` to the `deposits` mapping.
-
-```solidity
- function _createDeposit(address owner, uint256 tokenId) internal {
- (, , address token0, address token1, , , , uint128 liquidity, , , , ) =
- nonfungiblePositionManager.positions(tokenId);
-
- // set the owner and data for position
- // operator is msg.sender
- deposits[tokenId] = Deposit({owner: owner, liquidity: liquidity, token0: token0, token1: token1});
- }
-
-```
-
-## The Full Contract Setup
-
-```solidity
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';
-import '@uniswap/v3-core/contracts/libraries/TickMath.sol';
-import '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol';
-import '../libraries/TransferHelper.sol';
-import '../interfaces/INonfungiblePositionManager.sol';
-import '../base/LiquidityManagement.sol';
-
-contract LiquidityExamples is IERC721Receiver {
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-
- uint24 public constant poolFee = 3000;
-
- INonfungiblePositionManager public immutable nonfungiblePositionManager;
-
- /// @notice Represents the deposit of an NFT
- struct Deposit {
- address owner;
- uint128 liquidity;
- address token0;
- address token1;
- }
-
- /// @dev deposits[tokenId] => Deposit
- mapping(uint256 => Deposit) public deposits;
-
- constructor(
- INonfungiblePositionManager _nonfungiblePositionManager
- ) {
- nonfungiblePositionManager = _nonfungiblePositionManager;
- }
-
- // Implementing `onERC721Received` so this contract can receive custody of erc721 tokens
- function onERC721Received(
- address operator,
- address,
- uint256 tokenId,
- bytes calldata
- ) external override returns (bytes4) {
- // get position information
-
- _createDeposit(operator, tokenId);
-
- return this.onERC721Received.selector;
- }
-
- function _createDeposit(address owner, uint256 tokenId) internal {
- (, , address token0, address token1, , , , uint128 liquidity, , , , ) =
- nonfungiblePositionManager.positions(tokenId);
-
- // set the owner and data for position
- // operator is msg.sender
- deposits[tokenId] = Deposit({owner: owner, liquidity: liquidity, token0: token0, token1: token1});
- }
-}
-```
diff --git a/docs/contracts/v3/guides/providing-liquidity/the-full-contract.md b/docs/contracts/v3/guides/providing-liquidity/the-full-contract.md
deleted file mode 100644
index 892dd63e7..000000000
--- a/docs/contracts/v3/guides/providing-liquidity/the-full-contract.md
+++ /dev/null
@@ -1,250 +0,0 @@
----
-id: the-full-contract
-title: The Full Contract
-sidebar_position: 6
----
-
-Below we have the complete functioning code example: a contract that can custody t1 V3 position NFT's and manipulate the positions and liquidity therein by collecting fees, increasing or decreasing liquidity, and minting new positions. View on github [here](https://github.com/Uniswap/uniswap-docs/blob/main/examples/smart-contracts/LiquidityExamples.sol).
-
-```solidity
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol';
-import '@uniswap/v3-core/contracts/libraries/TickMath.sol';
-import '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol';
-import '../libraries/TransferHelper.sol';
-import '../interfaces/INonfungiblePositionManager.sol';
-import '../base/LiquidityManagement.sol';
-
-contract LiquidityExamples is IERC721Receiver {
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-
- uint24 public constant poolFee = 3000;
-
- INonfungiblePositionManager public immutable nonfungiblePositionManager;
-
- /// @notice Represents the deposit of an NFT
- struct Deposit {
- address owner;
- uint128 liquidity;
- address token0;
- address token1;
- }
-
- /// @dev deposits[tokenId] => Deposit
- mapping(uint256 => Deposit) public deposits;
-
- constructor(
- INonfungiblePositionManager _nonfungiblePositionManager
- ) {
- nonfungiblePositionManager = _nonfungiblePositionManager;
- }
-
- // Implementing `onERC721Received` so this contract can receive custody of erc721 tokens
- function onERC721Received(
- address operator,
- address,
- uint256 tokenId,
- bytes calldata
- ) external override returns (bytes4) {
- // get position information
-
- _createDeposit(operator, tokenId);
-
- return this.onERC721Received.selector;
- }
-
- function _createDeposit(address owner, uint256 tokenId) internal {
- (, , address token0, address token1, , , , uint128 liquidity, , , , ) =
- nonfungiblePositionManager.positions(tokenId);
-
- // set the owner and data for position
- // operator is msg.sender
- deposits[tokenId] = Deposit({owner: owner, liquidity: liquidity, token0: token0, token1: token1});
- }
-
- /// @notice Calls the mint function defined in periphery, mints the same amount of each token.
- /// For this example we are providing 1000 DAI and 1000 USDC in liquidity
- /// @return tokenId The id of the newly minted ERC721
- /// @return liquidity The amount of liquidity for the position
- /// @return amount0 The amount of token0
- /// @return amount1 The amount of token1
- function mintNewPosition()
- external
- returns (
- uint256 tokenId,
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- )
- {
- // For this example, we will provide equal amounts of liquidity in both assets.
- // Providing liquidity in both assets means liquidity will be earning fees and is considered in-range.
- uint256 amount0ToMint = 1000;
- uint256 amount1ToMint = 1000;
-
- // transfer tokens to contract
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amount0ToMint);
- TransferHelper.safeTransferFrom(USDC, msg.sender, address(this), amount1ToMint);
-
- // Approve the position manager
- TransferHelper.safeApprove(DAI, address(nonfungiblePositionManager), amount0ToMint);
- TransferHelper.safeApprove(USDC, address(nonfungiblePositionManager), amount1ToMint);
-
- INonfungiblePositionManager.MintParams memory params =
- INonfungiblePositionManager.MintParams({
- token0: DAI,
- token1: USDC,
- fee: poolFee,
- tickLower: TickMath.MIN_TICK,
- tickUpper: TickMath.MAX_TICK,
- amount0Desired: amount0ToMint,
- amount1Desired: amount1ToMint,
- amount0Min: 0,
- amount1Min: 0,
- recipient: address(this),
- deadline: block.timestamp
- });
-
- // Note that the pool defined by DAI/USDC and fee tier 0.3% must already be created and initialized in order to mint
- (tokenId, liquidity, amount0, amount1) = nonfungiblePositionManager.mint(params);
-
- // Create a deposit
- _createDeposit(msg.sender, tokenId);
-
- // Remove allowance and refund in both assets.
- if (amount0 < amount0ToMint) {
- TransferHelper.safeApprove(DAI, address(nonfungiblePositionManager), 0);
- uint256 refund0 = amount0ToMint - amount0;
- TransferHelper.safeTransfer(DAI, msg.sender, refund0);
- }
-
- if (amount1 < amount1ToMint) {
- TransferHelper.safeApprove(USDC, address(nonfungiblePositionManager), 0);
- uint256 refund1 = amount1ToMint - amount1;
- TransferHelper.safeTransfer(USDC, msg.sender, refund1);
- }
- }
-
- /// @notice Collects the fees associated with provided liquidity
- /// @dev The contract must hold the erc721 token before it can collect fees
- /// @param tokenId The id of the erc721 token
- /// @return amount0 The amount of fees collected in token0
- /// @return amount1 The amount of fees collected in token1
- function collectAllFees(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) {
- // Caller must own the ERC721 position, meaning it must be a deposit
-
- // set amount0Max and amount1Max to uint256.max to collect all fees
- // alternatively can set recipient to msg.sender and avoid another transaction in `sendToOwner`
- INonfungiblePositionManager.CollectParams memory params =
- INonfungiblePositionManager.CollectParams({
- tokenId: tokenId,
- recipient: address(this),
- amount0Max: type(uint128).max,
- amount1Max: type(uint128).max
- });
-
- (amount0, amount1) = nonfungiblePositionManager.collect(params);
-
- // send collected feed back to owner
- _sendToOwner(tokenId, amount0, amount1);
- }
-
- /// @notice A function that decreases the current liquidity by half. An example to show how to call the `decreaseLiquidity` function defined in periphery.
- /// @param tokenId The id of the erc721 token
- /// @return amount0 The amount received back in token0
- /// @return amount1 The amount returned back in token1
- function decreaseLiquidityInHalf(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) {
- // caller must be the owner of the NFT
- require(msg.sender == deposits[tokenId].owner, 'Not the owner');
- // get liquidity data for tokenId
- uint128 liquidity = deposits[tokenId].liquidity;
- uint128 halfLiquidity = liquidity / 2;
-
- // amount0Min and amount1Min are price slippage checks
- // if the amount received after burning is not greater than these minimums, transaction will fail
- INonfungiblePositionManager.DecreaseLiquidityParams memory params =
- INonfungiblePositionManager.DecreaseLiquidityParams({
- tokenId: tokenId,
- liquidity: halfLiquidity,
- amount0Min: 0,
- amount1Min: 0,
- deadline: block.timestamp
- });
-
- (amount0, amount1) = nonfungiblePositionManager.decreaseLiquidity(params);
-
- //send liquidity back to owner
- _sendToOwner(tokenId, amount0, amount1);
- }
-
- /// @notice Increases liquidity in the current range
- /// @dev Pool must be initialized already to add liquidity
- /// @param tokenId The id of the erc721 token
- /// @param amount0 The amount to add of token0
- /// @param amount1 The amount to add of token1
- function increaseLiquidityCurrentRange(
- uint256 tokenId,
- uint256 amountAdd0,
- uint256 amountAdd1
- )
- external
- returns (
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- ) {
-
- TransferHelper.safeTransferFrom(deposits[tokenId].token0, msg.sender, address(this), amountAdd0);
- TransferHelper.safeTransferFrom(deposits[tokenId].token1, msg.sender, address(this), amountAdd1);
-
- TransferHelper.safeApprove(deposits[tokenId].token0, address(nonfungiblePositionManager), amountAdd0);
- TransferHelper.safeApprove(deposits[tokenId].token1, address(nonfungiblePositionManager), amountAdd1);
-
- INonfungiblePositionManager.IncreaseLiquidityParams memory params = INonfungiblePositionManager.IncreaseLiquidityParams({
- tokenId: tokenId,
- amount0Desired: amountAdd0,
- amount1Desired: amountAdd1,
- amount0Min: 0,
- amount1Min: 0,
- deadline: block.timestamp
- });
-
- (liquidity, amount0, amount1) = nonfungiblePositionManager.increaseLiquidity(params);
-
- }
-
- /// @notice Transfers funds to owner of NFT
- /// @param tokenId The id of the erc721
- /// @param amount0 The amount of token0
- /// @param amount1 The amount of token1
- function _sendToOwner(
- uint256 tokenId,
- uint256 amount0,
- uint256 amount1
- ) internal {
- // get owner of contract
- address owner = deposits[tokenId].owner;
-
- address token0 = deposits[tokenId].token0;
- address token1 = deposits[tokenId].token1;
- // send collected fees to owner
- TransferHelper.safeTransfer(token0, owner, amount0);
- TransferHelper.safeTransfer(token1, owner, amount1);
- }
-
- /// @notice Transfers the NFT to the owner
- /// @param tokenId The id of the erc721
- function retrieveNFT(uint256 tokenId) external {
- // must be the owner of the NFT
- require(msg.sender == deposits[tokenId].owner, 'Not the owner');
- // transfer ownership to original owner
- nonfungiblePositionManager.safeTransferFrom(address(this), msg.sender, tokenId);
- //remove information related to tokenId
- delete deposits[tokenId];
- }
-}
-```
diff --git a/docs/contracts/v3/guides/swaps/_category_.json b/docs/contracts/v3/guides/swaps/_category_.json
deleted file mode 100644
index bae2cd5c4..000000000
--- a/docs/contracts/v3/guides/swaps/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Implement A Swap",
- "position": 1,
- "collapsed": true
-}
diff --git a/docs/contracts/v3/guides/swaps/multihop-swaps.md b/docs/contracts/v3/guides/swaps/multihop-swaps.md
deleted file mode 100644
index 35e4dad76..000000000
--- a/docs/contracts/v3/guides/swaps/multihop-swaps.md
+++ /dev/null
@@ -1,251 +0,0 @@
----
-id: multihop-swaps
-title: Multihop Swaps
-sidebar_position: 2
----
-
-## Introduction
-
-The examples below are implementations of the two styles of multi-hop swapping available on v3. The examples below are not production ready code, and are implemented in a simplistic manner for the purpose of learning.
-
-## Setting up the Contract
-
-Declare the solidity version that will be used to compile the contract, and the `abicoder v2` to allow arbitrary nested arrays and structs
-to be encoded and decoded in calldata, a feature we use when executing a swap.
-
-```solidity
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-```
-
-Import the two needed contracts from the npm package installation.
-
-```solidity
-import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
-import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
-```
-
-Create a contract called `SwapExamples`, and declare an immutable public variable `swapRouter` of type `ISwapRouter`.
-This allows us to call functions in the `ISwapRouter` interface.
-
-```solidity
-contract SwapExamples {
- // For the scope of these swap examples,
- // we will detail the design considerations when using `exactInput`, `exactInputSingle`, `exactOutput`, and `exactOutputSingle`.
- // It should be noted that for the sake of these examples we pass in the swap router as a constructor argument instead of inheriting it.
- // More advanced example contracts will detail how to inherit the swap router safely.
- // This example swaps DAI/WETH9 for single path swaps and DAI/USDC/WETH9 for multi path swaps.
-
- ISwapRouter public immutable swapRouter;
-```
-
-Hardcode the token contract addresses and pool fee tiers for the example. In production, you would likely use an input parameter for this and pass the input into a memory variable, allowing the contract to change the pools and tokens it interacts with on a per transaction basis, but for conceptual simplicity, we are hardcoding them here.
-
-```solidity
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant WETH9 = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-
- // For this example, we will set the pool fee to 0.3%.
- uint24 public constant poolFee = 3000;
-
- constructor(ISwapRouter _swapRouter) {
- swapRouter = _swapRouter;
- }
-```
-
-## Exact Input Multi Hop Swaps
-
-Exact input multi hop swaps will swap a fixed amount on a given input token for the maximum amount possible for a given output, and can include an arbitrary number of intermediary swaps.
-
-### Input Parameters
-
-- `path`: The path is a sequence of (`tokenAddress` - `fee` - `tokenAddress`), which are the variables needed to compute each pool contract address in our sequence of swaps. The multihop swap router code will automatically find the correct pool with these variables, and execute the swap needed within each pool in our sequence.
-- `recipient`: the destination address of the outbound asset.
-- `deadline`: the unix time after which a transaction will be reverted, to protect against long delays and the increased chance of large price swings therein.
-- `amountIn`: the amount of the inbound asset
-- `amountOutMin`: the minimum amount of the outbound asset, less than which will cause the transaction to revert. For the sake of this example we will set it to `0`, in production one will need to use the SDK to quote an expected price, or an on chain price oracle for more advanced manipulation resistant systems.
-
-### Calling the function
-
-```solidity
- /// @notice swapExactInputMultihop swaps a fixed amount of DAI for a maximum possible amount of WETH9 through an intermediary pool.
- /// For this example, we will swap DAI to USDC, then USDC to WETH9 to achieve our desired output.
- /// @dev The calling address must approve this contract to spend at least `amountIn` worth of its DAI for this function to succeed.
- /// @param amountIn The amount of DAI to be swapped.
- /// @return amountOut The amount of WETH9 received after the swap.
- function swapExactInputMultihop(uint256 amountIn) external returns (uint256 amountOut) {
- // Transfer `amountIn` of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountIn);
-
- // Approve the router to spend DAI.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountIn);
-
- // Multiple pool swaps are encoded through bytes called a `path`. A path is a sequence of token addresses and poolFees that define the pools used in the swaps.
- // The format for pool encoding is (tokenIn, fee, tokenOut/tokenIn, fee, tokenOut) where tokenIn/tokenOut parameter is the shared token across the pools.
- // Since we are swapping DAI to USDC and then USDC to WETH9 the path encoding is (DAI, 0.3%, USDC, 0.3%, WETH9).
- ISwapRouter.ExactInputParams memory params =
- ISwapRouter.ExactInputParams({
- path: abi.encodePacked(DAI, poolFee, USDC, poolFee, WETH9),
- recipient: msg.sender,
- deadline: block.timestamp,
- amountIn: amountIn,
- amountOutMinimum: 0
- });
-
- // Executes the swap.
- amountOut = swapRouter.exactInput(params);
- }
-```
-
-## Exact Output Multihop Swap
-
-An exact output swap will swap a variable amount of the input token for a fixed amount of the outbound token. This is the less common technique for multihop swaps. The code for swapping is largely the same except for one notable difference, the `Path` is encoded backwards, as an exact output swap is executed in reverse order to pass down the necessary variables for the chain of transactions
-
-### Input Parameters
-
-- `path`: The path is a sequence of `tokenAddress` `Fee` `tokenAddress`, _encoded in reverse order_, which are the variables needed to compute each pool contract address in our sequence of swaps. The multihop swap router code will automatically find the correct pool with these variables, and execute the swap needed within each pool in our sequence.
-- `recipient`: the destination address of the outbound asset.
-- `deadline`: the unix time after which a transaction will be reverted, to protect against long delays and the increased chance of large price swings therein.
-- `amountOut`: The desired amount of WETH9.
-- `amountInMaximum`: The maximum amount of DAI willing to be swapped for the specified amountOut of WETH9.
-
-### Calling the function
-
-```solidity
- /// @notice swapExactOutputMultihop swaps a minimum possible amount of DAI for a fixed amount of WETH through an intermediary pool.
- /// For this example, we want to swap DAI for WETH9 through a USDC pool but we specify the desired amountOut of WETH9. Notice how the path encoding is slightly different in for exact output swaps.
- /// @dev The calling address must approve this contract to spend its DAI for this function to succeed. As the amount of input DAI is variable,
- /// the calling address will need to approve for a slightly higher amount, anticipating some variance.
- /// @param amountOut The desired amount of WETH9.
- /// @param amountInMaximum The maximum amount of DAI willing to be swapped for the specified amountOut of WETH9.
- /// @return amountIn The amountIn of DAI actually spent to receive the desired amountOut.
- function swapExactOutputMultihop(uint256 amountOut, uint256 amountInMaximum) external returns (uint256 amountIn) {
- // Transfer the specified `amountInMaximum` to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountInMaximum);
- // Approve the router to spend `amountInMaximum`.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountInMaximum);
-
- // The parameter path is encoded as (tokenOut, fee, tokenIn/tokenOut, fee, tokenIn)
- // The tokenIn/tokenOut field is the shared token between the two pools used in the multiple pool swap. In this case USDC is the "shared" token.
- // For an exactOutput swap, the first swap that occurs is the swap which returns the eventual desired token.
- // In this case, our desired output token is WETH9 so that swap happens first, and is encoded in the path accordingly.
- ISwapRouter.ExactOutputParams memory params =
- ISwapRouter.ExactOutputParams({
- path: abi.encodePacked(WETH9, poolFee, USDC, poolFee, DAI),
- recipient: msg.sender,
- deadline: block.timestamp,
- amountOut: amountOut,
- amountInMaximum: amountInMaximum
- });
-
- // Executes the swap, returning the amountIn actually spent.
- amountIn = swapRouter.exactOutput(params);
-
- // If the swap did not require the full amountInMaximum to achieve the exact amountOut then we refund msg.sender and approve the router to spend 0.
- if (amountIn < amountInMaximum) {
- TransferHelper.safeApprove(DAI, address(swapRouter), 0);
- TransferHelper.safeTransferFrom(DAI, address(this), msg.sender, amountInMaximum - amountIn);
- }
- }
-```
-
-## The Full Contract
-
-```solidity
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
-import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
-
-contract SwapExamples {
- // For the scope of these swap examples,
- // we will detail the design considerations when using
- // `exactInput`, `exactInputSingle`, `exactOutput`, and `exactOutputSingle`.
-
- // It should be noted that for the sake of these examples, we purposefully pass in the swap router instead of inherit the swap router for simplicity.
- // More advanced example contracts will detail how to inherit the swap router safely.
-
- ISwapRouter public immutable swapRouter;
-
- // This example swaps DAI/WETH9 for single path swaps and DAI/USDC/WETH9 for multi path swaps.
-
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant WETH9 = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-
- // For this example, we will set the pool fee to 0.3%.
- uint24 public constant poolFee = 3000;
-
- constructor(ISwapRouter _swapRouter) {
- swapRouter = _swapRouter;
- }
-
- /// @notice swapInputMultiplePools swaps a fixed amount of DAI for a maximum possible amount of WETH9 through an intermediary pool.
- /// For this example, we will swap DAI to USDC, then USDC to WETH9 to achieve our desired output.
- /// @dev The calling address must approve this contract to spend at least `amountIn` worth of its DAI for this function to succeed.
- /// @param amountIn The amount of DAI to be swapped.
- /// @return amountOut The amount of WETH9 received after the swap.
- function swapExactInputMultihop(uint256 amountIn) external returns (uint256 amountOut) {
- // Transfer `amountIn` of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountIn);
-
- // Approve the router to spend DAI.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountIn);
-
- // Multiple pool swaps are encoded through bytes called a `path`. A path is a sequence of token addresses and poolFees that define the pools used in the swaps.
- // The format for pool encoding is (tokenIn, fee, tokenOut/tokenIn, fee, tokenOut) where tokenIn/tokenOut parameter is the shared token across the pools.
- // Since we are swapping DAI to USDC and then USDC to WETH9 the path encoding is (DAI, 0.3%, USDC, 0.3%, WETH9).
- ISwapRouter.ExactInputParams memory params =
- ISwapRouter.ExactInputParams({
- path: abi.encodePacked(DAI, poolFee, USDC, poolFee, WETH9),
- recipient: msg.sender,
- deadline: block.timestamp,
- amountIn: amountIn,
- amountOutMinimum: 0
- });
-
- // Executes the swap.
- amountOut = swapRouter.exactInput(params);
- }
-
- /// @notice swapExactOutputMultihop swaps a minimum possible amount of DAI for a fixed amount of WETH through an intermediary pool.
- /// For this example, we want to swap DAI for WETH9 through a USDC pool but we specify the desired amountOut of WETH9. Notice how the path encoding is slightly different in for exact output swaps.
- /// @dev The calling address must approve this contract to spend its DAI for this function to succeed. As the amount of input DAI is variable,
- /// the calling address will need to approve for a slightly higher amount, anticipating some variance.
- /// @param amountOut The desired amount of WETH9.
- /// @param amountInMaximum The maximum amount of DAI willing to be swapped for the specified amountOut of WETH9.
- /// @return amountIn The amountIn of DAI actually spent to receive the desired amountOut.
- function swapExactOutputMultihop(uint256 amountOut, uint256 amountInMaximum) external returns (uint256 amountIn) {
- // Transfer the specified `amountInMaximum` to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountInMaximum);
- // Approve the router to spend `amountInMaximum`.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountInMaximum);
-
- // The parameter path is encoded as (tokenOut, fee, tokenIn/tokenOut, fee, tokenIn)
- // The tokenIn/tokenOut field is the shared token between the two pools used in the multiple pool swap. In this case USDC is the "shared" token.
- // For an exactOutput swap, the first swap that occurs is the swap which returns the eventual desired token.
- // In this case, our desired output token is WETH9 so that swap happpens first, and is encoded in the path accordingly.
- ISwapRouter.ExactOutputParams memory params =
- ISwapRouter.ExactOutputParams({
- path: abi.encodePacked(WETH9, poolFee, USDC, poolFee, DAI),
- recipient: msg.sender,
- deadline: block.timestamp,
- amountOut: amountOut,
- amountInMaximum: amountInMaximum
- });
-
- // Executes the swap, returning the amountIn actually spent.
- amountIn = swapRouter.exactOutput(params);
-
- // If the swap did not require the full amountInMaximum to achieve the exact amountOut then we refund msg.sender and approve the router to spend 0.
- if (amountIn < amountInMaximum) {
- TransferHelper.safeApprove(DAI, address(swapRouter), 0);
- TransferHelper.safeTransferFrom(DAI, address(this), msg.sender, amountInMaximum - amountIn);
- }
- }
-}
-```
diff --git a/docs/contracts/v3/guides/swaps/single-swaps.md b/docs/contracts/v3/guides/swaps/single-swaps.md
deleted file mode 100644
index cc974de0a..000000000
--- a/docs/contracts/v3/guides/swaps/single-swaps.md
+++ /dev/null
@@ -1,279 +0,0 @@
----
-id: single-swaps
-title: Single Swaps
-sidebar_position: 1
----
-
-Swaps are the most common interaction with the t1 protocol. The following example shows you how to implement a single-path swap contract that uses two functions that you create:
-
-- `swapExactInputSingle`
-- `swapExactOutputSingle`
-
-The `swapExactInputSingle` function is for performing _exact input_ swaps, which swap a fixed amount of one token for a maximum possible amount of another token. This function uses the `ExactInputSingleParams` struct and the `exactInputSingle` function from the [ISwapRouter](../../reference/periphery/interfaces/ISwapRouter.md) interface.
-
-The `swapExactOutputSingle` function is for performing _exact output_ swaps, which swap a minimum possible amount of one token for a fixed amount of another token. This function uses the `ExactOutputSingleParams` struct and the `exactOutputSingle` function from the [ISwapRouter](../../reference/periphery/interfaces/ISwapRouter.md) interface.
-
-For simplification, the example hardcodes the token contract addresses, but as explained further below the contract could be modified to change pools and tokens on a per transaction basis.
-
-When trading from a smart contract, the most important thing to keep in mind is that access to an external price source is required. Without this, trades can be frontrun for considerable loss.
-
-**Note:** The swap examples are not production ready code, and are implemented in a simplistic manner for the purpose of learning.
-
-## Set Up the Contract
-
-Declare the solidity version used to compile the contract, and `abicoder v2` to allow arbitrary nested arrays and structs
-to be encoded and decoded in calldata, a feature used when executing a swap.
-
-```solidity
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-```
-
-Import the two relevant contracts from the npm package installation
-
-```solidity
-import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
-import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
-```
-
-Create a contract called `SwapExamples`, and declare an immutable public variable `swapRouter` of type `ISwapRouter`.
-This allows us to call functions in the `ISwapRouter` interface.
-
-```solidity
-contract SwapExamples {
- // For the scope of these swap examples,
- // we will detail the design considerations when using `exactInput`, `exactInputSingle`, `exactOutput`, and `exactOutputSingle`.
- // It should be noted that for the sake of these examples we pass in the swap router as a constructor argument instead of inheriting it.
- // More advanced example contracts will detail how to inherit the swap router safely.
- // This example swaps DAI/WETH9 for single path swaps and DAI/USDC/WETH9 for multi path swaps.
-
- ISwapRouter public immutable swapRouter;
-```
-
-Hardcode the token contract addresses and pool fee tiers for the example. In production, you would likely use an input parameter for this and pass the input into a memory variable, allowing the contract to change the pools and tokens it interacts with on a per transaction basis, but for conceptual simplicity, we are hardcoding them here.
-
-```solidity
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant WETH9 = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-
- // For this example, we will set the pool fee to 0.3%.
- uint24 public constant poolFee = 3000;
-
- constructor(ISwapRouter _swapRouter) {
- swapRouter = _swapRouter;
- }
-```
-
-## Exact Input Swaps
-
-The caller must `approve` the contract to withdraw the tokens from the calling address's account to execute a swap. Remember that because
-our contract is a contract itself and not an extension of the caller (us); we must also approve the t1 protocol router contract to use the tokens that our contract will be in possession of after they have been withdrawn from the calling address (us).
-
-Then, transfer the `amount` of Dai from the calling address into our contract, and use `amount` as the value passed to the second `approve`.
-
-```solidity
- /// @notice swapExactInputSingle swaps a fixed amount of DAI for a maximum possible amount of WETH9
- /// using the DAI/WETH9 0.3% pool by calling `exactInputSingle` in the swap router.
- /// @dev The calling address must approve this contract to spend at least `amountIn` worth of its DAI for this function to succeed.
- /// @param amountIn The exact amount of DAI that will be swapped for WETH9.
- /// @return amountOut The amount of WETH9 received.
- function swapExactInputSingle(uint256 amountIn) external returns (uint256 amountOut) {
- // msg.sender must approve this contract
-
- // Transfer the specified amount of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountIn);
-
- // Approve the router to spend DAI.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountIn);
-
-```
-
-### Swap Input Parameters
-
-To execute the swap function, we need to populate the `ExactInputSingleParams` with the necessary swap data. These parameters are found in the smart contract interfaces, which can be browsed [here](../../reference/periphery/interfaces/ISwapRouter.md).
-
-A brief overview of the parameters:
-
-- `tokenIn` The contract address of the inbound token
-- `tokenOut` The contract address of the outbound token
-- `fee` The fee tier of the pool, used to determine the correct pool contract in which to execute the swap
-- `recipient` the destination address of the outbound token
-- `deadline`: the unix time after which a swap will fail, to protect against long-pending transactions and wild swings in prices
-- `amountOutMinimum`: we are setting to zero, but this is a significant risk in production. For a real deployment, this value should be calculated using our SDK or an onchain price oracle - this helps protect against getting an unusually bad price for a trade due to a front running sandwich or another type of price manipulation
-- `sqrtPriceLimitX96`: We set this to zero - which makes this parameter inactive. In production, this value can be used to set the limit for the price the swap will push the pool to, which can help protect against price impact or for setting up logic in a variety of price-relevant mechanisms.
-
-### Call the function
-
-```solidity
- // Naively set amountOutMinimum to 0. In production, use an oracle or other data source to choose a safer value for amountOutMinimum.
- // We also set the sqrtPriceLimitx96 to be 0 to ensure we swap our exact input amount.
- ISwapRouter.ExactInputSingleParams memory params =
- ISwapRouter.ExactInputSingleParams({
- tokenIn: DAI,
- tokenOut: WETH9,
- fee: poolFee,
- recipient: msg.sender,
- deadline: block.timestamp,
- amountIn: amountIn,
- amountOutMinimum: 0,
- sqrtPriceLimitX96: 0
- });
-
- // The call to `exactInputSingle` executes the swap.
- amountOut = swapRouter.exactInputSingle(params);
- }
-```
-
-## Exact Output Swaps
-
-Exact Output swaps a minimum possible amount of the input token for a fixed amount of the outbound token. This is the less common swap style - but useful in a variety of circumstances.
-
-Because this example transfers in the inbound asset in anticipation of the swap - its possible that some of the inbound token will be left over after the swap is executed, which is why we pay it back to the calling address at the end of the swap.
-
-### Call the function
-
-```solidity
-/// @notice swapExactOutputSingle swaps a minimum possible amount of DAI for a fixed amount of WETH.
-/// @dev The calling address must approve this contract to spend its DAI for this function to succeed. As the amount of input DAI is variable,
-/// the calling address will need to approve for a slightly higher amount, anticipating some variance.
-/// @param amountOut The exact amount of WETH9 to receive from the swap.
-/// @param amountInMaximum The amount of DAI we are willing to spend to receive the specified amount of WETH9.
-/// @return amountIn The amount of DAI actually spent in the swap.
-function swapExactOutputSingle(uint256 amountOut, uint256 amountInMaximum) external returns (uint256 amountIn) {
- // Transfer the specified amount of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountInMaximum);
-
- // Approve the router to spend the specified `amountInMaximum` of DAI.
- // In production, you should choose the maximum amount to spend based on oracles or other data sources to achieve a better swap.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountInMaximum);
-
- ISwapRouter.ExactOutputSingleParams memory params =
- ISwapRouter.ExactOutputSingleParams({
- tokenIn: DAI,
- tokenOut: WETH9,
- fee: poolFee,
- recipient: msg.sender,
- deadline: block.timestamp,
- amountOut: amountOut,
- amountInMaximum: amountInMaximum,
- sqrtPriceLimitX96: 0
- });
-
- // Executes the swap returning the amountIn needed to spend to receive the desired amountOut.
- amountIn = swapRouter.exactOutputSingle(params);
-
- // For exact output swaps, the amountInMaximum may not have all been spent.
- // If the actual amount spent (amountIn) is less than the specified maximum amount, we must refund the msg.sender and approve the swapRouter to spend 0.
- if (amountIn < amountInMaximum) {
- TransferHelper.safeApprove(DAI, address(swapRouter), 0);
- TransferHelper.safeTransfer(DAI, msg.sender, amountInMaximum - amountIn);
- }
- }
-
-```
-
-## A Complete Single Swap Contract
-
-```solidity
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '@uniswap/v3-periphery/contracts/libraries/TransferHelper.sol';
-import '@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol';
-
-contract SwapExamples {
- // For the scope of these swap examples,
- // we will detail the design considerations when using
- // `exactInput`, `exactInputSingle`, `exactOutput`, and `exactOutputSingle`.
-
- // It should be noted that for the sake of these examples, we purposefully pass in the swap router instead of inherit the swap router for simplicity.
- // More advanced example contracts will detail how to inherit the swap router safely.
-
- ISwapRouter public immutable swapRouter;
-
- // This example swaps DAI/WETH9 for single path swaps and DAI/USDC/WETH9 for multi path swaps.
-
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant WETH9 = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-
- // For this example, we will set the pool fee to 0.3%.
- uint24 public constant poolFee = 3000;
-
- constructor(ISwapRouter _swapRouter) {
- swapRouter = _swapRouter;
- }
-
- /// @notice swapExactInputSingle swaps a fixed amount of DAI for a maximum possible amount of WETH9
- /// using the DAI/WETH9 0.3% pool by calling `exactInputSingle` in the swap router.
- /// @dev The calling address must approve this contract to spend at least `amountIn` worth of its DAI for this function to succeed.
- /// @param amountIn The exact amount of DAI that will be swapped for WETH9.
- /// @return amountOut The amount of WETH9 received.
- function swapExactInputSingle(uint256 amountIn) external returns (uint256 amountOut) {
- // msg.sender must approve this contract
-
- // Transfer the specified amount of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountIn);
-
- // Approve the router to spend DAI.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountIn);
-
- // Naively set amountOutMinimum to 0. In production, use an oracle or other data source to choose a safer value for amountOutMinimum.
- // We also set the sqrtPriceLimitx96 to be 0 to ensure we swap our exact input amount.
- ISwapRouter.ExactInputSingleParams memory params =
- ISwapRouter.ExactInputSingleParams({
- tokenIn: DAI,
- tokenOut: WETH9,
- fee: poolFee,
- recipient: msg.sender,
- deadline: block.timestamp,
- amountIn: amountIn,
- amountOutMinimum: 0,
- sqrtPriceLimitX96: 0
- });
-
- // The call to `exactInputSingle` executes the swap.
- amountOut = swapRouter.exactInputSingle(params);
- }
-
- /// @notice swapExactOutputSingle swaps a minimum possible amount of DAI for a fixed amount of WETH.
- /// @dev The calling address must approve this contract to spend its DAI for this function to succeed. As the amount of input DAI is variable,
- /// the calling address will need to approve for a slightly higher amount, anticipating some variance.
- /// @param amountOut The exact amount of WETH9 to receive from the swap.
- /// @param amountInMaximum The amount of DAI we are willing to spend to receive the specified amount of WETH9.
- /// @return amountIn The amount of DAI actually spent in the swap.
- function swapExactOutputSingle(uint256 amountOut, uint256 amountInMaximum) external returns (uint256 amountIn) {
- // Transfer the specified amount of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountInMaximum);
-
- // Approve the router to spend the specifed `amountInMaximum` of DAI.
- // In production, you should choose the maximum amount to spend based on oracles or other data sources to acheive a better swap.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountInMaximum);
-
- ISwapRouter.ExactOutputSingleParams memory params =
- ISwapRouter.ExactOutputSingleParams({
- tokenIn: DAI,
- tokenOut: WETH9,
- fee: poolFee,
- recipient: msg.sender,
- deadline: block.timestamp,
- amountOut: amountOut,
- amountInMaximum: amountInMaximum,
- sqrtPriceLimitX96: 0
- });
-
- // Executes the swap returning the amountIn needed to spend to receive the desired amountOut.
- amountIn = swapRouter.exactOutputSingle(params);
-
- // For exact output swaps, the amountInMaximum may not have all been spent.
- // If the actual amount spent (amountIn) is less than the specified maximum amount, we must refund the msg.sender and approve the swapRouter to spend 0.
- if (amountIn < amountInMaximum) {
- TransferHelper.safeApprove(DAI, address(swapRouter), 0);
- TransferHelper.safeTransfer(DAI, msg.sender, amountInMaximum - amountIn);
- }
- }
-}
-```
diff --git a/docs/contracts/v3/overview.md b/docs/contracts/v3/overview.md
deleted file mode 100644
index db0316c5c..000000000
--- a/docs/contracts/v3/overview.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-# The t1 V3 Smart Contracts
-
-Welcome to the t1 V3 smart contracts documentation.
-
-The pages here contain guides and technical documentation for the t1 V3 Smart Contracts.
-You can use these docs to learn about the V3 Protocol Smart Contracts and develop on-chain integrations.
-
-# Guides
-
-If you are new to the t1 Protocol, we recommend you start with the [basic concepts](../../concepts/uniswap-protocol) first.
-
-You can then setup your [local environment](./guides/local-environment) and execute your [first swap](./guides/swaps/single-swaps).
-
-# Reference
-
-For a deeper dive, read through the [technical reference](./reference/overview) docs.
-
-# Resources
-
-- [**V3 Core**](https://github.com/Uniswap/v3-core)
-- [**V3 Periphery**](https://github.com/Uniswap/v3-periphery)
\ No newline at end of file
diff --git a/docs/contracts/v3/reference/_category_.json b/docs/contracts/v3/reference/_category_.json
deleted file mode 100644
index 65b90b787..000000000
--- a/docs/contracts/v3/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 4,
- "collapsed": true
-}
diff --git a/docs/contracts/v3/reference/core/UniswapV3Factory.md b/docs/contracts/v3/reference/core/UniswapV3Factory.md
deleted file mode 100644
index 0e38dd2b0..000000000
--- a/docs/contracts/v3/reference/core/UniswapV3Factory.md
+++ /dev/null
@@ -1,71 +0,0 @@
-Deploys t1 V3 pools and manages ownership and control over pool protocol fees
-
-## Functions
-
-### createPool
-
-```solidity
- function createPool(
- address tokenA,
- address tokenB,
- uint24 fee
- ) external returns (address pool)
-```
-
-Creates a pool for the given two tokens and fee
-
-tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved
-from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments
-are invalid.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :---------------------------------------------- |
-| `tokenA` | address | One of the two tokens in the desired pool |
-| `tokenB` | address | The other of the two tokens in the desired pool |
-| `fee` | uint24 | The desired fee for the pool |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------ | :------------------------------------ |
-| `pool` | address | The address of the newly created pool |
-
-### setOwner
-
-```solidity
- function setOwner(
- address _owner
- ) external
-```
-
-Updates the owner of the factory
-
-Must be called by the current owner
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :--------------------------- |
-| `_owner` | address | The new owner of the factory |
-
-### enableFeeAmount
-
-```solidity
- function enableFeeAmount(
- uint24 fee,
- int24 tickSpacing
- ) public
-```
-
-Enables a fee amount with the given tickSpacing
-
-Fee amounts may never be removed once enabled
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :----- | :--------------------------------------------------------------------------------------- |
-| `fee` | uint24 | The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6) |
-| `tickSpacing` | int24 | The spacing between ticks to be enforced for all pools created with the given fee amount |
diff --git a/docs/contracts/v3/reference/core/UniswapV3Pool.md b/docs/contracts/v3/reference/core/UniswapV3Pool.md
deleted file mode 100644
index 41b051e6e..000000000
--- a/docs/contracts/v3/reference/core/UniswapV3Pool.md
+++ /dev/null
@@ -1,310 +0,0 @@
-## Functions
-
-### \_blockTimestamp
-
-```solidity
- function _blockTimestamp(
- ) internal view virtual returns (uint32)
-```
-
-Returns the block timestamp truncated to 32 bits, i.e. mod 2\*\*32. This method is overridden in tests.
-
-### snapshotCumulativesInside
-
-```solidity
- function snapshotCumulativesInside(
- int24 tickLower,
- int24 tickUpper
- ) external view override noDelegateCall returns (int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside)
-```
-
-Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range
-
-Snapshots must only be compared to other snapshots, taken over a period for which a position existed.
-I.e., snapshots cannot be compared if a position is not held for the entire period between when the first
-snapshot is taken and the second snapshot is taken.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :---- | :-------------------------- |
-| `tickLower` | int24 | The lower tick of the range |
-| `tickUpper` | int24 | The upper tick of the range |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------------ | :------ | :-------------------------------------------------- |
-| `tickCumulativeInside` | int56 | The snapshot of the tick accumulator for the range |
-| `secondsPerLiquidityInsideX128` | uint160 | The snapshot of seconds per liquidity for the range |
-| `secondsInside` | uint32 | The snapshot of seconds per liquidity for the range |
-
-### observe
-
-```solidity
- function observe(
- uint32[] secondsAgos
- ) external view override noDelegateCall returns (int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)
-```
-
-Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp
-
-To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing
-the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,
-you must call it with secondsAgos = [3600, 0].
-The time weighted average tick represents the geometric time weighted average price of the pool, in
-log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------- | :---------------------------------------------------------------------------- |
-| `secondsAgos` | uint32[] | From how long ago each cumulative tick and liquidity value should be returned |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----------------------------------- | :-------- | :---------------------------------------------------------------------------------------------- |
-| `tickCumulatives` | int56[] | Cumulative tick values as of each `secondsAgos` from the current block timestamp |
-| `secondsPerLiquidityCumulativeX128s` | uint160[] | Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block |
-
-timestamp
-
-### increaseObservationCardinalityNext
-
-```solidity
- function increaseObservationCardinalityNext(
- uint16 observationCardinalityNext
- ) external override lock noDelegateCall
-```
-
-Increase the maximum number of price and liquidity observations that this pool will store
-
-This method is no-op if the pool already has an observationCardinalityNext greater than or equal to
-the input observationCardinalityNext.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------------------------- | :----- | :--------------------------------------------------------------- |
-| `observationCardinalityNext` | uint16 | The desired minimum number of observations for the pool to store |
-
-### initialize
-
-```solidity
- function initialize(
- uint160 sqrtPriceX96
- ) external override
-```
-
-Sets the initial price for the pool
-
-not locked because it initializes unlocked
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :------ | :--------------------------------------------- |
-| `sqrtPriceX96` | uint160 | the initial sqrt price of the pool as a Q64.96 |
-
-### mint
-
-```solidity
- function mint(
- address recipient,
- int24 tickLower,
- int24 tickUpper,
- uint128 amount,
- bytes data
- ) external override lock returns (uint256 amount0, uint256 amount1)
-```
-
-Adds liquidity for the given recipient/tickLower/tickUpper position
-
-noDelegateCall is applied indirectly via \_modifyPosition
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------------------------------- |
-| `recipient` | address | The address for which the liquidity will be created |
-| `tickLower` | int24 | The lower tick of the position in which to add liquidity |
-| `tickUpper` | int24 | The upper tick of the position in which to add liquidity |
-| `amount` | uint128 | The amount of liquidity to mint |
-| `data` | bytes | Any data that should be passed through to the callback |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :---------------------------------------------------------------------------------------------------------- |
-| `amount0` | uint256 | The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback |
-| `amount1` | uint256 | The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback |
-
-### collect
-
-```solidity
- function collect(
- address recipient,
- int24 tickLower,
- int24 tickUpper,
- uint128 amount0Requested,
- uint128 amount1Requested
- ) external override lock returns (uint128 amount0, uint128 amount1)
-```
-
-Collects tokens owed to a position
-
-Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.
-Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or
-amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the
-actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----------------- | :------ | :------------------------------------------------------- |
-| `recipient` | address | The address which should receive the fees collected |
-| `tickLower` | int24 | The lower tick of the position for which to collect fees |
-| `tickUpper` | int24 | The upper tick of the position for which to collect fees |
-| `amount0Requested` | uint128 | How much token0 should be withdrawn from the fees owed |
-| `amount1Requested` | uint128 | How much token1 should be withdrawn from the fees owed |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------- |
-| `amount0` | uint128 | The amount of fees collected in token0 |
-| `amount1` | uint128 | The amount of fees collected in token1 |
-
-### burn
-
-```solidity
- function burn(
- int24 tickLower,
- int24 tickUpper,
- uint128 amount
- ) external override lock returns (uint256 amount0, uint256 amount1)
-```
-
-Burn liquidity from the sender and account tokens owed for the liquidity to the position
-
-noDelegateCall is applied indirectly via \_modifyPosition
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :--------------------------------------------------------- |
-| `tickLower` | int24 | The lower tick of the position for which to burn liquidity |
-| `tickUpper` | int24 | The upper tick of the position for which to burn liquidity |
-| `amount` | uint128 | How much liquidity to burn |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------------- |
-| `amount0` | uint256 | The amount of token0 sent to the recipient |
-| `amount1` | uint256 | The amount of token1 sent to the recipient |
-
-### swap
-
-```solidity
- function swap(
- address recipient,
- bool zeroForOne,
- int256 amountSpecified,
- uint160 sqrtPriceLimitX96,
- bytes data
- ) external override noDelegateCall returns (int256 amount0, int256 amount1)
-```
-
-Swap token0 for token1, or token1 for token0
-
-The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------------ | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `recipient` | address | The address to receive the output of the swap |
-| `zeroForOne` | bool | The direction of the swap, true for token0 to token1, false for token1 to token0 |
-| `amountSpecified` | int256 | The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative) |
-| `sqrtPriceLimitX96` | uint160 | The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap |
-| `data` | bytes | Any data to be passed through to the callback |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :----- | :----------------------------------------------------------------------------------------- |
-| `amount0` | int256 | The delta of the balance of token0 of the pool, exact when negative, minimum when positive |
-| `amount1` | int256 | The delta of the balance of token1 of the pool, exact when negative, minimum when positive |
-
-### flash
-
-```solidity
- function flash(
- address recipient,
- uint256 amount0,
- uint256 amount1,
- bytes data
- ) external override lock noDelegateCall
-```
-
-Receive token0 and/or token1 and pay it back, plus a fee, in the callback
-
-The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback
-Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling
-with 0 amount{0,1} and sending the donation amount(s) from the callback
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :----------------------------------------------------------- |
-| `recipient` | address | The address which will receive the token0 and token1 amounts |
-| `amount0` | uint256 | The amount of token0 to send |
-| `amount1` | uint256 | The amount of token1 to send |
-| `data` | bytes | Any data to be passed through to the callback |
-
-### setFeeProtocol
-
-```solidity
- function setFeeProtocol(
- uint8 feeProtocol0,
- uint8 feeProtocol1
- ) external override lock onlyFactoryOwner
-```
-
-Set the denominator of the protocol's % share of the fees
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :---- | :-------------------------------------- |
-| `feeProtocol0` | uint8 | new protocol fee for token0 of the pool |
-| `feeProtocol1` | uint8 | new protocol fee for token1 of the pool |
-
-### collectProtocol
-
-```solidity
- function collectProtocol(
- address recipient,
- uint128 amount0Requested,
- uint128 amount1Requested
- ) external override lock onlyFactoryOwner returns (uint128 amount0, uint128 amount1)
-```
-
-Collect the protocol fee accrued to the pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----------------- | :------ | :---------------------------------------------------------------------------- |
-| `recipient` | address | The address to which collected protocol fees should be sent |
-| `amount0Requested` | uint128 | The maximum amount of token0 to send, can be 0 to collect fees in only token1 |
-| `amount1Requested` | uint128 | The maximum amount of token1 to send, can be 0 to collect fees in only token0 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------- |
-| `amount0` | uint128 | The protocol fee collected in token0 |
-| `amount1` | uint128 | The protocol fee collected in token1 |
diff --git a/docs/contracts/v3/reference/core/UniswapV3PoolDeployer.md b/docs/contracts/v3/reference/core/UniswapV3PoolDeployer.md
deleted file mode 100644
index c04590de9..000000000
--- a/docs/contracts/v3/reference/core/UniswapV3PoolDeployer.md
+++ /dev/null
@@ -1,26 +0,0 @@
-## Functions
-
-### deploy
-
-```solidity
- function deploy(
- address factory,
- address token0,
- address token1,
- uint24 fee,
- int24 tickSpacing
- ) internal returns (address pool)
-```
-
-Deploys a pool with the given parameters by transiently setting the parameters storage slot and then
-clearing it after deploying the pool.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :-------------------------------------------------------------------------------- |
-| `factory` | address | The contract address of the t1 V3 factory |
-| `token0` | address | The first token of the pool by address sort order |
-| `token1` | address | The second token of the pool by address sort order |
-| `fee` | uint24 | The fee collected upon every swap in the pool, denominated in hundredths of a bip |
-| `tickSpacing` | int24 | The spacing between usable ticks |
diff --git a/docs/contracts/v3/reference/core/_category_.json b/docs/contracts/v3/reference/core/_category_.json
deleted file mode 100644
index bae4c6846..000000000
--- a/docs/contracts/v3/reference/core/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Core",
- "position": 2
-}
diff --git a/docs/contracts/v3/reference/core/interfaces/IERC20Minimal.md b/docs/contracts/v3/reference/core/interfaces/IERC20Minimal.md
deleted file mode 100644
index d1c156849..000000000
--- a/docs/contracts/v3/reference/core/interfaces/IERC20Minimal.md
+++ /dev/null
@@ -1,165 +0,0 @@
-Contains a subset of the full ERC20 interface that is used in t1 V3
-
-## Functions
-
-### balanceOf
-
-```solidity
- function balanceOf(
- address account
- ) external view returns (uint256)
-```
-
-Returns the balance of a token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------------------------------------------------- |
-| `account` | address | The account for which to look up the number of tokens it has, i.e. its balance |
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :----------------------------------- |
-| uint256 | number of tokens held by the account |
-
-### transfer
-
-```solidity
- function transfer(
- address recipient,
- uint256 amount
- ) external returns (bool)
-```
-
-Transfers the amount of token from the `msg.sender` to the recipient
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------------------------------------ |
-| `recipient` | address | The account that will receive the amount transferred |
-| `amount` | uint256 | The number of tokens to send from the sender to the recipient |
-
-#### Return Values:
-
-| Type | Description |
-| :--- | :----------------------------------------------------------------- |
-| bool | true for a successful transfer, false for an unsuccessful transfer |
-
-### allowance
-
-```solidity
- function allowance(
- address owner,
- address spender
- ) external view returns (uint256)
-```
-
-Returns the current allowance given to a spender by an owner
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------- |
-| `owner` | address | The account of the token owner |
-| `spender` | address | The account of the token spender |
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :------------------------------------------------ |
-| uint256 | current allowance granted by `owner` to `spender` |
-
-### approve
-
-```solidity
- function approve(
- address spender,
- uint256 amount
- ) external returns (bool)
-```
-
-Sets the allowance of a spender from the `msg.sender` to the value `amount`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------------------------------------------------- |
-| `spender` | address | The account which will be allowed to spend a given amount of the owners tokens |
-| `amount` | uint256 | The amount of tokens allowed to be used by `spender` |
-
-#### Return Values:
-
-| Type | Description |
-| :--- | :----------------------------------------------------- |
-| bool | true for a successful approval, false for unsuccessful |
-
-### transferFrom
-
-```solidity
- function transferFrom(
- address sender,
- address recipient,
- uint256 amount
- ) external returns (bool)
-```
-
-Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :---------------------------------------------------- |
-| `sender` | address | The account from which the transfer will be initiated |
-| `recipient` | address | The recipient of the transfer |
-| `amount` | uint256 | The amount of the transfer |
-
-#### Return Values:
-
-| Type | Description |
-| :--- | :----------------------------------------------------- |
-| bool | true for a successful transfer, false for unsuccessful |
-
-## Events
-
-### Transfer
-
-```solidity
- event Transfer(
- address from,
- address to,
- uint256 value
- )
-```
-
-Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------ | :------ | :---------------------------------------------------------------------- |
-| `from` | address | The account from which the tokens were sent, i.e. the balance decreased |
-| `to` | address | The account to which the tokens were sent, i.e. the balance increased |
-| `value` | uint256 | The amount of tokens that were transferred |
-
-### Approval
-
-```solidity
- event Approval(
- address owner,
- address spender,
- uint256 value
- )
-```
-
-Event emitted when the approval amount for the spender of a given owner's tokens changes.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :-------------------------------------------------------- |
-| `owner` | address | The account that approved spending of its tokens |
-| `spender` | address | The account for which the spending allowance was modified |
-| `value` | uint256 | The new allowance from the owner to the spender |
diff --git a/docs/contracts/v3/reference/core/interfaces/IUniswapV3Factory.md b/docs/contracts/v3/reference/core/interfaces/IUniswapV3Factory.md
deleted file mode 100644
index f2d9c4db9..000000000
--- a/docs/contracts/v3/reference/core/interfaces/IUniswapV3Factory.md
+++ /dev/null
@@ -1,202 +0,0 @@
-The t1 V3 Factory facilitates creation of t1 V3 pools and control over the protocol fees
-
-## Functions
-
-### owner
-
-```solidity
- function owner(
- ) external view returns (address)
-```
-
-Returns the current owner of the factory
-
-Can be changed by the current owner via setOwner
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :--------------------------- |
-| address | address of the factory owner |
-
-### feeAmountTickSpacing
-
-```solidity
- function feeAmountTickSpacing(
- uint24 fee
- ) external view returns (int24)
-```
-
-Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled
-
-A fee amount can never be removed, so this value should be hard coded or cached in the calling context
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---- | :----- | :-------------------------------------------------------------------------------------- |
-| `fee` | uint24 | The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee |
-
-#### Return Values:
-
-| Type | Description |
-| :---- | :----------- |
-| int24 | tick spacing |
-
-### getPool
-
-```solidity
- function getPool(
- address tokenA,
- address tokenB,
- uint24 fee
- ) external view returns (address pool)
-```
-
-Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist
-
-tokenA and tokenB may be passed in either token0/token1 or token1/token0 order
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :-------------------------------------------------------------------------------- |
-| `tokenA` | address | The contract address of either token0 or token1 |
-| `tokenB` | address | The contract address of the other token |
-| `fee` | uint24 | The fee collected upon every swap in the pool, denominated in hundredths of a bip |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------ | :--------------- |
-| `pool` | address | The pool address |
-
-### createPool
-
-```solidity
- function createPool(
- address tokenA,
- address tokenB,
- uint24 fee
- ) external returns (address pool)
-```
-
-Creates a pool for the given two tokens and fee
-
-tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved
-from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments
-are invalid.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :---------------------------------------------- |
-| `tokenA` | address | One of the two tokens in the desired pool |
-| `tokenB` | address | The other of the two tokens in the desired pool |
-| `fee` | uint24 | The desired fee for the pool |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------ | :------------------------------------ |
-| `pool` | address | The address of the newly created pool |
-
-### setOwner
-
-```solidity
- function setOwner(
- address _owner
- ) external
-```
-
-Updates the owner of the factory
-
-Must be called by the current owner
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :--------------------------- |
-| `_owner` | address | The new owner of the factory |
-
-### enableFeeAmount
-
-```solidity
- function enableFeeAmount(
- uint24 fee,
- int24 tickSpacing
- ) external
-```
-
-Enables a fee amount with the given tickSpacing
-
-Fee amounts may never be removed once enabled
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :----- | :--------------------------------------------------------------------------------------- |
-| `fee` | uint24 | The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6) |
-| `tickSpacing` | int24 | The spacing between ticks to be enforced for all pools created with the given fee amount |
-
-## Events
-
-### OwnerChanged
-
-```solidity
- event OwnerChanged(
- address oldOwner,
- address newOwner
- )
-```
-
-Emitted when the owner of the factory is changed
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :------------------------------------- |
-| `oldOwner` | address | The owner before the owner was changed |
-| `newOwner` | address | The owner after the owner was changed |
-
-### PoolCreated
-
-```solidity
- event PoolCreated(
- address token0,
- address token1,
- uint24 fee,
- int24 tickSpacing,
- address pool
- )
-```
-
-Emitted when a pool is created
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :-------------------------------------------------------------------------------- |
-| `token0` | address | The first token of the pool by address sort order |
-| `token1` | address | The second token of the pool by address sort order |
-| `fee` | uint24 | The fee collected upon every swap in the pool, denominated in hundredths of a bip |
-| `tickSpacing` | int24 | The minimum number of ticks between initialized ticks |
-| `pool` | address | The address of the created pool |
-
-### FeeAmountEnabled
-
-```solidity
- event FeeAmountEnabled(
- uint24 fee,
- int24 tickSpacing
- )
-```
-
-Emitted when a new fee amount is enabled for pool creation via the factory
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :----- | :----------------------------------------------------------------------------------------- |
-| `fee` | uint24 | The enabled fee, denominated in hundredths of a bip |
-| `tickSpacing` | int24 | The minimum number of ticks between initialized ticks for pools created with the given fee |
diff --git a/docs/contracts/v3/reference/core/interfaces/IUniswapV3Pool.md b/docs/contracts/v3/reference/core/interfaces/IUniswapV3Pool.md
deleted file mode 100644
index 8cf999c45..000000000
--- a/docs/contracts/v3/reference/core/interfaces/IUniswapV3Pool.md
+++ /dev/null
@@ -1,4 +0,0 @@
-A t1 pool facilitates swapping and automated market making between any two assets that strictly conform
-to the ERC20 specification
-
-The pool interface is broken up into many smaller pieces
diff --git a/docs/contracts/v3/reference/core/interfaces/IUniswapV3PoolDeployer.md b/docs/contracts/v3/reference/core/interfaces/IUniswapV3PoolDeployer.md
deleted file mode 100644
index 5e6264964..000000000
--- a/docs/contracts/v3/reference/core/interfaces/IUniswapV3PoolDeployer.md
+++ /dev/null
@@ -1,25 +0,0 @@
-A contract that constructs a pool must implement this to pass arguments to the pool
-
-This is used to avoid having constructor arguments in the pool contract, which results in the init code hash
-of the pool being constant allowing the CREATE2 address of the pool to be cheaply computed on-chain
-
-## Functions
-
-### parameters
-
-```solidity
- function parameters(
- ) external view returns (address factory, address token0, address token1, uint24 fee, int24 tickSpacing)
-```
-
-Get the parameters to be used in constructing the pool, set transiently during pool creation.
-
-#### Return Values :
-
-| Name | Type | Description |
-| :------------ | :------ | :-------------------------------------------------------------------------------- |
-| `factory ` | address | The factory address |
-| `token0` | address | The first token of the pool by address sort order |
-| `token1` | address | The second token of the pool by address sort order |
-| `fee ` | uint24 | The fee collected upon every swap in the pool, denominated in hundredths of a bip |
-| `tickSpacing` | int24 | The minimum number of ticks between initialized ticks |
diff --git a/docs/contracts/v3/reference/core/interfaces/_category_.json b/docs/contracts/v3/reference/core/interfaces/_category_.json
deleted file mode 100644
index 38cacf246..000000000
--- a/docs/contracts/v3/reference/core/interfaces/_category_.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "label": "Interfaces"
-}
\ No newline at end of file
diff --git a/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3FlashCallback.md b/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3FlashCallback.md
deleted file mode 100644
index d3f31dc79..000000000
--- a/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3FlashCallback.md
+++ /dev/null
@@ -1,26 +0,0 @@
-Any contract that calls IUniswapV3PoolActions#flash must implement this interface
-
-## Functions
-
-### uniswapV3FlashCallback
-
-```solidity
- function uniswapV3FlashCallback(
- uint256 fee0,
- uint256 fee1,
- bytes data
- ) external
-```
-
-Called to `msg.sender` after transferring to the recipient from IUniswapV3Pool#flash.
-
-In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts.
-The caller of this method must be checked to be a t1V3Pool deployed by the canonical t1V3Factory.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :------ | :----------------------------------------------------------------------------- |
-| `fee0` | uint256 | The fee amount in token0 due to the pool by the end of the flash |
-| `fee1` | uint256 | The fee amount in token1 due to the pool by the end of the flash |
-| `data` | bytes | Any data passed through by the caller via the IUniswapV3PoolActions#flash call |
diff --git a/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3MintCallback.md b/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3MintCallback.md
deleted file mode 100644
index 8feda8dd7..000000000
--- a/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3MintCallback.md
+++ /dev/null
@@ -1,26 +0,0 @@
-Any contract that calls IUniswapV3PoolActions#mint must implement this interface
-
-## Functions
-
-### uniswapV3MintCallback
-
-```solidity
- function uniswapV3MintCallback(
- uint256 amount0Owed,
- uint256 amount1Owed,
- bytes data
- ) external
-```
-
-Called to `msg.sender` after minting liquidity to a position from IUniswapV3Pool#mint.
-
-In the implementation you must pay the pool tokens owed for the minted liquidity.
-The caller of this method must be checked to be a t1V3Pool deployed by the canonical t1V3Factory.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :---------------------------------------------------------------------------- |
-| `amount0Owed` | uint256 | The amount of token0 due to the pool for the minted liquidity |
-| `amount1Owed` | uint256 | The amount of token1 due to the pool for the minted liquidity |
-| `data` | bytes | Any data passed through by the caller via the IUniswapV3PoolActions#mint call |
diff --git a/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3SwapCallback.md b/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3SwapCallback.md
deleted file mode 100644
index eed82ee62..000000000
--- a/docs/contracts/v3/reference/core/interfaces/callback/IUniswapV3SwapCallback.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Any contract that calls IUniswapV3PoolActions#swap must implement this interface
-
-## Functions
-
-### uniswapV3SwapCallback
-
-```solidity
- function uniswapV3SwapCallback(
- int256 amount0Delta,
- int256 amount1Delta,
- bytes data
- ) external
-```
-
-Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.
-
-In the implementation you must pay the pool tokens owed for the swap.
-The caller of this method must be checked to be a t1V3Pool deployed by the canonical t1V3Factory.
-amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `amount0Delta` | int256 | The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool. |
-| `amount1Delta` | int256 | The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool. |
-| `data` | bytes | Any data passed through by the caller via the IUniswapV3PoolActions#swap call. |
diff --git a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolActions.md b/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolActions.md
deleted file mode 100644
index 651c48d9d..000000000
--- a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolActions.md
+++ /dev/null
@@ -1,200 +0,0 @@
-Contains pool methods that can be called by anyone
-
-## Functions
-
-### initialize
-
-```solidity
- function initialize(
- uint160 sqrtPriceX96
- ) external
-```
-
-Sets the initial price for the pool
-
-Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :------ | :--------------------------------------------- |
-| `sqrtPriceX96` | uint160 | the initial sqrt price of the pool as a Q64.96 |
-
-### mint
-
-```solidity
- function mint(
- address recipient,
- int24 tickLower,
- int24 tickUpper,
- uint128 amount,
- bytes data
- ) external returns (uint256 amount0, uint256 amount1)
-```
-
-Adds liquidity for the given recipient/tickLower/tickUpper position
-
-The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback
-in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends
-on tickLower, tickUpper, the amount of liquidity, and the current price.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------------------------------- |
-| `recipient` | address | The address for which the liquidity will be created |
-| `tickLower` | int24 | The lower tick of the position in which to add liquidity |
-| `tickUpper` | int24 | The upper tick of the position in which to add liquidity |
-| `amount` | uint128 | The amount of liquidity to mint |
-| `data` | bytes | Any data that should be passed through to the callback |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :---------------------------------------------------------------------------------------------------------- |
-| `amount0` | uint256 | The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback |
-| `amount1` | uint256 | The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback |
-
-### collect
-
-```solidity
- function collect(
- address recipient,
- int24 tickLower,
- int24 tickUpper,
- uint128 amount0Requested,
- uint128 amount1Requested
- ) external returns (uint128 amount0, uint128 amount1)
-```
-
-Collects tokens owed to a position
-
-Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.
-Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or
-amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the
-actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----------------- | :------ | :------------------------------------------------------- |
-| `recipient` | address | The address which should receive the fees collected |
-| `tickLower` | int24 | The lower tick of the position for which to collect fees |
-| `tickUpper` | int24 | The upper tick of the position for which to collect fees |
-| `amount0Requested` | uint128 | How much token0 should be withdrawn from the fees owed |
-| `amount1Requested` | uint128 | How much token1 should be withdrawn from the fees owed |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------- |
-| `amount0` | uint128 | The amount of fees collected in token0 |
-| `amount1` | uint128 | The amount of fees collected in token1 |
-
-### burn
-
-```solidity
- function burn(
- int24 tickLower,
- int24 tickUpper,
- uint128 amount
- ) external returns (uint256 amount0, uint256 amount1)
-```
-
-Burn liquidity from the sender and account tokens owed for the liquidity to the position
-
-Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0
-Fees must be collected separately via a call to #collect
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :--------------------------------------------------------- |
-| `tickLower` | int24 | The lower tick of the position for which to burn liquidity |
-| `tickUpper` | int24 | The upper tick of the position for which to burn liquidity |
-| `amount` | uint128 | How much liquidity to burn |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------------- |
-| `amount0` | uint256 | The amount of token0 sent to the recipient |
-| `amount1` | uint256 | The amount of token1 sent to the recipient |
-
-### swap
-
-```solidity
- function swap(
- address recipient,
- bool zeroForOne,
- int256 amountSpecified,
- uint160 sqrtPriceLimitX96,
- bytes data
- ) external returns (int256 amount0, int256 amount1)
-```
-
-Swap token0 for token1, or token1 for token0
-
-The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------------ | :------ | :----------------------------------------------------------------------------------------------------------------- |
-| `recipient` | address | The address to receive the output of the swap |
-| `zeroForOne` | bool | The direction of the swap, true for token0 to token1, false for token1 to token0 |
-| `amountSpecified` | int256 | The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative) |
-| `sqrtPriceLimitX96` | uint160 | The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap |
-| `data` | bytes | Any data passed through to the callback |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :----- | :----------------------------------------------------------------------------------------- |
-| `amount0` | int256 | The delta of the balance of token0 of the pool, exact when negative, minimum when positive |
-| `amount1` | int256 | The delta of the balance of token1 of the pool, exact when negative, minimum when positive |
-
-### flash
-
-```solidity
- function flash(
- address recipient,
- uint256 amount0,
- uint256 amount1,
- bytes data
- ) external
-```
-
-Receive token0 and/or token1 and pay it back, plus a fee, in the callback
-
-The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback
-Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling
-with 0 amount{0,1} and sending the donation amount(s) from the callback
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :----------------------------------------------------------- |
-| `recipient` | address | The address which will receive the token0 and token1 amounts |
-| `amount0` | uint256 | The amount of token0 to send |
-| `amount1` | uint256 | The amount of token1 to send |
-| `data` | bytes | Any data to be passed through to the callback |
-
-### increaseObservationCardinalityNext
-
-```solidity
- function increaseObservationCardinalityNext(
- uint16 observationCardinalityNext
- ) external
-```
-
-Increase the maximum number of price and liquidity observations that this pool will store
-
-This method is no-op if the pool already has an observationCardinalityNext greater than or equal to
-the input observationCardinalityNext.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------------------------- | :----- | :--------------------------------------------------------------- |
-| `observationCardinalityNext` | uint16 | The desired minimum number of observations for the pool to store |
diff --git a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolDerivedState.md b/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolDerivedState.md
deleted file mode 100644
index d3963a28e..000000000
--- a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolDerivedState.md
+++ /dev/null
@@ -1,65 +0,0 @@
-Contains view functions to provide information about the pool that is computed rather than stored on the
-blockchain. The functions here may have variable gas costs.
-
-## Functions
-
-### observe
-
-```solidity
- function observe(
- uint32[] secondsAgos
- ) external view returns (int56[] tickCumulatives, uint160[] secondsPerLiquidityCumulativeX128s)
-```
-
-Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp
-
-To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing
-the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,
-you must call it with secondsAgos = [3600, 0].
-The time weighted average tick represents the geometric time weighted average price of the pool, in
-log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------- | :---------------------------------------------------------------------------- |
-| `secondsAgos` | uint32[] | From how long ago each cumulative tick and liquidity value should be returned |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----------------------------------- | :-------- | :---------------------------------------------------------------------------------------------- |
-| `tickCumulatives` | int56[] | Cumulative tick values as of each `secondsAgos` from the current block timestamp |
-| `secondsPerLiquidityCumulativeX128s` | uint160[] | Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block |
-
-timestamp
-
-### snapshotCumulativesInside
-
-```solidity
- function snapshotCumulativesInside(
- int24 tickLower,
- int24 tickUpper
- ) external returns (int56 tickCumulativeInside, uint160 secondsPerLiquidityInsideX128, uint32 secondsInside)
-```
-
-Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range
-
-Snapshots must only be compared to other snapshots, taken over a period for which a position existed.
-I.e., snapshots cannot be compared if a position is not held for the entire period between when the first
-snapshot is taken and the second snapshot is taken.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :---- | :-------------------------- |
-| `tickLower` | int24 | The lower tick of the range |
-| `tickUpper` | int24 | The upper tick of the range |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------------ | :------ | :-------------------------------------------------- |
-| `tickCumulativeInside` | int56 | The snapshot of the tick accumulator for the range |
-| `secondsPerLiquidityInsideX128` | uint160 | The snapshot of seconds per liquidity for the range |
-| `secondsInside` | uint32 | The snapshot of seconds per liquidity for the range |
diff --git a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolEvents.md b/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolEvents.md
deleted file mode 100644
index 6744cb3e5..000000000
--- a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolEvents.md
+++ /dev/null
@@ -1,224 +0,0 @@
-Contains all events emitted by the pool
-
-## Events
-
-### Initialize
-
-```solidity
- event Initialize(
- uint160 sqrtPriceX96,
- int24 tick
- )
-```
-
-Emitted exactly once by a pool when #initialize is first called on the pool
-
-Mint/Burn/Swap cannot be emitted by the pool before Initialize
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :------ | :----------------------------------------------------------------------------------- |
-| `sqrtPriceX96` | uint160 | The initial sqrt price of the pool, as a Q64.96 |
-| `tick` | int24 | The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool |
-
-### Mint
-
-```solidity
- event Mint(
- address sender,
- address owner,
- int24 tickLower,
- int24 tickUpper,
- uint128 amount,
- uint256 amount0,
- uint256 amount1
- )
-```
-
-Emitted when liquidity is minted for a given position
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :-------------------------------------------------------------- |
-| `sender` | address | The address that minted the liquidity |
-| `owner` | address | The owner of the position and recipient of any minted liquidity |
-| `tickLower` | int24 | The lower tick of the position |
-| `tickUpper` | int24 | The upper tick of the position |
-| `amount` | uint128 | The amount of liquidity minted to the position range |
-| `amount0` | uint256 | How much token0 was required for the minted liquidity |
-| `amount1` | uint256 | How much token1 was required for the minted liquidity |
-
-### Collect
-
-```solidity
- event Collect(
- address owner,
- int24 tickLower,
- int24 tickUpper,
- uint128 amount0,
- uint128 amount1
- )
-```
-
-Emitted when fees are collected by the owner of a position
-
-Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :----------------------------------------------------- |
-| `owner` | address | The owner of the position for which fees are collected |
-| `tickLower` | int24 | The lower tick of the position |
-| `tickUpper` | int24 | The upper tick of the position |
-| `amount0` | uint128 | The amount of token0 fees collected |
-| `amount1` | uint128 | The amount of token1 fees collected |
-
-### Burn
-
-```solidity
- event Burn(
- address owner,
- int24 tickLower,
- int24 tickUpper,
- uint128 amount,
- uint256 amount0,
- uint256 amount1
- )
-```
-
-Emitted when a position's liquidity is removed
-
-Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------------------------------- |
-| `owner` | address | The owner of the position for which liquidity is removed |
-| `tickLower` | int24 | The lower tick of the position |
-| `tickUpper` | int24 | The upper tick of the position |
-| `amount` | uint128 | The amount of liquidity to remove |
-| `amount0` | uint256 | The amount of token0 withdrawn |
-| `amount1` | uint256 | The amount of token1 withdrawn |
-
-### Swap
-
-```solidity
- event Swap(
- address sender,
- address recipient,
- int256 amount0,
- int256 amount1,
- uint160 sqrtPriceX96,
- uint128 liquidity,
- int24 tick
- )
-```
-
-Emitted by the pool for any swaps between token0 and token1
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :------ | :----------------------------------------------------------------------- |
-| `sender` | address | The address that initiated the swap call, and that received the callback |
-| `recipient` | address | The address that received the output of the swap |
-| `amount0` | int256 | The delta of the token0 balance of the pool |
-| `amount1` | int256 | The delta of the token1 balance of the pool |
-| `sqrtPriceX96` | uint160 | The sqrt(price) of the pool after the swap, as a Q64.96 |
-| `liquidity` | uint128 | The liquidity of the pool after the swap |
-| `tick` | int24 | The log base 1.0001 of price of the pool after the swap |
-
-### Flash
-
-```solidity
- event Flash(
- address sender,
- address recipient,
- uint256 amount0,
- uint256 amount1,
- uint256 paid0,
- uint256 paid1
- )
-```
-
-Emitted by the pool for any flashes of token0/token1
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :--------------------------------------------------------------------------------- |
-| `sender` | address | The address that initiated the swap call, and that received the callback |
-| `recipient` | address | The address that received the tokens from flash |
-| `amount0` | uint256 | The amount of token0 that was flashed |
-| `amount1` | uint256 | The amount of token1 that was flashed |
-| `paid0` | uint256 | The amount of token0 paid for the flash, which can exceed the amount0 plus the fee |
-| `paid1` | uint256 | The amount of token1 paid for the flash, which can exceed the amount1 plus the fee |
-
-### IncreaseObservationCardinalityNext
-
-```solidity
- event IncreaseObservationCardinalityNext(
- uint16 observationCardinalityNextOld,
- uint16 observationCardinalityNextNew
- )
-```
-
-Emitted by the pool for increases to the number of observations that can be stored
-
-observationCardinalityNext is not the observation cardinality until an observation is written at the index
-just before a mint/swap/burn.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------------------------ | :----- | :----------------------------------------------------- |
-| `observationCardinalityNextOld` | uint16 | The previous value of the next observation cardinality |
-| `observationCardinalityNextNew` | uint16 | The updated value of the next observation cardinality |
-
-### SetFeeProtocol
-
-```solidity
- event SetFeeProtocol(
- uint8 feeProtocol0Old,
- uint8 feeProtocol1Old,
- uint8 feeProtocol0New,
- uint8 feeProtocol1New
- )
-```
-
-Emitted when the protocol fee is changed by the pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------- | :---- | :-------------------------------------------- |
-| `feeProtocol0Old` | uint8 | The previous value of the token0 protocol fee |
-| `feeProtocol1Old` | uint8 | The previous value of the token1 protocol fee |
-| `feeProtocol0New` | uint8 | The updated value of the token0 protocol fee |
-| `feeProtocol1New` | uint8 | The updated value of the token1 protocol fee |
-
-### CollectProtocol
-
-```solidity
- event CollectProtocol(
- address sender,
- address recipient,
- uint128 amount0,
- uint128 amount1
- )
-```
-
-Emitted when the collected protocol fees are withdrawn by the factory owner
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :---------------------------------------------------- |
-| `sender` | address | The address that collects the protocol fees |
-| `recipient` | address | The address that receives the collected protocol fees |
-| `amount0` | uint128 | The amount of token0 protocol fees that is withdrawn |
-| `amount1` | uint128 | The amount of token1 protocol fees that is withdrawn |
diff --git a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolImmutables.md b/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolImmutables.md
deleted file mode 100644
index 19b313e88..000000000
--- a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolImmutables.md
+++ /dev/null
@@ -1,100 +0,0 @@
-These parameters are fixed for a pool forever, i.e., the methods will always return the same values
-
-## Functions
-
-### factory
-
-```solidity
- function factory(
- ) external view returns (address)
-```
-
-The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :--------------- |
-| address | contract address |
-
-### token0
-
-```solidity
- function token0(
- ) external view returns (address)
-```
-
-The first of the two tokens of the pool, sorted by address
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :--------------------- |
-| address | token contract address |
-
-### token1
-
-```solidity
- function token1(
- ) external view returns (address)
-```
-
-The second of the two tokens of the pool, sorted by address
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :--------------------- |
-| address | token contract address |
-
-### fee
-
-```solidity
- function fee(
- ) external view returns (uint24)
-```
-
-The pool's fee in hundredths of a bip, i.e. 1e-6
-
-#### Return Values:
-
-| Type | Description |
-| :----- | :---------- |
-| uint24 | fee |
-
-### tickSpacing
-
-```solidity
- function tickSpacing(
- ) external view returns (int24)
-```
-
-The pool tick spacing
-
-Ticks can only be used at multiples of this value, minimum of 1 and always positive
-e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...
-This value is an int24 to avoid casting even though it is always positive.
-
-#### Return Values:
-
-| Type | Description |
-| :---- | :----------- |
-| int24 | tick spacing |
-
-### maxLiquidityPerTick
-
-```solidity
- function maxLiquidityPerTick(
- ) external view returns (uint128)
-```
-
-The maximum amount of position liquidity that can use any tick in the range
-
-This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and
-also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :------------------------------- |
-| uint128 | max amount of liquidity per tick |
diff --git a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolOwnerActions.md b/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolOwnerActions.md
deleted file mode 100644
index 23ca6fe8a..000000000
--- a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolOwnerActions.md
+++ /dev/null
@@ -1,48 +0,0 @@
-Contains pool methods that may only be called by the factory owner
-
-## Functions
-
-### setFeeProtocol
-
-```solidity
- function setFeeProtocol(
- uint8 feeProtocol0,
- uint8 feeProtocol1
- ) external
-```
-
-Set the denominator of the protocol's % share of the fees
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :---- | :-------------------------------------- |
-| `feeProtocol0` | uint8 | new protocol fee for token0 of the pool |
-| `feeProtocol1` | uint8 | new protocol fee for token1 of the pool |
-
-### collectProtocol
-
-```solidity
- function collectProtocol(
- address recipient,
- uint128 amount0Requested,
- uint128 amount1Requested
- ) external returns (uint128 amount0, uint128 amount1)
-```
-
-Collect the protocol fee accrued to the pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----------------- | :------ | :---------------------------------------------------------------------------- |
-| `recipient` | address | The address to which collected protocol fees should be sent |
-| `amount0Requested` | uint128 | The maximum amount of token0 to send, can be 0 to collect fees in only token1 |
-| `amount1Requested` | uint128 | The maximum amount of token1 to send, can be 0 to collect fees in only token0 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------- |
-| `amount0` | uint128 | The protocol fee collected in token0 |
-| `amount1` | uint128 | The protocol fee collected in token1 |
diff --git a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolState.md b/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolState.md
deleted file mode 100644
index 42c61cf4b..000000000
--- a/docs/contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolState.md
+++ /dev/null
@@ -1,165 +0,0 @@
-These methods compose the pool's state, and can change with any frequency including multiple times
-per transaction
-
-## Functions
-
-### slot0
-
-```solidity
- function slot0(
- ) external view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)
-```
-
-The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas
-when accessed externally.
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `sqrtPriceX96` | uint160 | The current price of the pool as a sqrt(token1/token0) Q64.96 value |
-| `tick` | int24 | The current tick of the pool, i.e. according to the last tick transition that was run. This value may not always be equal to SqrtTickMath getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick boundary. |
-| `observationIndex` | uint16 | The index of the last oracle observation that was written, |
-| `observationCardinality` | uint16 | The current maximum number of observations stored in the pool, |
-| `observationCardinalityNext` | uint16 | The next maximum number of observations, to be updated when the observation. |
-| `feeProtocol` | uint8 | The protocol fee for both tokens of the pool. Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0is the lower 4 bits.Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee. |
-| `unlocked` | bool | Whether the pool is currently locked to reentrancy |
-
-### feeGrowthGlobal0X128
-
-```solidity
- function feeGrowthGlobal0X128(
- ) external view returns (uint256)
-```
-
-The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool
-
-This value can overflow the uint256
-
-### feeGrowthGlobal1X128
-
-```solidity
- function feeGrowthGlobal1X128(
- ) external view returns (uint256)
-```
-
-The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool
-
-This value can overflow the uint256
-
-### protocolFees
-
-```solidity
- function protocolFees(
- ) external view returns (uint128 token0, uint128 token1)
-```
-
-The amounts of token0 and token1 that are owed to the protocol
-
-Protocol fees will never exceed uint128 max in either token
-
-### liquidity
-
-```solidity
- function liquidity(
- ) external view returns (uint128)
-```
-
-The currently in range liquidity available to the pool
-
-This value has no relationship to the total liquidity across all ticks
-
-### ticks
-
-```solidity
- function ticks(
- int24 tick
- ) external view returns (uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128, int56 tickCumulativeOutside, uint160 secondsPerLiquidityOutsideX128, uint32 secondsOutside, bool initialized)
-```
-
-Look up information about a specific tick in the pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :---- | :------------------ |
-| `tick` | int24 | The tick to look up |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `liquidityGross` | uint128 | the total amount of position liquidity that uses the pool either as tick lower or tick upper, |
-| `liquidityNet` | int128 | how much liquidity changes when the pool price crosses the tick, |
-| `feeGrowthOutside0X128` | uint256 | the fee growth on the other side of the tick from the current tick in token0, |
-| `feeGrowthOutside1X128` | uint256 | the fee growth on the other side of the tick from the current tick in token1, feeGrowthOutsideX128 values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0. In addition, these values are only relative and are used to compute snapshots. |
-| `tickCumulativeOutside` | int56 | |
-| `secondsPerLiquidityOutsideX128` | uint160 | |
-| `secondsOutside` | uint32 | |
-| `initialized` | bool | |
-
-a specific position.
-
-### tickBitmap
-
-```solidity
- function tickBitmap(
- int16 wordPosition
- ) external view returns (uint256)
-```
-
-Returns 256 packed tick initialized boolean values. See TickBitmap for more information
-
-### positions
-
-```solidity
- function positions(
- bytes32 key
- ) external view returns (uint128 _liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
-```
-
-Returns the information about a position by the position's key
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---- | :------ | :---------------------------------------------------------------------------------------- |
-| `key` | bytes32 | The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------- | :------ | :-------------------------------------------------------------------------------- |
-| `_liquidity` | bytes32 | The amount of liquidity in the position, |
-| `feeGrowthInside0LastX128` | uint256 | fee growth of token0 inside the tick range as of the last mint/burn/poke, |
-| `feeGrowthInside1LastX128` | uint256 | fee growth of token1 inside the tick range as of the last mint/burn/poke, |
-| `tokensOwed0` | uint128 | the computed amount of token0 owed to the position as of the last mint/burn/poke, |
-| `tokensOwed1` | uint128 | the computed amount of token1 owed to the position as of the last mint/burn/poke |
-
-### observations
-
-```solidity
- function observations(
- uint256 index
- ) external view returns (uint32 blockTimestamp, int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128, bool initialized)
-```
-
-Returns data about a specific observation index
-
-You most likely want to use #observe() instead of this method to get an observation as of some amount of time
-ago, rather than at a specific index in the array.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------ | :------ | :--------------------------------------------- |
-| `index` | uint256 | The element of the observations array to fetch |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------------------------------- | :------ | :----------------------------------------------------------------------------------------------- |
-| `blockTimestamp` | uint256 | The timestamp of the observation, |
-| `tickCumulative` | int56 | the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp, |
-| `secondsPerLiquidityCumulativeX128` | uint160 | the seconds per in range liquidity for the life of the pool as of the observation timestamp |
-| `initialized` | bool | whether the observation has been initialized and the values are safe to use |
diff --git a/docs/contracts/v3/reference/core/interfaces/pool/_category_.json b/docs/contracts/v3/reference/core/interfaces/pool/_category_.json
deleted file mode 100644
index 8e59fc9bf..000000000
--- a/docs/contracts/v3/reference/core/interfaces/pool/_category_.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "label": "Pool"
-}
\ No newline at end of file
diff --git a/docs/contracts/v3/reference/core/libraries/BitMath.md b/docs/contracts/v3/reference/core/libraries/BitMath.md
deleted file mode 100644
index 600db8ad8..000000000
--- a/docs/contracts/v3/reference/core/libraries/BitMath.md
+++ /dev/null
@@ -1,55 +0,0 @@
-This library provides functionality for computing bit properties of an unsigned integer
-
-## Functions
-
-### mostSignificantBit
-
-```solidity
- function mostSignificantBit(
- uint256 x
- ) internal pure returns (uint8 r)
-```
-
-Returns the index of the most significant bit of the number,
-where the least significant bit is at index 0 and the most significant bit is at index 255
-
-The function satisfies the property:
-x >= 2**mostSignificantBit(x) and x < 2**(mostSignificantBit(x)+1)
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :------------------------------------------------------------------------------ |
-| `x` | uint256 | the value for which to compute the most significant bit, must be greater than 0 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :---- | :------------------------------------ |
-| `r` | unit8 | the index of the most significant bit |
-
-### leastSignificantBit
-
-```solidity
- function leastSignificantBit(
- uint256 x
- ) internal pure returns (uint8 r)
-```
-
-Returns the index of the least significant bit of the number,
-where the least significant bit is at index 0 and the most significant bit is at index 255
-
-The function satisfies the property:
-(x & 2**leastSignificantBit(x)) != 0 and (x & (2**(leastSignificantBit(x)) - 1)) == 0)
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :------------------------------------------------------------------------------- |
-| `x` | uint256 | the value for which to compute the least significant bit, must be greater than 0 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :---- | :------------------------------------- |
-| `r` | unit8 | the index of the least significant bit |
diff --git a/docs/contracts/v3/reference/core/libraries/FixedPoint128.md b/docs/contracts/v3/reference/core/libraries/FixedPoint128.md
deleted file mode 100644
index 3fadaba61..000000000
--- a/docs/contracts/v3/reference/core/libraries/FixedPoint128.md
+++ /dev/null
@@ -1 +0,0 @@
-A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)
diff --git a/docs/contracts/v3/reference/core/libraries/FixedPoint96.md b/docs/contracts/v3/reference/core/libraries/FixedPoint96.md
deleted file mode 100644
index fdaa3b811..000000000
--- a/docs/contracts/v3/reference/core/libraries/FixedPoint96.md
+++ /dev/null
@@ -1,3 +0,0 @@
-A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)
-
-Used in SqrtPriceMath.sol
diff --git a/docs/contracts/v3/reference/core/libraries/FullMath.md b/docs/contracts/v3/reference/core/libraries/FullMath.md
deleted file mode 100644
index bd98f577a..000000000
--- a/docs/contracts/v3/reference/core/libraries/FullMath.md
+++ /dev/null
@@ -1,59 +0,0 @@
-Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision
-
-Handles "phantom overflow" i.e., allows multiplication and division where an intermediate value overflows 256 bits
-
-## Functions
-
-### mulDiv
-
-```solidity
- function mulDiv(
- uint256 a,
- uint256 b,
- uint256 denominator
- ) internal pure returns (uint256 result)
-```
-
-Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
-
-Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :--------------- |
-| `a` | uint256 | The multiplicand |
-| `b` | uint256 | The multiplier |
-| `denominator` | uint256 | The divisor |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------- | :------ | :----------------- |
-| `result` | uint256 | The 256-bit result |
-
-### mulDivRoundingUp
-
-```solidity
- function mulDivRoundingUp(
- uint256 a,
- uint256 b,
- uint256 denominator
- ) internal pure returns (uint256 result)
-```
-
-Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :--------------- |
-| `a` | uint256 | The multiplicand |
-| `b` | uint256 | The multiplier |
-| `denominator` | uint256 | The divisor |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------- | :------ | :----------------- |
-| `result` | uint256 | The 256-bit result |
diff --git a/docs/contracts/v3/reference/core/libraries/LiquidityMath.md b/docs/contracts/v3/reference/core/libraries/LiquidityMath.md
deleted file mode 100644
index a77db5120..000000000
--- a/docs/contracts/v3/reference/core/libraries/LiquidityMath.md
+++ /dev/null
@@ -1,25 +0,0 @@
-## Functions
-
-### addDelta
-
-```solidity
- function addDelta(
- uint128 x,
- int128 y
- ) internal pure returns (uint128 z)
-```
-
-Add a signed liquidity delta to liquidity and revert if it overflows or underflows
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :--------------------------------------------- |
-| `x` | uint128 | The liquidity before change |
-| `y` | int128 | The delta by which liquidity should be changed |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :------ | :------------------ |
-| `z` | uint128 | The liquidity delta |
diff --git a/docs/contracts/v3/reference/core/libraries/LowGasSafeMath.md b/docs/contracts/v3/reference/core/libraries/LowGasSafeMath.md
deleted file mode 100644
index 3a722ed25..000000000
--- a/docs/contracts/v3/reference/core/libraries/LowGasSafeMath.md
+++ /dev/null
@@ -1,123 +0,0 @@
-Contains methods for doing math operations that revert on overflow or underflow for minimal gas cost
-
-## Functions
-
-### add
-
-```solidity
- function add(
- uint256 x,
- uint256 y
- ) internal pure returns (uint256 z)
-```
-
-Returns x + y, reverts if sum overflows uint256
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :---------- |
-| `x` | uint256 | The augend |
-| `y` | uint256 | The addend |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :------ | :----------------- |
-| `z` | uint256 | The sum of x and y |
-
-### sub
-
-```solidity
- function sub(
- uint256 x,
- uint256 y
- ) internal pure returns (uint256 z)
-```
-
-Returns x - y, reverts if underflows
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :------------- |
-| `x` | uint256 | The minuend |
-| `y` | uint256 | The subtrahend |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :------ | :------------------------ |
-| `z` | uint256 | The difference of x and y |
-
-### mul
-
-```solidity
- function mul(
- uint256 x,
- uint256 y
- ) internal pure returns (uint256 z)
-```
-
-Returns x \* y, reverts if overflows
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :--------------- |
-| `x` | uint256 | The multiplicand |
-| `y` | uint256 | The multiplier |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :------ | :--------------------- |
-| `z` | uint256 | The product of x and y |
-
-### add
-
-```solidity
- function add(
- int256 x,
- int256 y
- ) internal pure returns (int256 z)
-```
-
-Returns x + y, reverts if overflows or underflows
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :----- | :---------- |
-| `x` | int256 | The augend |
-| `y` | int256 | The addend |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :----- | :----------------- |
-| `z` | int256 | The sum of x and y |
-
-### sub
-
-```solidity
- function sub(
- int256 x,
- int256 y
- ) internal pure returns (int256 z)
-```
-
-Returns x - y, reverts if overflows or underflows
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :----- | :------------- |
-| `x` | int256 | The minuend |
-| `y` | int256 | The subtrahend |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :----- | :------------------------ |
-| `z` | int256 | The difference of x and y |
diff --git a/docs/contracts/v3/reference/core/libraries/Oracle.md b/docs/contracts/v3/reference/core/libraries/Oracle.md
deleted file mode 100644
index 9a8503b7f..000000000
--- a/docs/contracts/v3/reference/core/libraries/Oracle.md
+++ /dev/null
@@ -1,136 +0,0 @@
-Provides price and liquidity data useful for a wide variety of system designs
-
-Instances of stored oracle data, "observations", are collected in the oracle array
-Every pool is initialized with an oracle array length of 1. Anyone can pay the SSTOREs to increase the
-maximum length of the oracle array. New slots will be added when the array is fully populated.
-Observations are overwritten when the full length of the oracle array is populated.
-The most recent observation is available, independent of the length of the oracle array, by passing 0 to observe()
-
-## Functions
-
-### initialize
-
-```solidity
- function initialize(
- struct Oracle.Observation[65535] self,
- uint32 time
- ) internal returns (uint16 cardinality, uint16 cardinalityNext)
-```
-
-Initialize the oracle array by writing the first slot. Called once for the lifecycle of the observations array
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :------------------------------- | :----------------------------------------------------------------------------- |
-| `self` | struct Oracle.Observation[65535] | The stored oracle array |
-| `time` | uint32 | The time of the oracle initialization, via block.timestamp truncated to uint32 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------------- | :----- | :------------------------------------------------------------ |
-| `cardinality` | uint16 | The number of populated elements in the oracle array |
-| `cardinalityNext` | uint16 | The new length of the oracle array, independent of population |
-
-### write
-
-```solidity
- function write(
- struct Oracle.Observation[65535] self,
- uint16 index,
- uint32 blockTimestamp,
- int24 tick,
- uint128 liquidity,
- uint16 cardinality,
- uint16 cardinalityNext
- ) internal returns (uint16 indexUpdated, uint16 cardinalityUpdated)
-```
-
-Writes an oracle observation to the array
-
-Writable at most once per block. Index represents the most recently written element. cardinality and index must be tracked externally.
-If the index is at the end of the allowable array length (according to cardinality), and the next cardinality
-is greater than the current one, cardinality may be increased. This restriction is created to preserve ordering.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------- | :------------------------------- | :-------------------------------------------------------------- |
-| `self` | struct Oracle.Observation[65535] | The stored oracle array |
-| `index` | uint16 | The location of the most recently updated observation |
-| `blockTimestamp` | uint32 | The timestamp of the new observation |
-| `tick` | int24 | The active tick at the time of the new observation |
-| `liquidity` | uint128 | The total in-range liquidity at the time of the new observation |
-| `cardinality` | uint16 | The number of populated elements in the oracle array |
-| `cardinalityNext` | uint16 | The new length of the oracle array, independent of population |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------- | :----- | :--------------------------------------------------------------------- |
-| `indexUpdated` | uint16 | The new index of the most recently written element in the oracle array |
-| `cardinalityUpdated` | uint16 | The new cardinality of the oracle array |
-
-### grow
-
-```solidity
- function grow(
- struct Oracle.Observation[65535] self,
- uint16 current,
- uint16 next
- ) internal returns (uint16)
-```
-
-Prepares the oracle array to store up to `next` observations
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------------------------------- | :------------------------------------------------------------------------ |
-| `self` | struct Oracle.Observation[65535] | The stored oracle array |
-| `current` | uint16 | The current next cardinality of the oracle array |
-| `next` | uint16 | The proposed next cardinality which will be populated in the oracle array |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :----- | :--------------------------------------------------------------- |
-| `next` | uint16 | The next cardinality which will be populated in the oracle array |
-
-### observe
-
-```solidity
- function observe(
- struct Oracle.Observation[65535] self,
- uint32 time,
- uint32[] secondsAgos,
- int24 tick,
- uint16 index,
- uint128 liquidity,
- uint16 cardinality
- ) internal view returns (int56[] tickCumulatives, uint160[] liquidityCumulatives)
-```
-
-Returns the accumulator values as of each time seconds ago from the given time in the array of `secondsAgos`
-
-Reverts if `secondsAgos` > oldest observation
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------------------------------- | :------------------------------------------------------------------------------------ |
-| `self` | struct Oracle.Observation[65535] | The stored oracle array |
-| `time` | uint32 | The current block.timestamp |
-| `secondsAgos` | uint32[] | Each amount of time to look back, in seconds, at which point to return an observation |
-| `tick` | int24 | The current tick |
-| `index` | uint16 | The location of a given observation within the oracle array |
-| `liquidity` | uint128 | The current in-range pool liquidity |
-| `cardinality` | uint16 | The number of populated elements in the oracle array |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------------------- | :-------- | :------------------------------------------------------------------------------------------ |
-| `tickCumulatives` | int56[] | The tick \* time elapsed since the pool was first initialized, as of each `secondsAgo` |
-| `liquidityCumulatives` | uint160[] | The liquidity \* time elapsed since the pool was first initialized, as of each `secondsAgo` |
diff --git a/docs/contracts/v3/reference/core/libraries/Position.md b/docs/contracts/v3/reference/core/libraries/Position.md
deleted file mode 100644
index b324e13dc..000000000
--- a/docs/contracts/v3/reference/core/libraries/Position.md
+++ /dev/null
@@ -1,55 +0,0 @@
-Positions represent an owner address' liquidity between a lower and upper tick boundary
-
-Positions store additional state for tracking fees owed to the position
-
-## Functions
-
-### get
-
-```solidity
- function get(
- mapping(bytes32 => struct Position.Info) self,
- address owner,
- int24 tickLower,
- int24 tickUpper
- ) internal view returns (struct Position.Info position)
-```
-
-Returns the Info struct of a position, given an owner and position boundaries
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :--------------------------------------- | :---------------------------------------- |
-| `self` | mapping(bytes32 => struct Position.Info) | The mapping containing all user positions |
-| `owner` | address | The address of the position owner |
-| `tickLower` | int24 | The lower tick boundary of the position |
-| `tickUpper` | int24 | The upper tick boundary of the position |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------------------- | :----------------------------------------------------- |
-| `position` | struct Position.Info | The position info struct of the given owners' position |
-
-### update
-
-```solidity
- function update(
- struct Position.Info self,
- int128 liquidityDelta,
- uint256 feeGrowthInside0X128,
- uint256 feeGrowthInside1X128
- ) internal
-```
-
-Credits accumulated fees to a user's position
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------------------- | :------------------- | :---------------------------------------------------------------------------------------------- |
-| `self` | struct Position.Info | The mapping containing all user positions |
-| `liquidityDelta` | int128 | The change in pool liquidity as a result of the position update |
-| `feeGrowthInside0X128` | uint256 | The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries |
-| `feeGrowthInside1X128` | uint256 | The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries |
diff --git a/docs/contracts/v3/reference/core/libraries/SafeCast.md b/docs/contracts/v3/reference/core/libraries/SafeCast.md
deleted file mode 100644
index dbc9fb5a8..000000000
--- a/docs/contracts/v3/reference/core/libraries/SafeCast.md
+++ /dev/null
@@ -1,69 +0,0 @@
-Contains methods for safely casting between types
-
-## Functions
-
-### toUint160
-
-```solidity
- function toUint160(
- uint256 y
- ) internal pure returns (uint160 z)
-```
-
-Cast a uint256 to a uint160, revert on overflow
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :--------------------------- |
-| `y` | uint256 | The uint256 to be downcasted |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :------ | :--------------------------------------- |
-| `z` | uint160 | The downcasted integer, now type uint160 |
-
-### toInt128
-
-```solidity
- function toInt128(
- int256 y
- ) internal pure returns (int128 z)
-```
-
-Cast a int256 to a int128, revert on overflow or underflow
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :----- | :-------------------------- |
-| `y` | int256 | The int256 to be downcasted |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :----- | :-------------------------------------- |
-| `z` | int128 | The downcasted integer, now type int128 |
-
-### toInt256
-
-```solidity
- function toInt256(
- uint256 y
- ) internal pure returns (int256 z)
-```
-
-Cast a uint256 to a int256, revert on overflow
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :----------------------- |
-| `y` | uint256 | The uint256 to be casted |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :----- | :---------------------------------- |
-| `z` | int256 | The casted integer, now type int256 |
diff --git a/docs/contracts/v3/reference/core/libraries/SecondsOutside.md b/docs/contracts/v3/reference/core/libraries/SecondsOutside.md
deleted file mode 100644
index 9c850f82a..000000000
--- a/docs/contracts/v3/reference/core/libraries/SecondsOutside.md
+++ /dev/null
@@ -1,134 +0,0 @@
-Contains methods for working with a mapping from tick to 32 bit timestamp values, specifically seconds
-spent outside the tick.
-
-The mapping uses int24 for keys since ticks are represented as int24 and there are 8 (2^3) values per word.
-Note "seconds outside" is always a relative measurement, only consistent for as long as a the lower tick and upper tick
-have gross liquidity greater than 0.
-
-## Functions
-
-### initialize
-
-```solidity
- function initialize(
- mapping(int24 => uint256) self,
- int24 tick,
- int24 tickCurrent,
- int24 tickSpacing,
- uint32 time
- ) internal
-```
-
-Called the first time a tick is used to set the seconds outside value. Assumes the tick is not
-initialized.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------------------------ | :-------------------------------------------- |
-| `self` | mapping(int24 => uint256) | the packed mapping of tick to seconds outside |
-| `tick` | int24 | the tick to be initialized |
-| `tickCurrent` | int24 | the current tick |
-| `tickSpacing` | int24 | the spacing between usable ticks |
-| `time` | uint32 | the current timestamp |
-
-### clear
-
-```solidity
- function clear(
- mapping(int24 => uint256) self,
- int24 tick,
- int24 tickSpacing
- ) internal
-```
-
-Called when a tick is no longer used, to clear the seconds outside value of the tick
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------------------------ | :-------------------------------------------- |
-| `self` | mapping(int24 => uint256) | the packed mapping of tick to seconds outside |
-| `tick` | int24 | the tick to be cleared |
-| `tickSpacing` | int24 | the spacing between usable ticks |
-
-### cross
-
-```solidity
- function cross(
- mapping(int24 => uint256) self,
- int24 tick,
- int24 tickSpacing,
- uint32 time
- ) internal
-```
-
-Called when an initialized tick is crossed to update the seconds outside for that tick. Must be called
-every time an initialized tick is crossed
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------------------------ | :----------------------------------------------- |
-| `self` | mapping(int24 => uint256) | the packed mapping of tick to seconds outside |
-| `tick` | int24 | the tick to be crossed |
-| `tickSpacing` | int24 | the spacing between usable ticks |
-| `time` | uint32 | the current block timestamp truncated to 32 bits |
-
-### get
-
-```solidity
- function get(
- mapping(int24 => uint256) self,
- int24 tick,
- int24 tickSpacing
- ) internal view returns (uint32)
-```
-
-Get the seconds outside for an initialized tick. Should be called only on initialized ticks.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------------------------ | :-------------------------------------------- |
-| `self` | mapping(int24 => uint256) | the packed mapping of tick to seconds outside |
-| `tick` | int24 | the tick to get the seconds outside value for |
-| `tickSpacing` | int24 | the spacing between usable ticks |
-
-#### Return Values:
-
-| Type | Description |
-| :----- | :---------------------------------- |
-| uint32 | seconds outside value for that tick |
-
-### secondsInside
-
-```solidity
- function secondsInside(
- mapping(int24 => uint256) self,
- int24 tickLower,
- int24 tickUpper,
- int24 tickCurrent,
- int24 tickSpacing
- ) internal view returns (uint32)
-```
-
-Get the seconds inside a tick range, assuming both tickLower and tickUpper are initialized
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------------------------ | :--------------------------------------------- |
-| `self` | mapping(int24 => uint256) | the packed mapping of tick to seconds outside |
-| `tickLower` | int24 | the lower tick for which to get seconds inside |
-| `tickUpper` | int24 | the upper tick for which to get seconds inside |
-| `tickCurrent` | int24 | the current tick |
-| `tickSpacing` | int24 | the spacing between usable ticks |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :----- | :------------------------------------------------------------------------------------------------ |
-| `a` | uint32 | relative seconds inside value that can be snapshotted and compared to a later snapshot to compute |
-
-time spent between tickLower and tickUpper, i.e. time that a position's liquidity was in use.
diff --git a/docs/contracts/v3/reference/core/libraries/SqrtPriceMath.md b/docs/contracts/v3/reference/core/libraries/SqrtPriceMath.md
deleted file mode 100644
index 427e0c625..000000000
--- a/docs/contracts/v3/reference/core/libraries/SqrtPriceMath.md
+++ /dev/null
@@ -1,243 +0,0 @@
-Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas
-
-## Functions
-
-### getNextSqrtPriceFromAmount0RoundingUp
-
-```solidity
- function getNextSqrtPriceFromAmount0RoundingUp(
- uint160 sqrtPX96,
- uint128 liquidity,
- uint256 amount,
- bool add
- ) internal pure returns (uint160)
-```
-
-Gets the next sqrt price given a delta of token0
-
-Always rounds up, because in the exact output case (increasing price) we need to move the price at least
-far enough to get the desired output amount, and in the exact input case (decreasing price) we need to move the
-price less in order to not send too much output.
-The most precise formula for this is *liquidity \* sqrtPX96 / (liquidity +- amount \* sqrtPX96)*,
-if this is impossible because of overflow, we calculate *liquidity / (liquidity / sqrtPX96 +- amount)*.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :-------------------------------------------------------------- |
-| `sqrtPX96` | uint160 | The starting price, i.e. before accounting for the token0 delta |
-| `liquidity` | uint128 | The amount of usable liquidity |
-| `amount` | uint256 | How much of token0 to add or remove from virtual reserves |
-| `add` | bool | Whether to add or remove the amount of token0 |
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :------------------------------------------------------ |
-| uint160 | price after adding or removing amount, depending on add |
-
-### getNextSqrtPriceFromAmount1RoundingDown
-
-```solidity
- function getNextSqrtPriceFromAmount1RoundingDown(
- uint160 sqrtPX96,
- uint128 liquidity,
- uint256 amount,
- bool add
- ) internal pure returns (uint160)
-```
-
-Gets the next sqrt price given a delta of token1
-
-Always rounds down, because in the exact output case (decreasing price) we need to move the price at least
-far enough to get the desired output amount, and in the exact input case (increasing price) we need to move the
-price less in order to not send too much output.
-The formula we compute is within <1 wei of the lossless version: *sqrtPX96 +- amount / liquidity*
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :--------------------------------------------------------------- |
-| `sqrtPX96` | uint160 | The starting price, i.e., before accounting for the token1 delta |
-| `liquidity` | uint128 | The amount of usable liquidity |
-| `amount` | uint256 | How much of token1 to add, or remove, from virtual reserves |
-| `add` | bool | Whether to add, or remove, the amount of token1 |
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :-------------------------------------- |
-| uint160 | price after adding or removing `amount` |
-
-### getNextSqrtPriceFromInput
-
-```solidity
- function getNextSqrtPriceFromInput(
- uint160 sqrtPX96,
- uint128 liquidity,
- uint256 amountIn,
- bool zeroForOne
- ) internal pure returns (uint160 sqrtQX96)
-```
-
-Gets the next sqrt price given an input amount of token0 or token1
-
-Throws if price or liquidity are 0, or if the next price is out of bounds
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----------- | :------ | :--------------------------------------------------------------- |
-| `sqrtPX96` | uint160 | The starting price, i.e., before accounting for the input amount |
-| `liquidity` | uint128 | The amount of usable liquidity |
-| `amountIn` | uint256 | How much of token0, or token1, is being swapped in |
-| `zeroForOne` | bool | Whether the amount in is token0 or token1 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------------------------------------- |
-| `sqrtQX96` | uint160 | The price after adding the input amount to token0 or token1 |
-
-### getNextSqrtPriceFromOutput
-
-```solidity
- function getNextSqrtPriceFromOutput(
- uint160 sqrtPX96,
- uint128 liquidity,
- uint256 amountOut,
- bool zeroForOne
- ) internal pure returns (uint160 sqrtQX96)
-```
-
-Gets the next sqrt price given an output amount of token0 or token1
-
-Throws if price or liquidity are 0 or the next price is out of bounds
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----------- | :------ | :--------------------------------------------------------- |
-| `sqrtPX96` | uint160 | The starting price before accounting for the output amount |
-| `liquidity` | uint128 | The amount of usable liquidity |
-| `amountOut` | uint256 | How much of token0, or token1, is being swapped out |
-| `zeroForOne` | bool | Whether the amount out is token0 or token1 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------ | :------------------------------------------------------------- |
-| `sqrtQX96` | uint160 | The price after removing the output amount of token0 or token1 |
-
-### getAmount0Delta
-
-```solidity
- function getAmount0Delta(
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- uint128 liquidity,
- bool roundUp
- ) internal pure returns (uint256 amount0)
-```
-
-Gets the amount0 delta between two prices
-
-Calculates *liquidity / sqrt(lower) - liquidity / sqrt(upper)*,
-i.e. *liquidity \* (sqrt(upper) - sqrt(lower)) / (sqrt(upper) \* sqrt(lower))*
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------- |
-| `sqrtRatioAX96` | uint160 | A sqrt price |
-| `sqrtRatioBX96` | uint160 | Another sqrt price |
-| `liquidity` | uint128 | The amount of usable liquidity |
-| `roundUp` | bool | Whether to round the amount up or down |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :-------------------------------------------------------------------------------------------- |
-| `amount0` | uint256 | Amount of token0 required to cover a position of size liquidity between the two passed prices |
-
-### getAmount1Delta
-
-```solidity
- function getAmount1Delta(
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- uint128 liquidity,
- bool roundUp
- ) internal pure returns (uint256 amount1)
-```
-
-Gets the amount1 delta between two prices
-
-Calculates *liquidity \* (sqrt(upper) - sqrt(lower))*
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :-------------------------------------- |
-| `sqrtRatioAX96` | uint160 | A sqrt price |
-| `sqrtRatioBX96` | uint160 | Another sqrt price |
-| `liquidity` | uint128 | The amount of usable liquidity |
-| `roundUp` | bool | Whether to round the amount up, or down |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :-------------------------------------------------------------------------------------------- |
-| `amount1` | uint256 | Amount of token1 required to cover a position of size liquidity between the two passed prices |
-
-### getAmount0Delta
-
-```solidity
- function getAmount0Delta(
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- int128 liquidity
- ) internal pure returns (int256 amount0)
-```
-
-Helper that gets signed token0 delta
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------------------- |
-| `sqrtRatioAX96` | uint160 | A sqrt price |
-| `sqrtRatioBX96` | uint160 | Another sqrt price |
-| `liquidity` | int128 | The change in liquidity for which to compute the amount0 delta |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :----- | :--------------------------------------------------------------------------------- |
-| `amount0` | int256 | Amount of token0 corresponding to the passed liquidityDelta between the two prices |
-
-### getAmount1Delta
-
-```solidity
- function getAmount1Delta(
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- int128 liquidity
- ) internal pure returns (int256 amount1)
-```
-
-Helper that gets signed token1 delta
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------------------- |
-| `sqrtRatioAX96` | uint160 | A sqrt price |
-| `sqrtRatioBX96` | uint160 | Another sqrt price |
-| `liquidity` | int128 | The change in liquidity for which to compute the amount1 delta |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :----- | :--------------------------------------------------------------------------------- |
-| `amount1` | int256 | Amount of token1 corresponding to the passed liquidityDelta between the two prices |
diff --git a/docs/contracts/v3/reference/core/libraries/SwapMath.md b/docs/contracts/v3/reference/core/libraries/SwapMath.md
deleted file mode 100644
index 36d97ba0b..000000000
--- a/docs/contracts/v3/reference/core/libraries/SwapMath.md
+++ /dev/null
@@ -1,38 +0,0 @@
-Contains methods for computing the result of a swap within a single tick price range, i.e., a single tick.
-
-## Functions
-
-### computeSwapStep
-
-```solidity
- function computeSwapStep(
- uint160 sqrtRatioCurrentX96,
- uint160 sqrtRatioTargetX96,
- uint128 liquidity,
- int256 amountRemaining,
- uint24 feePips
- ) internal pure returns (uint160 sqrtRatioNextX96, uint256 amountIn, uint256 amountOut, uint256 feeAmount)
-```
-
-Computes the result of swapping some amount in, or amount out, given the parameters of the swap
-
-The fee, plus the amount in, will never exceed the amount remaining if the swap's `amountSpecified` is positive
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------------- | :------ | :---------------------------------------------------------------------------------- |
-| `sqrtRatioCurrentX96` | uint160 | The current sqrt price of the pool |
-| `sqrtRatioTargetX96` | uint160 | The price that cannot be exceeded, from which the direction of the swap is inferred |
-| `liquidity` | uint128 | The usable liquidity |
-| `amountRemaining` | int256 | How much input or output amount is remaining to be swapped in/out |
-| `feePips` | uint24 | The fee taken from the input amount, expressed in hundredths of a bip |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----------------- | :------ | :------------------------------------------------------------------------------------------ |
-| `sqrtRatioNextX96` | uint160 | The price after swapping the amount in/out, not to exceed the price target |
-| `amountIn` | uint256 | The amount to be swapped in, of either token0 or token1, based on the direction of the swap |
-| `amountOut` | uint256 | The amount to be received, of either token0 or token1, based on the direction of the swap |
-| `feeAmount` | uint256 | The amount of input that will be taken as a fee |
diff --git a/docs/contracts/v3/reference/core/libraries/Tick.md b/docs/contracts/v3/reference/core/libraries/Tick.md
deleted file mode 100644
index 1f38a37d7..000000000
--- a/docs/contracts/v3/reference/core/libraries/Tick.md
+++ /dev/null
@@ -1,142 +0,0 @@
-Contains functions for managing tick processes and relevant calculations
-
-## Functions
-
-### tickSpacingToMaxLiquidityPerTick
-
-```solidity
- function tickSpacingToMaxLiquidityPerTick(
- int24 tickSpacing
- ) internal pure returns (uint128)
-```
-
-Derives max liquidity per tick from given tick spacing
-
-Executed within the pool constructor
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :---- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `tickSpacing` | int24 | The amount of required tick separation, realized in multiples of `tickSpacing` e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ... |
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :--------------------- |
-| uint128 | max liquidity per tick |
-
-### getFeeGrowthInside
-
-```solidity
- function getFeeGrowthInside(
- mapping(int24 => struct Tick.Info) self,
- int24 tickLower,
- int24 tickUpper,
- int24 tickCurrent,
- uint256 feeGrowthGlobal0X128,
- uint256 feeGrowthGlobal1X128
- ) internal view returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128)
-```
-
-Retrieves fee growth data
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------------------- | :--------------------------------- | :---------------------------------------------------------------- |
-| `self` | mapping(int24 => struct Tick.Info) | The mapping containing all tick information for initialized ticks |
-| `tickLower` | int24 | The lower tick boundary of the position |
-| `tickUpper` | int24 | The upper tick boundary of the position |
-| `tickCurrent` | int24 | The current tick |
-| `feeGrowthGlobal0X128` | uint256 | The all-time global fee growth, per unit of liquidity, in token0 |
-| `feeGrowthGlobal1X128` | uint256 | The all-time global fee growth, per unit of liquidity, in token1 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------------------- | :------ | :---------------------------------------------------------------------------------------------- |
-| `feeGrowthInside0X128` | uint256 | The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries |
-| `feeGrowthInside1X128` | uint256 | The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries |
-
-### update
-
-```solidity
- function update(
- mapping(int24 => struct Tick.Info) self,
- int24 tick,
- int24 tickCurrent,
- int128 liquidityDelta,
- uint256 feeGrowthGlobal0X128,
- uint256 feeGrowthGlobal1X128,
- bool upper,
- uint128 maxLiquidity
- ) internal returns (bool flipped)
-```
-
-Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------------------- | :--------------------------------- | :--------------------------------------------------------------------------------------------------------- |
-| `self` | mapping(int24 => struct Tick.Info) | The mapping containing all tick information for initialized ticks |
-| `tick` | int24 | The tick that will be updated |
-| `tickCurrent` | int24 | The current tick |
-| `liquidityDelta` | int128 | A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left) |
-| `feeGrowthGlobal0X128` | uint256 | The all-time global fee growth, per unit of liquidity, in token0 |
-| `feeGrowthGlobal1X128` | uint256 | The all-time global fee growth, per unit of liquidity, in token1 |
-| `upper` | bool | true for updating a position's upper tick, or false for updating a position's lower tick |
-| `maxLiquidity` | uint128 | The maximum liquidity allocation for a single tick |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :--- | :---------------------------------------------------------------------------- |
-| `flipped` | bool | Whether the tick was flipped from initialized to uninitialized, or vice versa |
-
-### clear
-
-```solidity
- function clear(
- mapping(int24 => struct Tick.Info) self,
- int24 tick
- ) internal
-```
-
-Clears tick data
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :--------------------------------- | :---------------------------------------------------------------------------- |
-| `self` | mapping(int24 => struct Tick.Info) | The mapping containing all initialized tick information for initialized ticks |
-| `tick` | int24 | The tick that will be cleared |
-
-### cross
-
-```solidity
- function cross(
- mapping(int24 => struct Tick.Info) self,
- int24 tick,
- uint256 feeGrowthGlobal0X128,
- uint256 feeGrowthGlobal1X128
- ) internal returns (int128 liquidityNet)
-```
-
-Transitions to next tick as needed by price movement
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------------------- | :--------------------------------- | :---------------------------------------------------------------- |
-| `self` | mapping(int24 => struct Tick.Info) | The mapping containing all tick information for initialized ticks |
-| `tick` | int24 | The destination tick of the transition |
-| `feeGrowthGlobal0X128` | uint256 | The all-time global fee growth, per unit of liquidity, in token0 |
-| `feeGrowthGlobal1X128` | uint256 | The all-time global fee growth, per unit of liquidity, in token1 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------- | :----- | :------------------------------------------------------------------------------------------------- |
-| `liquidityNet` | int128 | The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left) |
diff --git a/docs/contracts/v3/reference/core/libraries/TickBitmap.md b/docs/contracts/v3/reference/core/libraries/TickBitmap.md
deleted file mode 100644
index 59fee2886..000000000
--- a/docs/contracts/v3/reference/core/libraries/TickBitmap.md
+++ /dev/null
@@ -1,55 +0,0 @@
-Stores a packed mapping of tick index to its initialized state
-
-The mapping uses int16 for keys since ticks are represented as int24 and there are 256 (2^8) values per word.
-
-## Functions
-
-### flipTick
-
-```solidity
- function flipTick(
- mapping(int16 => uint256) self,
- int24 tick,
- int24 tickSpacing
- ) internal
-```
-
-Flips the initialized state for a given tick from false to true, or vice versa
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------------------------ | :------------------------------------ |
-| `self` | mapping(int16 => uint256) | The mapping in which to flip the tick |
-| `tick` | int24 | The tick to flip |
-| `tickSpacing` | int24 | The spacing between usable ticks |
-
-### nextInitializedTickWithinOneWord
-
-```solidity
- function nextInitializedTickWithinOneWord(
- mapping(int16 => uint256) self,
- int24 tick,
- int24 tickSpacing,
- bool lte
- ) internal view returns (int24 next, bool initialized)
-```
-
-Returns the next initialized tick contained in the same word (or adjacent word) as the tick that is either
-to the left (less than or equal to) or right (greater than) of the given tick
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------------------------ | :---------------------------------------------------------------------------------------------------- |
-| `self` | mapping(int16 => uint256) | The mapping in which to compute the next initialized tick |
-| `tick` | int24 | The starting tick |
-| `tickSpacing` | int24 | The spacing between usable ticks |
-| `lte` | bool | Whether to search for the next initialized tick to the left (less than or equal to the starting tick) |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------ | :---- | :----------------------------------------------------------------------------------------- |
-| `next` | int24 | The next initialized or uninitialized tick up to 256 ticks away from the current tick |
-| `initialized` | bool | Whether the next tick is initialized, as the function only searches within up to 256 ticks |
diff --git a/docs/contracts/v3/reference/core/libraries/TickMath.md b/docs/contracts/v3/reference/core/libraries/TickMath.md
deleted file mode 100644
index ec34f80f6..000000000
--- a/docs/contracts/v3/reference/core/libraries/TickMath.md
+++ /dev/null
@@ -1,55 +0,0 @@
-Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports
-prices between 2**-128 and 2**128
-
-## Functions
-
-### getSqrtRatioAtTick
-
-```solidity
- function getSqrtRatioAtTick(
- int24 tick
- ) internal pure returns (uint160 sqrtPriceX96)
-```
-
-Calculates sqrt(1.0001^tick) \* 2^96
-
-Throws if |tick| > max tick
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :---- | :----------------------------------- |
-| `tick` | int24 | The input tick for the above formula |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------- | :------ | :----------------------------------------------------------------------------------------------- |
-| `sqrtPriceX96` | uint160 | A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0) |
-
-at the given tick
-
-### getTickAtSqrtRatio
-
-```solidity
- function getTickAtSqrtRatio(
- uint160 sqrtPriceX96
- ) internal pure returns (int24 tick)
-```
-
-Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio
-
-Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may
-ever return.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :------ | :------------------------------------------------------- |
-| `sqrtPriceX96` | uint160 | The sqrt ratio for which to compute the tick as a Q64.96 |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :---- | :----------------------------------------------------------------------------- |
-| `tick` | int24 | The greatest tick for which the ratio is less than or equal to the input ratio |
diff --git a/docs/contracts/v3/reference/core/libraries/TransferHelper.md b/docs/contracts/v3/reference/core/libraries/TransferHelper.md
deleted file mode 100644
index e83e1439e..000000000
--- a/docs/contracts/v3/reference/core/libraries/TransferHelper.md
+++ /dev/null
@@ -1,25 +0,0 @@
-Contains helper methods for interacting with ERC20 tokens that do not consistently return true/false
-
-## Functions
-
-### safeTransfer
-
-```solidity
- function safeTransfer(
- address token,
- address to,
- uint256 value
- ) internal
-```
-
-Transfers tokens from msg.sender to a recipient
-
-Calls transfer on token contract, errors with TF if transfer fails
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------ | :------ | :---------------------------------------------------------- |
-| `token` | address | The contract address of the token which will be transferred |
-| `to` | address | The recipient of the transfer |
-| `value` | uint256 | The value of the transfer |
diff --git a/docs/contracts/v3/reference/core/libraries/UnsafeMath.md b/docs/contracts/v3/reference/core/libraries/UnsafeMath.md
deleted file mode 100644
index 145e04a98..000000000
--- a/docs/contracts/v3/reference/core/libraries/UnsafeMath.md
+++ /dev/null
@@ -1,29 +0,0 @@
-Contains methods that perform common math functions but do not do any overflow or underflow checks
-
-## Functions
-
-### divRoundingUp
-
-```solidity
- function divRoundingUp(
- uint256 x,
- uint256 y
- ) internal pure returns (uint256 z)
-```
-
-Returns ceil(x / y)
-
-panics if y == 0
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--- | :------ | :----------- |
-| `x` | uint256 | The dividend |
-| `y` | uint256 | The divisor |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--- | :------ | :------------------------ |
-| `z` | uint256 | The quotient, ceil(x / y) |
diff --git a/docs/contracts/v3/reference/core/libraries/_category_.json b/docs/contracts/v3/reference/core/libraries/_category_.json
deleted file mode 100644
index dd4e23db0..000000000
--- a/docs/contracts/v3/reference/core/libraries/_category_.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "label": "Libraries"
-}
\ No newline at end of file
diff --git a/docs/contracts/v3/reference/deployments/AVAX-Deployments.md b/docs/contracts/v3/reference/deployments/AVAX-Deployments.md
deleted file mode 100644
index 11d009ce1..000000000
--- a/docs/contracts/v3/reference/deployments/AVAX-Deployments.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: avax-deployments
-title: AVAX Deployments
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | AVAX Avalanch C-Chain Addresses |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD` |
-| [Multicall](https://snowtrace.io/address/0x0139141Cd4Ee88dF3Cdb65881D411bAE271Ef0C2/contract/43114/code) | `0x0139141Cd4Ee88dF3Cdb65881D411bAE271Ef0C2` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0x9AdA7D7879214073F40183F3410F2b3f088c6381` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0xEB9fFC8bf81b4fFd11fb6A63a6B0f098c6e21950` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0x27Dd7eE7fE723e83Bf3612a75a034951fe299E99` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0xe89B7C295d73FCCe88eF263F86e7310925DaEBAF` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xE1f93a7cB6fFa2dB4F9d5A2FD43158A428993C09` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0x655C406EBFa14EE2006250925e54ec43AD184f8B` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0x44f5f1f5E452ea8d29C890E8F6e893fC0f1f0f97` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x4Dae2f939ACf50408e13d58534Ff8c2776d45265` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0xCA9D0668C600c4dd07ca54Be1615FE5CDFd76Ac3` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-
-# t1 V3 Staker
-
-An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/v3-staker/releases/tag/v1.0.2) for the `UniswapV3Staker` contract.
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------- | -------- | -------------------- | -------------------------------------------- |
-| AVAX | `43114` | WAVAX | `0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7` |
diff --git a/docs/contracts/v3/reference/deployments/Arbitrum-Deployments.md b/docs/contracts/v3/reference/deployments/Arbitrum-Deployments.md
deleted file mode 100644
index f5268a515..000000000
--- a/docs/contracts/v3/reference/deployments/Arbitrum-Deployments.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-id: arbitrum-deployments
-title: Arbitrum Deployments
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | Arbitrum Addresses | Arbitrum Sepolia Addresses |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x1F98431c8aD98523631AE4a59f267346ea31F984` | `0x248AB79Bbb9bC29bB72f7Cd42F17e054Fc40188e` |
-| [Multicall](https://arbiscan.io/address/0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB#code) | `0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB` | `0x2B718b475e385eD29F56775a66aAB1F5cC6B2A0A` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0xB753548F6E010e7e680BA186F9Ca1BdAB2E90cf2` | `` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0xbfd8137f7d1516D3ea5cA83523914859ec47F573` | `0x0fd18587734e5C2dcE2dccDcC7DD1EC89ba557d9` |
-| [Quoter](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/Quoter.sol) | `0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6` | `` |
-| [SwapRouter](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/SwapRouter.sol) | `0xE592427A0AEce92De3Edee1F18E0157C05861564` | `` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0x42B24A95702b9986e82d421cC3568932790A48Ec` | `` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x91ae842A5Ffd8d12023116943e72A606179294f3` | `` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xEe6A57eC80ea46401049E92587E52f5Ec1c24785` | `` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0xC36442b4a4522E871399CD717aBDD847Ab11FE88` | `0x6b2937Bde17889EDCf8fbD8dE31C3C2a70Bc4d65` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0xA5644E29708357803b5A882D272c41cC0dF92B34` | `0x398f43ef2c67B941147157DA1c5a868E906E043D` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x61fFE014bA17989E743c5F6cB21bF9697530B21e` | `0x2779a0CC1c3e0E44D2542EC3e79e3864Ae93Ef0B` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45` | `0x101F443B4d1b059569D643917553c771E1b9663E` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x5E325eDA8064b456f4781070C0738d849c824258` | `0x4A7b5Da61326A6379179b40d00F57E5bbDC962c2` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0xe34139463bA50bD61336E0c446Bd8C0867c6fE65` | `` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-# t1 V3 Staker
-
-An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/v3-staker/releases/tag/v1.0.2) for the `UniswapV3Staker` contract.
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------------------- | -------- | -------------------- | -------------------------------------------- |
-| Arbitrum | `42161` | WETH | `0x82aF49447D8a07e3bd95BD0d56f35241523fBab1` |
-| Arbitrum Sepolia | `421614` | WETH | `0x980B62Da83eFf3D4576C647993b0c1D7faf17c73` |
diff --git a/docs/contracts/v3/reference/deployments/BNB-Binance-Deployments.md b/docs/contracts/v3/reference/deployments/BNB-Binance-Deployments.md
deleted file mode 100644
index bcfe26fd9..000000000
--- a/docs/contracts/v3/reference/deployments/BNB-Binance-Deployments.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: bnb-deployments
-title: BNB Deployments
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | BNB Address |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7` |
-| [Multicall](https://bscscan.com/address/0x963Df249eD09c358A4819E39d9Cd5736c3087184#code) | `0x963Df249eD09c358A4819E39d9Cd5736c3087184` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0xC9A7f5b73E853664044ab31936D0E6583d8b1c79` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0xD9270014D396281579760619CCf4c3af0501A47C` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0x831d93E55AF23A2977E4DA892d5005f4F2995071` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x0281E98322e4e8E53491D576Ee6A2BFCE644C55C` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xAec98e489AE35F243eB63452f6ad233A6c97eE97` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0x32681814957e0C13117ddc0c2aba232b5c9e760f` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x78D78E420Da98ad378D7799bE8f4AF69033EB077` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x4Dae2f939ACf50408e13d58534Ff8c2776d45265` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0x49B53C35AF9072fC71767577BF6380a88EE32C71` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-# t1 V3 Staker
-
-An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/v3-staker/releases/tag/v1.0.2) for the `UniswapV3Staker` contract.
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------------------- | -------- | -------------------- | -------------------------------------------- |
-| Binance Smart Chain | `56` | WBNB | `0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c` |
diff --git a/docs/contracts/v3/reference/deployments/Base-Deployments.md b/docs/contracts/v3/reference/deployments/Base-Deployments.md
deleted file mode 100644
index 186b6e80a..000000000
--- a/docs/contracts/v3/reference/deployments/Base-Deployments.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-id: base-deployments
-title: Base Deployments
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | Base Address | Base Sepolia Address |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x33128a8fC17869897dcE68Ed026d694621f6FDfD` | `0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24` |
-| [Multicall](https://basescan.org/address/0x091e99cb1c49331a94dd62755d168e941abd0693#code) | `0x091e99cb1C49331a94dD62755D168E941AbD0693` | `0xd867e273eAbD6c853fCd0Ca0bFB6a3aE6491d2C1` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0x3334d83e224aF5ef9C2E7DDA7c7C98Efd9621fA9` | `0xD7303474Baca835743B54D73799688990f24a79D` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0x0CdeE061c75D43c82520eD998C23ac2991c9ac6d` | `0xedf6066a2b290C185783862C7F4776A2C8077AD1` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0xF9d1077fd35670d4ACbD27af82652a8d84577d9F` | `0x4e0caFF1Df1cCd7CF782FDdeD77f020699B57f1a` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x4f225937EDc33EFD6109c4ceF7b560B2D6401009` | `0xd7c6e867591608D32Fe476d0DbDc95d0cf584c8F` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0x4615C383F85D0a2BbED973d83ccecf5CB7121463` | `0x1E2A708040Eb6Ed08893E27E35D399e8E8e7857E` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1` | `0x27F971cb582BF9E50F397e4d29a5C7A34f11faA2` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0x23cF10b1ee3AdfCA73B0eF17C07F7577e7ACd2d7` | `0xCbf8b7f80800bd4888Fbc7bf1713B80FE4E23E10` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a` | `0xC5290058841028F1614F3A6F0F5816cAd0df5E27` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x2626664c2603336E57B271c5C0b26F421741e481` | `0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD` | `0x050E797f3625EC8785265e1d9BDd4799b97528A1` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0x42bE4D6527829FeFA1493e1fb9F3676d2425C3C1` | `` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-# t1 V3 Staker
-
-An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/v3-staker/releases/tag/v1.0.2) for the `UniswapV3Staker` contract.
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------------------- | -------- | -------------------- | -------------------------------------------- |
-| Base | `8453` | WETH | `0x4200000000000000000000000000000000000006` |
-| Base Sepolia | `84532` | WETH | `0x4200000000000000000000000000000000000006` |
diff --git a/docs/contracts/v3/reference/deployments/Blast-Deployments.md b/docs/contracts/v3/reference/deployments/Blast-Deployments.md
deleted file mode 100644
index 80f4ef556..000000000
--- a/docs/contracts/v3/reference/deployments/Blast-Deployments.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-id: blast-deployments
-title: Blast Deployments
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | Blast addresses |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x792edAdE80af5fC680d96a2eD80A44247D2Cf6Fd` |
-| [Multicall](https://blastscan.io/address/0xdc7f370de7631ce9e2c2e1dcda6b3b5744cf4705#code) | `0xdC7f370de7631cE9e2c2e1DCDA6B3B5744Cf4705` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0x7C9cAa4ac84C8FAD8Bd504DBF90e791F91f41705` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0x2E95185bCdD928a3e984B7e2D6560Ab1b17d7274` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0xAa32bD3926097fd04d22b4433e9867417EE79333` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x497089D9450BB58f536c38c1C0d0A37472303508` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xB22Ef02E13B1900EBF10391e57162402c11BfF05` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0xB218e4f7cF0533d4696fDfC419A0023D33345F28` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0x15CA7043CD84C5D21Ae76Ba0A1A967d42c40ecE0` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x6Cdcd65e03c1CEc3730AeeCd45bc140D57A25C77` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x549FEB8c9bd4c12Ad2AB27022dA12492aC452B66` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022d473030f116ddee9f6b43ac78ba3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x643770E279d5D0733F21d6DC03A8efbABf3255B4` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0xEcAF7c276f746170642e97De961f2f0361e1aCc8` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------- | ------- | -------------------- | -------------------------------------------- |
-| Blast | `81457` | WETH | `0x4300000000000000000000000000000000000004` |
diff --git a/docs/contracts/v3/reference/deployments/Celo-Deployments.md b/docs/contracts/v3/reference/deployments/Celo-Deployments.md
deleted file mode 100644
index ac9cfd229..000000000
--- a/docs/contracts/v3/reference/deployments/Celo-Deployments.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-id: celo-deployments
-title: CELO Deployments
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | CELO Address |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0xAfE208a311B21f13EF87E33A90049fC17A7acDEc` |
-| [Multicall2](https://celoscan.io/address/0x633987602de5c4f337e3dbf265303a1080324204#code) | `0x633987602DE5C4F337e3DbF265303A1080324204` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0xc1b262Dd7643D4B7cA9e51631bBd900a564BF49A` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0x5f115D9113F88e0a0Db1b5033D90D4a9690AcD3D` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0xa9Fd765d85938D278cb0b108DbE4BF7186831186` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x644023b316bB65175C347DE903B60a756F6dd554` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0x505B43c452AA4443e0a6B84bb37771494633Fde9` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0x3cFd4d48EDfDCC53D3f173F596f621064614C582` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x5615CDAb10dc425a742d643d949a7F474C01abc4` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x643770E279d5D0733F21d6DC03A8efbABf3255B4` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0x6586FB35393abF7Ff454977a9b3c912d218791C6` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-# t1 V3 Staker
-
-An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/v3-staker/releases/tag/v1.0.2) for the `UniswapV3Staker` contract.
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# CELO Native Asset
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-**Note: CELO is the native asset, it is a token and will work as a token, needing approval for routers to manage.*
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------- | -------- | -------------------- | -------------------------------------------- |
-| CELO | `142220` | CELO Native Asset | `0x471EcE3750Da237f93B8E339c536989b8978a438` |
diff --git a/docs/contracts/v3/reference/deployments/Ethereum-Deployments.md b/docs/contracts/v3/reference/deployments/Ethereum-Deployments.md
deleted file mode 100644
index a55f2c655..000000000
--- a/docs/contracts/v3/reference/deployments/Ethereum-Deployments.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-id: ethereum-deployments
-title: Ethereum Deployments
----
-
-# t1 Ethereum Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | Mainnet | Ethereum Sepolia Addresses |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x1F98431c8aD98523631AE4a59f267346ea31F984` | `0x0227628f3F023bb0B980b67D528571c95c6DaC1c` |
-| [Multicall](https://etherscan.io/address/0x1F98415757620B543A52E61c46B32eB19261F984#code) | `0x1F98415757620B543A52E61c46B32eB19261F984` | `` |
-| [Multicall2](https://etherscan.io/address/0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696#code) | `0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696` | `0xD7F33bCdb21b359c8ee6F0251d30E94832baAd07` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0xB753548F6E010e7e680BA186F9Ca1BdAB2E90cf2` | `0x0b343475d44EC2b4b8243EBF81dc888BF0A14b36` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0xbfd8137f7d1516D3ea5cA83523914859ec47F573` | `` |
-| [Quoter](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/Quoter.sol) | `0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6` | `` |
-| [SwapRouter](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/SwapRouter.sol) | `0xE592427A0AEce92De3Edee1F18E0157C05861564` | `` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0x42B24A95702b9986e82d421cC3568932790A48Ec` | `0x3B5E3c5E595D85fbFBC2a42ECC091e183E76697C` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x91ae842A5Ffd8d12023116943e72A606179294f3` | `0x5bE4DAa6982C69aD20A57F1e68cBcA3D37de6207` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xEe6A57eC80ea46401049E92587E52f5Ec1c24785` | `` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0xC36442b4a4522E871399CD717aBDD847Ab11FE88` | `0x1238536071E1c677A632429e3655c799b22cDA52` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0xA5644E29708357803b5A882D272c41cC0dF92B34` | `0x729004182cF005CEC8Bd85df140094b6aCbe8b15` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x61fFE014bA17989E743c5F6cB21bF9697530B21e` | `0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45` | `0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD` | `0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0xe34139463bA50bD61336E0c446Bd8C0867c6fE65` | `` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-# t1 V3 Staker
-
-An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/v3-staker/releases/tag/v1.0.2) for the `UniswapV3Staker` contract.
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------------------- | ----------- | -------------------- | -------------------------------------------- |
-| Ethereum | `1` | WETH | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` |
-| Sepolia | `11155111` | WETH | `0xfff9976782d46cc05630d1f6ebab18b2324d6b14` |
-
diff --git a/docs/contracts/v3/reference/deployments/Optimism-Deployments.md b/docs/contracts/v3/reference/deployments/Optimism-Deployments.md
deleted file mode 100644
index 3c9d6187f..000000000
--- a/docs/contracts/v3/reference/deployments/Optimism-Deployments.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-id: optimism-deployments
-title: Optimism Deployments
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | Optimism Addresses | OP Sepolia Addresses SDK-Core | OP Sepolia Addresses |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x1F98431c8aD98523631AE4a59f267346ea31F984` | `0x8CE191193D15ea94e11d327b4c7ad8bbE520f6aF` | `0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24` |
-| [Multicall](https://optimistic.etherscan.io/address/0x1F98415757620B543A52E61c46B32eB19261F984#code) | `0x1F98415757620B543A52E61c46B32eB19261F984` | `0x80e4e06841bb76AA9735E0448cB8d003C0EF009a` | `0xd867e273eAbD6c853fCd0Ca0bFB6a3aE6491d2C1` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0xB753548F6E010e7e680BA186F9Ca1BdAB2E90cf2` | `0xD7303474Baca835743B54D73799688990f24a79D` | `0xD7303474Baca835743B54D73799688990f24a79D` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0xbfd8137f7d1516D3ea5cA83523914859ec47F573` | `0xCb7f54747F58F8944973cea5b8f4ac2209BadDC5` | `0xedf6066a2b290C185783862C7F4776A2C8077AD1` |
-| [Quoter](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/Quoter.sol) | `0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6` | `` | `` |
-| [SwapRouter](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/SwapRouter.sol) | `0xE592427A0AEce92De3Edee1F18E0157C05861564` | `` | `` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0x42B24A95702b9986e82d421cC3568932790A48Ec` | `0x4e0caFF1Df1cCd7CF782FDdeD77f020699B57f1a` | `0x4e0caFF1Df1cCd7CF782FDdeD77f020699B57f1a` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x91ae842A5Ffd8d12023116943e72A606179294f3` | `0xd7c6e867591608D32Fe476d0DbDc95d0cf584c8F` | `0xd7c6e867591608D32Fe476d0DbDc95d0cf584c8F` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xEe6A57eC80ea46401049E92587E52f5Ec1c24785` | `0x1E2A708040Eb6Ed08893E27E35D399e8E8e7857E` | `0x1E2A708040Eb6Ed08893E27E35D399e8E8e7857E` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0xC36442b4a4522E871399CD717aBDD847Ab11FE88` | `0xdA75cEf1C93078e8b736FCA5D5a30adb97C8957d` | `0x27F971cb582BF9E50F397e4d29a5C7A34f11faA2` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `` | `0xE7EcbAAaA54D007A00dbb6c1d2f150066D69dA07` | `0xCbf8b7f80800bd4888Fbc7bf1713B80FE4E23E10` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x61fFE014bA17989E743c5F6cB21bF9697530B21e` | `0x0FBEa6cf957d95ee9313490050F6A0DA68039404` | `0xC5290058841028F1614F3A6F0F5816cAd0df5E27` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45` | `0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4` | `0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` | `0x000000000022D473030F116dDEE9F6B43aC78BA3` | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0xCb1355ff08Ab38bBCE60111F1bb2B784bE25D7e8` | `0xD5bBa708b39537d33F2812E5Ea032622456F1A95` | `0xD5bBa708b39537d33F2812E5Ea032622456F1A95` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0xe34139463bA50bD61336E0c446Bd8C0867c6fE65` | `0x78eF13931e5625C828ef8Ec455ba7fa09fDa9808` | `` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-# t1 V3 Staker
-
-An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/v3-staker/releases/tag/v1.0.2) for the `UniswapV3Staker` contract.
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------------------- | ---------- | -------------------- | -------------------------------------------- |
-| Optimism | `10` | WETH | `0x4200000000000000000000000000000000000006` |
-| Optimism Sepolia | `11155420` | WETH | `0x4200000000000000000000000000000000000006` |
diff --git a/docs/contracts/v3/reference/deployments/Polygon-Deployments.md b/docs/contracts/v3/reference/deployments/Polygon-Deployments.md
deleted file mode 100644
index 08cf8fcea..000000000
--- a/docs/contracts/v3/reference/deployments/Polygon-Deployments.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-id: polygon-deployments
-title: Polygon Deployments
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | Polygon Addresses | Polygon Mumbai |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x1F98431c8aD98523631AE4a59f267346ea31F984` | `0x1F98431c8aD98523631AE4a59f267346ea31F984` |
-| [Multicall](https://polygonscan.com/address/0x1F98415757620B543A52E61c46B32eB19261F984#code) | `0x1F98415757620B543A52E61c46B32eB19261F984` | `0x1F98415757620B543A52E61c46B32eB19261F984` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0xB753548F6E010e7e680BA186F9Ca1BdAB2E90cf2` | `0xB753548F6E010e7e680BA186F9Ca1BdAB2E90cf2` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0xbfd8137f7d1516D3ea5cA83523914859ec47F573` | `0xbfd8137f7d1516D3ea5cA83523914859ec47F573` |
-| [Quoter](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/Quoter.sol) | `0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6` | `0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6` |
-| [SwapRouter](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/SwapRouter.sol) | `0xE592427A0AEce92De3Edee1F18E0157C05861564` | `0xE592427A0AEce92De3Edee1F18E0157C05861564` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0x42B24A95702b9986e82d421cC3568932790A48Ec` | `0x42B24A95702b9986e82d421cC3568932790A48Ec` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x91ae842A5Ffd8d12023116943e72A606179294f3` | `0x91ae842A5Ffd8d12023116943e72A606179294f3` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xEe6A57eC80ea46401049E92587E52f5Ec1c24785` | `0xEe6A57eC80ea46401049E92587E52f5Ec1c24785` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0xC36442b4a4522E871399CD717aBDD847Ab11FE88` | `0xC36442b4a4522E871399CD717aBDD847Ab11FE88` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0xA5644E29708357803b5A882D272c41cC0dF92B34` | `0xA5644E29708357803b5A882D272c41cC0dF92B34` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x61fFE014bA17989E743c5F6cB21bF9697530B21e` | `0x61fFE014bA17989E743c5F6cB21bF9697530B21e` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45` | `0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0xec7BE89e9d109e7e3Fec59c222CF297125FEFda2` | `0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0xe34139463bA50bD61336E0c446Bd8C0867c6fE65` | `0xe34139463bA50bD61336E0c446Bd8C0867c6fE65` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-# t1 V3 Staker
-
-An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/v3-staker/releases/tag/v1.0.2) for the `UniswapV3Staker` contract.
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------------------- | -------- | -------------------- | -------------------------------------------- |
-| Polygon | `137` | WMATIC | `0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270` |
-| Polygon Mumbai | `80001` | WMATIC | `0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889` |
diff --git a/docs/contracts/v3/reference/deployments/WorldChain-Deployments.md b/docs/contracts/v3/reference/deployments/WorldChain-Deployments.md
deleted file mode 100644
index 6cd72e6bb..000000000
--- a/docs/contracts/v3/reference/deployments/WorldChain-Deployments.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-id: WorldChain-deployments
-title: WorldChain Deployment Addresses
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | WorldChain |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x7a5028BDa40e7B173C278C5342087826455ea25a` |
-| [Multicall2](https://worldchain-mainnet.explorer.alchemy.com/address/0x0a22c04215c97E3F532F4eF30e0aD9458792dAB9) | `0x0a22c04215c97E3F532F4eF30e0aD9458792dAB9` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0x8B52DaCB7B5d9A959CDcD5419061c0eDD1296c29` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0xE61df0CaC9d85876aCE5E3037005D80943570623` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0x38c68A1D60C47973EcE5bc1725B65D8Bec438192` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0x70410a302c4a5c52C659b780941c947Abd437FeB` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xe6FcB4952b2d3Fab6DA4BC165831f5575e093feC` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0xec12a9F9a09f50550686363766Cc153D03c27b5e` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0x9EBDdCBa71C9027E1eB45135672a30bcFEec9de3` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x10158D43e6cc414deE1Bd1eB0EfC6a5cBCfF244c` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x091AD9e2e6e5eD44c1c66dB50e49A601F9f36cF6` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/sdks/blob/main/sdks/universal-router-sdk/src/utils/constants.ts).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------------------- | -------- | -------------------- | -------------------------------------------- |
-| WorldChain | `480` | WETH | `0x4200000000000000000000000000000000000006` |
diff --git a/docs/contracts/v3/reference/deployments/ZKsync-Deployments.md b/docs/contracts/v3/reference/deployments/ZKsync-Deployments.md
deleted file mode 100644
index b4e4949a1..000000000
--- a/docs/contracts/v3/reference/deployments/ZKsync-Deployments.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-id: ZKsync-deployments
-title: ZKsync Deployment Addresses
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | ZKsync Mainnet |
-| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/uniswap-zksync/era-uniswap-v3-core/blob/v1.0.0-zksync-era/contracts/UniswapV3Factory.sol) | `0x8FdA5a7a8dCA67BBcDd10F02Fa0649A937215422` |
-| [Multicall2](https://explorer.zksync.io/address/0x0c68a7C72f074d1c45C16d41fa74eEbC6D16a65C#contract) | `0x0c68a7C72f074d1c45C16d41fa74eEbC6D16a65C` |
-| [ProxyAdmin](https://github.com/uniswap-zksync/era-openzeppelin-contracts/blob/v3.4.1-solc-0.7-2-zksync-era/contracts/proxy/ProxyAdmin.sol) | `0xBb79274aD9C7f68A5B6a7E31F431175BB889b557` |
-| [TickLens](https://github.com/uniswap-zksync/era-uniswap-v3-periphery/blob/v1.1.1-zksync-era/contracts/lens/TickLens.sol) | `0xe10FF11b809f8EE07b056B452c3B2caa7FE24f89` |
-| [NFTDescriptor](https://github.com/uniswap-zksync/era-uniswap-v3-periphery/blob/v1.3.0-zksync-era/contracts/libraries/NFTDescriptor.sol) | `0x7d67b8Ff4AbFfc020641F5e430fbeEd03897674d` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/uniswap-zksync/era-uniswap-v3-periphery/blob/v1.3.0-zksync-era/contracts/NonfungibleTokenPositionDescriptor.sol) | `0xa819De78cAB1163F8605809392068EdE3BFcDd1E` |
-| [TransparentUpgradeableProxy](https://github.com/uniswap-zksync/era-openzeppelin-contracts/blob/v3.4.1-solc-0.7-2-zksync-era/contracts/proxy/TransparentUpgradeableProxy.sol) | `0xAeaBf2d69698C6810D2596fAE86099790A13Ee81` |
-| [NonfungiblePositionManager](https://github.com/uniswap-zksync/era-uniswap-v3-periphery/blob/v1.1.1-zksync-era/contracts/NonfungiblePositionManager.sol) | `0x0616e5762c1E7Dc3723c50663dF10a162D690a86` |
-| [V3Migrator](https://github.com/uniswap-zksync/era-uniswap-v3-periphery/blob/v1.1.1-zksync-era/contracts/V3Migrator.sol) | `0x611841b24E43C4ACfd290B427a3D6cf1A59dac8E` |
-| [QuoterV2](https://github.com/uniswap-zksync/era-uniswap-swap-router-contracts/blob/v1.1.0-zksync-era/contracts/lens/QuoterV2.sol) | `0x8Cb537fc92E26d8EBBb760E632c95484b6Ea3e28` |
-| [SwapRouter02](https://github.com/uniswap-zksync/era-uniswap-swap-router-contracts/blob/v1.1.0-zksync-era/contracts/SwapRouter02.sol) | `0x99c56385daBCE3E81d8499d0b8d0257aBC07E8A3` |
-| [Permit2](https://github.com/uniswap-zksync/era-permit2/blob/0x000000000022D473030F116dDEE9F6B43aC78BA3-zksync-era/src/Permit2.sol) | `0x0000000000225e31d15943971f47ad3022f714fa` |
-| [UniversalRouter](https://github.com/uniswap-zksync/era-universal-router/tree/v1.2.2-zksync-era) | `0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06` |
-| [v3StakerAddress](https://github.com/uniswap-zksync/era-uniswap-v3-staker/blob/v1.0.2-zksync-era/contracts/UniswapV3Staker.sol) | `0xf84268FA8EB857c2e4298720C1C617178F5e78e1` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core`](https://github.com/uniswap-zksync/era-uniswap-v3-core/tree/v1.0.0-zksync-era)
-- [`@uniswap/v3-periphery`](https://github.com/uniswap-zksync/era-uniswap-v3-periphery)
-- [`@uniswap/swap-router-contracts`](https://github.com/uniswap-zksync/era-uniswap-swap-router-contracts)
-
-*Note:*
-ZKsync contracts are also using the [`ZKsync fork of OpenZeppelin`](https://github.com/uniswap-zksync/era-openzeppelin-contracts#v3.4.1-solc-0.7-2-zksync-era).
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/sdks/blob/main/sdks/universal-router-sdk/src/utils/constants.ts).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://app.uniswap.org/explore) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ----------------- | -------- | -------------------- | -------------------------------------------- |
-| ZKxync | `324` | WETH | `0x5aea5775959fbc2557cc8789bc1bf90a239d9a91` |
-
diff --git a/docs/contracts/v3/reference/deployments/Zora-Deployments.md b/docs/contracts/v3/reference/deployments/Zora-Deployments.md
deleted file mode 100644
index 5b28215eb..000000000
--- a/docs/contracts/v3/reference/deployments/Zora-Deployments.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: Zora-deployments
-title: Zora Deployment Addresses
----
-
-# t1 Contract Deployments
-
-The latest version of `@uniswap/v3-core`, `@uniswap/v3-periphery`, and `@uniswap/swap-router-contracts` are deployed at the addresses listed below. Integrators should **no longer assume that they are deployed to the same addresses across chains** and be extremely careful to confirm mappings below.
-
-| Contract | Zora | Zora Sepolia |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | -------------------------------------------- |
-| [UniswapV3Factory](https://github.com/Uniswap/uniswap-v3-core/blob/v1.0.0/contracts/UniswapV3Factory.sol) | `0x7145F8aeef1f6510E92164038E1B6F8cB2c42Cbb` | `0x4324A677D74764f46f33ED447964252441aA8Db6` |
-| [Multicall2](https://explorer.zora.energy/address/0xA51c76bEE6746cB487a7e9312E43e2b8f4A37C15) | `0xA51c76bEE6746cB487a7e9312E43e2b8f4A37C15` | `0xA1E7e3A69671C4494EC59Dbd442de930a93F911A` |
-| [ProxyAdmin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/ProxyAdmin.sol) | `0xd4109824FC80dD41ca6ee8D304ec74B8bEdEd03b` | `0x561896C035abFB3C72f754f10fD35f6c450Ffe16` |
-| [TickLens](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/lens/TickLens.sol) | `0x209AAda09D74Ad3B8D0E92910Eaf85D2357e3044` | `0x23C0F71877a1Fc4e20A78018f9831365c85f3064` |
-| [NFTDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/libraries/NFTDescriptor.sol) | `0xffF2BffC03474F361B7f92cCfF2fD01CFBBDCdd1` | `0xf70C8a20496a5201Fd8D01F627c93aE39cDa1999` |
-| [NonfungibleTokenPositionDescriptor](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungibleTokenPositionDescriptor.sol) | `0xf15D9e794d39A3b4Ea9EfC2376b2Cd9562996422` | `0x5BC936a151Fb4CEBD14467Ca9CBf598b7E645fc0` |
-| [TransparentUpgradeableProxy](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.1-solc-0.7-2/contracts/proxy/TransparentUpgradeableProxy.sol) | `0x843b0b03c3B3B0434B9cb00AD9cD1D9218E7741b` | `0x68EF3669bEd58213edf9Da598f4E1307680839B2` |
-| [NonfungiblePositionManager](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/NonfungiblePositionManager.sol) | `0xbC91e8DfA3fF18De43853372A3d7dfe585137D78` | `0xB8458EaAe43292e3c1F7994EFd016bd653d23c20` |
-| [V3Migrator](https://github.com/Uniswap/uniswap-v3-periphery/blob/v1.0.0/contracts/V3Migrator.sol) | `0x048352d8dCF13686982C799da63fA6426a9D0b60` | `0x65ef259b31bf1d977c37e9434658694267674897` |
-| [QuoterV2](https://github.com/Uniswap/v3-periphery/blob/main/contracts/lens/QuoterV2.sol) | `0x11867e1b3348F3ce4FcC170BC5af3d23E07E64Df` | `0xC195976fEF0985886E37036E2DF62bF371E12Df0` |
-| [SwapRouter02](https://github.com/Uniswap/swap-router-contracts/blob/main/contracts/SwapRouter02.sol) | `0x7De04c96BE5159c3b5CeffC82aa176dc81281557` | `0x6B36d761981d82B1e07cF3c4daF4cB4615c4850a` |
-| [Permit2](https://github.com/Uniswap/permit2) | `0x000000000022d473030f116ddee9f6b43ac78ba3` | `0x000000000022d473030f116ddee9f6b43ac78ba3` |
-| [UniversalRouter](https://github.com/Uniswap/universal-router) | `0x2986d9721A49838ab4297b695858aF7F17f38014` | `` |
-| [v3StakerAddress](https://github.com/Uniswap/v3-staker) | `0x5eF5A6923d2f566F65f363b78EF7A88ab1E4206f` | `0x5d298AAf21058d14436DBD36940dcB5542b8aFE8` |
-
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/sdks/blob/main/sdks/universal-router-sdk/src/utils/constants.ts).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
-
-# Wrapped Native Token Addresses
-
-The t1 Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the t1 protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.
-
-| Network | ChainId | Wrapped Native Token | Address |
-| ------------ | ----------- | -------------------- | -------------------------------------------- |
-| Zora | `7777777` | WETH | `0x4200000000000000000000000000000000000006` |
-| Zora Sepolia | `999999999` | WETH | `0x4200000000000000000000000000000000000006` |
diff --git a/docs/contracts/v3/reference/deployments/deployments.md b/docs/contracts/v3/reference/deployments/deployments.md
deleted file mode 100644
index 0d7a70102..000000000
--- a/docs/contracts/v3/reference/deployments/deployments.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-id: deployments
-title: Deployment Addresses
----
-
-# t1 Contract Deployments
-
-The t1 Protocol is made up of multiple contracts on many networks.
-
-Please do not assume contracts are deployed to the same addresses across chains, and be extremely careful to confirm addresses before using a contract.
-
-- [`Ethereum`](./Ethereum-Deployments.md)
-- [`Arbitrum`](./Arbitrum-Deployments.md)
-- [`Optimism`](./Optimism-Deployments.md)
-- [`Polygon`](./Polygon-Deployments.md)
-- [`Base`](./Base-Deployments.md)
-- [`BNB`](./BNB-Binance-Deployments.md)
-- [`Avalanche C-Chain`](./AVAX-Deployments.md)
-- [`CELO`](./Celo-Deployments.md)
-- [`Blast`](./Blast-Deployments.md)
-- [`ZKsync`](./ZKsync-Deployments.md)
-- [`Zora`](./Zora-Deployments.md)
-- [`WorldChain`](./WorldChain-Deployments.md)
-
-These addresses are final and were deployed from these npm package versions:
-
-- [`@uniswap/v3-core@1.0.0`](https://github.com/Uniswap/uniswap-v3-core/tree/v1.0.0)
-- [`@uniswap/v3-periphery@1.0.0`](https://github.com/Uniswap/uniswap-v3-periphery/tree/v1.0.0)
-- [`@uniswap/swap-router-contracts@1.1.0`](https://github.com/Uniswap/swap-router-contracts/tree/v1.1.0)
-
-
-# Universal Router
-
-The `UniversalRouter` contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, `SwapRouter02`. An up-to-date list of [deploy addresses by chain is hosted on Github](https://github.com/Uniswap/universal-router/tree/main/deploy-addresses).
-
-# t1 Pool Deployments
-
-Every t1 pool is a unique instance of the `UniswapV3Pool` contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the [ETH/USDC 0.3% pool](https://etherscan.io/address/0x8ad599c3a0ff1de082011efddc58f1908eb6e6d8) on Ethereum mainnet.
-
-You can look up the address of an existing pool on [Uniswap Info](https://info.uniswap.org/#/) or by calling the [`getPool`](../reference/core/interfaces/IUniswapV3Factory.md#getpool) function on the `UniswapV3Factory` contract.
-
-```solidity
-getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)
-```
\ No newline at end of file
diff --git a/docs/contracts/v3/reference/error-codes.md b/docs/contracts/v3/reference/error-codes.md
deleted file mode 100644
index 120132dcf..000000000
--- a/docs/contracts/v3/reference/error-codes.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-id: error-codes
-title: Error Codes
----
-
-LiquidityMath.sol
-
-- `LS`: Liquidity Sub
-- `LA`: Liquidity Add
-
-Oracle.sol
-
-- `OLD`: The target must be chronologically after the oldest observation
-
-- `I`: The pool has not been initialized
-
-Position.sol
-
-- `NP`: Burn cannot be called for a position with 0 liquidity
-
-Tick.sol
-
-- `LO`: LiquidityGrossAfter must be less than MaxLiquidity
-
-TickMath.sol
-
-- `T`: The given tick must be less than, or equal to, the maximum tick
-- `R`: second inequality must be < because the price can never reach the price at the max tick
-
-TransferHelper.sol
-
-- `TF`: Transfer Failed : errors with TF if transfer fails
-
-UniswapV3Pool.sol
-
-- `LOK`: The reentrancy guard. A transaction cannot re-enter the pool mid-swap
-
-- `TLU`: The lower tick must be below the upper tick
-- `TLM`: The lower tick must be greater, or equal to, the minimum tick
-- `TUM`: The upper tick must be lesser than, or equal to, the maximum tick
-- `AI`: The pool is already initialized
-- `M0`: Mint 0, The balance of token0 in the given pool before minting must be less than, or equal to, the balance after minting
-- `M1`: Mint 1, The balance of token1 in the given pool before minting must be less than, or equal to, the balance after minting
-- `AS`: `amountSpecified` cannot be zero
-- `SPL`: Square root price limit
-- `IIA`: Insufficient input amount, an insufficient amount of input token was sent during the callback
-- `L`: Liquidity in the pool must be greater than zero for a flash to be executed
-- `F0`: The balance of token0 in the given pool before the flash transaction must be less than, or equal to, the balance of token0 after the flash plus the fee
-- `F1`: The balance of token1 in the given pool before the flash transaction must be less than, or equal to, the balance of token1 after the flash plus the fee
diff --git a/docs/contracts/v3/reference/overview.md b/docs/contracts/v3/reference/overview.md
deleted file mode 100644
index e8fdd6b6c..000000000
--- a/docs/contracts/v3/reference/overview.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-Uniswap V3 is a binary smart contract system comprised of many libraries, which together make the Core and Periphery.
-
-Core contracts provide fundamental safety guarantees for all parties interacting with t1. They define the logic of pool generation, the pools themselves, and the interactions involving the respective assets therein.
-
-Periphery contracts interact with one or more Core contracts but are not part of the core. They are designed to provide methods of interacting with the core that increase clarity and user safety.
-
-External calls will primarily call the periphery interfaces. Externally available functions are all viewable in the reference documentation. Internal functions are viewable on the t1 V3 Github repo.
-
-## Core
-
-> [**Core Source Code**](https://github.com/Uniswap/uniswap-v3-core)
-
-The core consists of a single factory, a pool deployer, and the many pools the factory will create.
-
-A significant amount of care and attention has been given to gas optimization in the core contracts. The result is a substantial reduction in gas costs for all protocol interactions compared to V2, at the cost of a reduction in code clarity.
-
-### Factory
-
-> [**Factory Reference**](./core/UniswapV3Factory)
-
-The factory defines the logic for generating pools. A pool is defined by two tokens, which make up the asset pair, and a fee. There can be multiple pools of the same asset pair, distinguished only by their swap fee.
-
-### Pools
-
-> [**Pool Reference**](./core/UniswapV3Pool).
-
-Pools primarily serve as automated market makers for the paired assets. Additionally, they expose price oracle data and may be used as an asset source for flash transactions.
-
-## Periphery
-
-The periphery is a constellation of smart contracts designed to support domain-specific interactions with the core. As the t1 protocol is a permissionless system, the contracts described below have no special privileges and are only a small subset of possible periphery-like contracts.
-
-### SwapRouter
-
-> [**Swap Router Reference**](./periphery/SwapRouter)
-
-> [**Swap Router Interface**](./periphery/interfaces/ISwapRouter)
-
-The swap router supports all the basic requirements of a front-end offering trading. It natively supports single trades (x to y) and multihop trades (e.g. x to y to z).
-
-### Nonfungible Position Manager
-
-> [**Nonfungible Position Manager Reference**](./periphery/NonfungiblePositionManager)
-
-> [**Nonfungible Position Manager Interface**](./periphery/interfaces/INonfungiblePositionManager)
-
-The position manager handles the logic transactions involving the creation, adjustment, or exiting of positions.
-
-### Oracle
-
-> [**Oracle Reference**](./core/libraries/Oracle)
-
-The oracle provides price and liquidity data useful for a wide variety of system designs, and is available in every deployed pool.
-
-### Periphery Libraries
-
-> [**Periphery Libraries**](./periphery/libraries/Base64)
-
-The libraries provide a variety of helper functions developers may need, like calculating pool addresses, safe transfer functions, and more.
diff --git a/docs/contracts/v3/reference/periphery/NonfungiblePositionManager.md b/docs/contracts/v3/reference/periphery/NonfungiblePositionManager.md
deleted file mode 100644
index 77499f014..000000000
--- a/docs/contracts/v3/reference/periphery/NonfungiblePositionManager.md
+++ /dev/null
@@ -1,219 +0,0 @@
-Wraps t1 V3 positions in the ERC721 non-fungible token interface
-
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### positions
-
-```solidity
- function positions(
- uint256 tokenId
- ) external view returns (uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
-```
-
-Returns the position information associated with a given token ID.
-
-Throws if the token ID is not valid.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------------------- |
-| `tokenId` | uint256 | The ID of the token that represents the position |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------- | :------ | :------------------------------------------------------------------------------- |
-| `nonce` | uint96 | The nonce for permits |
-| `operator` | address | The address that is approved for spending |
-| `token0` | address | The address of the token0 for a specific pool |
-| `token1` | address | The address of the token1 for a specific pool |
-| `fee` | uint24 | The fee associated with the pool |
-| `tickLower` | int24 | The lower end of the tick range for the position |
-| `tickUpper` | int24 | The higher end of the tick range for the position |
-| `liquidity` | uint128 | The liquidity of the position |
-| `feeGrowthInside0LastX128` | uint256 | The fee growth of token0 as of the last action on the individual position |
-| `feeGrowthInside1LastX128` | uint256 | The fee growth of token1 as of the last action on the individual position |
-| `tokensOwed0` | uint128 | The uncollected amount of token0 owed to the position as of the last computation |
-| `tokensOwed1` | uint128 | The uncollected amount of token1 owed to the position as of the last computation |
-
-### mint
-
-```solidity
- function mint(
- struct INonfungiblePositionManager.MintParams params
- ) external returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
-```
-
-Creates a new position wrapped in a NFT
-
-Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized
-a method does not exist, i.e. the pool is assumed to be initialized.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :-------------------------------------------- | :--------------------------------------------------------------------------- |
-| `params` | struct INonfungiblePositionManager.MintParams | The params necessary to mint a position, encoded as `MintParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------------------------------ |
-| `tokenId` | uint256 | The ID of the token that represents the minted position |
-| `liquidity` | uint128 | The amount of liquidity for this position |
-| `amount0` | uint256 | The amount of token0 |
-| `amount1` | uint256 | The amount of token1 |
-
-### tokenURI
-
-```solidity
- function tokenURI(
- uint256 tokenId
- ) public view returns (string)
-```
-
-Returns a URI describing a particular token ID
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------------------------- |
-| `tokenId` | uint256 | The ID of the token that represents the minted position |
-
-#### Return Values:
-
-A base64 string with the URI data.
-
-### baseURI
-
-```solidity
- function baseURI(
- ) public returns (string)
-```
-
-### increaseLiquidity
-
-```solidity
- function increaseLiquidity(
- struct INonfungiblePositionManager.IncreaseLiquidityParams params
- ) external returns (uint128 liquidity, uint256 amount0, uint256 amount1)
-```
-
-Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :--------------------------------------------------------- | :------------------------------------------------------------------ |
-| `params` | struct INonfungiblePositionManager.IncreaseLiquidityParams | tokenId The ID of the token for which liquidity is being increased, |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :--------------------------------------------------- |
-| `liquidity` | uint128 | The new liquidity amount as a result of the increase |
-| `amount0` | uint256 | The amount of token0 to achieve resulting liquidity |
-| `amount1` | uint256 | The amount of token1 to achieve resulting liquidity |
-
-### decreaseLiquidity
-
-```solidity
- function decreaseLiquidity(
- struct INonfungiblePositionManager.DecreaseLiquidityParams params
- ) external returns (uint256 amount0, uint256 amount1)
-```
-
-Decreases the amount of liquidity in a position and accounts it to the position
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :--------------------------------------------------------- | :------------------------------------------------------------------ |
-| `params` | struct INonfungiblePositionManager.DecreaseLiquidityParams | tokenId The ID of the token for which liquidity is being decreased, |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------------------------------- |
-| `amount0` | uint256 | The amount of token0 accounted to the position's tokens owed |
-| `amount1` | uint256 | The amount of token1 accounted to the position's tokens owed |
-
-### collect
-
-```solidity
- function collect(
- struct INonfungiblePositionManager.CollectParams params
- ) external returns (uint256 amount0, uint256 amount1)
-```
-
-Collects up to a maximum amount of fees owed to a specific position to the recipient
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :----------------------------------------------- | :-------------------------------------------------------------- |
-| `params` | struct INonfungiblePositionManager.CollectParams | tokenId The ID of the NFT for which tokens are being collected, |
-
-recipient The account that should receive the tokens,
-amount0Max The maximum amount of token0 to collect,
-amount1Max The maximum amount of token1 to collect
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------- |
-| `amount0` | uint256 | The amount of fees collected in token0 |
-| `amount1` | uint256 | The amount of fees collected in token1 |
-
-### burn
-
-```solidity
- function burn(
- uint256 tokenId
- ) external
-```
-
-Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens
-must be collected first.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :--------------------------------------- |
-| `tokenId` | uint256 | The ID of the token that is being burned |
-
-### \_getAndIncrementNonce
-
-```solidity
- function _getAndIncrementNonce(
- ) internal returns (uint256)
-```
-
-### getApproved
-
-```solidity
- function getApproved(
- ) public view returns (address)
-```
-
-Returns the account approved for `tokenId` token.
-Requirements:
-
-- `tokenId` must exist.
-
-### \_approve
-
-```solidity
- function _approve(
- ) internal
-```
-
-Overrides \_approve to use the operator in the position, which is packed with the position permit nonce
diff --git a/docs/contracts/v3/reference/periphery/NonfungibleTokenPositionDescriptor.md b/docs/contracts/v3/reference/periphery/NonfungibleTokenPositionDescriptor.md
deleted file mode 100644
index 65ee4b61a..000000000
--- a/docs/contracts/v3/reference/periphery/NonfungibleTokenPositionDescriptor.md
+++ /dev/null
@@ -1,50 +0,0 @@
-Produces a string containing the data URI for a JSON metadata string
-
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### tokenURI
-
-```solidity
- function tokenURI(
- contract INonfungiblePositionManager positionManager,
- uint256 tokenId
- ) external returns (string)
-```
-
-Produces the URI describing a particular token ID for a position manager
-
-Note this URI may be a data: URI with the JSON contents directly inlined
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------- | :----------------------------------- | :----------------------------------------------------------------------------- |
-| `positionManager` | contract INonfungiblePositionManager | The position manager for which to describe the token |
-| `tokenId` | uint256 | The ID of the token for which to produce a description, which may not be valid |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---- | :----------------------------------- | :----------------------------------- |
-| `The` | contract INonfungiblePositionManager | URI of the ERC721-compliant metadata |
-
-### flipRatio
-
-```solidity
- function flipRatio(
- ) public returns (bool)
-```
-
-### tokenRatioPriority
-
-```solidity
- function tokenRatioPriority(
- ) public returns (int256)
-```
diff --git a/docs/contracts/v3/reference/periphery/SwapRouter.md b/docs/contracts/v3/reference/periphery/SwapRouter.md
deleted file mode 100644
index a41f2025a..000000000
--- a/docs/contracts/v3/reference/periphery/SwapRouter.md
+++ /dev/null
@@ -1,124 +0,0 @@
-Router for stateless execution of swaps against t1 V3
-
-> Input parameters are viewable on the [**Swap Router Interface**](./interfaces/ISwapRouter)
-
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### uniswapV3SwapCallback
-
-```solidity
- function uniswapV3SwapCallback(
- int256 amount0Delta,
- int256 amount1Delta,
- bytes data
- ) external
-```
-
-Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.
-
-In the implementation you must pay the pool tokens owed for the swap.
-The caller of this method must be checked to be a t1V3Pool deployed by the canonical t1V3Factory.
-amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `amount0Delta` | int256 | The amount of token0 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token0 to the pool. |
-| `amount1Delta` | int256 | The amount of token1 that was sent (negative) or must be received (positive) by the pool by the end of the swap. If positive, the callback must send that amount of token1 to the pool. |
-| `data` | bytes | Any data passed through by the caller via the IUniswapV3PoolActions#swap call |
-
-### exactInputSingle
-
-```solidity
- function exactInputSingle(
- struct ISwapRouter.ExactInputSingleParams params
- ) external returns (uint256 amountOut)
-```
-
-Swaps `amountIn` of one token for as much as possible of another token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :---------------------------------------- | :------------------------------------------------------------------------------------- |
-| `params` | struct ISwapRouter.ExactInputSingleParams | The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------- |
-| `amountOut` | uint256 | The amount of the received token |
-
-### exactInput
-
-```solidity
- function exactInput(
- struct ISwapRouter.ExactInputParams params
- ) external returns (uint256 amountOut)
-```
-
-Swaps `amountIn` of one token for as much as possible of another along the specified path
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :---------------------------------- | :----------------------------------------------------------------------------------------- |
-| `params` | struct ISwapRouter.ExactInputParams | The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------- |
-| `amountOut` | uint256 | The amount of the received token |
-
-### exactOutputSingle
-
-```solidity
- function exactOutputSingle(
- struct ISwapRouter.ExactOutputSingleParams params
- ) external returns (uint256 amountIn)
-```
-
-Swaps as little as possible of one token for `amountOut` of another token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :----------------------------------------- | :-------------------------------------------------------------------------------------- |
-| `params` | struct ISwapRouter.ExactOutputSingleParams | The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------- |
-| `amountIn` | uint256 | The amount of the input token |
-
-### exactOutput
-
-```solidity
- function exactOutput(
- struct ISwapRouter.ExactOutputParams params
- ) external returns (uint256 amountIn)
-```
-
-Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :----------------------------------- | :------------------------------------------------------------------------------------------ |
-| `params` | struct ISwapRouter.ExactOutputParams | The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------- |
-| `amountIn` | uint256 | The amount of the input token |
diff --git a/docs/contracts/v3/reference/periphery/V3Migrator.md b/docs/contracts/v3/reference/periphery/V3Migrator.md
deleted file mode 100644
index 1f2cfcea4..000000000
--- a/docs/contracts/v3/reference/periphery/V3Migrator.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### receive
-
-```solidity
- function receive(
- ) external
-```
-
-### migrate
-
-```solidity
- function migrate(
- ) external
-```
diff --git a/docs/contracts/v3/reference/periphery/_category_.json b/docs/contracts/v3/reference/periphery/_category_.json
deleted file mode 100644
index 1e6987c25..000000000
--- a/docs/contracts/v3/reference/periphery/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Periphery",
- "position": 2
-}
diff --git a/docs/contracts/v3/reference/periphery/base/BlockTimestamp.md b/docs/contracts/v3/reference/periphery/base/BlockTimestamp.md
deleted file mode 100644
index 1c4170003..000000000
--- a/docs/contracts/v3/reference/periphery/base/BlockTimestamp.md
+++ /dev/null
@@ -1,18 +0,0 @@
-Base contract that is overridden for tests
-
-## Functions
-
-### \_blockTimestamp
-
-```solidity
- function _blockTimestamp(
- ) internal view returns (uint256)
-```
-
-Method that exists purely to be overridden for tests
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :---------------------- |
-| uint256 | current block timestamp |
diff --git a/docs/contracts/v3/reference/periphery/base/ERC721Permit.md b/docs/contracts/v3/reference/periphery/base/ERC721Permit.md
deleted file mode 100644
index 0df50b8d1..000000000
--- a/docs/contracts/v3/reference/periphery/base/ERC721Permit.md
+++ /dev/null
@@ -1,66 +0,0 @@
-Nonfungible tokens that support an approve via signature, i.e. permit
-
-## Functions
-
-### \_getAndIncrementNonce
-
-```solidity
- function _getAndIncrementNonce(
- uint256 tokenId
- ) internal virtual returns (uint256)
-```
-
-Gets the current nonce for a token ID and then increments it, returning the original value
-
-### constructor
-
-```solidity
- function constructor(
- string memory name_,
- string memory symbol_,
- string memory version_
- ) internal
-```
-
-Computes the nameHash and versionHash
-
-### DOMAIN_SEPARATOR
-
-```solidity
- function DOMAIN_SEPARATOR(
- ) public view override returns (bytes32)
-```
-
-The domain separator used in the permit signature
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :---------------------------------------------------- |
-| bytes32 | domain seperator used in encoding of permit signature |
-
-### permit
-
-```solidity
- function permit(
- address spender,
- uint256 tokenId,
- uint256 deadline,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Approve of a specific token ID for spending by spender via signature
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :----------------------------------------------------------------------------- |
-| `spender` | address | The account that is being approved |
-| `tokenId` | uint256 | The ID of the token that is being approved for spending |
-| `deadline` | uint256 | The deadline timestamp by which the call must be mined for the approve to work |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
diff --git a/docs/contracts/v3/reference/periphery/base/LiquidityManagement.md b/docs/contracts/v3/reference/periphery/base/LiquidityManagement.md
deleted file mode 100644
index 89dd7997c..000000000
--- a/docs/contracts/v3/reference/periphery/base/LiquidityManagement.md
+++ /dev/null
@@ -1,55 +0,0 @@
-Internal functions for safely managing liquidity in t1 V3
-
-## Parameter Structs
-
-### AddLiquidityParams
-
-```solidity
- struct AddLiquidityParams {
- address token0;
- address token1;
- uint24 fee;
- address recipient;
- int24 tickLower;
- int24 tickUpper;
- uint256 amount0Desired;
- uint256 amount1Desired;
- uint256 amount0Min;
- uint256 amount1Min;
- }
-```
-
-## Functions
-
-### uniswapV3MintCallback
-
-```solidity
- function uniswapV3MintCallback(
- uint256 amount0Owed,
- uint256 amount1Owed,
- bytes data
- ) external
-```
-
-Called to `msg.sender` after minting liquidity to a position from IUniswapV3Pool#mint.
-
-In the implementation you must pay the pool tokens owed for the minted liquidity.
-The caller of this method must be checked to be a t1V3Pool deployed by the canonical t1V3Factory.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :---------------------------------------------------------------------------- |
-| `amount0Owed` | uint256 | The amount of token0 due to the pool for the minted liquidity |
-| `amount1Owed` | uint256 | The amount of token1 due to the pool for the minted liquidity |
-| `data` | bytes | Any data passed through by the caller via the IUniswapV3PoolActions#mint call |
-
-### addLiquidity
-
-```solidity
- function addLiquidity(
- AddLiquidityParams memory params
- ) internal returns (uint128 liquidity, uint256 amount0, uint256 amount1, contract IUniswapV3Pool pool)
-```
-
-Add liquidity to an initialized pool
diff --git a/docs/contracts/v3/reference/periphery/base/Multicall.md b/docs/contracts/v3/reference/periphery/base/Multicall.md
deleted file mode 100644
index 0670ffdaf..000000000
--- a/docs/contracts/v3/reference/periphery/base/Multicall.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Enables calling multiple methods in a single call to the contract
-
-## Functions
-
-### multicall
-
-```solidity
- function multicall(
- bytes[] data
- ) external payable override returns (bytes[] results)
-```
-
-Call multiple functions in the current contract and return the data from all of them if they all succeed
-
-The `msg.value` should not be trusted for any method callable from multicall.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :------ | :----------------------------------------------------------------------- |
-| `data` | bytes[] | The encoded function data for each of the calls to make to this contract |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :---------------------------------------------------- |
-| `results` | bytes[] | The results from each of the calls passed in via data |
diff --git a/docs/contracts/v3/reference/periphery/base/PeripheryImmutableState.md b/docs/contracts/v3/reference/periphery/base/PeripheryImmutableState.md
deleted file mode 100644
index 63347231d..000000000
--- a/docs/contracts/v3/reference/periphery/base/PeripheryImmutableState.md
+++ /dev/null
@@ -1,11 +0,0 @@
-Immutable state used by periphery contracts
-
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- address _factory, address _WETH9
- ) internal
-```
diff --git a/docs/contracts/v3/reference/periphery/base/PeripheryPayments.md b/docs/contracts/v3/reference/periphery/base/PeripheryPayments.md
deleted file mode 100644
index a140a5635..000000000
--- a/docs/contracts/v3/reference/periphery/base/PeripheryPayments.md
+++ /dev/null
@@ -1,82 +0,0 @@
-## Functions
-
-### receive
-
-```solidity
- function receive(
- ) external
-```
-
-### unwrapWETH9
-
-```solidity
- function unwrapWETH9(
- uint256 amountMinimum,
- address recipient
- ) external
-```
-
-Unwraps the contract's WETH9 balance and sends it to recipient as ETH.
-
-The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------ |
-| `amountMinimum` | uint256 | The minimum amount of WETH9 to unwrap |
-| `recipient` | address | The address receiving ETH |
-
-### sweepToken
-
-```solidity
- function sweepToken(
- address token,
- uint256 amountMinimum,
- address recipient
- ) external
-```
-
-Transfers the full amount of a token held by this contract to recipient
-
-The amountMinimum parameter prevents malicious contracts from stealing the token from users
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------------------------------- |
-| `token` | address | The contract address of the token which will be transferred to `recipient` |
-| `amountMinimum` | uint256 | The minimum amount of token required for a transfer |
-| `recipient` | address | The destination address of the token |
-
-### refundETH
-
-```solidity
- function refundETH(
- ) external
-```
-
-Refunds any ETH balance held by this contract to the `msg.sender`
-
-Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps
-that use ether for the input amount
-
-### pay
-
-```solidity
- function pay(
- address token,
- address payer,
- address recipient,
- uint256 value
- ) internal
-```
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :----------------------------------- |
-| `token` | address | The token to pay |
-| `payer` | address | The entity that must pay |
-| `recipient` | address | The entity that will receive payment |
-| `value` | uint256 | The amount to pay |
diff --git a/docs/contracts/v3/reference/periphery/base/PeripheryPaymentsWithFee.md b/docs/contracts/v3/reference/periphery/base/PeripheryPaymentsWithFee.md
deleted file mode 100644
index 59152bd08..000000000
--- a/docs/contracts/v3/reference/periphery/base/PeripheryPaymentsWithFee.md
+++ /dev/null
@@ -1,34 +0,0 @@
-## Functions
-
-### unwrapWETH9WithFee
-
-```solidity
- function unwrapWETH9WithFee(
- uint256 amountMinimum,
- address recipient,
- uint256 feeBips,
- address feeRecipient
- ) public
-```
-
-Unwraps the contract's WETH9 balance and sends it to recipient as ETH, with a percentage between
-0 (exclusive), and 1 (inclusive) going to feeRecipient
-
-The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.
-
-### sweepTokenWithFee
-
-```solidity
- function sweepTokenWithFee(
- address token,
- uint256 amountMinimum,
- address recipient,
- uint256 feeBips,
- address feeRecipient
- ) public
-```
-
-Transfers the full amount of a token held by this contract to recipient, with a percentage between
-0 (exclusive) and 1 (inclusive) going to feeRecipient
-
-The amountMinimum parameter prevents malicious contracts from stealing the token from users
diff --git a/docs/contracts/v3/reference/periphery/base/PoolInitializer.md b/docs/contracts/v3/reference/periphery/base/PoolInitializer.md
deleted file mode 100644
index ebaf9b9a3..000000000
--- a/docs/contracts/v3/reference/periphery/base/PoolInitializer.md
+++ /dev/null
@@ -1,31 +0,0 @@
-## Functions
-
-### createAndInitializePoolIfNecessary
-
-```solidity
- function createAndInitializePoolIfNecessary(
- address token0,
- address token1,
- uint24 fee,
- uint160 sqrtPriceX96
- ) external returns (address pool)
-```
-
-Creates a new pool if it does not exist, then initializes if not initialized
-
-This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :------ | :---------------------------------------------------------- |
-| `token0` | address | The contract address of token0 of the pool |
-| `token1` | address | The contract address of token1 of the pool |
-| `fee` | uint24 | The fee amount of the v3 pool for the specified token pair |
-| `sqrtPriceX96` | uint160 | The initial square root price of the pool as a Q64.96 value |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------ | :-------------------------------------------------------------------------------------------------------------------- |
-| `pool` | address | Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary |
diff --git a/docs/contracts/v3/reference/periphery/base/SelfPermit.md b/docs/contracts/v3/reference/periphery/base/SelfPermit.md
deleted file mode 100644
index 2aaec6499..000000000
--- a/docs/contracts/v3/reference/periphery/base/SelfPermit.md
+++ /dev/null
@@ -1,120 +0,0 @@
-Functionality to call permit on any EIP-2612-compliant token for use in the route
-
-These functions are expected to be embedded in multicalls to allow EOAs to approve a contract and call a function
-that requires an approval in a single transaction.
-
-## Functions
-
-### selfPermit
-
-```solidity
- function selfPermit(
- address token,
- uint256 value,
- uint256 deadline,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) public
-```
-
-Permits this contract to spend a given token from `msg.sender`
-
-The `owner` is always msg.sender and the `spender` is always address(this).
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :------------------------------------------------------------------------------ |
-| `token` | address | The address of the token spent |
-| `value` | uint256 | The amount that can be spent of token |
-| `deadline` | uint256 | A timestamp, the current blocktime must be less than or equal to this timestamp |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
-
-### selfPermitIfNecessary
-
-```solidity
- function selfPermitIfNecessary(
- address token,
- uint256 value,
- uint256 deadline,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Permits this contract to spend a given token from `msg.sender`
-
-The `owner` is always msg.sender and the `spender` is always address(this).
-Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :------------------------------------------------------------------------------ |
-| `token` | address | The address of the token spent |
-| `value` | uint256 | The amount that can be spent of token |
-| `deadline` | uint256 | A timestamp, the current blocktime must be less than or equal to this timestamp |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
-
-### selfPermitAllowed
-
-```solidity
- function selfPermitAllowed(
- address token,
- uint256 nonce,
- uint256 expiry,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) public
-```
-
-Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter
-
-The `owner` is always msg.sender and the `spender` is always address(this)
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :---------------------------------------------------------------------------- |
-| `token` | address | The address of the token spent |
-| `nonce` | uint256 | The current nonce of the owner |
-| `expiry` | uint256 | The timestamp at which the permit is no longer valid |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
-
-### selfPermitAllowedIfNecessary
-
-```solidity
- function selfPermitAllowedIfNecessary(
- address token,
- uint256 nonce,
- uint256 expiry,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter
-
-The `owner` is always msg.sender and the `spender` is always address(this)
-Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :---------------------------------------------------------------------------- |
-| `token` | address | The address of the token spent |
-| `nonce` | uint256 | The current nonce of the owner |
-| `expiry` | uint256 | The timestamp at which the permit is no longer valid |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
diff --git a/docs/contracts/v3/reference/periphery/base/_category_.json b/docs/contracts/v3/reference/periphery/base/_category_.json
deleted file mode 100644
index 8e8631257..000000000
--- a/docs/contracts/v3/reference/periphery/base/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Base",
- "position": 1
-}
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IERC20Metadata.md b/docs/contracts/v3/reference/periphery/interfaces/IERC20Metadata.md
deleted file mode 100644
index 34a794e36..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IERC20Metadata.md
+++ /dev/null
@@ -1,42 +0,0 @@
-Extension to IERC20 that includes token metadata
-
-## Functions
-
-### name
-
-```solidity
- function name(
- ) external returns (string)
-```
-
-#### Return Values:
-
-| Type | Description |
-| :----- | :---------------- |
-| string | name of the token |
-
-### symbol
-
-```solidity
- function symbol(
- ) external returns (string)
-```
-
-#### Return Values:
-
-| Type | Description |
-| :----- | :------------------ |
-| string | symbol of the token |
-
-### decimals
-
-```solidity
- function decimals(
- ) external returns (uint8)
-```
-
-#### Return Values:
-
-| Type | Description |
-| :---- | :------------------------------------- |
-| uint8 | number of decimal places the token has |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IERC721Permit.md b/docs/contracts/v3/reference/periphery/interfaces/IERC721Permit.md
deleted file mode 100644
index f667800b7..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IERC721Permit.md
+++ /dev/null
@@ -1,59 +0,0 @@
-Extension to ERC721 that includes a permit function for signature based approvals
-
-## Functions
-
-### PERMIT_TYPEHASH
-
-```solidity
- function PERMIT_TYPEHASH(
- ) external returns (bytes32)
-```
-
-The permit typehash used in the permit signature
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :---------------------- |
-| bytes32 | typehash for the permit |
-
-### DOMAIN_SEPARATOR
-
-```solidity
- function DOMAIN_SEPARATOR(
- ) external returns (bytes32)
-```
-
-The domain separator used in the permit signature
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---- | :--- | :---------------------------------------------------- |
-| `The` | | domain seperator used in encoding of permit signature |
-
-### permit
-
-```solidity
- function permit(
- address spender,
- uint256 tokenId,
- uint256 deadline,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Approve of a specific token ID for spending by spender via signature
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :----------------------------------------------------------------------------- |
-| `spender` | address | The account that is being approved |
-| `tokenId` | uint256 | The ID of the token that is being approved for spending |
-| `deadline` | uint256 | The deadline timestamp by which the call must be mined for the approve to work |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IMulticall.md b/docs/contracts/v3/reference/periphery/interfaces/IMulticall.md
deleted file mode 100644
index 1c6be1401..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IMulticall.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Enables calling multiple methods in a single call to the contract
-
-## Functions
-
-### multicall
-
-```solidity
- function multicall(
- bytes[] data
- ) external returns (bytes[] results)
-```
-
-Call multiple functions in the current contract and return the data from all of them if they all succeed
-
-The `msg.value` should not be trusted for any method callable from multicall.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :------ | :----------------------------------------------------------------------- |
-| `data` | bytes[] | The encoded function data for each of the calls to make to this contract |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :---------------------------------------------------- |
-| `results` | bytes[] | The results from each of the calls passed in via data |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/INonfungiblePositionManager.md b/docs/contracts/v3/reference/periphery/interfaces/INonfungiblePositionManager.md
deleted file mode 100644
index 53f47b8d5..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/INonfungiblePositionManager.md
+++ /dev/null
@@ -1,314 +0,0 @@
-Wraps t1 V3 positions in a non-fungible token interface which allows for them to be transferred
-and authorized.
-
-## Parameter Structs
-
-### MintParams
-
-```solidity
- struct MintParams {
- address token0;
- address token1;
- uint24 fee;
- int24 tickLower;
- int24 tickUpper;
- uint256 amount0Desired;
- uint256 amount1Desired;
- uint256 amount0Min;
- uint256 amount1Min;
- address recipient;
- uint256 deadline;
- }
-```
-
-### IncreaseLiquidityParams
-
-```solidity
- struct IncreaseLiquidityParams {
- uint256 tokenId;
- uint256 amount0Desired;
- uint256 amount1Desired;
- uint256 amount0Min;
- uint256 amount1Min;
- uint256 deadline;
- }
-```
-
-### DecreaseLiquidityParams
-
-```solidity
- struct DecreaseLiquidityParams {
- uint256 tokenId;
- uint128 liquidity;
- uint256 amount0Min;
- uint256 amount1Min;
- uint256 deadline;
- }
-```
-
-### CollectParams
-
-```solidity
- struct CollectParams {
- uint256 tokenId;
- address recipient;
- uint128 amount0Max;
- uint128 amount1Max;
- }
-```
-
-## Functions
-
-### positions
-
-```solidity
- function positions(
- uint256 tokenId
- ) external view returns (uint96 nonce, address operator, address token0, address token1, uint24 fee, int24 tickLower, int24 tickUpper, uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128, uint128 tokensOwed0, uint128 tokensOwed1)
-```
-
-Returns the position information associated with a given token ID.
-
-Throws if the token ID is not valid.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :----------------------------------------------- |
-| `tokenId` | uint256 | The ID of the token that represents the position |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------- | :------ | :------------------------------------------------------------------------------- |
-| `nonce` | uint96 | The nonce for permits |
-| `operator` | address | The address that is approved for spending |
-| `token0` | address | The address of the token0 for a specific pool |
-| `token1` | address | The address of the token1 for a specific pool |
-| `fee` | uint24 | The fee associated with the pool |
-| `tickLower` | int24 | The lower end of the tick range for the position |
-| `tickUpper` | int24 | The higher end of the tick range for the position |
-| `liquidity` | uint128 | The liquidity of the position |
-| `feeGrowthInside0LastX128` | uint256 | The fee growth of token0 as of the last action on the individual position |
-| `feeGrowthInside1LastX128` | uint256 | The fee growth of token1 as of the last action on the individual position |
-| `tokensOwed0` | uint128 | The uncollected amount of token0 owed to the position as of the last computation |
-| `tokensOwed1` | uint128 | The uncollected amount of token1 owed to the position as of the last computation |
-
-### createAndInitializePoolIfNecessary
-
-```solidity
- function createAndInitializePoolIfNecessary(
- address tokenA,
- address tokenB,
- uint24 fee,
- uint160 sqrtPriceX96
- ) external returns (address pool)
-```
-
-Creates a new pool if it does not exist, then initializes if not initialized
-
-This method can be bundled with mint for the first mint of a pool to create, initialize a pool and mint at the same time
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :------ | :---------------------------------------------------------- |
-| `tokenA` | address | The contract address of either token0 or token1 |
-| `tokenB` | address | The contract address of the other token |
-| `fee` | uint24 | The fee amount of the v3 pool for the specified token pair |
-| `sqrtPriceX96` | uint160 | The initial square root price of the pool as a Q64.96 value |
-
-We use tokenA and tokenB when we are referring to unsorted, or unordered tokens
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------ | :-------------------------------------------------------------------------------------------------------------------- |
-| `pool` | address | Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary |
-
-### mint
-
-```solidity
- function mint(
- struct INonfungiblePositionManager.MintParams params
- ) external returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
-```
-
-Creates a new position wrapped in a NFT
-
-Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized
-a method does not exist, i.e. the pool is assumed to be initialized.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :-------------------------------------------- | :--------------------------------------------------------------------------- |
-| `params` | struct INonfungiblePositionManager.MintParams | The params necessary to mint a position, encoded as `MintParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------------------------------ |
-| `tokenId` | uint256 | The ID of the token that represents the minted position |
-| `liquidity` | uint128 | The amount of liquidity for this position |
-| `amount0` | uint256 | The amount of token0 |
-| `amount1` | uint256 | The amount of token1 |
-
-### increaseLiquidity
-
-```solidity
- function increaseLiquidity(
- struct INonfungiblePositionManager.IncreaseLiquidityParams params
- ) external returns (uint128 liquidity, uint256 amount0, uint256 amount1)
-```
-
-Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :--------------------------------------------------------- | :------------------------------------------------------------------ |
-| `params` | struct INonfungiblePositionManager.IncreaseLiquidityParams | tokenId The ID of the token for which liquidity is being increased, |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :--------------------------------------------------- |
-| `liquidity` | uint128 | The new liquidity amount as a result of the increase |
-| `amount0` | uint256 | The amount of token0 to acheive resulting liquidity |
-| `amount1` | uint256 | The amount of token1 to acheive resulting liquidity |
-
-### decreaseLiquidity
-
-```solidity
- function decreaseLiquidity(
- struct INonfungiblePositionManager.DecreaseLiquidityParams params
- ) external returns (uint256 amount0, uint256 amount1)
-```
-
-Decreases the amount of liquidity in a position and accounts it to the position
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :--------------------------------------------------------- | :----------------------------------------------------------------- |
-| `params` | struct INonfungiblePositionManager.DecreaseLiquidityParams | tokenId The ID of the token for which liquidity is being decreased |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------- |
-| `amount0` | uint256 | The amount of token0 sent to recipient |
-| `amount1` | uint256 | The amount of token1 sent to recipient |
-
-### collect
-
-```solidity
- function collect(
- struct INonfungiblePositionManager.CollectParams params
- ) external returns (uint256 amount0, uint256 amount1)
-```
-
-Collects up to a maximum amount of fees owed to a specific position to the recipient
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :----------------------------------------------- | :-------------------------------------------------------------- |
-| `params` | struct INonfungiblePositionManager.CollectParams | tokenId The ID of the NFT for which tokens are being collected, |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------- |
-| `amount0` | uint256 | The amount of fees collected in token0 |
-| `amount1` | uint256 | The amount of fees collected in token1 |
-
-### burn
-
-```solidity
- function burn(
- uint256 tokenId
- ) external
-```
-
-Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens
-must be collected first.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :--------------------------------------- |
-| `tokenId` | uint256 | The ID of the token that is being burned |
-
-## Events
-
-### IncreaseLiquidity
-
-```solidity
- event IncreaseLiquidity(
- uint256 tokenId,
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- )
-```
-
-Emitted when liquidity is increased for a position NFT
-
-Also emitted when a token is minted
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :--------------------------------------------------------------- |
-| `tokenId` | uint256 | The ID of the token for which liquidity was increased |
-| `liquidity` | uint128 | The amount by which liquidity for the NFT position was increased |
-| `amount0` | uint256 | The amount of token0 that was paid for the increase in liquidity |
-| `amount1` | uint256 | The amount of token1 that was paid for the increase in liquidity |
-
-### DecreaseLiquidity
-
-```solidity
- event DecreaseLiquidity(
- uint256 tokenId,
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- )
-```
-
-Emitted when liquidity is decreased for a position NFT
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :-------------------------------------------------------------------- |
-| `tokenId` | uint256 | The ID of the token for which liquidity was decreased |
-| `liquidity` | uint128 | The amount by which liquidity for the NFT position was decreased |
-| `amount0` | uint256 | The amount of token0 that was accounted for the decrease in liquidity |
-| `amount1` | uint256 | The amount of token1 that was accounted for the decrease in liquidity |
-
-### Collect
-
-```solidity
- event Collect(
- uint256 tokenId,
- address recipient,
- uint256 amount0,
- uint256 amount1
- )
-```
-
-Emitted when tokens are collected for a position NFT
-
-The amounts reported may not be exactly equivalent to the amounts transferred, due to rounding behavior
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------------------------------------- |
-| `tokenId` | uint256 | The ID of the token for which underlying tokens were collected |
-| `recipient` | address | The address of the account that received the collected tokens |
-| `amount0` | uint256 | The amount of token0 owed to the position that was collected |
-| `amount1` | uint256 | The amount of token1 owed to the position that was collected |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/INonfungibleTokenPositionDescriptor.md b/docs/contracts/v3/reference/periphery/interfaces/INonfungibleTokenPositionDescriptor.md
deleted file mode 100644
index dddf91772..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/INonfungibleTokenPositionDescriptor.md
+++ /dev/null
@@ -1,47 +0,0 @@
-## Functions
-
-### tokenURI
-
-```solidity
- function tokenURI(
- contract INonfungiblePositionManager positionManager,
- uint256 tokenId
- ) external returns (string)
-```
-
-Produces the URI describing a particular token ID for a position manager
-
-Note this URI may be a data: URI with the JSON contents directly inlined
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------- | :----------------------------------- | :----------------------------------------------------------------------------- |
-| `positionManager` | contract INonfungiblePositionManager | The position manager for which to describe the token |
-| `tokenId` | uint256 | The ID of the token for which to produce a description, which may not be valid |
-
-#### Return Values:
-
-| Type | Description |
-| :----- | :----------------------------------- |
-| string | URI of the ERC721-compliant metadata |
-
-## Events
-
-### UpdateTokenRatioPriority
-
-```solidity
- event UpdateTokenRatioPriority(
- address token,
- int256 priority
- )
-```
-
-Emitted when a token is given a new priority order in the displayed price ratio
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :-------------------------------------------------------------------- |
-| `token` | address | The token being given priority order |
-| `priority` | int256 | Represents priority in ratio - higher integers get numerator priority |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IPeripheryImmutableState.md b/docs/contracts/v3/reference/periphery/interfaces/IPeripheryImmutableState.md
deleted file mode 100644
index 354ad5657..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IPeripheryImmutableState.md
+++ /dev/null
@@ -1,29 +0,0 @@
-Functions that return immutable state of the router
-
-## Functions
-
-### factory
-
-```solidity
- function factory(
- ) external returns (address)
-```
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :------------------------------------ |
-| address | the address of the t1 V3 factory |
-
-### WETH9
-
-```solidity
- function WETH9(
- ) external returns (address)
-```
-
-#### Return Values:
-
-| Type | Description |
-| :------ | :------------------- |
-| address | the address of WETH9 |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IPeripheryPayments.md b/docs/contracts/v3/reference/periphery/interfaces/IPeripheryPayments.md
deleted file mode 100644
index 444e4744f..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IPeripheryPayments.md
+++ /dev/null
@@ -1,57 +0,0 @@
-Functions to ease deposits and withdrawals of ETH
-
-## Functions
-
-### unwrapWETH9
-
-```solidity
- function unwrapWETH9(
- uint256 amountMinimum,
- address recipient
- ) external
-```
-
-Unwraps the contract's WETH9 balance and sends it to recipient as ETH.
-
-The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------ |
-| `amountMinimum` | uint256 | The minimum amount of WETH9 to unwrap |
-| `recipient` | address | The address receiving ETH |
-
-### refundETH
-
-```solidity
- function refundETH(
- ) external
-```
-
-Refunds any ETH balance held by this contract to the `msg.sender`
-
-Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps
-that use ether for the input amount
-
-### sweepToken
-
-```solidity
- function sweepToken(
- address token,
- uint256 amountMinimum,
- address recipient
- ) external
-```
-
-Transfers the full amount of a token held by this contract to recipient
-
-The amountMinimum parameter prevents malicious contracts from stealing the token from users
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------------------------------- |
-| `token` | address | The contract address of the token which will be transferred to `recipient` |
-| `amountMinimum` | uint256 | The minimum amount of token required for a transfer |
-| `recipient` | address | The destination address of the token |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IPeripheryPaymentsWithFee.md b/docs/contracts/v3/reference/periphery/interfaces/IPeripheryPaymentsWithFee.md
deleted file mode 100644
index a29bf68c4..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IPeripheryPaymentsWithFee.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Functions to ease deposits and withdrawals of ETH
-
-## Functions
-
-### unwrapWETH9WithFee
-
-```solidity
- function unwrapWETH9WithFee(
- ) external
-```
-
-Unwraps the contract's WETH9 balance and sends it to recipient as ETH, with a percentage between
-0 (exclusive), and 1 (inclusive) going to feeRecipient
-
-The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.
-
-### sweepTokenWithFee
-
-```solidity
- function sweepTokenWithFee(
- ) external
-```
-
-Transfers the full amount of a token held by this contract to recipient, with a percentage between
-0 (exclusive) and 1 (inclusive) going to feeRecipient
-
-The amountMinimum parameter prevents malicious contracts from stealing the token from users
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IPoolInitializer.md b/docs/contracts/v3/reference/periphery/interfaces/IPoolInitializer.md
deleted file mode 100644
index e1e309500..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IPoolInitializer.md
+++ /dev/null
@@ -1,34 +0,0 @@
-Provides a method for creating and initializing a pool, if necessary, for bundling with other methods that
-require the pool to exist.
-
-## Functions
-
-### createAndInitializePoolIfNecessary
-
-```solidity
- function createAndInitializePoolIfNecessary(
- address token0,
- address token1,
- uint24 fee,
- uint160 sqrtPriceX96
- ) external returns (address pool)
-```
-
-Creates a new pool if it does not exist, then initializes if not initialized
-
-This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :------ | :---------------------------------------------------------- |
-| `token0` | address | The contract address of token0 of the pool |
-| `token1` | address | The contract address of token1 of the pool |
-| `fee` | uint24 | The fee amount of the v3 pool for the specified token pair |
-| `sqrtPriceX96` | uint160 | The initial square root price of the pool as a Q64.96 value |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------ | :-------------------------------------------------------------------------------------------------------------------- |
-| `pool` | address | Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IQuoter.md b/docs/contracts/v3/reference/periphery/interfaces/IQuoter.md
deleted file mode 100644
index 083df4e05..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IQuoter.md
+++ /dev/null
@@ -1,114 +0,0 @@
-Supports quoting the calculated amounts from exact input or exact output swaps
-
-These functions are not marked view because they rely on calling non-view functions and reverting
-to compute the result. They are also not gas efficient and should not be called on-chain.
-
-## Functions
-
-### quoteExactInput
-
-```solidity
- function quoteExactInput(
- bytes path,
- uint256 amountIn
- ) external returns (uint256 amountOut)
-```
-
-Returns the amount out received for a given exact input swap without executing the swap
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------------------------------------- |
-| `path` | bytes | The path of the swap, i.e. each token pair and the pool fee |
-| `amountIn` | uint256 | The amount of the first token to swap |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :-------------------------------------------------- |
-| `amountOut` | uint256 | The amount of the last token that would be received |
-
-### quoteExactInputSingle
-
-```solidity
- function quoteExactInputSingle(
- address tokenIn,
- address tokenOut,
- uint24 fee,
- uint256 amountIn,
- uint160 sqrtPriceLimitX96
- ) external returns (uint256 amountOut)
-```
-
-Returns the amount out received for a given exact input but for a swap of a single pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------------ | :------ | :-------------------------------------------------------------- |
-| `tokenIn` | address | The token being swapped in |
-| `tokenOut` | address | The token being swapped out |
-| `fee` | uint24 | The fee of the token pool to consider for the pair |
-| `amountIn` | uint256 | The desired input amount |
-| `sqrtPriceLimitX96` | uint160 | The price limit of the pool that cannot be exceeded by the swap |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :---------------------------------------------- |
-| `amountOut` | uint256 | The amount of `tokenOut` that would be received |
-
-### quoteExactOutput
-
-```solidity
- function quoteExactOutput(
- bytes path,
- uint256 amountOut
- ) external returns (uint256 amountIn)
-```
-
-Returns the amount in required for a given exact output swap without executing the swap
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :---------------------------------------------------------- |
-| `path` | bytes | The path of the swap, i.e. each token pair and the pool fee |
-| `amountOut` | uint256 | The amount of the last token to receive |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------ | :-------------------------------------------- |
-| `amountIn` | uint256 | The amount of first token required to be paid |
-
-### quoteExactOutputSingle
-
-```solidity
- function quoteExactOutputSingle(
- address tokenIn,
- address tokenOut,
- uint24 fee,
- uint256 amountOut,
- uint160 sqrtPriceLimitX96
- ) external returns (uint256 amountIn)
-```
-
-Returns the amount in required to receive the given exact output amount but for a swap of a single pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------------ | :------ | :-------------------------------------------------------------- |
-| `tokenIn` | address | The token being swapped in |
-| `tokenOut` | address | The token being swapped out |
-| `fee` | uint24 | The fee of the token pool to consider for the pair |
-| `amountOut` | uint256 | The desired output amount |
-| `sqrtPriceLimitX96` | uint160 | The price limit of the pool that cannot be exceeded by the swap |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------------------------------------------------------- |
-| `amountIn` | uint256 | The amount required as the input for the swap in order to receive `amountOut` |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IQuoterV2.md b/docs/contracts/v3/reference/periphery/interfaces/IQuoterV2.md
deleted file mode 100644
index b99ac522b..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IQuoterV2.md
+++ /dev/null
@@ -1,123 +0,0 @@
-Supports quoting the calculated amounts from exact input or exact output swaps.
-For each pool also tells you the number of initialized ticks crossed and the sqrt price of the pool after the swap.
-
-These functions are not marked view because they rely on calling non-view functions and reverting
-to compute the result. They are also not gas efficient and should not be called on-chain.
-
-## Functions
-
-### quoteExactInput
-
-```solidity
- function quoteExactInput(
- bytes path,
- uint256 amountIn
- ) external returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)
-```
-
-Returns the amount out received for a given exact input swap without executing the swap
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------------------------------------- |
-| `path` | bytes | The path of the swap, i.e. each token pair and the pool fee |
-| `amountIn` | uint256 | The amount of the first token to swap |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------------------------- | :------ | :---------------------------------------------------------------------------- |
-| `amountOut` | bytes | The amount of the last token that would be received |
-| `sqrtPriceX96AfterList` | uint256 | List of the sqrt price after the swap for each pool in the path |
-| `initializedTicksCrossedList` | | List of the initialized ticks that the swap crossed for each pool in the path |
-| `gasEstimate` | | The estimate of the gas that the swap consumes |
-
-### quoteExactInputSingle
-
-```solidity
- function quoteExactInputSingle(
- struct IQuoterV2.QuoteExactInputSingleParams params
- ) external returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)
-```
-
-Returns the amount out received for a given exact input but for a swap of a single pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------------------------------------------- | :----------------------------------------------------------------- |
-| `params` | struct IQuoterV2.QuoteExactInputSingleParams | The params for the quote, encoded as `QuoteExactInputSingleParams` |
-
-tokenIn The token being swapped in
-tokenOut The token being swapped out
-fee The fee of the token pool to consider for the pair
-amountIn The desired input amount
-sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------ | :------------------------------------------- | :---------------------------------------------------- |
-| `amountOut` | struct IQuoterV2.QuoteExactInputSingleParams | The amount of `tokenOut` that would be received |
-| `sqrtPriceX96After` | | The sqrt price of the pool after the swap |
-| `initializedTicksCrossed` | | The number of initialized ticks that the swap crossed |
-| `gasEstimate` | | The estimate of the gas that the swap consumes |
-
-### quoteExactOutput
-
-```solidity
- function quoteExactOutput(
- bytes path,
- uint256 amountOut
- ) external returns (uint256 amountIn, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)
-```
-
-Returns the amount in required for a given exact output swap without executing the swap
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :-------------------------------------------------------------------------------------------------- |
-| `path` | bytes | The path of the swap, i.e. each token pair and the pool fee. Path must be provided in reverse order |
-| `amountOut` | uint256 | The amount of the last token to receive |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------------------------- | :------ | :---------------------------------------------------------------------------- |
-| `amountIn` | bytes | The amount of first token required to be paid |
-| `sqrtPriceX96AfterList` | uint256 | List of the sqrt price after the swap for each pool in the path |
-| `initializedTicksCrossedList` | | List of the initialized ticks that the swap crossed for each pool in the path |
-| `gasEstimate` | | The estimate of the gas that the swap consumes |
-
-### quoteExactOutputSingle
-
-```solidity
- function quoteExactOutputSingle(
- struct IQuoterV2.QuoteExactOutputSingleParams params
- ) external returns (uint256 amountIn, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)
-```
-
-Returns the amount in required to receive the given exact output amount but for a swap of a single pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :-------------------------------------------- | :------------------------------------------------------------------ |
-| `params` | struct IQuoterV2.QuoteExactOutputSingleParams | The params for the quote, encoded as `QuoteExactOutputSingleParams` |
-
-tokenIn The token being swapped in
-tokenOut The token being swapped out
-fee The fee of the token pool to consider for the pair
-amountOut The desired output amount
-sqrtPriceLimitX96 The price limit of the pool that cannot be exceeded by the swap
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------ | :-------------------------------------------- | :---------------------------------------------------------------------------- |
-| `amountIn` | struct IQuoterV2.QuoteExactOutputSingleParams | The amount required as the input for the swap in order to receive `amountOut` |
-| `sqrtPriceX96After` | | The sqrt price of the pool after the swap |
-| `initializedTicksCrossed` | | The number of initialized ticks that the swap crossed |
-| `gasEstimate` | | The estimate of the gas that the swap consumes |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/ISelfPermit.md b/docs/contracts/v3/reference/periphery/interfaces/ISelfPermit.md
deleted file mode 100644
index cf37ea8ab..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/ISelfPermit.md
+++ /dev/null
@@ -1,117 +0,0 @@
-Functionality to call permit on any EIP-2612-compliant token for use in the route
-
-## Functions
-
-### selfPermit
-
-```solidity
- function selfPermit(
- address token,
- uint256 value,
- uint256 deadline,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Permits this contract to spend a given token from `msg.sender`
-
-The `owner` is always msg.sender and the `spender` is always address(this).
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :------------------------------------------------------------------------------ |
-| `token` | address | The address of the token spent |
-| `value` | uint256 | The amount that can be spent of token |
-| `deadline` | uint256 | A timestamp, the current blocktime must be less than or equal to this timestamp |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
-
-### selfPermitIfNecessary
-
-```solidity
- function selfPermitIfNecessary(
- address token,
- uint256 value,
- uint256 deadline,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Permits this contract to spend a given token from `msg.sender`
-
-The `owner` is always msg.sender and the `spender` is always address(this).
-Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :------------------------------------------------------------------------------ |
-| `token` | address | The address of the token spent |
-| `value` | uint256 | The amount that can be spent of token |
-| `deadline` | uint256 | A timestamp, the current blocktime must be less than or equal to this timestamp |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
-
-### selfPermitAllowed
-
-```solidity
- function selfPermitAllowed(
- address token,
- uint256 nonce,
- uint256 expiry,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter
-
-The `owner` is always msg.sender and the `spender` is always address(this)
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :---------------------------------------------------------------------------- |
-| `token` | address | The address of the token spent |
-| `nonce` | uint256 | The current nonce of the owner |
-| `expiry` | uint256 | The timestamp at which the permit is no longer valid |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
-
-### selfPermitAllowedIfNecessary
-
-```solidity
- function selfPermitAllowedIfNecessary(
- address token,
- uint256 nonce,
- uint256 expiry,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter
-
-The `owner` is always msg.sender and the `spender` is always address(this)
-Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :---------------------------------------------------------------------------- |
-| `token` | address | The address of the token spent |
-| `nonce` | uint256 | The current nonce of the owner |
-| `expiry` | uint256 | The timestamp at which the permit is no longer valid |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/ISwapRouter.md b/docs/contracts/v3/reference/periphery/interfaces/ISwapRouter.md
deleted file mode 100644
index 1e95479be..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/ISwapRouter.md
+++ /dev/null
@@ -1,149 +0,0 @@
-Functions for swapping tokens via t1 V3
-
-## Parameter Structs
-
-Note that `fee` is in hundredths of basis points (e.g. the `fee` for a pool at the 0.3% tier is 3000; the `fee` for a pool at the 0.01% tier is 100).
-
-### ExactInputSingleParams
-
-```solidity
- struct ExactInputSingleParams {
- address tokenIn;
- address tokenOut;
- uint24 fee;
- address recipient;
- uint256 deadline;
- uint256 amountIn;
- uint256 amountOutMinimum;
- uint160 sqrtPriceLimitX96;
- }
-```
-
-### ExactInputParams
-
-```solidity
- struct ExactInputParams {
- bytes path;
- address recipient;
- uint256 deadline;
- uint256 amountIn;
- uint256 amountOutMinimum;
- }
-```
-
-### ExactOutputSingleParams
-
-```solidity
- struct ExactOutputSingleParams {
- address tokenIn;
- address tokenOut;
- uint24 fee;
- address recipient;
- uint256 deadline;
- uint256 amountOut;
- uint256 amountInMaximum;
- uint160 sqrtPriceLimitX96;
- }
-```
-
-### ExactOutputParams
-
-```solidity
- struct ExactOutputParams {
- bytes path;
- address recipient;
- uint256 deadline;
- uint256 amountOut;
- uint256 amountInMaximum;
- }
-```
-
-## Functions
-
-### exactInputSingle
-
-```solidity
- function exactInputSingle(
- struct ISwapRouter.ExactInputSingleParams params
- ) external returns (uint256 amountOut)
-```
-
-Swaps `amountIn` of one token for as much as possible of another token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :---------------------------------------- | :------------------------------------------------------------------------------------- |
-| `params` | struct ISwapRouter.ExactInputSingleParams | The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :---------------------------------------- | :------------------------------- |
-| `amountOut` | struct ISwapRouter.ExactInputSingleParams | The amount of the received token |
-
-### exactInput
-
-```solidity
- function exactInput(
- struct ISwapRouter.ExactInputParams params
- ) external returns (uint256 amountOut)
-```
-
-Swaps `amountIn` of one token for as much as possible of another along the specified path
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :---------------------------------- | :----------------------------------------------------------------------------------------- |
-| `params` | struct ISwapRouter.ExactInputParams | The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :---------------------------------- | :------------------------------- |
-| `amountOut` | struct ISwapRouter.ExactInputParams | The amount of the received token |
-
-### exactOutputSingle
-
-```solidity
- function exactOutputSingle(
- struct ISwapRouter.ExactOutputSingleParams params
- ) external returns (uint256 amountIn)
-```
-
-Swaps as little as possible of one token for `amountOut` of another token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :----------------------------------------- | :-------------------------------------------------------------------------------------- |
-| `params` | struct ISwapRouter.ExactOutputSingleParams | The parameters necessary for the swap, encoded as `ExactOutputSingleParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :----------------------------------------- | :---------------------------- |
-| `amountIn` | struct ISwapRouter.ExactOutputSingleParams | The amount of the input token |
-
-### exactOutput
-
-```solidity
- function exactOutput(
- struct ISwapRouter.ExactOutputParams params
- ) external returns (uint256 amountIn)
-```
-
-Swaps as little as possible of one token for `amountOut` of another along the specified path (reversed)
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :----------------------------------- | :------------------------------------------------------------------------------------------ |
-| `params` | struct ISwapRouter.ExactOutputParams | The parameters necessary for the multi-hop swap, encoded as `ExactOutputParams` in calldata |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :----------------------------------- | :---------------------------- |
-| `amountIn` | struct ISwapRouter.ExactOutputParams | The amount of the input token |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/ITickLens.md b/docs/contracts/v3/reference/periphery/interfaces/ITickLens.md
deleted file mode 100644
index 94c6f9620..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/ITickLens.md
+++ /dev/null
@@ -1,30 +0,0 @@
-Provides functions for fetching chunks of tick data for a pool
-
-This avoids the waterfall of fetching the tick bitmap, parsing the bitmap to know which ticks to fetch, and
-then sending additional multicalls to fetch the tick data
-
-## Functions
-
-### getPopulatedTicksInWord
-
-```solidity
- function getPopulatedTicksInWord(
- address pool,
- int16 tickBitmapIndex
- ) external returns (struct ITickLens.PopulatedTick[] populatedTicks)
-```
-
-Get all the tick data for the populated ticks from a word of the tick bitmap of a pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------- | :------ | :------------------------------------------------------------------------------------------------------- |
-| `pool` | address | The address of the pool for which to fetch populated tick data |
-| `tickBitmapIndex` | int16 | The index of the word in the tick bitmap for which to parse the bitmap and fetch all the populated ticks |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------------- | :------------------------ | :---------------------------------------------------------- |
-| `populatedTicks` | ITickLens.PopulatedTick[] | An array of tick data for the given word in the tick bitmap |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/IV3Migrator.md b/docs/contracts/v3/reference/periphery/interfaces/IV3Migrator.md
deleted file mode 100644
index 8f23bf477..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/IV3Migrator.md
+++ /dev/null
@@ -1,23 +0,0 @@
-Enables migration of liqudity from t1 v2-compatible pairs into t1 v3 pools
-
-## Functions
-
-### migrate
-
-```solidity
- function migrate(
- struct IV3Migrator.MigrateParams params
- ) external
-```
-
-Migrates liquidity to v3 by burning v2 liquidity and minting a new position for v3
-
-Slippage protection is enforced via `amount{0,1}Min`, which should be a discount of the expected values of
-the maximum amount of v3 liquidity that the v2 liquidity can get. For the special case of migrating to an
-out-of-range position, `amount{0,1}Min` may be set to 0, enforcing that the position remains out of range
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------------------------------- | :----------------------------------------------------------------------------------- |
-| `params` | struct IV3Migrator.MigrateParams | The params necessary to migrate v2 liquidity, encoded as `MigrateParams` in calldata |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/_category_.json b/docs/contracts/v3/reference/periphery/interfaces/_category_.json
deleted file mode 100644
index fabd7b53d..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Interfaces",
- "position": 1
-}
diff --git a/docs/contracts/v3/reference/periphery/interfaces/external/IERC1271.md b/docs/contracts/v3/reference/periphery/interfaces/external/IERC1271.md
deleted file mode 100644
index 7034cebdd..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/external/IERC1271.md
+++ /dev/null
@@ -1,33 +0,0 @@
-Interface that verifies provided signature for the data
-
-Interface defined by EIP-1271
-
-## Functions
-
-### isValidSignature
-
-```solidity
- function isValidSignature(
- bytes32 hash,
- bytes signature
- ) external returns (bytes4 magicValue)
-```
-
-Returns whether the provided signature is valid for the provided data
-
-MUST return the bytes4 magic value 0x1626ba7e when function passes.
-MUST NOT modify state (using STATICCALL for solc < 0.5, view modifier for solc > 0.5).
-MUST allow external calls.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------------------ |
-| `hash` | bytes32 | Hash of the data to be signed |
-| `signature` | bytes | Signature byte array associated with \_data |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----------- | :------ | :-------------------------------- |
-| `magicValue` | bytes32 | The bytes4 magic value 0x1626ba7e |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/external/IERC20PermitAllowed.md b/docs/contracts/v3/reference/periphery/interfaces/external/IERC20PermitAllowed.md
deleted file mode 100644
index 1918a6a65..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/external/IERC20PermitAllowed.md
+++ /dev/null
@@ -1,35 +0,0 @@
-Interface used by DAI/CHAI for permit
-
-## Functions
-
-### permit
-
-```solidity
- function permit(
- address holder,
- address spender,
- uint256 nonce,
- uint256 expiry,
- bool allowed,
- uint8 v,
- bytes32 r,
- bytes32 s
- ) external
-```
-
-Approve the spender to spend some tokens via the holder signature
-
-This is the permit interface used by DAI and CHAI
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :---------------------------------------------------------------------------- |
-| `holder` | address | The address of the token holder, the token owner |
-| `spender` | address | The address of the token spender |
-| `nonce` | uint256 | The holder's nonce, increases at each call to permit |
-| `expiry` | uint256 | The timestamp at which the permit is no longer valid |
-| `allowed` | bool | Boolean that sets approval amount, true for type(uint256).max and false for 0 |
-| `v` | uint8 | Must produce valid secp256k1 signature from the holder along with `r` and `s` |
-| `r` | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s` |
-| `s` | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v` |
diff --git a/docs/contracts/v3/reference/periphery/interfaces/external/IWETH9.md b/docs/contracts/v3/reference/periphery/interfaces/external/IWETH9.md
deleted file mode 100644
index 9c3304b82..000000000
--- a/docs/contracts/v3/reference/periphery/interfaces/external/IWETH9.md
+++ /dev/null
@@ -1,19 +0,0 @@
-## Functions
-
-### deposit
-
-```solidity
- function deposit(
- ) external
-```
-
-Deposit ether to get wrapped ether
-
-### withdraw
-
-```solidity
- function withdraw(
- ) external
-```
-
-Withdraw wrapped ether to get ether
diff --git a/docs/contracts/v3/reference/periphery/lens/Quoter.md b/docs/contracts/v3/reference/periphery/lens/Quoter.md
deleted file mode 100644
index 4d9639da8..000000000
--- a/docs/contracts/v3/reference/periphery/lens/Quoter.md
+++ /dev/null
@@ -1,148 +0,0 @@
-Allows getting the expected amount out or amount in for a given swap without executing the swap
-
-These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute
-the swap and check the amounts in the callback.
-
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### uniswapV3SwapCallback
-
-```solidity
- function uniswapV3SwapCallback(
- int256 amount0Delta,
- int256 amount1Delta,
- bytes data
- ) external
-```
-
-Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.
-
-In the implementation you must pay the pool tokens owed for the swap.
-The caller of this method must be checked to be a t1V3Pool deployed by the canonical t1V3Factory.
-amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :----- | :------------------------------------------------------------------------------------------ |
-| `amount0Delta` | int256 | The amount of token0 that was sent (negative) or must be received (positive) by the pool by |
-
-the end of the swap. If positive, the callback must send that amount of token0 to the pool.
-|`amount1Delta` | int256 | The amount of token1 that was sent (negative) or must be received (positive) by the pool by
-the end of the swap. If positive, the callback must send that amount of token1 to the pool.
-|`data` | bytes | Any data passed through by the caller via the IUniswapV3PoolActions#swap call
-
-### quoteExactInputSingle
-
-```solidity
- function quoteExactInputSingle(
- address tokenIn,
- address tokenOut,
- uint24 fee,
- uint256 amountIn,
- uint160 sqrtPriceLimitX96
- ) public returns (uint256 amountOut)
-```
-
-Returns the amount out received for a given exact input but for a swap of a single pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------------ | :------ | :-------------------------------------------------------------- |
-| `tokenIn` | address | The token being swapped in |
-| `tokenOut` | address | The token being swapped out |
-| `fee` | uint24 | The fee of the token pool to consider for the pair |
-| `amountIn` | uint256 | The desired input amount |
-| `sqrtPriceLimitX96` | uint160 | The price limit of the pool that cannot be exceeded by the swap |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :---------------------------------------------- |
-| `amountOut` | uint256 | The amount of `tokenOut` that would be received |
-
-### quoteExactInput
-
-```solidity
- function quoteExactInput(
- bytes path,
- uint256 amountIn
- ) external returns (uint256 amountOut)
-```
-
-Returns the amount out received for a given exact input swap without executing the swap
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------------------------------------- |
-| `path` | bytes | The path of the swap, i.e. each token pair and the pool fee |
-| `amountIn` | uint256 | The amount of the first token to swap |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :-------------------------------------------------- |
-| `amountOut` | uint256 | The amount of the last token that would be received |
-
-### quoteExactOutputSingle
-
-```solidity
- function quoteExactOutputSingle(
- address tokenIn,
- address tokenOut,
- uint24 fee,
- uint256 amountOut,
- uint160 sqrtPriceLimitX96
- ) public returns (uint256 amountIn)
-```
-
-Returns the amount in required to receive the given exact output amount but for a swap of a single pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------------ | :------ | :-------------------------------------------------------------- |
-| `tokenIn` | address | The token being swapped in |
-| `tokenOut` | address | The token being swapped out |
-| `fee` | uint24 | The fee of the token pool to consider for the pair |
-| `amountOut` | uint256 | The desired output amount |
-| `sqrtPriceLimitX96` | uint160 | The price limit of the pool that cannot be exceeded by the swap |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------------------------------------------------------- |
-| `amountIn` | uint256 | The amount required as the input for the swap in order to receive `amountOut` |
-
-### quoteExactOutput
-
-```solidity
- function quoteExactOutput(
- bytes path,
- uint256 amountOut
- ) external returns (uint256 amountIn)
-```
-
-Returns the amount in required for a given exact output swap without executing the swap
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------- | :------ | :---------------------------------------------------------- |
-| `path` | bytes | The path of the swap, i.e. each token pair and the pool fee |
-| `amountOut` | uint256 | The amount of the last token to receive |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------- | :------ | :-------------------------------------------- |
-| `amountIn` | uint256 | The amount of first token required to be paid |
diff --git a/docs/contracts/v3/reference/periphery/lens/QuoterV2.md b/docs/contracts/v3/reference/periphery/lens/QuoterV2.md
deleted file mode 100644
index d379dbaa3..000000000
--- a/docs/contracts/v3/reference/periphery/lens/QuoterV2.md
+++ /dev/null
@@ -1,68 +0,0 @@
-Allows getting the expected amount out or amount in for a given swap without executing the swap
-
-These functions are not gas efficient and should _not_ be called on chain. Instead, optimistically execute
-the swap and check the amounts in the callback.
-
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### uniswapV3SwapCallback
-
-```solidity
- function uniswapV3SwapCallback(
- int256 amount0Delta,
- int256 amount1Delta,
- bytes data
- ) external view override
-```
-
-Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.
-
-In the implementation you must pay the pool tokens owed for the swap.
-The caller of this method must be checked to be a t1V3Pool deployed by the canonical t1V3Factory.
-amount0Delta and amount1Delta can both be 0 if no tokens were swapped.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :----- | :------------------------------------------------------------------------------------------ |
-| `amount0Delta` | int256 | The amount of token0 that was sent (negative) or must be received (positive) by the pool by |
-
-the end of the swap. If positive, the callback must send that amount of token0 to the pool.
-|`amount1Delta` | int256 | The amount of token1 that was sent (negative) or must be received (positive) by the pool by
-the end of the swap. If positive, the callback must send that amount of token1 to the pool.
-|`data` | bytes | Any data passed through by the caller via the IUniswapV3PoolActions#swap call
-
-### quoteExactInputSingle
-
-```solidity
- function quoteExactInputSingle(
- ) public override returns (uint256 amountOut, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)
-```
-
-### quoteExactInput
-
-```solidity
- function quoteExactInput(
- ) public override returns (uint256 amountOut, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)
-```
-
-### quoteExactOutputSingle
-
-```solidity
- function quoteExactOutputSingle(
- ) public override returns (uint256 amountIn, uint160 sqrtPriceX96After, uint32 initializedTicksCrossed, uint256 gasEstimate)
-```
-
-### quoteExactOutput
-
-```solidity
- function quoteExactOutput(
- ) public override returns (uint256 amountIn, uint160[] sqrtPriceX96AfterList, uint32[] initializedTicksCrossedList, uint256 gasEstimate)
-```
diff --git a/docs/contracts/v3/reference/periphery/lens/TickLens.md b/docs/contracts/v3/reference/periphery/lens/TickLens.md
deleted file mode 100644
index fe16c5a87..000000000
--- a/docs/contracts/v3/reference/periphery/lens/TickLens.md
+++ /dev/null
@@ -1,25 +0,0 @@
-## Functions
-
-### getPopulatedTicksInWord
-
-```solidity
- function getPopulatedTicksInWord(
- address pool,
- int16 tickBitmapIndex
- ) public returns (struct ITickLens.PopulatedTick[] populatedTicks)
-```
-
-Get all the tick data for the populated ticks from a word of the tick bitmap of a pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------- | :------ | :------------------------------------------------------------------------------------------------------- |
-| `pool` | address | The address of the pool for which to fetch populated tick data |
-| `tickBitmapIndex` | int16 | The index of the word in the tick bitmap for which to parse the bitmap and fetch all the populated ticks |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------------- | :------------------------ | :---------------------------------------------------------- |
-| `populatedTicks` | ITickLens.PopulatedTick[] | An array of tick data for the given word in the tick bitmap |
diff --git a/docs/contracts/v3/reference/periphery/lens/_category_.json b/docs/contracts/v3/reference/periphery/lens/_category_.json
deleted file mode 100644
index 8a84b863d..000000000
--- a/docs/contracts/v3/reference/periphery/lens/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Lens",
- "position": 3
-}
diff --git a/docs/contracts/v3/reference/periphery/libraries/Base64.md b/docs/contracts/v3/reference/periphery/libraries/Base64.md
deleted file mode 100644
index 531f48b95..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/Base64.md
+++ /dev/null
@@ -1,12 +0,0 @@
-Provides a function for encoding some bytes in base64
-
-## Functions
-
-### encode
-
-```solidity
- function encode(
- ) internal returns (string)
-```
-
-Encodes some bytes to the base64 representation
diff --git a/docs/contracts/v3/reference/periphery/libraries/BytesLib.md b/docs/contracts/v3/reference/periphery/libraries/BytesLib.md
deleted file mode 100644
index 7115641a5..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/BytesLib.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## Functions
-
-### slice
-
-```solidity
- function slice(
- ) internal returns (bytes)
-```
-
-### toAddress
-
-```solidity
- function toAddress(
- ) internal returns (address)
-```
-
-### toUint24
-
-```solidity
- function toUint24(
- ) internal returns (uint24)
-```
diff --git a/docs/contracts/v3/reference/periphery/libraries/CallbackValidation.md b/docs/contracts/v3/reference/periphery/libraries/CallbackValidation.md
deleted file mode 100644
index c04dd1973..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/CallbackValidation.md
+++ /dev/null
@@ -1,55 +0,0 @@
-Provides validation for callbacks from t1 V3 Pools
-
-## Functions
-
-### verifyCallback
-
-```solidity
- function verifyCallback(
- address factory,
- address tokenA,
- address tokenB,
- uint24 fee
- ) internal returns (contract IUniswapV3Pool pool)
-```
-
-Returns the address of a valid t1 V3 Pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :-------------------------------------------------------------------------------- |
-| `factory` | address | The contract address of the t1 V3 factory |
-| `tokenA` | address | The contract address of either token0 or token1 |
-| `tokenB` | address | The contract address of the other token |
-| `fee` | uint24 | The fee collected upon every swap in the pool, denominated in hundredths of a bip |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------------- | :--------------------------- |
-| `pool` | IUniswapV3Pool | The V3 pool contract address |
-
-### verifyCallback
-
-```solidity
- function verifyCallback(
- address factory,
- struct PoolAddress.PoolKey poolKey
- ) internal returns (contract IUniswapV3Pool pool)
-```
-
-Returns the address of a valid t1 V3 Pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------------------------- | :--------------------------------------------- |
-| `factory` | address | The contract address of the t1 V3 factory |
-| `poolKey` | struct PoolAddress.PoolKey | The identifying key of the V3 pool |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------------- | :--------------------------- |
-| `pool` | IUniswapV3Pool | The V3 pool contract address |
diff --git a/docs/contracts/v3/reference/periphery/libraries/ChainId.md b/docs/contracts/v3/reference/periphery/libraries/ChainId.md
deleted file mode 100644
index a3b508f0b..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/ChainId.md
+++ /dev/null
@@ -1,16 +0,0 @@
-## Functions
-
-### get
-
-```solidity
- function get(
- ) internal returns (uint256 chainId)
-```
-
-Gets the current chain ID
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------- |
-| `chainId` | uint256 | The current chain ID |
diff --git a/docs/contracts/v3/reference/periphery/libraries/HexStrings.md b/docs/contracts/v3/reference/periphery/libraries/HexStrings.md
deleted file mode 100644
index 2d692cbcc..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/HexStrings.md
+++ /dev/null
@@ -1,19 +0,0 @@
-## Functions
-
-### toHexString
-
-```solidity
- function toHexString(
- ) internal returns (string)
-```
-
-Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
-
-Credit to Open Zeppelin under MIT license https://github.com/OpenZeppelin/openzeppelin-contracts/blob/243adff49ce1700e0ecb99fe522fb16cff1d1ddc/contracts/utils/Strings.sol#L55
-
-### toHexStringNoPrefix
-
-```solidity
- function toHexStringNoPrefix(
- ) internal returns (string)
-```
diff --git a/docs/contracts/v3/reference/periphery/libraries/LiquidityAmounts.md b/docs/contracts/v3/reference/periphery/libraries/LiquidityAmounts.md
deleted file mode 100644
index 0ab79163a..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/LiquidityAmounts.md
+++ /dev/null
@@ -1,172 +0,0 @@
-Provides functions for computing liquidity amounts from token amounts and prices
-
-## Functions
-
-### getLiquidityForAmount0
-
-```solidity
- function getLiquidityForAmount0(
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- uint256 amount0
- ) internal returns (uint128 liquidity)
-```
-
-Computes the amount of liquidity received for a given amount of token0 and price range
-
-Calculates amount0 _ (sqrt(upper) _ sqrt(lower)) / (sqrt(upper) - sqrt(lower))
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------- |
-| `sqrtRatioAX96` | uint160 | A sqrt price representing the first tick boundary |
-| `sqrtRatioBX96` | uint160 | A sqrt price representing the second tick boundary |
-| `amount0` | uint256 | The amount0 being sent in |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------- |
-| `liquidity` | uint128 | The amount of returned liquidity |
-
-### getLiquidityForAmount1
-
-```solidity
- function getLiquidityForAmount1(
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- uint256 amount1
- ) internal returns (uint128 liquidity)
-```
-
-Computes the amount of liquidity received for a given amount of token1 and price range
-
-Calculates amount1 / (sqrt(upper) - sqrt(lower)).
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------- |
-| `sqrtRatioAX96` | uint160 | A sqrt price representing the first tick boundary |
-| `sqrtRatioBX96` | uint160 | A sqrt price representing the second tick boundary |
-| `amount1` | uint256 | The amount1 being sent in |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :------------------------------- |
-| `liquidity` | uint128 | The amount of returned liquidity |
-
-### getLiquidityForAmounts
-
-```solidity
- function getLiquidityForAmounts(
- uint160 sqrtRatioX96,
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- uint256 amount0,
- uint256 amount1
- ) internal returns (uint128 liquidity)
-```
-
-Computes the maximum amount of liquidity received for a given amount of token0, token1, the current
-pool prices and the prices at the tick boundaries
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------- |
-| `sqrtRatioX96` | uint160 | A sqrt price representing the current pool prices |
-| `sqrtRatioAX96` | uint160 | A sqrt price representing the first tick boundary |
-| `sqrtRatioBX96` | uint160 | A sqrt price representing the second tick boundary |
-| `amount0` | uint256 | The amount of token0 being sent in |
-| `amount1` | uint256 | The amount of token1 being sent in |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------ | :--------------------------------------- |
-| `liquidity` | uint128 | The maximum amount of liquidity received |
-
-### getAmount0ForLiquidity
-
-```solidity
- function getAmount0ForLiquidity(
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- uint128 liquidity
- ) internal returns (uint256 amount0)
-```
-
-Computes the amount of token0 for a given amount of liquidity and a price range
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------- |
-| `sqrtRatioAX96` | uint160 | A sqrt price representing the first tick boundary |
-| `sqrtRatioBX96` | uint160 | A sqrt price representing the second tick boundary |
-| `liquidity` | uint128 | The liquidity being valued |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------- |
-| `amount0` | uint256 | The amount of token0 |
-
-### getAmount1ForLiquidity
-
-```solidity
- function getAmount1ForLiquidity(
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- uint128 liquidity
- ) internal returns (uint256 amount1)
-```
-
-Computes the amount of token1 for a given amount of liquidity and a price range
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------- |
-| `sqrtRatioAX96` | uint160 | A sqrt price representing the first tick boundary |
-| `sqrtRatioBX96` | uint160 | A sqrt price representing the second tick boundary |
-| `liquidity` | uint128 | The liquidity being valued |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------- |
-| `amount1` | uint256 | The amount of token1 |
-
-### getAmountsForLiquidity
-
-```solidity
- function getAmountsForLiquidity(
- uint160 sqrtRatioX96,
- uint160 sqrtRatioAX96,
- uint160 sqrtRatioBX96,
- uint128 liquidity
- ) internal returns (uint256 amount0, uint256 amount1)
-```
-
-Computes the token0 and token1 value for a given amount of liquidity, the current
-pool prices and the prices at the tick boundaries
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------------- | :------ | :------------------------------------------------- |
-| `sqrtRatioX96` | uint160 | A sqrt price representing the current pool prices |
-| `sqrtRatioAX96` | uint160 | A sqrt price representing the first tick boundary |
-| `sqrtRatioBX96` | uint160 | A sqrt price representing the second tick boundary |
-| `liquidity` | uint128 | The liquidity being valued |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------- |
-| `amount0` | uint256 | The amount of token0 |
-| `amount1` | uint256 | The amount of token1 |
diff --git a/docs/contracts/v3/reference/periphery/libraries/NFTDescriptor.md b/docs/contracts/v3/reference/periphery/libraries/NFTDescriptor.md
deleted file mode 100644
index 687a25c75..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/NFTDescriptor.md
+++ /dev/null
@@ -1,71 +0,0 @@
-## Functions
-
-### constructTokenURI
-
-```solidity
- function constructTokenURI(
- ) public returns (string)
-```
-
-### escapeQuotes
-
-```solidity
- function escapeQuotes(
- ) internal returns (string)
-```
-
-### tickToDecimalString
-
-```solidity
- function tickToDecimalString(
- ) internal returns (string)
-```
-
-### fixedPointToDecimalString
-
-```solidity
- function fixedPointToDecimalString(
- ) internal returns (string)
-```
-
-### feeToPercentString
-
-```solidity
- function feeToPercentString(
- ) internal returns (string)
-```
-
-### addressToString
-
-```solidity
- function addressToString(
- ) internal returns (string)
-```
-
-### generateSVGImage
-
-```solidity
- function generateSVGImage(
- ) internal returns (string svg)
-```
-
-### tokenToColorHex
-
-```solidity
- function tokenToColorHex(
- ) internal returns (string str)
-```
-
-### getCircleCoord
-
-```solidity
- function getCircleCoord(
- ) internal returns (uint256)
-```
-
-### sliceTokenHex
-
-```solidity
- function sliceTokenHex(
- ) internal returns (uint256)
-```
diff --git a/docs/contracts/v3/reference/periphery/libraries/NFTSVG.md b/docs/contracts/v3/reference/periphery/libraries/NFTSVG.md
deleted file mode 100644
index e9c5a097d..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/NFTSVG.md
+++ /dev/null
@@ -1,38 +0,0 @@
-Provides a function for generating an SVG associated with a t1 NFT
-
-## Functions
-
-### generateSVG
-
-```solidity
- function generateSVG(
- ) internal returns (string svg)
-```
-
-### getCurve
-
-```solidity
- function getCurve(
- ) internal returns (string curve)
-```
-
-### generateSVGCurveCircle
-
-```solidity
- function generateSVGCurveCircle(
- ) internal returns (string svg)
-```
-
-### rangeLocation
-
-```solidity
- function rangeLocation(
- ) internal returns (string, string)
-```
-
-### isRare
-
-```solidity
- function isRare(
- ) internal returns (bool)
-```
diff --git a/docs/contracts/v3/reference/periphery/libraries/OracleLibrary.md b/docs/contracts/v3/reference/periphery/libraries/OracleLibrary.md
deleted file mode 100644
index c873db47d..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/OracleLibrary.md
+++ /dev/null
@@ -1,57 +0,0 @@
-Provides functions to integrate with V3 pool oracle
-
-## Functions
-
-### consult
-
-```solidity
- function consult(
- address pool,
- uint32 period
- ) internal view returns (int24 arithmeticMeanTick, uint128 harmonicMeanLiquidity)
-```
-
-Calculates time-weighted means of tick and liquidity for a given t1 V3 pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :----------------------------------------------------------------------- |
-| `pool` | address | Address of t1 V3 pool that we want to observe |
-| `period` | uint32 | Number of seconds in the past to start calculating time-weighted average |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------ | :------ | :--------------------------------------------------------------------------------- |
-| `arithmeticMeanTick` | int24 | The arithmetic mean tick from (block.timestamp - secondsAgo) to block.timestamp |
-| `harmonicMeanLiquidity` | uint128 | The harmonic mean liquidity from (block.timestamp - secondsAgo) to block.timestamp |
-
-
-### getQuoteAtTick
-
-```solidity
- function getQuoteAtTick(
- int24 tick,
- uint128 baseAmount,
- address baseToken,
- address quoteToken
- ) internal pure returns (uint256 quoteAmount)
-```
-
-Given a tick and a token amount, calculates the amount of token received in exchange
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----------- | :------ | :---------------------------------------------------------------------- |
-| `tick` | int24 | Tick value used to calculate the quote |
-| `baseAmount` | uint128 | Amount of token to be converted |
-| `baseToken` | address | Address of an ERC20 token contract used as the baseAmount denomination |
-| `quoteToken` | address | Address of an ERC20 token contract used as the quoteAmount denomination |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------ | :------ | :-------------------------------------------------------- |
-| `quoteAmount` | uint256 | Amount of quoteToken received for baseAmount of baseToken |
diff --git a/docs/contracts/v3/reference/periphery/libraries/Path.md b/docs/contracts/v3/reference/periphery/libraries/Path.md
deleted file mode 100644
index 598a44009..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/Path.md
+++ /dev/null
@@ -1,91 +0,0 @@
-## Functions
-
-### hasMultiplePools
-
-```solidity
- function hasMultiplePools(
- bytes path
- ) internal returns (bool)
-```
-
-Returns true iff the path contains two or more pools
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :---- | :-------------------- |
-| `path` | bytes | The encoded swap path |
-
-#### Return Values:
-
-| Type | Description |
-| :--- | :-------------------------------------------------- |
-| bool | if path contains two or more pools, otherwise false |
-
-### decodeFirstPool
-
-```solidity
- function decodeFirstPool(
- bytes path
- ) internal returns (address tokenA, address tokenB, uint24 fee)
-```
-
-Decodes the first pool in path
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :---- | :-------------------------- |
-| `path` | bytes | The bytes encoded swap path |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------- | :------ | :--------------------------------- |
-| `tokenA` | address | The first token of the given pool |
-| `tokenB` | address | The second token of the given pool |
-| `fee` | uint24 | The fee level of the pool |
-
-### getFirstPool
-
-```solidity
- function getFirstPool(
- bytes path
- ) internal returns (bytes)
-```
-
-Gets the segment corresponding to the first pool in the path
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :---- | :-------------------------- |
-| `path` | bytes | The bytes encoded swap path |
-
-#### Return Values:
-
-| Type | Description |
-| :---- | :------------------------------------------------------------------------- |
-| bytes | segment containing all data necessary to target the first pool in the path |
-
-### skipToken
-
-```solidity
- function skipToken(
- bytes path
- ) internal returns (bytes)
-```
-
-Skips a token + fee element from the buffer and returns the remainder
-
-#### Parameters:
-
-| Name | Type | Description |
-| :----- | :---- | :------------ |
-| `path` | bytes | The swap path |
-
-#### Return Values:
-
-| Type | Description |
-| :---- | :----------------------------------------- |
-| bytes | remaining token + fee elements in the path |
diff --git a/docs/contracts/v3/reference/periphery/libraries/PoolAddress.md b/docs/contracts/v3/reference/periphery/libraries/PoolAddress.md
deleted file mode 100644
index 7ceca3970..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/PoolAddress.md
+++ /dev/null
@@ -1,51 +0,0 @@
-## Functions
-
-### getPoolKey
-
-```solidity
- function getPoolKey(
- address tokenA,
- address tokenB,
- uint24 fee
- ) internal returns (struct PoolAddress.PoolKey)
-```
-
-Returns PoolKey: the ordered tokens with the matched fee levels
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :----------------------------------- |
-| `tokenA` | address | The first token of a pool, unsorted |
-| `tokenB` | address | The second token of a pool, unsorted |
-| `fee` | uint24 | The fee level of the pool |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :-------- | :------------------ | :---------------------------------------------------------- |
-| `Poolkey` | PoolAddress.PoolKey | The pool details with ordered token0 and token1 assignments |
-
-### computeAddress
-
-```solidity
- function computeAddress(
- address factory,
- struct PoolAddress.PoolKey key
- ) internal returns (address pool)
-```
-
-Deterministically computes the pool address given the factory and PoolKey
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------------------------- | :-------------------------------------- |
-| `factory` | address | The t1 V3 factory contract address |
-| `key` | struct PoolAddress.PoolKey | The PoolKey |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :----- | :------ | :---------------------------------- |
-| `pool` | address | The contract address of the V3 pool |
diff --git a/docs/contracts/v3/reference/periphery/libraries/PoolTicksCounter.md b/docs/contracts/v3/reference/periphery/libraries/PoolTicksCounter.md
deleted file mode 100644
index 5798803d8..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/PoolTicksCounter.md
+++ /dev/null
@@ -1,13 +0,0 @@
-## Functions
-
-### countInitializedTicksCrossed
-
-```solidity
- function countInitializedTicksCrossed(
- ) internal view returns (uint32 initializedTicksCrossed)
-```
-
-This function counts the number of initialized ticks that would incur a gas cost between tickBefore and tickAfter.
-When tickBefore and/or tickAfter themselves are initialized, the logic over whether we should count them depends on the
-direction of the swap. If we are swapping upwards (tickAfter > tickBefore) we don't want to count tickBefore but we do
-want to count tickAfter. The opposite is true if we are swapping downwards.
diff --git a/docs/contracts/v3/reference/periphery/libraries/PositionKey.md b/docs/contracts/v3/reference/periphery/libraries/PositionKey.md
deleted file mode 100644
index 4a5871325..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/PositionKey.md
+++ /dev/null
@@ -1,10 +0,0 @@
-## Functions
-
-### compute
-
-```solidity
- function compute(
- ) internal returns (bytes32)
-```
-
-Returns the key of the position in the core library
diff --git a/docs/contracts/v3/reference/periphery/libraries/TokenRatioSortOrder.md b/docs/contracts/v3/reference/periphery/libraries/TokenRatioSortOrder.md
deleted file mode 100644
index f42f17431..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/TokenRatioSortOrder.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# TokenRatioSortOrder
-
-```solidity
-library TokenRatioSortOrder {
- int256 constant NUMERATOR_MOST = 300;
- int256 constant NUMERATOR_MORE = 200;
- int256 constant NUMERATOR = 100;
- int256 constant DENOMINATOR_MOST = -300;
- int256 constant DENOMINATOR_MORE = -200;
- int256 constant DENOMINATOR = -100;
-}
-```
diff --git a/docs/contracts/v3/reference/periphery/libraries/TransferHelper.md b/docs/contracts/v3/reference/periphery/libraries/TransferHelper.md
deleted file mode 100644
index 22dbab69a..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/TransferHelper.md
+++ /dev/null
@@ -1,88 +0,0 @@
-## Functions
-
-### safeTransferFrom
-
-```solidity
- function safeTransferFrom(
- address token,
- address from,
- address to,
- uint256 value
- ) internal
-```
-
-Transfers tokens from the targeted address to the given destination
-Errors with 'STF' if transfer fails
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------ | :------ | :---------------------------------------------------------------- |
-| `token` | address | The contract address of the token to be transferred |
-| `from` | address | The originating address from which the tokens will be transferred |
-| `to` | address | The destination address of the transfer |
-| `value` | uint256 | The amount to be transferred |
-
-### safeTransfer
-
-```solidity
- function safeTransfer(
- address token,
- address to,
- uint256 value
- ) internal
-```
-
-Transfers tokens from msg.sender to a recipient
-
-Errors with ST if transfer fails
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------ | :------ | :---------------------------------------------------------- |
-| `token` | address | The contract address of the token which will be transferred |
-| `to` | address | The recipient of the transfer |
-| `value` | uint256 | The value of the transfer |
-
-### safeApprove
-
-```solidity
- function safeApprove(
- address token,
- address to,
- uint256 value
- ) internal
-```
-
-Approves the stipulated contract to spend the given allowance in the given token
-
-Errors with 'SA' if transfer fails
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------ | :------ | :---------------------------------------------------------------- |
-| `token` | address | The contract address of the token to be approved |
-| `to` | address | The target of the approval |
-| `value` | uint256 | The amount of the given token the target will be allowed to spend |
-
-### safeTransferETH
-
-```solidity
- function safeTransferETH(
- address to,
- uint256 value
- ) internal
-```
-
-Transfers ETH to the recipient address
-
-Fails with `STE`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------ | :------ | :------------------------------ |
-| `to` | address | The destination of the transfer |
-| `value` | uint256 | The value to be transferred |
diff --git a/docs/contracts/v3/reference/periphery/libraries/WeightedOracleLibrary.md b/docs/contracts/v3/reference/periphery/libraries/WeightedOracleLibrary.md
deleted file mode 100644
index 89d1ece2c..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/WeightedOracleLibrary.md
+++ /dev/null
@@ -1,54 +0,0 @@
-Provides functions to integrate with different tier oracles of the same V3 pair
-
-## Functions
-
-### consult
-
-```solidity
- function consult(
- address pool,
- uint32 period
- ) internal view returns (struct WeightedOracleLibrary.PeriodObservation observation)
-```
-
-Fetches a time-weighted observation for a given t1 V3 pool
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :------------------------------------------------------------------------------- |
-| `pool` | address | Address of the pool that we want to observe |
-| `period` | uint32 | Number of seconds in the past to start calculating the time-weighted observation |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------ | :------ | :-------------------------------------------------------------------------------------------- |
-| `observation` | address | An observation that has been time-weighted from (block.timestamp - period) to block.timestamp |
-
-### getArithmeticMeanTickWeightedByLiquidity
-
-```solidity
- function getArithmeticMeanTickWeightedByLiquidity(
- struct WeightedOracleLibrary.PeriodObservation[] observations
- ) internal pure returns (int24 arithmeticMeanWeightedTick)
-```
-
-Given some time-weighted observations, calculates the arithmetic mean tick, weighted by liquidity
-
-In most scenarios, each entry of `observations` should share the same `period` and underlying `pool` tokens.
-If `period` differs across observations, the result becomes difficult to interpret and is likely biased/manipulable.
-If the underlying `pool` tokens differ across observations, extreme care must be taken to ensure that both prices and liquidity values are comparable.
-Even if prices are commensurate (e.g. two different USD-stable assets against ETH), liquidity values may not be, as decimals can differ between tokens.
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------- | :----------------------------------------------- | :----------------------------------- |
-| `observations` | struct WeightedOracleLibrary.PeriodObservation[] | A list of time-weighted observations |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------------------------- | :----------------------------------------------- | :----------------------------------------------------------------------------------------------- |
-| `arithmeticMeanWeightedTick` | struct WeightedOracleLibrary.PeriodObservation[] | The arithmetic mean tick, weighted by the observations' time-weighted harmonic average liquidity |
diff --git a/docs/contracts/v3/reference/periphery/libraries/_category_.json b/docs/contracts/v3/reference/periphery/libraries/_category_.json
deleted file mode 100644
index 9528f7412..000000000
--- a/docs/contracts/v3/reference/periphery/libraries/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Libraries",
- "position": 4
-}
diff --git a/docs/contracts/v3/reference/periphery/staker/Design.md b/docs/contracts/v3/reference/periphery/staker/Design.md
deleted file mode 100644
index ac95a82f5..000000000
--- a/docs/contracts/v3/reference/periphery/staker/Design.md
+++ /dev/null
@@ -1,200 +0,0 @@
----
-sidebar_label: t1 V3 Staker Design
-sidebar_position: 1
----
-
-# t1 V3 Staker Design
-
-The liquidity mining staker design is comprised of one canonical position staking contract, Staker. The technical reference for this contract is [here](../../periphery/staker/UniswapV3Staker.md) and the source code is [here](https://github.com/Uniswap/uniswap-v3-staker).
-
-## Data Structures
-
-```solidity
-struct Incentive {
- uint128 totalRewardUnclaimed;
- uint128 numberOfStakes;
- uint160 totalSecondsClaimedX128;
-}
-
-struct Deposit {
- address owner;
- uint96 numberOfStakes;
-}
-
-struct Stake {
- uint160 secondsPerLiquidityInsideInitialX128;
- uint128 liquidity;
-}
-
-struct IncentiveKey {
- IERC20Minimal rewardToken;
- IUniswapV3Pool pool;
- uint256 startTime;
- uint256 endTime;
- address refundee;
-}
-```
-
-State:
-
-```solidity
-IUniswapV3Factory public immutable factory;
-INonfungiblePositionManager public immutable nonfungiblePositionManager;
-
-/// @dev bytes32 refers to the return value of IncentiveId.compute
-mapping(bytes32 => Incentive) public incentives;
-
-/// @dev deposits[tokenId] => Deposit
-mapping(uint256 => Deposit) public deposits;
-
-/// @dev stakes[tokenId][incentiveHash] => Stake
-mapping(uint256 => mapping(bytes32 => Stake)) public stakes;
-
-/// @dev rewards[rewardToken][msg.sender] => uint256
-mapping(address => mapping(address => uint256)) public rewards;
-```
-
-Params:
-
-```solidity
-struct CreateIncentiveParams {
- address rewardToken;
- address pool;
- uint256 startTime;
- uint256 endTime;
- uint128 totalReward;
-}
-
-struct EndIncentiveParams {
- address creator;
- address rewardToken;
- address pool;
- uint256 startTime;
- uint256 endTime;
-}
-
-```
-
-## Incentives
-
-### `createIncentive(CreateIncentiveParams memory params)`
-
-`createIncentive` creates a liquidity mining incentive program. The key used to look up an Incentive is the hash of its immutable properties.
-
-**Check:**
-
-- Incentive with these params does not already exist
-- Timestamps: `params.endTime >= params.startTime`, `params.startTime >= block.timestamp`
-- Incentive with this ID does not already exist.
-
-**Effects:**
-
-- Sets `incentives[key] = Incentive(totalRewardUnclaimed=totalReward, totalSecondsClaimedX128=0, rewardToken=rewardToken)`
-
-**Interaction:**
-
-- Transfers `params.totalReward` from `msg.sender` to self.
- - Make sure there is a check here and it fails if the transfer fails
-- Emits `IncentiveCreated`
-
-### `endIncentive(EndIncentiveParams memory params)`
-
-`endIncentive` can be called by anyone to end an Incentive after the `endTime` has passed, transferring `totalRewardUnclaimed` of `rewardToken` back to `refundee`.
-
-**Check:**
-
-- `block.timestamp > params.endTime`
-- Incentive exists (`incentive.totalRewardUnclaimed != 0`)
-
-**Effects:**
-
-- deletes `incentives[key]` (This is a new change)
-
-**Interactions:**
-
-- safeTransfers `totalRewardUnclaimed` of `rewardToken` to the incentive creator `msg.sender`
-- emits `IncentiveEnded`
-
-## Deposit/Withdraw Token
-
-**Interactions**
-
-- `nonfungiblePositionManager.safeTransferFrom(sender, this, tokenId)`
- - This transfer triggers the onERC721Received hook
-
-### `onERC721Received(address, address from, uint256 tokenId, bytes calldata data)`
-
-**Check:**
-
-- Make sure sender is univ3 nft
-
-**Effects:**
-
-- Creates a deposit for the token setting deposit `owner` to `from`.
- - Setting `owner` to `from` ensures that the owner of the token also owns the deposit. Approved addresses and operators may first transfer the token to themselves before depositing for deposit ownership.
-- If `data.length>0`, stakes the token in one or more incentives
-
-### `withdrawToken(uint256 tokenId, address to, bytes memory data)`
-
-**Checks**
-
-- Check that a Deposit exists for the token and that `msg.sender` is the `owner` on that Deposit.
-- Check that `numberOfStakes` on that Deposit is 0.
-
-**Effects**
-
-- Delete the Deposit `delete deposits[tokenId]`.
-
-**Interactions**
-
-- `safeTransferFrom` the token to `to` with `data`.
-- emit `DepositTransferred(token, deposit.owner, address(0))`
-
-## Stake/Unstake/Rewards
-
-### `stakeToken`
-
-**Check:**
-
-- `deposits[params.tokenId].owner == msg.sender`
-- Make sure incentive actually exists and has reward that could be claimed (incentive.rewardToken != address(0))
- - Check if this check can check totalRewardUnclaimed instead
-- Make sure token not already staked
-
-### `claimReward`
-
-**Interactions**
-
-- `msg.sender` to withdraw all of their reward balance in a specific token to a specified `to` address.
-
-- emit RewardClaimed(to, reward)
-
-### `unstakeToken`
-
-To unstake an NFT, you call `unstakeToken`, which takes all the same arguments as `stake`.
-
-**Checks**
-
-- It checks that you are the owner of the Deposit
-- It checks that there exists a `Stake` for the provided key (with exists=true).
-
-**Effects**
-
-- Deletes the Stake.
-- Decrements `numberOfStakes` for the Deposit by 1.
-- `totalRewardsUnclaimed` is decremented by `reward`.
-- `totalSecondsClaimed` is incremented by `seconds`.
-- Increments `rewards[rewardToken][msg.sender]` by the amount given by `getRewardInfo`.
-
-### `getRewardInfo`
-
-- It computes `secondsInsideX128` (the total liquidity seconds for which rewards are owed) for a given Stake, by:
- - using`snapshotCumulativesInside` from the t1 v3 core contract to get `secondsPerLiquidityInRangeX128`, and subtracting `secondsPerLiquidityInRangeInitialX128`.
- - Multiplying that by `stake.liquidity` to get the total seconds accrued by the liquidity in that period
-- Note that X128 means it's a `UQ32X128`.
-
-- It computes `totalSecondsUnclaimed` by taking `max(endTime, block.timestamp) - startTime`, casting it as a Q128, and subtracting `totalSecondsClaimedX128`.
-
-- It computes `rewardRate` for the Incentive casting `incentive.totalRewardUnclaimed` as a Q128, then dividing it by `totalSecondsUnclaimedX128`.
-
-- `reward` is then calculated as `secondsInsideX128` times the `rewardRate`, scaled down to a regular uint128.
diff --git a/docs/contracts/v3/reference/periphery/staker/UniswapV3Staker.md b/docs/contracts/v3/reference/periphery/staker/UniswapV3Staker.md
deleted file mode 100644
index b4c73dc2a..000000000
--- a/docs/contracts/v3/reference/periphery/staker/UniswapV3Staker.md
+++ /dev/null
@@ -1,236 +0,0 @@
----
-sidebar_label: t1 V3 Staker Contract
-sidebar_position: 2
----
-
-# t1 V3 Staker Contract
-
-Below is the technical reference for the staker contract, [`UniswapV3Staker.sol`](https://github.com/Uniswap/uniswap-v3-staker/blob/main/contracts/UniswapV3Staker.sol). A technical guide for interacting with this staking contract will be released soon.
-
-## Functions
-
-### stakes
-
-```solidity
- function stakes(
- uint256 tokenId,
- bytes32 incentiveId
- ) public view override returns (uint160 secondsPerLiquidityInsideInitialX128, uint128 liquidity)
-```
-
-Returns information about a staked liquidity NFT
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :---------------------------------------------------- |
-| `tokenId` | uint256 | The ID of the staked token |
-| `incentiveId` | bytes32 | The ID of the incentive for which the token is staked |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------------------- | :------ | :------------------------------------------------------------------------------- |
-| `secondsPerLiquidityInsideInitialX128` | uint160 | secondsPerLiquidity represented as a UQ32.128 |
-| `liquidity` | bytes32 | The amount of liquidity in the NFT as of the last time the rewards were computed |
-
-### constructor
-
-```solidity
- function constructor(
- contract IUniswapV3Factory _factory,
- contract INonfungiblePositionManager _nonfungiblePositionManager,
- uint256 _maxIncentiveStartLeadTime,
- uint256 _maxIncentiveDuration
- ) public
-```
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------------------- | :----------------------------------- | :--------------------------------------------------------------------------- |
-| `_factory` | contract IUniswapV3Factory | the t1 V3 factory |
-| `_nonfungiblePositionManager` | contract INonfungiblePositionManager | the NFT position manager contract address |
-| `_maxIncentiveStartLeadTime` | uint256 | the max duration of an incentive in seconds |
-| `_maxIncentiveDuration` | uint256 | the max amount of seconds into the future the incentive startTime can be set |
-
-### createIncentive
-
-```solidity
- function createIncentive(
- struct IUniswapV3Staker.IncentiveKey key,
- uint256 reward
- ) external
-```
-
-Creates a new liquidity mining incentive program
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :----------------------------------- | :-------------------------------------------- |
-| `key` | struct IUniswapV3Staker.IncentiveKey | Details of the incentive to create |
-| `reward` | uint256 | The amount of reward tokens to be distributed |
-
-### endIncentive
-
-```solidity
- function endIncentive(
- struct IUniswapV3Staker.IncentiveKey key
- ) external returns (uint256 refund)
-```
-
-Ends an incentive after the incentive end time has passed and all stakes have been withdrawn
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---- | :----------------------------------- | :------------------------------ |
-| `key` | struct IUniswapV3Staker.IncentiveKey | Details of the incentive to end |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------- | :------ | :------------------------------------------------------ |
-| `refund` | uint256 | The remaining reward tokens when the incentive is ended |
-
-### onERC721Received
-
-```solidity
- function onERC721Received(
- ) external returns (bytes4)
-```
-
-Upon receiving a t1 V3 ERC721, creates the token deposit setting owner to `from`. Also stakes token
-in one or more incentives if properly formatted `data` has a length > 0.
-
-Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
-by `operator` from `from`, this function is called.
-It must return its Solidity selector to confirm the token transfer.
-If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
-The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.
-
-### transferDeposit
-
-```solidity
- function transferDeposit(
- uint256 tokenId,
- address to
- ) external
-```
-
-Transfers ownership of a deposit from the sender to the given recipient
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------------------ |
-| `tokenId` | uint256 | The ID of the token (and the deposit) to transfer |
-| `to` | address | The new owner of the deposit |
-
-### withdrawToken
-
-```solidity
- function withdrawToken(
- uint256 tokenId,
- address to,
- bytes data
- ) external
-```
-
-Withdraws a t1 V3 LP token `tokenId` from this contract to the recipient `to`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------------------------------------------------------------------ |
-| `tokenId` | uint256 | The unique identifier of an t1 V3 LP token |
-| `to` | address | The address where the LP token will be sent |
-| `data` | bytes | An optional data array that will be passed along to the `to` address via the NFT safeTransferFrom |
-
-### stakeToken
-
-```solidity
- function stakeToken(
- struct IUniswapV3Staker.IncentiveKey key,
- uint256 tokenId
- ) external
-```
-
-Stakes a t1 V3 LP token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :----------------------------------- | :-------------------------------------------------- |
-| `key` | struct IUniswapV3Staker.IncentiveKey | The key of the incentive for which to stake the NFT |
-| `tokenId` | uint256 | The ID of the token to stake |
-
-### unstakeToken
-
-```solidity
- function unstakeToken(
- struct IUniswapV3Staker.IncentiveKey key,
- uint256 tokenId
- ) external
-```
-
-Unstakes a t1 V3 LP token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :----------------------------------- | :---------------------------------------------------- |
-| `key` | struct IUniswapV3Staker.IncentiveKey | The key of the incentive for which to unstake the NFT |
-| `tokenId` | uint256 | The ID of the token to unstake |
-
-### claimReward
-
-```solidity
- function claimReward(
- contract IERC20Minimal rewardToken,
- address to,
- uint256 amountRequested
- ) external override returns (uint256 reward)
-```
-
-Transfers `amountRequested` of accrued `rewardToken` rewards from the contract to the recipient `to`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------- | :--------------------- | :----------------------------------------------------------------------------- |
-| `rewardToken` | contract IERC20Minimal | The token being distributed as a reward |
-| `to` | address | The address where claimed rewards will be sent to |
-| `amountRequested` | uint256 | The amount of reward tokens to claim. Claims entire reward amount if set to 0. |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------- | :------ | :---------------------------------- |
-| `reward` | uint256 | The amount of reward tokens claimed |
-
-### getRewardInfo
-
-```solidity
- function getRewardInfo(
- struct IUniswapV3Staker.IncentiveKey key,
- uint256 tokenId
- ) external view override returns (uint256 reward, uint160 secondsInsideX128)
-```
-
-Calculates the reward amount that will be received for the given stake
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :----------------------------------- | :----------------------- |
-| `key` | struct IUniswapV3Staker.IncentiveKey | The key of the incentive |
-| `tokenId` | uint256 | The ID of the token |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------ | :------ | :------------------------------------------------------------- |
-| `reward` | uint256 | The reward accrued to the NFT for the given incentive thus far |
-| `secondsInsideX128` | uint160 | The seconds inside the tick range |
diff --git a/docs/contracts/v3/reference/periphery/staker/_category_.json b/docs/contracts/v3/reference/periphery/staker/_category_.json
deleted file mode 100644
index df9945332..000000000
--- a/docs/contracts/v3/reference/periphery/staker/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Staker",
- "position": 4
-}
diff --git a/docs/contracts/v3/reference/periphery/staker/interfaces/IUniswapV3Staker.md b/docs/contracts/v3/reference/periphery/staker/interfaces/IUniswapV3Staker.md
deleted file mode 100644
index ffc11e521..000000000
--- a/docs/contracts/v3/reference/periphery/staker/interfaces/IUniswapV3Staker.md
+++ /dev/null
@@ -1,417 +0,0 @@
-Allows staking nonfungible liquidity tokens in exchange for reward tokens
-
-## Functions
-
-### factory
-
-```solidity
- function factory(
- ) external view returns (contract IUniswapV3Factory)
-```
-
-The t1 V3 Factory
-
-### nonfungiblePositionManager
-
-```solidity
- function nonfungiblePositionManager(
- ) external view returns (contract INonfungiblePositionManager)
-```
-
-The nonfungible position manager with which this staking contract is compatible
-
-### maxIncentiveDuration
-
-```solidity
- function maxIncentiveDuration(
- ) external view returns (uint256)
-```
-
-The max duration of an incentive in seconds
-
-### maxIncentiveStartLeadTime
-
-```solidity
- function maxIncentiveStartLeadTime(
- ) external view returns (uint256)
-```
-
-The max amount of seconds into the future the incentive startTime can be set
-
-### incentives
-
-```solidity
- function incentives(
- bytes32 incentiveId
- ) external view returns (uint256 totalRewardUnclaimed, uint160 totalSecondsClaimedX128, uint96 numberOfStakes)
-```
-
-Represents a staking incentive
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :--------------------------------------------------- |
-| `incentiveId` | bytes32 | The ID of the incentive computed from its parameters |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------ | :------ | :---------------------------------------------------------------- |
-| `totalRewardUnclaimed` | uint256 | The amount of reward token not yet claimed by users |
-| `totalSecondsClaimedX128` | uint160 | Total liquidity-seconds claimed, represented as a UQ32.128 |
-| `numberOfStakes` | uint96 | The count of deposits that are currently staked for the incentive |
-
-### deposits
-
-```solidity
- function deposits(
- ) external view returns (address owner, uint48 numberOfStakes, int24 tickLower, int24 tickUpper)
-```
-
-Returns information about a deposited NFT
-
-#### Return Values:
-
-| Name | Type | Description |
-| :--------------- | :------ | :--------------------------------------------------------------- |
-| `owner` | address | The owner of the deposited NFT |
-| `numberOfStakes` | uint48 | Counter of how many incentives for which the liquidity is staked |
-| `tickLower` | int24 | The lower tick of the range |
-| `tickUpper` | int24 | The upper tick of the range |
-
-### stakes
-
-```solidity
- function stakes(
- uint256 tokenId,
- bytes32 incentiveId
- ) external view returns (uint160 secondsPerLiquidityInsideInitialX128, uint128 liquidity)
-```
-
-Returns information about a staked liquidity NFT
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :---------------------------------------------------- |
-| `tokenId` | uint256 | The ID of the staked token |
-| `incentiveId` | bytes32 | The ID of the incentive for which the token is staked |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------------------------- | :------ | :------------------------------------------------------------------------------- |
-| `secondsPerLiquidityInsideInitialX128` | uint160 | secondsPerLiquidity represented as a UQ32.128 |
-| `liquidity` | uint128 | The amount of liquidity in the NFT as of the last time the rewards were computed |
-
-### rewards
-
-```solidity
- function rewards(
- contract IERC20Minimal rewardToken,
- address owner
- ) external view returns (uint256 rewardsOwed)
-```
-
-Returns amounts of reward tokens owed to a given address according to the last time all stakes were updated
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :--------------------- | :----------------------------------------------- |
-| `rewardToken` | contract IERC20Minimal | The token for which to check rewards |
-| `owner` | address | The owner for which the rewards owed are checked |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------ | :------ | :---------------------------------------------------- |
-| `rewardsOwed` | uint256 | The amount of the reward token claimable by the owner |
-
-### createIncentive
-
-```solidity
- function createIncentive(
- struct IUniswapV3Staker.IncentiveKey key,
- uint256 reward
- ) external
-```
-
-Creates a new liquidity mining incentive program
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :----------------------------------- | :-------------------------------------------- |
-| `key` | struct IUniswapV3Staker.IncentiveKey | Details of the incentive to create |
-| `reward` | uint256 | The amount of reward tokens to be distributed |
-
-### endIncentive
-
-```solidity
- function endIncentive(
- struct IUniswapV3Staker.IncentiveKey key
- ) external returns (uint256 refund)
-```
-
-Ends an incentive after the incentive end time has passed and all stakes have been withdrawn
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---- | :----------------------------------- | :------------------------------ |
-| `key` | struct IUniswapV3Staker.IncentiveKey | Details of the incentive to end |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------- | :------ | :------------------------------------------------------ |
-| `refund` | uint256 | The remaining reward tokens when the incentive is ended |
-
-### transferDeposit
-
-```solidity
- function transferDeposit(
- uint256 tokenId,
- address to
- ) external
-```
-
-Transfers ownership of a deposit from the sender to the given recipient
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------------------ |
-| `tokenId` | uint256 | The ID of the token (and the deposit) to transfer |
-| `to` | address | The new owner of the deposit |
-
-### withdrawToken
-
-```solidity
- function withdrawToken(
- uint256 tokenId,
- address to,
- bytes data
- ) external
-```
-
-Withdraws a t1 V3 LP token `tokenId` from this contract to the recipient `to`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :------ | :------------------------------------------------------------------------------------------------ |
-| `tokenId` | uint256 | The unique identifier of an t1 V3 LP token |
-| `to` | address | The address where the LP token will be sent |
-| `data` | bytes | An optional data array that will be passed along to the `to` address via the NFT safeTransferFrom |
-
-### stakeToken
-
-```solidity
- function stakeToken(
- struct IUniswapV3Staker.IncentiveKey key,
- uint256 tokenId
- ) external
-```
-
-Stakes a t1 V3 LP token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :----------------------------------- | :-------------------------------------------------- |
-| `key` | struct IUniswapV3Staker.IncentiveKey | The key of the incentive for which to stake the NFT |
-| `tokenId` | uint256 | The ID of the token to stake |
-
-### unstakeToken
-
-```solidity
- function unstakeToken(
- struct IUniswapV3Staker.IncentiveKey key,
- uint256 tokenId
- ) external
-```
-
-Unstakes a t1 V3 LP token
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :----------------------------------- | :---------------------------------------------------- |
-| `key` | struct IUniswapV3Staker.IncentiveKey | The key of the incentive for which to unstake the NFT |
-| `tokenId` | uint256 | The ID of the token to unstake |
-
-### claimReward
-
-```solidity
- function claimReward(
- contract IERC20Minimal rewardToken,
- address to,
- uint256 amountRequested
- ) external returns (uint256 reward)
-```
-
-Transfers `amountRequested` of accrued `rewardToken` rewards from the contract to the recipient `to`
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---------------- | :--------------------- | :----------------------------------------------------------------------------- |
-| `rewardToken` | contract IERC20Minimal | The token being distributed as a reward |
-| `to` | address | The address where claimed rewards will be sent to |
-| `amountRequested` | uint256 | The amount of reward tokens to claim. Claims entire reward amount if set to 0. |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------- | :------ | :---------------------------------- |
-| `reward` | uint256 | The amount of reward tokens claimed |
-
-### getRewardInfo
-
-```solidity
- function getRewardInfo(
- struct IUniswapV3Staker.IncentiveKey key,
- uint256 tokenId
- ) external returns (uint256 reward, uint160 secondsInsideX128)
-```
-
-Calculates the reward amount that will be received for the given stake
-
-#### Parameters:
-
-| Name | Type | Description |
-| :-------- | :----------------------------------- | :----------------------- |
-| `key` | struct IUniswapV3Staker.IncentiveKey | The key of the incentive |
-| `tokenId` | uint256 | The ID of the token |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------ | :------ | :------------------------------------------------------------- |
-| `reward` | uint256 | The reward accrued to the NFT for the given incentive thus far |
-| `secondsInsideX128` | uint160 | The seconds inside the tick range |
-
-## Events
-
-### IncentiveCreated
-
-```solidity
- event IncentiveCreated(
- contract IERC20Minimal rewardToken,
- contract IUniswapV3Pool pool,
- uint256 startTime,
- uint256 endTime,
- address refundee,
- uint256 reward
- )
-```
-
-Event emitted when a liquidity mining incentive has been created
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :---------------------- | :------------------------------------------------------------------------ |
-| `rewardToken` | contract IERC20Minimal | The token being distributed as a reward |
-| `pool` | contract IUniswapV3Pool | The t1 V3 pool |
-| `startTime` | uint256 | The time when the incentive program begins |
-| `endTime` | uint256 | The time when rewards stop accruing |
-| `refundee` | address | The address which receives any remaining reward tokens after the end time |
-| `reward` | uint256 | The amount of reward tokens to be distributed |
-
-### IncentiveEnded
-
-```solidity
- event IncentiveEnded(
- bytes32 incentiveId,
- uint256 refund
- )
-```
-
-Event that can be emitted when a liquidity mining incentive has ended
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :----------------------------------- |
-| `incentiveId` | bytes32 | The incentive which is ending |
-| `refund` | uint256 | The amount of reward tokens refunded |
-
-### DepositTransferred
-
-```solidity
- event DepositTransferred(
- uint256 tokenId,
- address oldOwner,
- address newOwner
- )
-```
-
-Emitted when ownership of a deposit changes
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------- | :------ | :---------------------------------------------------------- |
-| `tokenId` | uint256 | The ID of the deposit (and token) that is being transferred |
-| `oldOwner` | address | The owner before the deposit was transferred |
-| `newOwner` | address | The owner after the deposit was transferred |
-
-### TokenStaked
-
-```solidity
- event TokenStaked(
- uint256 tokenId,
- bytes32 liquidity,
- uint128 incentiveId
- )
-```
-
-Event emitted when a t1 V3 LP token has been staked
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :---------------------------------------------- |
-| `tokenId` | uint256 | The unique identifier of an t1 V3 LP token |
-| `liquidity` | bytes32 | The amount of liquidity staked |
-| `incentiveId` | uint128 | The incentive in which the token is staking |
-
-### TokenUnstaked
-
-```solidity
- event TokenUnstaked(
- uint256 tokenId,
- bytes32 incentiveId
- )
-```
-
-Event emitted when a t1 V3 LP token has been unstaked
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------ | :------ | :---------------------------------------------- |
-| `tokenId` | uint256 | The unique identifier of an t1 V3 LP token |
-| `incentiveId` | bytes32 | The incentive in which the token is staking |
-
-### RewardClaimed
-
-```solidity
- event RewardClaimed(
- address to,
- uint256 reward
- )
-```
-
-Event emitted when a reward token has been claimed
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------- | :------ | :--------------------------------------------- |
-| `to` | address | The address where claimed rewards were sent to |
-| `reward` | uint256 | The amount of reward tokens claimed |
diff --git a/docs/contracts/v3/reference/periphery/staker/interfaces/_category_.json b/docs/contracts/v3/reference/periphery/staker/interfaces/_category_.json
deleted file mode 100644
index be0ed47ce..000000000
--- a/docs/contracts/v3/reference/periphery/staker/interfaces/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Interfaces",
- "position": 3
-}
diff --git a/docs/contracts/v3/reference/periphery/staker/libraries/IncentiveId.md b/docs/contracts/v3/reference/periphery/staker/libraries/IncentiveId.md
deleted file mode 100644
index 4dbb37b40..000000000
--- a/docs/contracts/v3/reference/periphery/staker/libraries/IncentiveId.md
+++ /dev/null
@@ -1,23 +0,0 @@
-## Functions
-
-### compute
-
-```solidity
- function compute(
- struct IUniswapV3Staker.IncentiveKey key
- ) internal pure returns (bytes32 incentiveId)
-```
-
-Calculate the key for a staking incentive
-
-#### Parameters:
-
-| Name | Type | Description |
-| :---- | :----------------------------------- | :------------------------------------------------------ |
-| `key` | struct IUniswapV3Staker.IncentiveKey | The components used to compute the incentive identifier |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------ | :------ | :------------------------------- |
-| `incentiveId` | bytes32 | The identifier for the incentive |
diff --git a/docs/contracts/v3/reference/periphery/staker/libraries/NFTPositionInfo.md b/docs/contracts/v3/reference/periphery/staker/libraries/NFTPositionInfo.md
deleted file mode 100644
index a53c4f9c5..000000000
--- a/docs/contracts/v3/reference/periphery/staker/libraries/NFTPositionInfo.md
+++ /dev/null
@@ -1,30 +0,0 @@
-Encapsulates the logic for getting info about a NFT token ID
-
-## Functions
-
-### getPositionInfo
-
-```solidity
- function getPositionInfo(
- contract IUniswapV3Factory factory,
- contract INonfungiblePositionManager nonfungiblePositionManager,
- uint256 tokenId
- ) internal view returns (contract IUniswapV3Pool pool, int24 tickLower, int24 tickUpper, uint128 liquidity)
-```
-
-#### Parameters:
-
-| Name | Type | Description |
-| :--------------------------- | :----------------------------------- | :----------------------------------------------------------------------- |
-| `factory` | contract IUniswapV3Factory | The address of the t1 V3 Factory used in computing the pool address |
-| `nonfungiblePositionManager` | contract INonfungiblePositionManager | The address of the nonfungible position manager to query |
-| `tokenId` | uint256 | The unique identifier of an t1 V3 LP token |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :---------- | :------------- | :---------------------------------------- |
-| `pool` | IUniswapV3Pool | The address of the t1 V3 pool |
-| `tickLower` | int24 | The lower tick of the t1 V3 position |
-| `tickUpper` | int24 | The upper tick of the t1 V3 position |
-| `liquidity` | uint128 | The amount of liquidity staked |
diff --git a/docs/contracts/v3/reference/periphery/staker/libraries/RewardMath.md b/docs/contracts/v3/reference/periphery/staker/libraries/RewardMath.md
deleted file mode 100644
index 3c5b38638..000000000
--- a/docs/contracts/v3/reference/periphery/staker/libraries/RewardMath.md
+++ /dev/null
@@ -1,40 +0,0 @@
-Allows computing rewards given some parameters of stakes and incentives
-
-## Functions
-
-### computeRewardAmount
-
-```solidity
- function computeRewardAmount(
- uint256 totalRewardUnclaimed,
- uint160 totalSecondsClaimedX128,
- uint256 startTime,
- uint256 endTime,
- uint128 liquidity,
- uint160 secondsPerLiquidityInsideInitialX128,
- uint160 secondsPerLiquidityInsideX128,
- uint256 currentTime
- ) internal pure returns (uint256 reward, uint160 secondsInsideX128)
-```
-
-Compute the amount of rewards owed given parameters of the incentive and stake
-
-#### Parameters:
-
-| Name | Type | Description |
-| :------------------------------------- | :------ | :---------------------------------------------------------------------------------------------------- |
-| `totalRewardUnclaimed` | uint256 | The total amount of unclaimed rewards left for an incentive |
-| `totalSecondsClaimedX128` | uint160 | How many full liquidity-seconds have been already claimed for the incentive |
-| `startTime` | uint256 | When the incentive rewards began in epoch seconds |
-| `endTime` | uint256 | When rewards are no longer being dripped out in epoch seconds |
-| `liquidity` | uint128 | The amount of liquidity, assumed to be constant over the period over which the snapshots are measured |
-| `secondsPerLiquidityInsideInitialX128` | uint160 | The seconds per liquidity of the liquidity tick range as of the beginning of the period |
-| `secondsPerLiquidityInsideX128` | uint160 | The seconds per liquidity of the liquidity tick range as of the current block timestamp |
-| `currentTime` | uint256 | The current block timestamp, which must be greater than or equal to the start time |
-
-#### Return Values:
-
-| Name | Type | Description |
-| :------------------ | :------ | :------------------------------------------------------------------------------------ |
-| `reward` | uint256 | The amount of rewards owed |
-| `secondsInsideX128` | uint160 | The total liquidity seconds inside the position's range for the duration of the stake |
diff --git a/docs/contracts/v3/reference/periphery/staker/libraries/_category_.json b/docs/contracts/v3/reference/periphery/staker/libraries/_category_.json
deleted file mode 100644
index 9528f7412..000000000
--- a/docs/contracts/v3/reference/periphery/staker/libraries/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Libraries",
- "position": 4
-}
diff --git a/docs/contracts/v3/reference/periphery/test/Base64Test.md b/docs/contracts/v3/reference/periphery/test/Base64Test.md
deleted file mode 100644
index b87e8e37e..000000000
--- a/docs/contracts/v3/reference/periphery/test/Base64Test.md
+++ /dev/null
@@ -1,15 +0,0 @@
-## Functions
-
-### encode
-
-```solidity
- function encode(
- ) external returns (string)
-```
-
-### getGasCostOfEncode
-
-```solidity
- function getGasCostOfEncode(
- ) external returns (uint256)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/LiquidityAmountsTest.md b/docs/contracts/v3/reference/periphery/test/LiquidityAmountsTest.md
deleted file mode 100644
index a72bbd957..000000000
--- a/docs/contracts/v3/reference/periphery/test/LiquidityAmountsTest.md
+++ /dev/null
@@ -1,85 +0,0 @@
-## Functions
-
-### getLiquidityForAmount0
-
-```solidity
- function getLiquidityForAmount0(
- ) external returns (uint128 liquidity)
-```
-
-### getGasCostOfGetLiquidityForAmount0
-
-```solidity
- function getGasCostOfGetLiquidityForAmount0(
- ) external returns (uint256)
-```
-
-### getLiquidityForAmount1
-
-```solidity
- function getLiquidityForAmount1(
- ) external returns (uint128 liquidity)
-```
-
-### getGasCostOfGetLiquidityForAmount1
-
-```solidity
- function getGasCostOfGetLiquidityForAmount1(
- ) external returns (uint256)
-```
-
-### getLiquidityForAmounts
-
-```solidity
- function getLiquidityForAmounts(
- ) external returns (uint128 liquidity)
-```
-
-### getGasCostOfGetLiquidityForAmounts
-
-```solidity
- function getGasCostOfGetLiquidityForAmounts(
- ) external returns (uint256)
-```
-
-### getAmount0ForLiquidity
-
-```solidity
- function getAmount0ForLiquidity(
- ) external returns (uint256 amount0)
-```
-
-### getGasCostOfGetAmount0ForLiquidity
-
-```solidity
- function getGasCostOfGetAmount0ForLiquidity(
- ) external returns (uint256)
-```
-
-### getAmount1ForLiquidity
-
-```solidity
- function getAmount1ForLiquidity(
- ) external returns (uint256 amount1)
-```
-
-### getGasCostOfGetAmount1ForLiquidity
-
-```solidity
- function getGasCostOfGetAmount1ForLiquidity(
- ) external returns (uint256)
-```
-
-### getAmountsForLiquidity
-
-```solidity
- function getAmountsForLiquidity(
- ) external returns (uint256 amount0, uint256 amount1)
-```
-
-### getGasCostOfGetAmountsForLiquidity
-
-```solidity
- function getGasCostOfGetAmountsForLiquidity(
- ) external returns (uint256)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/MockTimeNonfungiblePositionManager.md b/docs/contracts/v3/reference/periphery/test/MockTimeNonfungiblePositionManager.md
deleted file mode 100644
index c99ffb9cc..000000000
--- a/docs/contracts/v3/reference/periphery/test/MockTimeNonfungiblePositionManager.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### \_blockTimestamp
-
-```solidity
- function _blockTimestamp(
- ) internal returns (uint256)
-```
-
-### setTime
-
-```solidity
- function setTime(
- ) external
-```
diff --git a/docs/contracts/v3/reference/periphery/test/MockTimeSwapRouter.md b/docs/contracts/v3/reference/periphery/test/MockTimeSwapRouter.md
deleted file mode 100644
index c99ffb9cc..000000000
--- a/docs/contracts/v3/reference/periphery/test/MockTimeSwapRouter.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### \_blockTimestamp
-
-```solidity
- function _blockTimestamp(
- ) internal returns (uint256)
-```
-
-### setTime
-
-```solidity
- function setTime(
- ) external
-```
diff --git a/docs/contracts/v3/reference/periphery/test/NFTDescriptorTest.md b/docs/contracts/v3/reference/periphery/test/NFTDescriptorTest.md
deleted file mode 100644
index 0d3c4a523..000000000
--- a/docs/contracts/v3/reference/periphery/test/NFTDescriptorTest.md
+++ /dev/null
@@ -1,78 +0,0 @@
-## Functions
-
-### constructTokenURI
-
-```solidity
- function constructTokenURI(
- ) public returns (string)
-```
-
-### getGasCostOfConstructTokenURI
-
-```solidity
- function getGasCostOfConstructTokenURI(
- ) public returns (uint256)
-```
-
-### tickToDecimalString
-
-```solidity
- function tickToDecimalString(
- ) public returns (string)
-```
-
-### fixedPointToDecimalString
-
-```solidity
- function fixedPointToDecimalString(
- ) public returns (string)
-```
-
-### feeToPercentString
-
-```solidity
- function feeToPercentString(
- ) public returns (string)
-```
-
-### addressToString
-
-```solidity
- function addressToString(
- ) public returns (string)
-```
-
-### generateSVGImage
-
-```solidity
- function generateSVGImage(
- ) public returns (string)
-```
-
-### tokenToColorHex
-
-```solidity
- function tokenToColorHex(
- ) public returns (string)
-```
-
-### sliceTokenHex
-
-```solidity
- function sliceTokenHex(
- ) public returns (uint256)
-```
-
-### rangeLocation
-
-```solidity
- function rangeLocation(
- ) public returns (string, string)
-```
-
-### isRare
-
-```solidity
- function isRare(
- ) public returns (bool)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/PathTest.md b/docs/contracts/v3/reference/periphery/test/PathTest.md
deleted file mode 100644
index 9b8a41975..000000000
--- a/docs/contracts/v3/reference/periphery/test/PathTest.md
+++ /dev/null
@@ -1,36 +0,0 @@
-## Functions
-
-### hasMultiplePools
-
-```solidity
- function hasMultiplePools(
- ) public returns (bool)
-```
-
-### decodeFirstPool
-
-```solidity
- function decodeFirstPool(
- ) public returns (address tokenA, address tokenB, uint24 fee)
-```
-
-### getFirstPool
-
-```solidity
- function getFirstPool(
- ) public returns (bytes)
-```
-
-### skipToken
-
-```solidity
- function skipToken(
- ) public returns (bytes)
-```
-
-### getGasCostOfDecodeFirstPool
-
-```solidity
- function getGasCostOfDecodeFirstPool(
- ) public returns (uint256)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/PeripheryImmutableStateTest.md b/docs/contracts/v3/reference/periphery/test/PeripheryImmutableStateTest.md
deleted file mode 100644
index f13713d42..000000000
--- a/docs/contracts/v3/reference/periphery/test/PeripheryImmutableStateTest.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
diff --git a/docs/contracts/v3/reference/periphery/test/PoolAddressTest.md b/docs/contracts/v3/reference/periphery/test/PoolAddressTest.md
deleted file mode 100644
index 6f3849cd2..000000000
--- a/docs/contracts/v3/reference/periphery/test/PoolAddressTest.md
+++ /dev/null
@@ -1,22 +0,0 @@
-## Functions
-
-### POOL_INIT_CODE_HASH
-
-```solidity
- function POOL_INIT_CODE_HASH(
- ) external returns (bytes32)
-```
-
-### computeAddress
-
-```solidity
- function computeAddress(
- ) external returns (address)
-```
-
-### getGasCostOfComputeAddress
-
-```solidity
- function getGasCostOfComputeAddress(
- ) external returns (uint256)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/SelfPermitTest.md b/docs/contracts/v3/reference/periphery/test/SelfPermitTest.md
deleted file mode 100644
index c7032bc09..000000000
--- a/docs/contracts/v3/reference/periphery/test/SelfPermitTest.md
+++ /dev/null
@@ -1 +0,0 @@
-Same as SelfPermit but not abstract
diff --git a/docs/contracts/v3/reference/periphery/test/TestCallbackValidation.md b/docs/contracts/v3/reference/periphery/test/TestCallbackValidation.md
deleted file mode 100644
index 86a95722a..000000000
--- a/docs/contracts/v3/reference/periphery/test/TestCallbackValidation.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## Functions
-
-### verifyCallback
-
-```solidity
- function verifyCallback(
- ) external returns (contract IUniswapV3Pool pool)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/TestERC20.md b/docs/contracts/v3/reference/periphery/test/TestERC20.md
deleted file mode 100644
index f13713d42..000000000
--- a/docs/contracts/v3/reference/periphery/test/TestERC20.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
diff --git a/docs/contracts/v3/reference/periphery/test/TestERC20Metadata.md b/docs/contracts/v3/reference/periphery/test/TestERC20Metadata.md
deleted file mode 100644
index f13713d42..000000000
--- a/docs/contracts/v3/reference/periphery/test/TestERC20Metadata.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
diff --git a/docs/contracts/v3/reference/periphery/test/TestERC20PermitAllowed.md b/docs/contracts/v3/reference/periphery/test/TestERC20PermitAllowed.md
deleted file mode 100644
index 740ae6369..000000000
--- a/docs/contracts/v3/reference/periphery/test/TestERC20PermitAllowed.md
+++ /dev/null
@@ -1,15 +0,0 @@
-## Functions
-
-### constructor
-
-```solidity
- function constructor(
- ) public
-```
-
-### permit
-
-```solidity
- function permit(
- ) external
-```
diff --git a/docs/contracts/v3/reference/periphery/test/TestMulticall.md b/docs/contracts/v3/reference/periphery/test/TestMulticall.md
deleted file mode 100644
index 4edbc466f..000000000
--- a/docs/contracts/v3/reference/periphery/test/TestMulticall.md
+++ /dev/null
@@ -1,29 +0,0 @@
-## Functions
-
-### functionThatRevertsWithError
-
-```solidity
- function functionThatRevertsWithError(
- ) external
-```
-
-### functionThatReturnsTuple
-
-```solidity
- function functionThatReturnsTuple(
- ) external returns (struct TestMulticall.Tuple tuple)
-```
-
-### pays
-
-```solidity
- function pays(
- ) external
-```
-
-### returnSender
-
-```solidity
- function returnSender(
- ) external returns (address)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/TestPositionNFTOwner.md b/docs/contracts/v3/reference/periphery/test/TestPositionNFTOwner.md
deleted file mode 100644
index 673a5704d..000000000
--- a/docs/contracts/v3/reference/periphery/test/TestPositionNFTOwner.md
+++ /dev/null
@@ -1,15 +0,0 @@
-## Functions
-
-### setOwner
-
-```solidity
- function setOwner(
- ) external
-```
-
-### isValidSignature
-
-```solidity
- function isValidSignature(
- ) external returns (bytes4 magicValue)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/TestUniswapV3Callee.md b/docs/contracts/v3/reference/periphery/test/TestUniswapV3Callee.md
deleted file mode 100644
index efdc0d240..000000000
--- a/docs/contracts/v3/reference/periphery/test/TestUniswapV3Callee.md
+++ /dev/null
@@ -1,36 +0,0 @@
-## Functions
-
-### swapExact0For1
-
-```solidity
- function swapExact0For1(
- ) external
-```
-
-### swap0ForExact1
-
-```solidity
- function swap0ForExact1(
- ) external
-```
-
-### swapExact1For0
-
-```solidity
- function swapExact1For0(
- ) external
-```
-
-### swap1ForExact0
-
-```solidity
- function swap1ForExact0(
- ) external
-```
-
-### uniswapV3SwapCallback
-
-```solidity
- function uniswapV3SwapCallback(
- ) external
-```
diff --git a/docs/contracts/v3/reference/periphery/test/TickLensTest.md b/docs/contracts/v3/reference/periphery/test/TickLensTest.md
deleted file mode 100644
index 8d71124d6..000000000
--- a/docs/contracts/v3/reference/periphery/test/TickLensTest.md
+++ /dev/null
@@ -1,8 +0,0 @@
-## Functions
-
-### getGasCostOfGetPopulatedTicksInWord
-
-```solidity
- function getGasCostOfGetPopulatedTicksInWord(
- ) external returns (uint256)
-```
diff --git a/docs/contracts/v3/reference/periphery/test/_category_.json b/docs/contracts/v3/reference/periphery/test/_category_.json
deleted file mode 100644
index 8312720c4..000000000
--- a/docs/contracts/v3/reference/periphery/test/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Test",
- "position": 4
-}
diff --git a/docs/contracts/v4/_category_.json b/docs/contracts/v4/_category_.json
deleted file mode 100644
index 93b9edc84..000000000
--- a/docs/contracts/v4/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "V4 Protocol",
- "position": 1,
- "collapsed": false
-}
diff --git a/docs/contracts/v4/concepts/01-v4-vs-v3.mdx b/docs/contracts/v4/concepts/01-v4-vs-v3.mdx
deleted file mode 100644
index 717158909..000000000
--- a/docs/contracts/v4/concepts/01-v4-vs-v3.mdx
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: V4 vs V3
----
-
-While Uniswap v4's underlying concentrated liquidity is the same as Uniswap v3,
-there are some key differences in the architecture and accounting.
-
-# Singleton Design
-
-### Pool Creation
-
-**V4**: The singleton contract facilitates the creation of a pool and
-also stores its state. This pattern reduces costs when creating a pool
-and doing multi-hop swaps. Because pools are _contract state_ and not entirely new _contracts_ themselves, pool creation is significantly cheaper.
-
-**V3**: A factory contract is responsible for pool creation. The pool is
-a separate contract instance that manages its own state. Pool initialization
-is costly because contract creation is gas-intensive
-
-### Flash Accounting
-
-**V4**: The singleton uses _flash accounting_, meaning a caller that unlocks the PoolManager
-is allowed to cause balance-changing operations (multiple swaps, multiple liquidity modifications, etc)
-and only needs to perform token transfers at the very end of the sequence.
-
-**V3**: Because flash accounting is missing from V3, it is the responsibility
-of the integrating contract to perform token transfers, after each individual call, to each individual pool contract
-
-# Liquidity Fee Accounting
-
-**V4**: Accrued fees act like a credit when modifying liquidity.
-Increasing liquidity will convert the fee revenue to liquidity
-inside the position while decreasing liquidity will automatically
-require the withdrawal of unclaimed fee revenue.
-
-An additional parameter _salt_ can be provided when creating liquidity. The
-_salt_ is used to distinguish positions of the same range on the same pool.
-This separation may be preferred to simplify fee accounting. If two users share the same
-range and state in `PoolManager`, integrating contracts must be careful in managing
-fees
-
-**V3**: Liquidity positions of the same range and pool will share the same state. While believed to
-be more gas efficient at the time, integrating contracts will need to handle fee management since
-the state is shared on the core pool contract
-
-# Native ETH
-
-**V4**: Pool pairs support native tokens, in doing so ETH swappers and
-liquidity providers benefit from gas cost reductions from cheaper
-transfers and removal of additional wrapping costs.
-
-**V3**: ETH needs to be wrapped first before being paired with other tokens.
-This results in higher gas costs because of wrapping and transferring
-a wrapped native token.
-
-# Subscribers
-
-Only V4: Owners can now set a subscriber for their positions.
-A subscriber contract will get notified every time the position's liquidity
-or owner changes. Subscribers enable staking / liquidity-mining, but users do not need
-to transfer their ERC-721 token.
-
-**V3**: Staking in v3 requires users to transfer their ERC-721 token to a contract, putting the underlying assets at risk for malicious behavior.
\ No newline at end of file
diff --git a/docs/contracts/v4/concepts/02-flash-accounting.mdx b/docs/contracts/v4/concepts/02-flash-accounting.mdx
deleted file mode 100644
index cf7dc661b..000000000
--- a/docs/contracts/v4/concepts/02-flash-accounting.mdx
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: Flash Accounting
----
-
-# Flash Accounting
-
-In previous versions of Uniswap, every time a swap was made - including multi-hop swap - tokens were transferred between Pool contracts for intermediate steps.
-
-This design incurred inefficiencies because transferring tokens with external calls to their smart contracts - especially in a multi-hop swap - is quite expensive. This design was required since each pool was its own contract and token transfers were required to maintain accounting and solvency
-
-With the singleton architecture, a better design was possible and is referred to as _Flash Accounting_. The design became practical with gas efficiencies of [Transient Storage](https://eips.ethereum.org/EIPS/eip-1153). _Flash Accounting_ further reduces the gas cost of trades that cross multiple pools and supports more complex integrations with Uniswap v4.
-
-With _flash accounting_, each balance-changing operation (e.g. swap and liquidity modification) updates an internal net balance known as `delta`. Only the final balance-changes require token transfers.
-
-## Deltas
-
-### Locking
-
-To ensure correctness and atomicity in complex operations like a multi-hop swap - v4 uses a locking mechanism. Anytime key actions need to take place within the `PoolManager` - e.g. swaps and liquidity modification - a periphery contract must `unlock` the `PoolManager` first. Then integrators implement the `unlockCallback` and proceed with any of the following actions on the pools:
-
-- swap
-- modifyLiquidity
-- donate
-- take
-- settle
-- mint
-- burn
-- sync
-
-Note that pool initialization can happen outside the context of unlocking the `PoolManager`, as there are no balance-changing operations associated with pool creation.
-
-### Balance Delta
-
-Inside `unlockCallback`, a periphery contract performs balance-changing operations i.e. conduct swaps, modify positions, etc. After returning execution context back to `PoolManager`, the core contract checks that balances are resolved - nothing is owed to or from the `PoolManager`.
-
-The balances resolved above is what we refer as the `delta`, a field held in the _transient_ state. The value(s) represent the _debts_ and _credits_ of assets owed to or from the `PoolManager`.
-
-
-## Swapping
-
-
-
-As shown in the above diagram, for example - let's say you wanted to swap `ETH` for `DAI`. Assuming this requires a multi-hop swap going from `ETH` to `USDC` and then from `USDC` to `DAI`.
-
-### Previously on v3
-
-1. `ETH` is transferred to `ETH <> USDC` pool contract
-
-2. `USDC` is withdrawn from `ETH <> USDC` contract and transferred to `USDC <> DAI` contract
-
-3. `DAI` is withdrawn from `USDC <> DAI` contract and transferred to the user
-
-### Now on v4
-
-1. Call `swap()` on `ETH <> USDC`
-
-2. Call `swap()` on `USDC <> DAI`, with the credit of USDC from above being used as the input amount
-
-4. User _resolves deltas_ by paying ETH and receiving DAI
-
-Therefore we can skip the step of actually calling `transfer()` on the USDC contract.
-
-The optimization scales infinitely, any number of arbitrary hops only requires two token transfers - input and output tokens.
-
-## Liquidity Management
-
-The optimization becomes more evident for complex liquidity operations
-
-For example, a user wanted to add liquidity to `ETH <> DAI` but does not have DAI. The user can swap some `ETH` to `DAI` in order to add liquidity with both tokens. In addition, the user can multi-hop swap going from `ETH` to `USDC` to `DAI`. If properly integrated, the user would only need to transfer ETH _once_.
-
-
-## Developer resources
-To see how unlock callback and delta work in a smart contract read [Unlock Callback & Deltas](/contracts/v4/guides/unlock-callback).
\ No newline at end of file
diff --git a/docs/contracts/v4/concepts/03-erc6909.mdx b/docs/contracts/v4/concepts/03-erc6909.mdx
deleted file mode 100644
index 3a7b14674..000000000
--- a/docs/contracts/v4/concepts/03-erc6909.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: ERC-6909
----
-
-Uniswap v4 uses [ERC-6909](https://eips.ethereum.org/EIPS/eip-6909) to further improve gas-efficiency on token claims and redemptions.
-
-ERC-6909 is a minimal and gas-efficient standard for managing multiple ERC-20 tokens from a single contract. It provides a simplified alternative to the more complex ERC-1155 multi-token standard.
-
-### ERC-6909 vs ERC-1155
-
-ERC-6909 offers several advantages over ERC-1155:
-1. Simplified interface: ERC-6909 removes unnecessary safe transfer callbacks and batching constraints presented in ERC-1155.
-2. Improved transfer delegation: ERC-6909 provides a more efficient system for transfer delegation.
-3. Gas efficiency: ERC-6909 reduces gas costs for deployment, transfers, and burning operations.
-4. Reduced code size: Implementing ERC-6909 results in smaller contract sizes compared to ERC-1155.
-
-However, it's worth noting that ERC-6909 does introduce a `totalSupply` variable, which leads to an additional disk write on mint and burn operations.
-
-# How it works
-
-Instead of choosing to move tokens in/out of the `PoolManager`, developers can opt-in and leave the ERC-20 tokens within the `PoolManager`. In exchange, the `PoolManager` can **mint them an ERC-6909 token representing their claim**. In subsequent interactions requiring _paying_ tokens, users will not need to transfer ERC-20 tokens into the `PoolManager` - users can simply _burn_ some (or all) of their claim tokens they have
-
-
-Doing _real_ ERC-20 token transfers requires calls to external smart contracts - incurring gas overhead compared to internal accounting. Secondly, these external smart contracts have their own custom logic within their `transfer` functions - for example USDC's blocked-address list - which is a further gas overhead. Thus, minting and burning ERC-6909 tokens are more gas-efficient because they don't require external function calls and have a constant-size gas overhead regardless of the underlying ERC-20 token.
-
-This mechanism therefore helps further reduce gas costs. All these gas cost reductions overall make pools much more competitive based on the fees they charge.
-
-# Examples
-
-## High-frequency traders / MEV bots
-
-These users are often conducting a lot of swaps in relatively short durations of time, while staying within the Uniswap Protocol. These power-users can trade using ERC-6909 tokens for improved gas-efficiency.
-
-
-## Liquidity management
-
-ERC-6909 does not only benefit swappers. For power-users that may be opening and closing liquidity positions frequently, liquidity managers can opt-in and receive their capital as ERC-6909.
-
-
-
-
diff --git a/docs/contracts/v4/concepts/04-hooks.mdx b/docs/contracts/v4/concepts/04-hooks.mdx
deleted file mode 100644
index 23d392c3a..000000000
--- a/docs/contracts/v4/concepts/04-hooks.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: Hooks
----
-
-Uniswap V4 introduces Hooks, a system that allows developers to customize and extend the behavior of liquidity pools.
-
-Hooks are external smart contracts that can be attached to individual pools. Every pool can have one hook but a hook can serve an infinite amount of pools to intercept and modify the execution flow at specific points during pool-related actions.
-
-## Key Concepts
-
-### Pool-Specific Hooks
-
-- Each liquidity pool in Uniswap V4 can have its own hook contract attached to it. Hooks are optional for Uniswap V4 pools.
-- The hook contract is specified when creating a new pool in the `PoolManager.initialize` function.
-- Having pool-specific hooks allows for fine-grained control and customization of individual pools.
-
-## Core Hook Functions
-
-Uniswap V4 provides a set of core hook functions that can be implemented by developers. Developers do not have to implement every hook, you can mix&match them to whatever your liking is. You can use one or all of them!
-
-- Hook contracts specify the permissions that determine which hook functions they implement, which is encoded in the address of the contract.
-- The `PoolManager` uses these permissions to determine which hook functions to call for a given pool based on its Key.
-
-### Initialize Hooks
-
-- `beforeInitialize`: Called before a new pool is initialized.
-- `afterInitialize`: Called after a new pool is initialized.
-- These hooks allow developers to perform custom actions or validations during pool initialization, but these hooks can only be invoked once.
-
-### Liquidity Modification Hooks
-
-The liquidity modification hooks are extremely granular for security purposes.
-
-- `beforeAddLiquidity`: Called before liquidity is added to a pool.
-- `afterAddLiquidity`: Called after liquidity is added to a pool.
-- `beforeRemoveLiquidity`: Called before liquidity is removed from a pool.
-- `afterRemoveLiquidity`: Called after liquidity is removed from a pool.
-
-### Swap Hooks
-
-- `beforeSwap`: Called before a swap is executed in a pool.
-- `afterSwap`: Called after a swap is executed in a pool.
-
-### Donate Hooks
-
-- `beforeDonate`: Called before a donation is made to a pool.
-- `afterDonate`: Called after a donation is made to a pool.
-- Donate hooks provide a way to customize the behavior of token donations to liquidity providers.
-
-## Innovation and Potential
-
-The introduction of hooks in Uniswap V4 opens up a world of possibilities for developers to innovate and build new DeFi protocols. Some potential use cases include:
-
-- Customized AMMs with different pricing curves than xy = k.
-- Yield farming and liquidity mining protocols that incentivize liquidity provision.
-- Derivative and synthetic asset platforms built on top of Uniswap V4 liquidity.
-- Lending hooks integrated with Uniswap V4 pools.
-
-As a hook developer you can easily bootstrap the codebase of an entirely new DeFi protocol through hook designs, which subsequently drives down your audit costs and allows you to develop faster. However, it's important to note that just because you made a hook, that does not mean you will get liquidity routed to your hook from the Uniswap frontend.
diff --git a/docs/contracts/v4/concepts/05-subscribers.mdx b/docs/contracts/v4/concepts/05-subscribers.mdx
deleted file mode 100644
index 84ed32152..000000000
--- a/docs/contracts/v4/concepts/05-subscribers.mdx
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Subscribers
----
-
-Subscribers, new in Uniswap v4, allow for liquidity-position owners to opt-in to a contract that receives _notifications_.
-The new design is intended to support _liquidity mining_, additional rewards given to in-range liquidity providers. Through notification logic, position owners do not need
-to risk their liquidity position and its underlying assets. In Uniswap v3, _liquidity mining_ was supported by fully transferring the
-liquidity position to an external contract; this old design would give the external contract full ownership and control of the liquidity position.
-
-When a position owner _subscribes_ to a contract, the contract will receive notifcations when:
-
-* The position is initially subscribed
-
-* The position increases or decreases its liquidity
-
-* The position is transferred
-
-* The position is unsubscribed
-
diff --git a/docs/contracts/v4/concepts/06-PoolManager.mdx b/docs/contracts/v4/concepts/06-PoolManager.mdx
deleted file mode 100644
index 660ed8ae3..000000000
--- a/docs/contracts/v4/concepts/06-PoolManager.mdx
+++ /dev/null
@@ -1,87 +0,0 @@
----
-title: PoolManager
----
-
-In Uniswap V3, each liquidity pool was represented by a separate smart contract deployed through the UniswapV3Factory contract. While this approach provided flexibility, it also led to increased gas costs for pool creation and multi-hop swaps.
-
-Uniswap V4 addresses this issue by introducing the Singleton design pattern. The PoolManager contract now serves as a single entry point for all liquidity pools. Instead of deploying separate contracts for each pool, the pool state and logic are encapsulated within the PoolManager itself.
-
-# Purpose
-
-The primary purpose of the `PoolManager` is to:
-
-- Efficiently manage liquidity pools
-- Facilitate token swaps
-- Reduce gas costs compared to the factory-based approach in Uniswap V3
-- Enable extensibility through hooks
-
-# Architecture
-
-## Singleton Design
-
-- Uniswap V4 uses a Singleton design pattern for the `PoolManager`
-- All pool state and logic are encapsulated within the `PoolManager` contract
-
-## Locking Mechanism
-
-- The `PoolManager` uses a locking mechanism to allow for _flash accounting_ (also known as deferred balance accounting)
-- When unlocked, the calling contract can perform various operations and zero-out outstanding balances before returning control to the `PoolManager` for final solvency checks
-
-## Pool State
-
-- The `Pool.State` struct contains information such as:
- - Current price
- - Liquidity
- - Tick bitmap
- - Fee growth
- - Position information
-
-## Libraries
-
-- The pool logic is implemented using Solidity libraries to keep the `PoolManager` contract modular and gas-efficient
-- These libraries are:
- - `Pool`: Contains core pool functionality, such as swaps and liquidity management
- - `Hooks`: Handles the execution of hook functions
- - `Position`: Manages liquidity positions within a pool
-
-# Core Functionality
-
-## Pool Creation
-
-- New pools are created by calling the `initialize` function on the `PoolManager`
-- The pool creator specifies the token pair, fee tier, tick spacing, and optional hook contract address
-- The `PoolManager` initializes the pool state and associates it with a unique `PoolId`
-
-## Swaps
-
-- Swaps are initiated through the `swap` function on the `PoolManager`, typically via a swap router contract
-- The `PoolManager` executes the following steps:
- 1. Checks if the pool is valid and initialized
- 2. Executes the `beforeSwap` hook, if applicable
- 3. Performs the actual swap, updating the pool state and charging fees
- 4. Executes the `afterSwap` hook, if applicable
- 5. Calculates the net token amounts owed to the user and the pool, represented by the `BalanceDelta` struct
-- Swaps utilize flash accounting, where tokens are moved into the `PoolManager`, and only the final output tokens are withdrawn
-
-## Liquidity Management
-
-- Liquidity providers can add or remove liquidity using the `modifyLiquidity` function on the `PoolManager`. However, you wouldn't call this directly from your application, you would call this from a periphery contract to handle the locking & unlocking a particular pool.
-- The `PoolManager` executes the following steps:
- 1. Checks if the pool is valid and initialized
- 2. Determines if the modification is an addition or removal of liquidity
- 3. Executes the appropriate `beforeAddLiquidity` or `beforeRemoveLiquidity` hook, if applicable
- 4. Performs the actual liquidity modification and updates the pool state
- 5. Emits the `ModifyLiquidity` event
- 6. Executes the appropriate `afterAddLiquidity` or `afterRemoveLiquidity` hook, if applicable
- 7. Calculates the balance delta and returns it to the caller
-
-## Flash Accounting
-
-- The `PoolManager` employs flash accounting to reduce gas costs and simplify multi-hop swaps
-- Tokens are moved into the `PoolManager` contract, and all subsequent actions are performed within the contract's context
-- Only the final output tokens are withdrawn from the `PoolManager` at the end of the transaction
-
-# Transient Storage
-
-- The `PoolManager` utilizes transient storage (EIP-1153) to store temporary data during complex operations
-- Transient storage reduces gas costs by avoiding regular storage operations for data only needed within a single transaction
\ No newline at end of file
diff --git a/docs/contracts/v4/concepts/07-dynamic-fees.mdx b/docs/contracts/v4/concepts/07-dynamic-fees.mdx
deleted file mode 100644
index 842eb2172..000000000
--- a/docs/contracts/v4/concepts/07-dynamic-fees.mdx
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: Dynamic Fees
----
-
-Uniswap v4 introduces dynamic fees, allowing for flexible and responsive fee structures managed through hooks. This feature enables pools to adapt fees to changing market conditions, potentially improving liquidity provider profitability and overall market efficiency.
-
-# What are Dynamic Fees?
-
-Dynamic fees in Uniswap v4 are a specific type of swap fee paid by swappers that directly accrue to liquidity providers. These fees are distinct from protocol fees and hook fees (Optional fees that can be implemented by custom hooks), and represent a significant advancement over the fee structures in previous Uniswap versions.
-
-Unlike the static fee tiers in Uniswap v3 (0.05%, 0.30%, 1.0%) or the single fee in v2, dynamic fees in v4 offer much more flexibility. Dynamic fees can:
-
-- Adjust in real-time based on various market conditions
-- Change on a per-swap basis
-- Allow for any fee percentage (e.g., 4.9 bips, 10 bips)
-- Be updated at various intervals (yearly, per block, or per transaction)
-
-This dynamic nature allows for more efficient fee pricing, potentially benefiting both liquidity providers and traders by adapting to current market conditions. By allowing fees to fluctuate based on market dynamics, Uniswap v4 aims to optimize liquidity provision and trading across a wide range of market scenarios.
-
-# Motivation and Benefits of Dynamic Fees
-
-1. **Improved Pricing of Volatility:** Adapt fees to market volatility, similar to traditional exchanges adjusting bid-ask spreads.
-2. **Order Flow Discrimination:** Price different types of trades (e.g., arbitrage vs. uninformed) more accurately.
-3. **Improved Market Efficiency and Stability:** Fees can adjust to reflect real-time market conditions, optimizing for both liquidity providers and traders. Dynamic fees could help dampen extreme market movements by adjusting incentives in real-time.
-4. **Enhanced Capital Efficiency and Liquidity Provider Returns:** By optimizing fees, pools can attract more liquidity and facilitate more efficient trading. More accurate fee pricing could lead to better returns for liquidity providers, potentially attracting more capital to pools.
-5. **Better Risk Management:** During high volatility, fees can increase to protect liquidity providers from impermanent loss.
-6. **Customizable Strategies:** Enable complex fee strategies for specific token pairs or market segments.
-
-# Dynamic Fees Use Cases
-
-1. **Volatility-Based Fees:** Adjust fees based on the historical or realized volatility of the asset pair.
-2. **Volume-Based Fees:** Lower fees during high-volume periods to attract more trades, and increase fees during low-volume periods to compensate liquidity providers.
-3. **Time-Based Fees:** Implement different fee structures for different times of day or days of the week, based on historical trading patterns.
-4. **Market Depth-Based Fees:** Adjust fees based on the current liquidity depth in the pool.
-5. **Cross-Pool Arbitrage Mitigation:** Dynamically adjust fees to discourage harmful arbitrage between different pools or exchanges.
-6. **Gas Price-Responsive Fees:** Adjust fees based on network congestion and gas prices to ensure profitability for liquidity providers.
-7. **Event-Driven Fees:** Implement special fee structures during significant market events or token-specific occurrences.
-8. **Lookback approach:** Set the fee to match the most profitable fee tier of external pools with the same asset pair over a recent period.
-9. **Price oracle approach:** Use an external price oracle to determine the correct asset price and adjust fees based on how trades move the pool price relative to this external price.
-10. **Price momentum approach:** Analyze recent price history and asymmetrically adjust fees based on trade direction.
-11. **Asset composition approach:** Lower fees for trades that balance the pool and higher fees for trades that imbalance it.
-12. **Transaction-source based approach:** Provide lower fees for transactions routed through certain aggregators or sources less likely to be arbitrage trades.
-
-# Dynamic Fees Mechanism
-
-In Uniswap v4, the dynamic fee capability of a pool is determined at pool creation and is immutable. This means that whether a pool uses dynamic fees or not is set when the pool is initially created and cannot be changed afterwards. For pools that do use dynamic fees, Uniswap v4 supports two primary methods for updating the fee:
-
-1. **Periodic Updates via PoolManager:** Fees can be updated by calling the `updateDynamicLPFee` function on the PoolManager contract at specified intervals.
-2. **Per-Swap Updates via beforeSwap Hook:** Fees can be dynamically set for each swap by returning the fee from the `beforeSwap` hook. This allows hooks to override the LP fee for each swap in dynamic fee pools.
-
-These methods offer flexibility in implementing various fee strategies. For more detailed information on implementing these methods, please refer to our [Dynamic Fees Implementation Guide](https://uniswap-docs-staging.vercel.app/documentation/featured-guides/hooks/v4/guides-for-solidity-contracts/dynamic-fee-pools).
-
-# Considerations and Best Practices
-
-- The optimal fee depends on at least two factors: **asset volatility** and **volume of uninformed flow.**
-- For volatile pairs in systems like Uniswap v3, which don't discriminate between flows, low fee-tier pools are only sensible when uninformed flow is large and asset volatility is relatively low.
-- Performance implications of frequent fee updates should be carefully considered.
-- Security measures should be implemented to prevent manipulation of fee-setting mechanisms.
-- Balance responsiveness with gas costs to optimize for both performance and cost-effectiveness.
-
-For more detailed implementation guidance and best practices, refer to our [Dynamic Fees Implementation Guide](https://uniswap-docs-staging.vercel.app/documentation/featured-guides/hooks/v4/guides-for-solidity-contracts/dynamic-fee-pools).
\ No newline at end of file
diff --git a/docs/contracts/v4/concepts/08-integrated-routing-uniswap-x.mdx b/docs/contracts/v4/concepts/08-integrated-routing-uniswap-x.mdx
deleted file mode 100644
index 36e2e2c15..000000000
--- a/docs/contracts/v4/concepts/08-integrated-routing-uniswap-x.mdx
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Integrated Routing with UniswapX
----
-
-The [Uniswap Interface](https://app.uniswap.org) will be ramping up support for hooks in its standard routing system progressively over time. Hook builders looking to get immediate access to flow from the interface can do so by running a UniswapX filler for their hooked pools.
-
-At a high level, hook builders' filler implementations will need to do the following:
-
-1. (On Mainnet) Subscribe to the UniswapX RFQ system and submit fillable bids from orders they receive
-2. Listen to the public feed for orders they won or that are open to be filled publicly
-3. Execute those orders against pools that use their hooks
-
-Developers should check [UniswapX Documentation](/contracts/uniswapx/overview) to get started.
diff --git a/docs/contracts/v4/concepts/_category_.json b/docs/contracts/v4/concepts/_category_.json
deleted file mode 100644
index 6e81e196d..000000000
--- a/docs/contracts/v4/concepts/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Concepts",
- "position": 3,
- "collapsed": true
-}
diff --git a/docs/contracts/v4/deployments.mdx b/docs/contracts/v4/deployments.mdx
deleted file mode 100644
index 5f0d31323..000000000
--- a/docs/contracts/v4/deployments.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: deployments
-title: Deployments
-sidebar_position: 1.1
----
-
-# Uniswap v4 Deployments
-
-Uniswap v4 is NOT live on a production environment yet
-
-However, there are deployments to testnet environments. Please be aware the deployments may not
-be up to date with the latest changes.
-
-For the latest deployments, please see the [foundry artifacts](https://github.com/Uniswap/v4-periphery/tree/main/broadcast)
-
-## Unichain Sepolia: 1301
-
-| Contract | Address |
-|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
-| [PoolManager](https://github.com/Uniswap/v4-core/blob/main/src/PoolManager.sol) | [`0x00b036b58a818b1bc34d502d3fe730db729e62ac`](https://sepolia.uniscan.xyz/address/0x00b036b58a818b1bc34d502d3fe730db729e62ac#code) |
-| [Universal Router](https://github.com/Uniswap/universal-router/blob/dev/contracts/UniversalRouter.sol) | [`0xf70536b3bcc1bd1a972dc186a2cf84cc6da6be5d`](https://sepolia.uniscan.xyz/address/0xf70536b3bcc1bd1a972dc186a2cf84cc6da6be5d#code) |
-| [PositionManager](https://github.com/Uniswap/v4-periphery/blob/main/src/PositionManager.sol) | [`0xf969aee60879c54baaed9f3ed26147db216fd664`](https://sepolia.uniscan.xyz/address/0xf969aee60879c54baaed9f3ed26147db216fd664#code) |
-| [StateView](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/StateView.sol) | [`0xc199f1072a74d4e905aba1a84d9a45e2546b6222`](https://sepolia.uniscan.xyz/address/0xc199f1072a74d4e905aba1a84d9a45e2546b6222#code) |
-| [Quoter](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/V4Quoter.sol) | [`0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472`](https://sepolia.uniscan.xyz/address/0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472#code) |
-| [PoolSwapTest](https://github.com/Uniswap/v4-core/blob/main/src/test/PoolSwapTest.sol) | [`0x9140a78c1a137c7ff1c151ec8231272af78a99a4`](https://sepolia.uniscan.xyz/address/0x9140a78c1a137c7ff1c151ec8231272af78a99a4#code) |
-| [PoolModifyLiquidityTest](https://github.com/Uniswap/v4-core/blob/main/src/test/PoolModifyLiquidityTest.sol) | [`0x5fa728c0a5cfd51bee4b060773f50554c0c8a7ab`](https://sepolia.uniscan.xyz/address/0x5fa728c0a5cfd51bee4b060773f50554c0c8a7ab#code) |
-
-## Sepolia: 11155111
-
-| Contract | Address |
-|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
-| [PoolManager](https://github.com/Uniswap/v4-core/blob/main/src/PoolManager.sol) | [`0xE03A1074c86CFeDd5C142C4F04F1a1536e203543`](https://sepolia.etherscan.io/address/0xE03A1074c86CFeDd5C142C4F04F1a1536e203543#code) |
-| [Universal Router](https://github.com/Uniswap/universal-router/blob/dev/contracts/UniversalRouter.sol) | [`0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b`](https://sepolia.etherscan.io/address/0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b#code) |
-| [PositionManager](https://github.com/Uniswap/v4-periphery/blob/main/src/PositionManager.sol) | [`0x429ba70129df741B2Ca2a85BC3A2a3328e5c09b4`](https://sepolia.etherscan.io/address/0x429ba70129df741B2Ca2a85BC3A2a3328e5c09b4#code) |
-| [StateView](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/StateView.sol) | [`0xe1dd9c3fa50edb962e442f60dfbc432e24537e4c`](https://sepolia.etherscan.io/address/0xe1dd9c3fa50edb962e442f60dfbc432e24537e4c#code) |
-| [Quoter](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/V4Quoter.sol) | [`0x61b3f2011a92d183c7dbadbda940a7555ccf9227`](https://sepolia.etherscan.io/address/0x61b3f2011a92d183c7dbadbda940a7555ccf9227#code) |
-| [PoolSwapTest](https://github.com/Uniswap/v4-core/blob/main/src/test/PoolSwapTest.sol) | [`0x9b6b46e2c869aa39918db7f52f5557fe577b6eee`](https://sepolia.etherscan.io/address/0x9b6b46e2c869aa39918db7f52f5557fe577b6eee#code) |
-| [PoolModifyLiquidityTest](https://github.com/Uniswap/v4-core/blob/main/src/test/PoolModifyLiquidityTest.sol) | [`0x0c478023803a644c94c4ce1c1e7b9a087e411b0a`](https://sepolia.etherscan.io/address/0x0c478023803a644c94c4ce1c1e7b9a087e411b0a#code) |
-
-## Base Sepolia: 84532
-
-| Contract | Address |
-|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
-| [PoolManager](https://github.com/Uniswap/v4-core/blob/main/src/PoolManager.sol) | [`0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408`](https://sepolia.basescan.org/address/0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408#code) |
-| [Universal Router](https://github.com/Uniswap/universal-router/blob/dev/contracts/UniversalRouter.sol) | [`0x3e0267c1ea01a6e89b01c105a7d235b134fd1df4`](https://sepolia.basescan.org/address/0x3e0267c1ea01a6e89b01c105a7d235b134fd1df4#code) |
-| [PositionManager](https://github.com/Uniswap/v4-periphery/blob/main/src/PositionManager.sol) | [`0xda4910cdbbBe7894DE9f62245a6D4e2875671Ef3`](https://sepolia.basescan.org/address/0xda4910cdbbBe7894DE9f62245a6D4e2875671Ef3#code) |
-| [StateView](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/StateView.sol) | [`0x571291b572ed32ce6751a2cb2486ebee8defb9b4`](https://sepolia.basescan.org/address/0x571291b572ed32ce6751a2cb2486ebee8defb9b4#code) |
-| [Quoter](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/V4Quoter.sol) | [`0x4a6513c898fe1b2d0e78d3b0e0a4a151589b1cba`](https://sepolia.basescan.org/address/0x4a6513c898fe1b2d0e78d3b0e0a4a151589b1cba#code) |
-| [PoolSwapTest](https://github.com/Uniswap/v4-core/blob/main/src/test/PoolSwapTest.sol) | [`0x8b5bcc363dde2614281ad875bad385e0a785d3b9`](https://sepolia.basescan.org/address/0x8b5bcc363dde2614281ad875bad385e0a785d3b9#code) |
-| [PoolModifyLiquidityTest](https://github.com/Uniswap/v4-core/blob/main/src/test/PoolModifyLiquidityTest.sol) | [`0x37429cd17cb1454c34e7f50b09725202fd533039`](https://sepolia.basescan.org/address/0x37429cd17cb1454c34e7f50b09725202fd533039#code) |
-
-## Arbitrum Sepolia: 421614
-
-| Contract | Address |
-|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|
-| [PoolManager](https://github.com/Uniswap/v4-core/blob/main/src/PoolManager.sol) | [`0xFB3e0C6F74eB1a21CC1Da29aeC80D2Dfe6C9a317`](https://sepolia.basescan.org/address/0xFB3e0C6F74eB1a21CC1Da29aeC80D2Dfe6C9a317#code) |
-| [Universal Router](https://github.com/Uniswap/universal-router/blob/dev/contracts/UniversalRouter.sol) | [`0xefd1d4bd4cf1e86da286bb4cb1b8bced9c10ba47`](https://sepolia.basescan.org/address/0xefd1d4bd4cf1e86da286bb4cb1b8bced9c10ba47#code) |
-| [PositionManager](https://github.com/Uniswap/v4-periphery/blob/main/src/PositionManager.sol) | [`0xAc631556d3d4019C95769033B5E719dD77124BAc`](https://sepolia.basescan.org/address/0xAc631556d3d4019C95769033B5E719dD77124BAc#code) |
-| [StateView](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/StateView.sol) | [`0x9d467fa9062b6e9b1a46e26007ad82db116c67cb`](https://sepolia.basescan.org/address/0x9d467fa9062b6e9b1a46e26007ad82db116c67cb#code) |
-| [Quoter](https://github.com/Uniswap/v4-periphery/blob/main/src/lens/V4Quoter.sol) | [`0x7de51022d70a725b508085468052e25e22b5c4c9`](https://sepolia.basescan.org/address/0x7de51022d70a725b508085468052e25e22b5c4c9#code) |
-| [PoolSwapTest](https://github.com/Uniswap/v4-core/blob/main/src/test/PoolSwapTest.sol) | [`0xf3a39c86dbd13c45365e57fb90fe413371f65af8`](https://sepolia.basescan.org/address/0xf3a39c86dbd13c45365e57fb90fe413371f65af8#code) |
-| [PoolModifyLiquidityTest](https://github.com/Uniswap/v4-core/blob/main/src/test/PoolModifyLiquidityTest.sol) | [`0x9a8ca723f5dccb7926d00b71dec55c2fea1f50f7`](https://sepolia.basescan.org/address/0x9a8ca723f5dccb7926d00b71dec55c2fea1f50f7#code) |
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/06-unlock-callback.mdx b/docs/contracts/v4/guides/06-unlock-callback.mdx
deleted file mode 100644
index 866c7a2cf..000000000
--- a/docs/contracts/v4/guides/06-unlock-callback.mdx
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Unlock Callback & Deltas
----
-
-### Refresher
-
-In order to have access to the liquidity inside the `PoolManager`,
-it needs to be _unlocked_ to begin with. After being unlocked, any
-number of operations can be executed, which at the end of must be _locked_
-again. At this point, if there are any _non-zero deltas_, meaning the
-PoolManager is owed or owes tokens back to some address, the whole
-execution reverts. Otherwise, both parties have paid or received
-the right amount of tokens and the operations have successfully
-carried out.
-
-# Unlocking the PoolManager
-
-### Implementing the unlock callback
-
-Prior to unlocking the PoolManager, the integrating contract must
-implement the `unlockCallback` function. This function will be
-called by the PoolManager after being unlocked. An easy way to
-do this is to inherit the `SafeCallback` abstract contract.
-
-```solidity
-import {SafeCallback} from "v4-periphery/src/base/SafeCallback.sol";
-
-contract IntegratingContract is SafeCallback {
- constructor(IPoolManager _poolManager) SafeCallback(_poolManager) {}
-}
-```
-
-### Calling the unlock function
-
-After implementing the callback, the integrating contract can now
-invoke the `unlock()` function. It receives a _bytes_ parameter
-that is further passed to your callback function as an argument.
-This parameter is used to encode the sequence of operations to be
-executed in the context of the `PoolManager`.
-
-
-```solidity
-bytes memory unlockData = abi.encode(encode_operations_here);
-bytes memory unlockResultData = poolManager.unlock(unlockData);
-```
-
-Next, we must override the `_unlockCallback` function inherited from
-the `SafeCallback` contract. In your implementation, you should
-decode your operations and continue with the desired logic.
-
-```solidity
-function _unlockCallback(bytes calldata data) internal override returns (bytes memory) {
- (...) = abi.decode(data, (...));
-}
-```
-
-# Operations
-
-There are **9** operations that can be done in the `PoolManager`
-which fall in two categories: _liquidity-accessing_ and _delta-resolving_.
-
-### Deltas
-
-Deltas are the `PoolManager`'s method to keep track of token amounts it
-needs to receive, respectively to distribute. A negative delta signals that
-the `PoolManager` is owed tokens, while a positive one expresses a
-token balance that needs to be paid to its user.
-
-### Liquidity-accessing
-
-_Liquidity-accessing_ operations will create non-zero _deltas_ and
-produce a state transition of the selected pool.
-They are the following:
-
-* _modify liquidity_ - used to increase or decrease liquidity; increasing
-liquidity will result in a negative token delta, while decreasing yields a positive one
-* _swap_ - used to trade one token for another; will result in a negative tokenA delta
-and a positive tokenB delta
-* _donate_ - used to provide direct token revenue to positions in range;
-will result in a negative delta for the pool's tokens the user wishes
-to provide
-
-### Delta-resolving
-
-_Delta-resolving_ operations are used to even out the deltas created
-by the _liquidity-accessing_ operations.
-They are the following:
-
-* _settle_ - used following token transfers to the manager
-or burning of ERC6909 claims to resolve negative deltas
-* _take_ - transfer tokens from the manager, used to resolve
-positive deltas but also provide token loans, producing negative deltas
-* _mint_ - used to create ERC6909 claims, creating a negative delta
-that needs to be resolved by transferring the corresponding token and
-_settling_ afterwards
-* _burn_ - removes ERC6909 claims, creating a positive delta for tokens to
-be transferred back to the owner or used in settling negative balances
-* _clear_ - used to zero out positive token deltas, helpful to forfeit
-insignificant token amounts in order to avoid paying further transfer costs
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/07-read-pool-state.mdx b/docs/contracts/v4/guides/07-read-pool-state.mdx
deleted file mode 100644
index 130da2c44..000000000
--- a/docs/contracts/v4/guides/07-read-pool-state.mdx
+++ /dev/null
@@ -1,263 +0,0 @@
----
-title: Reading Pool State
----
-
-## Introduction
-
-Unlike previous versions, v4 uses a different approach for storing and accessing pool data, which requires understanding the use of [`StateLibrary`](/contracts/v4/reference/core/libraries/StateLibrary) and [`extsload`](/contracts/v4/reference/core/Extsload).
-
-## Understanding the PoolManager Architecture
-
-### The Singleton Design
-
-In Uniswap v4, all pools are managed by a single `PoolManager` contract, unlike v3 where each pool was a separate contract. This design offers simplified management since all pools are now accessible through a single contract.
-
-This approach significantly reduces deployment costs, simplifies protocol upgrades, and enables more efficient cross-pool interactions. It also allows for easier implementation of new features across all pools simultaneously.
-
-### Pools as Library Calls
-
-In v4, pools are stored as complex structs, with Solidity libraries handling state changes. The `PoolManager` contract uses these libraries to perform operations on the pool state:
-
-```solidity
-contract PoolManager {
- using Pool for Pool.State;
- mapping(PoolId => Pool.State) internal pools;
-
- function swap(PoolId id, ...) external {
- pools[id].swap(...); // Library call
- }
-}
-```
-
-This design allows all AMM logic to be encapsulated within the `PoolManager` contract.
-
-## Reading Pool State in v4
-
-In Uniswap v4, reading pool state involves a few key concepts and mechanisms that differ from previous versions. At the core of this new structure is a complex mapping within the PoolManager contract:
-
-```solidity
-mapping(PoolId id => Pool.State) internal _pools;
-```
-
-This mapping represents a fundamental shift in pool data storage:
-
-1. Each pool is identified by a unique `PoolId`.
-2. The `Pool.State` is a struct that contains all the state variables for a single pool.
-3. This struct itself contains several nested mappings and complex data structures.
-
-For example, the `Pool.State` struct might look something like this (simplified for illustration):
-
-```solidity
-struct State {
- uint160 sqrtPriceX96;
- int24 tick;
- uint128 liquidity;
- uint256 feeGrowthGlobal0X128;
- uint256 feeGrowthGlobal1X128;
- mapping(int24 => TickInfo) ticks;
- mapping(bytes32 => Position.Info) positions;
- // ... other fields
-}
-```
-
-This complex structure allows for efficient storage of multiple pools and their associated data within a single contract. However, it also means that traditional getter functions would be inefficient or impractical for accessing this data, especially for nested mappings like `ticks` and `positions`.
-
-To address this, Uniswap V4 introduces the StateLibrary and the concept of using `extsload` for reading pool state. These mechanisms provide efficient ways to access the data stored in this complex structure.
-
-### The StateLibrary and `extsload`
-
-```solidity
-abstract contract Extsload is IExtsload {
- /// @inheritdoc IExtsload
- function extsload(bytes32 slot) external view returns (bytes32) {
- assembly ("memory-safe") {
- mstore(0, sload(slot))
- return(0, 0x20)
- }
- }
-
- // [...]
-}
-```
-
-The `StateLibrary` is a crucial component in Uniswap v4 for reading pool state. It utilizes the `extsload` function, which is an external wrapper for the `SLOAD` opcode. This allows for efficient reading of arbitrary storage slots.
-
-**How `extsload` works:**
-
-- It takes a storage slot as input.
-- It reads the value stored in that slot directly, using `SLOAD`, from the contract's storage.
-- It returns the value as a `bytes32`.
-
-This method is more gas-efficient than traditional getter functions, especially when reading multiple storage slots.
-
-Moreover, using `extsload` instead of hand-written Solidity view functions lowers the contract bytecode size. This optimization is particularly important for Uniswap v4, as the core contracts are nearly at Ethereum's contract size limit.
-
-### TransientStateLibrary and `exttload`
-
-```solidity
-abstract contract Exttload is IExttload {
- /// @inheritdoc IExttload
- function exttload(bytes32 slot) external view returns (bytes32) {
- assembly ("memory-safe") {
- mstore(0, tload(slot))
- return(0, 0x20)
- }
- }
-
- // [...]
-}
-```
-
-While `StateLibrary` deals with persistent storage, [`TransientStateLibrary`](/contracts/v4/reference/core/libraries/transient-state-library) is used for handling transient storage. Transient storage, introduced in EIP-1153, is a way to store data that is only needed for the duration of a transaction, making it ideal for temporary data.
-
-It uses the [`exttload`](/contracts/v4/reference/core/Exttload) function, which is similar to `extsload`, but for transient storage; it is an external wrapper for the `TLOAD` opcode.
-
-## Implementing a `PoolStateReader` Contract
-
-Let's create a `PoolStateReader` contract that showcases different methods for reading pool state. For each function, we'll explain its purpose, how it works, and provide an example use case.
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity 0.8.26;
-
-import {IPoolManager} from "v4-core/interfaces/IPoolManager.sol";
-import {PoolKey} from "v4-core/types/PoolKey.sol";
-import {PoolId, PoolIdLibrary} from "v4-core/types/PoolId.sol";
-
-contract PoolStateReader {
- using PoolIdLibrary for PoolKey;
-
- IPoolManager public immutable poolManager;
-
- constructor(IPoolManager _poolManager) {
- poolManager = _poolManager;
- }
-
- // Functions will be implemented here
-}
-```
-
-Before we start, we need to import `StateLibrary` from the libraries available in v4-core.
-
-```solidity
-import {StateLibrary} from "v4-core/libraries/StateLibrary.sol";
-```
-
-Let's focus on this important line that we should add:
-
-```solidity
-using StateLibrary for IPoolManager;
-```
-
-This line is crucial for our PoolStateReader contract because it allows us to call StateLibrary functions as if they were methods of the IPoolManager interface, like for instance now we will be able to do `poolManager.getSlot0()`.
-
-Now we’re up for breaking down each wrapper function that we're going to be adding to our helper contract, explain the purpose of the pool manager function to read the state, and provide use cases to make sure we understand its utility:
-
-### `getSlot0()`
-
-```solidity
-function getPoolState(PoolKey calldata key) external view returns (
- uint160 sqrtPriceX96,
- int24 tick,
- uint24 protocolFee,
- uint24 lpFee
-) {
- return poolManager.getSlot0(key.toId());
-}
-```
-
-**Explanation:**
-
-This function retrieves the current state of the pool, including its price, tick, and fee settings. It uses the `getSlot0()` function from `StateLibrary`, which efficiently reads these values from a single storage slot.
-
-- `sqrtPriceX96`: The current price, encoded as a square root and scaled by 2^96. This encoding allows for efficient price calculations in the Uniswap algorithm.
-- `tick`: The current tick, representing the quantized price. Ticks are used to efficiently track and update liquidity positions.
-- `protocolFee`: The current protocol fee, represented in hundredths of a bip (i.e., units of 0.0001%).
-- `lpFee`: The current liquidity provider fee, also represented in hundredths of a bip.
-
-**Use Case:**
-
-This function is essential for any application that needs to know the current state of a Uniswap v4 pool. For example:
-
-- A price oracle could use this to get the current price of the pool.
-- A trading bot could use this to determine if a trade is profitable given the current price and fees.
-- A liquidity management system could use the `tick` to decide where to place new liquidity.
-
-### `getLiquidity()`
-
-```solidity
-function getPoolLiquidity(PoolKey calldata key) external view returns (uint128 liquidity) {
- return poolManager.getLiquidity(key.toId());
-}
-```
-
-**Explanation:**
-
-This function retrieves the current total liquidity in the pool. Liquidity in Uniswap v4 represents the amount of assets available for trading within the current price range.
-
-**Use Case:**
-
-Understanding the total liquidity is crucial for several scenarios:
-
-- Assessing the depth of the market and potential slippage for large trades.
-- Monitoring the depth and growth of a pool over time.
-
-### `getPositionInfo`
-
-```solidity
-function getPositionInfo(
- PoolKey calldata key,
- address owner,
- int24 tickLower,
- int24 tickUpper,
- bytes32 salt
-) external view returns (
- uint128 liquidity,
- uint256 feeGrowthInside0LastX128,
- uint256 feeGrowthInside1LastX128
-) {
- return poolManager.getPositionInfo(key.toId(), owner, tickLower, tickUpper, bytes32(salt));
-}
-```
-
-**Explanation:**
-
-This function retrieves information about a specific liquidity position. It returns:
-
-- `liquidity`: The amount of liquidity in the position.
-- `feeGrowthInside0LastX128` and `feeGrowthInside1LastX128`: The last recorded cumulative fees earned per unit of liquidity for each token.
-
-**Use Case:**
-
-This function is crucial for applications that need to manage or analyze individual liquidity positions:
-
-- A liquidity management dashboard could use this to display a user's current positions and earned fees.
-- An automated liquidity provision system could use this to decide when to rebalance or compound rewards.
-- An analytics tool could use this to calculate the performance of different liquidity provision strategies.
-
-### `getFeeGrowthGlobal`
-
-```solidity
-function getFeeGrowthGlobal(PoolKey calldata key) external view returns (
- uint256 feeGrowthGlobal0X128,
- uint256 feeGrowthGlobal1X128
-) {
- return poolManager.getFeeGrowthGlobal(key.toId());
-}
-```
-
-**Explanation:**
-
-This function retrieves the global fee growth for both tokens in the pool. These values represent the cumulative fees per unit of liquidity since the pool's inception.
-
-**Use Case:**
-
-Global fee growth is essential for several advanced operations:
-
-- Calculating the fees earned by a position that has been held for a long time.
-- Analyzing the overall fee generation of a pool over its lifetime.
-- Comparing the performance of different pools or fee tiers.
-
----
-
-For additional reference, see [`StateLibrary`](/contracts/v4/reference/core/libraries/StateLibrary) and [`Extsload`](/contracts/v4/reference/core/Extsload)
diff --git a/docs/contracts/v4/guides/08-custom-accounting.mdx b/docs/contracts/v4/guides/08-custom-accounting.mdx
deleted file mode 100644
index c90760df8..000000000
--- a/docs/contracts/v4/guides/08-custom-accounting.mdx
+++ /dev/null
@@ -1,238 +0,0 @@
----
-title: Custom Accounting
----
-
-# Introduction
-Uniswap v4 introduces a set of powerful, interconnected features that proposes a new way automated market makers (AMMs) can function. Custom accounting, hook fees, custom curves, and return deltas might seem like distinct concepts, but they form a cohesive system that enables unprecedented flexibility in decentralized exchange mechanisms.
-
-These features are grouped together because they collectively represent the core of Uniswap v4’s customizability. They all relate to how pool state is managed and modified, working in tandem to allow developers to create highly tailored AMM experiences. From dynamic fee structures to unique bonding curves.
-
-# Brief Overview of Concepts
-
-Before we dive into the details of custom accounting, hook fees, custom curves, and return deltas, let’s explore how these features work in Uniswap v4.
-
-## Delta Accounting in v4
-
-As described in [Flash Accounting](/contracts/v4/concepts/flash-accounting) Uniswap v4 tracks net token transfers with transient storage. Unlike previous versions that tracked absolute token balances, v4 records changes to these balances (*deltas*). This approach is at the core of v4’s enhanced flexibility and efficiency.
-
-In the v4 architecture, the [`PoolManager`](/contracts/v4/concepts/PoolManager) manages credits or debits per address. After a swap router contract interacts with the PoolManager, the core contract determines that the swap router owes input tokens and must claim output tokens. Token balances are tracked as accumulated deltas in transient storage; and only the final deltas incur token transfers
-
-Delta accounting provides several key benefits:
-
-1. More efficient state management, especially for complex operations involving multiple steps.
-2. Easier integration with hooks, allowing for custom logic to be applied to state changes.
-3. Improved gas efficiency for many operations, as it reduces the number of storage writes.
-
-This system forms the foundation upon which other v4 features, such as hook fees and custom curves, are built. It allows for more complex pool behaviors while maintaining efficiency and flexibility.
-
-## Hook Fees in v4
-
-Hook fees are a feature in Uniswap v4 that allow hook developers to monetize their hooks or implement custom value distribution mechanisms. Unlike pool fees or dynamic fees, hook fees are entirely separate and are implemented through custom logic in the hook itself.
-
-Key characteristics of hook fees in Uniswap v4:
-
-**Separate from Pool Fees**
-
-Hook fees are distinct from the standard pool fees. They can be implemented alongside pool fees without interfering with the core fee structure.
-
-**Implemented in beforeSwap**
-
-Hook fees are typically calculated and applied in the `beforeSwap` function, allowing them to modify the swap parameters before the core swap logic is executed.
-
-**Use of BeforeSwapDelta**
-
-Hook fees often utilize the [`BeforeSwapDelta`](/contracts/v4/reference/core/types/beforeswapdelta) mechanism to adjust swap amounts and transfer deltas from the hook to the swap router, enabling precise control over how the fee affects the swap.
-
-**Flexible Implementation**
-
-Developers have full control over how hook fees are calculated, collected, and distributed. This allows for complex fee structures tailored to specific use cases. In other words, developers can implement static fees, percentage-based fees, or even a fee that changes.
-
-**Potential Use Cases**
-
-- Monetization of hook development
-- Implementation of withdrawal penalties (e.g., to penalize just-in-time liquidity provision)
-- Custom value distribution for liquidity providers
-
-Keep reading because at the bottom we are providing a step by step guide on how to implement hook fees.
-
-## Custom Curves in v4
-
-Custom Curves in Uniswap v4 represent a big change in AMM design flexibility. Unlike [Uniswap v2](/contracts/v2/concepts/protocol-overview/how-uniswap-works) where the x*y=k formula was hardcoded, v4 allows developers to implement a wide variety of pricing models.
-
-This is made possible through the hook system, particularly hooks that can interact with the swap process. Custom curves allow developers to eject the native concentrated liquidity pricing mechanism. These hooks can intercept swap requests, apply custom pricing logic, and return modified swap parameters. This enables the creation of pools with unique characteristics, such as:
-
-- Stable asset pairs with minimal price impact
-- Curves for special token types like rebasing tokens, RWAs, vault tokens
-
-For example, creating a custom curve for a stable swap pool would involve designing a pricing function that maintains tighter price ranges when assets are near parity. This could be achieved by implementing a curve that's flatter in the middle (where assets are at their expected 1:1 ratio) and steeper at the edges (to discourage large imbalances).
-
-This type of custom curve could significantly improve capital efficiency for stable asset pairs, reducing slippage for traders and potentially attracting more liquidity to the pool. It showcases how Uniswap v4's flexible architecture allows for tailored solutions to specific trading scenarios, opening up new possibilities in decentralized exchange design.
-
-## Return Deltas in v4
-
-Return deltas are a fundamental mechanism in Uniswap v4's custom accounting system. They allow for precise, programmatic adjustments to the outcomes of operations within the protocol.
-
-Key aspects of return deltas:
-
-1. **Dual Adjustment**: Return deltas simultaneously modify the balance changes (deltas) for both the hook contract and the swap router. This dual nature ensures that custom logic is accurately reflected across the entire system.
-2. **Credits and Debts Modification**: By adjusting these deltas, return deltas effectively alter the credits and debts owed by the hook and the swap router. This allows for complex economic models to be implemented directly within the protocol.
-3. **Native Pricing Bypass**: Return deltas enable hooks to implement custom curves that can completely bypass Uniswap's native pricing mechanism. This opens up possibilities for entirely new types of automated market makers within the Uniswap ecosystem.
-4. **Hook Fee Implementation**: Through return deltas, hooks can implement their own fee structures, separate from the core protocol fees.
-
-In essence, return deltas allow for bespoke modification of an operation's result -- enabling features that were previously impossible in earlier versions of the protocol.
-
-# Implementing Hook Fees: A Step-by-Step Guide
-
-In this guide, we'll walk through the process of implementing a custom fee hook in Uniswap v4. We'll not only show you how to write the code but also explain what's happening under the hood at each step.
-
-## Step 1: Setting Up the Hook
-
-First, let's create our basic hook structure:
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity 0.8.26;
-
-import {BaseHook} from "v4-periphery/src/BaseHook.sol";
-import {Hooks} from "v4-core/src/libraries/Hooks.sol";
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-import {PoolKey} from "v4-core/src/types/PoolKey.sol";
-import {Currency} from "v4-core/src/types/Currency.sol";
-import {BeforeSwapDelta, toBeforeSwapDelta} from "v4-core/src/types/BeforeSwapDelta.sol";
-
-contract HookFeeExample is BaseHook {
- uint256 public constant HOOK_FEE_PERCENTAGE = 10;// 0.01% fee
- uint256 public constant FEE_DENOMINATOR = 100000;
-
- constructor(IPoolManager _poolManager) BaseHook(_poolManager) {}
-
- function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
- return Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: false,
- beforeAddLiquidity: false,
- beforeRemoveLiquidity: false,
- afterAddLiquidity: false,
- afterRemoveLiquidity: false,
- beforeSwap: true,
- afterSwap: false,
- beforeDonate: false,
- afterDonate: false,
- beforeSwapReturnDelta: true,
- afterSwapReturnDelta: false,
- afterAddLiquidityReturnDelta: false,
- afterRemoveLiquidityReturnDelta: false
- });
- }
-}
-
-```
-
-Here, we're setting up our hook with a constant fee of 0.01% and enabling the `beforeSwap` and `beforeSwapReturnDelta` permissions.
-
-## Step 2: Implementing the beforeSwap Function
-
-Now, let's implement our `beforeSwap` function:
-
-```solidity
-function beforeSwap(
- address,
- PoolKey calldata key,
- IPoolManager.SwapParams calldata params,
- bytes calldata
-) external override returns (bytes4, BeforeSwapDelta, uint24) {
- // Implementation details will be explained in the following sub-steps
-}
-
-```
-
-### Step 2.1: Calculate the swap amount and fee
-
-We determine the absolute swap amount and calculate our fee based on it.
-
-```solidity
-uint256 swapAmount = params.amountSpecified < 0
- ? uint256(-params.amountSpecified)
- : uint256(params.amountSpecified);
-uint256 feeAmount = (swapAmount * HOOK_FEE_PERCENTAGE) / FEE_DENOMINATOR;
-
-```
-
-### Step 2.2: Collect the fee
-
-We use `poolManager.take` to collect the fee. This creates a debt for our hook in the specified currency.
-
-```solidity
-Currency feeCurrency = params.zeroForOne ? key.currency0 : key.currency1;
-poolManager.take(feeCurrency, address(this), feeAmount);
-
-```
-
-### Step 2.3: Create the BeforeSwapDelta
-
-This is where the magic happens. We create a `BeforeSwapDelta` that represents our fee. The `toBeforeSwapDelta` function takes two parameters:
-
-- The specified delta: This is our fee amount. It's positive because we're adding it to the hook's balance.
-- The unspecified delta: We set this to 0 as we're not affecting the other currency.
-
-```solidity
-BeforeSwapDelta returnDelta = toBeforeSwapDelta(
- int128(int256(feeAmount)), // Specified delta (fee amount)
- 0 // Unspecified delta (no change)
-);
-
-```
-
-### Step 2.4: Return values
-
-We return the function selector, our `returnDelta`, and 0 for the fee override.
-
-```solidity
-return (BaseHook.beforeSwap.selector, returnDelta, 0);
-```
-
-## Step 3: Understanding the BeforeSwapDelta Mechanism
-
-Now, let's dive deeper into how the `BeforeSwapDelta` works and how it affects the overall swap process.
-
-1. **Initial State**:
-Let's say a user wants to swap 100 USDC for USDT
- - Hook's delta: (0, 0)
- - User's swap request: -100 USDC (negative because they're selling)
-
-2. **After Hook Execution**:
-Our hook has taken a 1 USDC fee (assuming 1% for simplicity):
- - Hook's delta: (-1 USDC, 0) // The hook now owes 1 USDC to the pool
- - BeforeSwapDelta returned: (1 USDC, 0) // This will be added to the hook's delta and subtracted from the swap delta
-
-3. **PoolManager Processing**:
-The PoolManager applies our `BeforeSwapDelta`
-The pool then swaps 99 USDC for, let's say, 98 USDT.
-
-```solidity
-amountToSwap = params.amountSpecified + hookDelta.getSpecifiedDelta();
--99 USDC = -100 USDC + 1 USDC
-```
-
-4. **Delta Resolution**:
-The PoolManager then resolves the deltas:
-
-```solidity
-// Hook's new delta
-newHookDelta = oldHookDelta + returnDelta
-(0, 0) = (-1 USDC, 0) + (1 USDC, 0)
-
-// Swap delta for router
-swapDelta = (-99 USDC, 98 USDT) - (1 USDC, 0)
- = (-100 USDC, 98 USDT)
-```
-
-5. **Final Outcome**:
- - The hook's debt is cleared: It took 1 USDC as a fee, but "returned" it to the swap process.
- - The router (on behalf of the user) must pay 100 USDC (original amount including fee) and receives 98 USDT.
-
-This process demonstrates how `BeforeSwapDelta` effectively "transfers" the hook's outstanding delta to the swap router, ensuring that the user pays the fee while the hook collects it, all within a single atomic transaction.
-
-## Conclusion
-
-By implementing hook fees this way, we've leveraged Uniswap v4's delta accounting system to create a seamless fee collection mechanism. This approach allows for complex fee structures and behaviors without disrupting the core swap process or requiring separate fee transfers.
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/09-swap-routing.mdx b/docs/contracts/v4/guides/09-swap-routing.mdx
deleted file mode 100644
index 75fddc2bb..000000000
--- a/docs/contracts/v4/guides/09-swap-routing.mdx
+++ /dev/null
@@ -1,322 +0,0 @@
----
-title: Swap routing
----
-
-# Introduction to Universal Router for Uniswap v4 Swaps
-
-Uniswap v4 introduces a new architecture where all pools are managed by a single PoolManager contract. While the underlying architecture uses a callback system for swaps, developers can still use the Universal Router to execute swaps on v4 pools, just as you would for v2 or v3.
-
-## What is the Universal Router?
-
-The Universal Router is a flexible, gas-efficient contract designed to execute complex swap operations across various protocols, including Uniswap v4. It serves as an intermediary between users and the Uniswap v4 `PoolManager`, handling the intricacies of swap execution.
-
-While it’s technically possible to interact directly with the PoolManager contract for swaps, this approach is generally not recommended due to its complexity and potential inefficiencies. The Universal Router is designed to abstract away these complexities, providing a more straightforward and efficient method for executing swaps on v4 pools.
-
-## UniversalRouter command encoding
-
-The [Universal Router](/contracts/universal-router/overview) uses a unique encoding system for its commands and inputs, which is crucial to understand when configuring it for v4 swaps.
-
-When calling `UniversalRouter.execute()`, you provide two main parameters:
-
-1. `bytes commands`: A string of bytes where each byte represents a single command to be executed.
-2. `bytes[] inputs`: An array of byte strings, each containing the encoded parameters for its corresponding command.
-
-The `commands[i]` byte corresponds to the `inputs[i]` parameters, allowing for a series of operations to be defined and executed in sequence.
-
-Each command is encoded as a single byte (`bytes1`) with a specific structure:
-
-```
-0 1 2 3 4 5 6 7
-┌─┬─┬───────────┐
-│f│r| command │
-└─┴─┴───────────┘
-```
-
-- The first bit (`f`) is a flag that determines whether the command is allowed to revert without causing the entire transaction to fail. This enables partial execution of complex transactions.
-- The second bit (`r`) is reserved for future use, providing flexibility for potential upgrades.
-- The remaining 6 bits represent the specific command to be executed.
-
-# Configuring Universal Router for Uniswap v4 Swaps
-
-## Use Cases
-
-Developers might need to configure the Universal Router for swapping on Uniswap v4 pools in several scenarios:
-
-1. **Building a DEX aggregator**: If you’re creating a platform that finds the best rates across multiple DEXes, you’ll want to include Uniswap v4 pools in your options.
-2. **Developing a trading bot**: Automated trading strategies often require the ability to execute swaps programmatically across various pools and versions.
-3. **Creating a Dapp**: Many DeFi applications (lending platforms, yield aggregators, etc.) need to perform token swaps as part of their core functionality.
-
-This guide focuses on how to interact with Universal Router from an on-chain contract.
-
-## Step 1: Set Up the Project
-
-First, we need to set up our project and install the necessary dependencies.
-```bash
-forge install uniswap/v4-core
-forge install uniswap/v4-periphery
-forge install uniswap/permit2
-forge install uniswap/universal-router
-forge install OpenZeppelin/openzeppelin-contracts
-```
-In the `remappings.txt`, add the following:
-```
-@uniswap/v4-core/=lib/v4-core/
-@uniswap/v4-periphery/=lib/v4-periphery/
-@uniswap/permit2/=lib/permit2/
-@uniswap/universal-router/=lib/universal-router/
-@openzeppelin/contracts/=lib/openzeppelin-contracts/
-[...]
-```
-
-We’ll create a new Solidity contract for our example.
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity 0.8.26;
-
-import { UniversalRouter } from "@uniswap/universal-router/contracts/UniversalRouter.sol";
-import { Commands } from "@uniswap/universal-router/contracts/libraries/Commands.sol";
-import { IPoolManager } from "@uniswap/v4-core/contracts/interfaces/IPoolManager.sol";
-import { IV4Router } from "@uniswap/v4-periphery/contracts/interfaces/IV4Router.sol";
-import { Actions } from "@uniswap/v4-periphery/contracts/libraries/Actions.sol";
-import { IPermit2 } from "@uniswap/permit2/contracts/interfaces/IPermit2.sol";
-import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
-
-contract Example {
- using StateLibrary for IPoolManager;
-
- UniversalRouter public immutable router;
- IPoolManager public immutable poolManager;
- IPermit2 public immutable permit2;
-
- constructor(address _router, address _poolManager, address _permit2) {
- router = UniversalRouter(_router);
- poolManager = IPoolManager(_poolManager);
- permit2 = IPermit2(_permit2);
- }
-
- // We'll add more functions here
-}
-```
-
-In this step, we’re importing the necessary contracts and interfaces:
-
-- `UniversalRouter`: This will be our main interface for executing swaps. It provides a flexible way to interact with various Uniswap versions and other protocols.
-- `Commands`: This library contains the command definitions used by the UniversalRouter.
-- `IPoolManager`: This interface is needed for interacting with Uniswap v4 pools. While we don't directly use it in our simple example, it's often necessary for more complex interactions with v4 pools.
-- `IPermit2`: This interface allows us to interact with the Permit2 contract, which provides enhanced token approval functionality.
-- `StateLibrary`: This provides optimized functions for interacting with the PoolManager’s state. By using `StateLibrary`, we can more efficiently read and manipulate pool states, which is crucial for many operations in Uniswap v4.
-
-## Step 2: Implement Token Approval with Permit2
-
-`UniversalRouter` integrates with [Permit2](https://github.com/Uniswap/permit2), to enable users to have more safety, flexibility, and control over their ERC20 token approvals.
-
-Before we can execute swaps, we need to ensure our contract can transfer tokens. We’ll implement a function to approve the Universal Router to spend tokens on behalf of our contract.
-
-Here, for testing purposes, we set up our contract to use Permit2 with the UniversalRouter:
-
-```solidity
-function approveTokenWithPermit2(
- address token,
- uint160 amount,
- uint48 expiration
-) external {
- IERC20(token).approve(address(permit2), type(uint256).max);
- permit2.approve(token, address(router), amount, expiration);
-}
-```
-
-This function first approves Permit2 to spend the token, then uses Permit2 to approve the UniversalRouter with a specific amount and expiration time.
-
-## Step 3: Implementing a Swap Function
-
-### 3.1: Function Signature
-
-First, let’s define our function signature:
-
-```solidity
-function swapExactInputSingle(
- PoolKey calldata key, // PoolKey struct that identifies the v4 pool
- uint128 amountIn, // Exact amount of tokens to swap
- uint128 minAmountOut // Minimum amount of output tokens expected
-) external returns (uint256 amountOut) {
- // Implementation will follow
-}
-```
-**Important note:**
-
-When swapping tokens involving native ETH, we use `Currency.wrap(address(0))` to represent ETH in the `PoolKey` struct.
-
-```solidity
-struct PoolKey {
- /// @notice The lower currency of the pool, sorted numerically.
- /// For native ETH, Currency currency0 = Currency.wrap(address(0));
- Currency currency0;
- /// @notice The higher currency of the pool, sorted numerically
- Currency currency1;
- /// @notice The pool LP fee, capped at 1_000_000. If the highest bit is 1, the pool has a dynamic fee and must be exactly equal to 0x800000
- uint24 fee;
- /// @notice Ticks that involve positions must be a multiple of tick spacing
- int24 tickSpacing;
- /// @notice The hooks of the pool
- IHooks hooks;
-}
-```
-
-### 3.2: Encoding the Swap Command
-
-When encoding a swap command for the Universal Router, we need to choose between two types of swaps:
-
-1. Exact Input Swaps:
-
-Use this swap-type when you know the exact amount of tokens you want to swap in, and you're willing to accept any amount of output tokens above your minimum. This is common when you want to sell a specific amount of tokens.
-
-2. Exact Output Swaps:
-
-Use this swap-type when you need a specific amount of output tokens, and you're willing to spend up to a maximum amount of input tokens. This is useful when you need to acquire a precise amount of tokens, for example, to repay a loan or meet a specific requirement.
-
-Next, we encode the swap command:
-
-```solidity
-bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP));
-```
-
-Here, we're using `V4_SWAP`, which tells the Universal Router that we want to perform a swap on a Uniswap v4 pool. The specific type of swap (exact input or exact output) will be determined by the V4Router actions we encode later. As we saw earlier, we encode this as a single byte, which is how the Universal Router expects to receive commands.
-
-Check the complete list of [commands](https://docs.uniswap.org/contracts/universal-router/technical-reference#command).
-
-### 3.3: Action Encoding
-
-Now, let’s encode the actions for the swap:
-
-```solidity
-// Encode V4Router actions
-bytes memory actions = abi.encodePacked(
- uint8(Actions.SWAP_EXACT_IN_SINGLE),
- uint8(Actions.SETTLE_ALL),
- uint8(Actions.TAKE_ALL)
-);
-```
-
-These actions define the sequence of operations that will be performed in our v4 swap:
-
-1. `SWAP_EXACT_IN_SINGLE`: This action specifies that we want to perform an exact input swap using a single pool.
-2. `SETTLE_ALL`: This action ensures all input tokens involved in the swap are properly paid. This is part of v4's settlement pattern for handling token transfers.
-3. `TAKE_ALL`: This final action collects all output tokens after the swap is complete.
-
-The sequence of these actions is important as they define the complete flow of our swap operation from start to finish.
-
-### 3.4: Preparing the Swap Inputs
-
-For our v4 swap, we need to prepare three parameters that correspond to our encoded actions:
-
-```solidity
-bytes[] memory params = new bytes[](3);
-
-// First parameter: swap configuration
-params[0] = abi.encode(
- IV4Router.ExactInputSingleParams({
- poolKey: key,
- zeroForOne: true, // true if we're swapping token0 for token1
- amountIn: amountIn, // amount of tokens we're swapping
- amountOutMinimum: minAmountOut, // minimum amount we expect to receive
- sqrtPriceLimitX96: uint160(0), // no price limit set
- hookData: bytes("") // no hook data needed
- })
-);
-
-// Second parameter: specify input tokens for the swap
-// encode SETTLE_ALL parameters
-params[1] = abi.encode(key.currency0, amountIn);
-
-// Third parameter: specify output tokens from the swap
-params[2] = abi.encode(key.currency1, minAmountOut);
-```
-
-Each encoded parameter serves a specific purpose:
-
-1. The first parameter configures how the swap should be executed, defining the pool, amounts, and other swap-specific details
-2. The second parameter defines what tokens we're putting into the swap
-3. The third parameter defines what tokens we expect to receive from the swap
-
-These parameters work in conjunction with the actions we encoded earlier (`SWAP_EXACT_IN_SINGLE`, `SETTLE_ALL`, and `TAKE_ALL`) to execute our swap operation.
-
-### 3.5: Executing the Swap
-
-Now we can execute the swap using the Universal Router:
-
-```solidity
-// Combine actions and params into inputs
-inputs[0] = abi.encode(actions, params);
-
-// Execute the swap
-router.execute(commands, inputs, block.timestamp);
-```
-
-This prepares and executes the swap based on our encoded commands, actions, and parameters. The `block.timestamp` deadline parameter ensures the transaction will be executed in the current block.
-
-### 3.6: (Optional) Verifying the Swap Output
-
-After the swap, we need to verify that we received at least the minimum amount of tokens we specified:
-
-```solidity
-amountOut = IERC20(key.currency1).balanceOf(address(this));
-require(amountOut >= minAmountOut, "Insufficient output amount");
-```
-
-### 3.7: Returning the Result
-
-Finally, we return the amount of tokens we received:
-
-```solidity
-return amountOut;
-```
-
-This allows the caller of the function to know exactly how many tokens were received in the swap.
-
-Here's the complete swap function that combines all the steps we've covered:
-
-```solidity
-function swapExactInputSingle(
- PoolKey calldata key,
- uint128 amountIn,
- uint128 minAmountOut
-) external returns (uint256 amountOut) {
-// Encode the Universal Router command
- bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP));
- bytes[] memory inputs = new bytes[](1);
-
-// Encode V4Router actions
- bytes memory actions = abi.encodePacked(
- uint8(Actions.SWAP_EXACT_IN_SINGLE),
- uint8(Actions.SETTLE_ALL),
- uint8(Actions.TAKE_ALL)
- );
-
-// Prepare parameters for each action
- bytes[] memory params = new bytes[](3);
- params[0] = abi.encode(
- IV4Router.ExactInputSingleParams({
- poolKey: key,
- zeroForOne: true,
- amountIn: amountIn,
- amountOutMinimum: minAmountOut,
- sqrtPriceLimitX96: uint160(0),
- hookData: bytes("")
- })
- );
- params[1] = abi.encode(key.currency0, amountIn);
- params[2] = abi.encode(key.currency1, minAmountOut);
-
-// Combine actions and params into inputs
- inputs[0] = abi.encode(actions, params);
-
-// Execute the swap
- router.execute(commands, inputs, block.timestamp);
-
-// Verify and return the output amount
- amountOut = IERC20(key.currency1).balanceOf(address(this));
- require(amountOut >= minAmountOut, "Insufficient output amount");
- return amountOut;
-}
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/10-ERC-6909.mdx b/docs/contracts/v4/guides/10-ERC-6909.mdx
deleted file mode 100644
index 7b86a24ab..000000000
--- a/docs/contracts/v4/guides/10-ERC-6909.mdx
+++ /dev/null
@@ -1,231 +0,0 @@
----
-title: ERC-6909
----
-
-# Introduction
-
-Uniswap v4 uses [ERC-6909](/contracts/v4/concepts/erc6909), a token standard that works alongside the protocol’s flash accounting system. This guide explains how ERC-6909 functions within v4, when to use mint versus burn operations, and how developers can implement them effectively.
-
-# What is ERC-6909?
-
-ERC-6909 is a token standard that enables efficient token management within a single contract through multiple token balances per user. Where ERC-20 requires separate approve and transfer calls for token interactions, ERC-6909 provides native support for multi-token operations through mint/burn mechanics that integrate with v4’s flash accounting system.
-
-Here’s how the approaches differ:
-
-```solidity
-// Traditional ERC-20 approach
-IERC20(tokenA).transferFrom(owner, poolManager, amount);
-
-// ERC-6909 approach in v4
-poolManager.burn(owner, currency.toId(), amount);
-```
-
-## Integration with Flash Accounting
-
-While flash accounting tracks balance changes as deltas throughout a transaction, ERC-6909 provides an additional primitive to resolve deltas.
-
-This enables:
-
-1. Simplified transaction flows through direct mint/burn operations
-2. Efficient handling of multi-step operations
-3. Streamlined token management when using the PoolManager
-
-## Gas Efficiency
-
-ERC-6909 provides gas savings compared to ERC-20 tokens, making it particularly valuable for use cases requiring frequent token transfers like:
-
-- Day trading operations
-- MEV bot transactions
-- Active liquidity management
-
-This efficiency is especially beneficial when performing multiple token operations in rapid succession.
-
-## Simplified Token Management
-
-The traditional ERC-20 workflow requires careful management of allowances and transfers, often leading to complex transaction sequences and potential security concerns.
-
-ERC-6909 takes a different approach by providing direct balance modifications through mint and burn operations.
-
-By working through the PoolManager, all token operations are consolidated into a single interface. This means you don’t need to worry about managing multiple token approvals or keeping track of allowances across different contracts. Instead, you can focus on the core logic of your application while the PoolManager handles the token management aspects.
-
-# Understanding ERC-6909 in v4
-
-Let's explore how ERC-6909 is used across different v4 operations and understand when to use each of its operations.
-
-## Operations and Token Movement
-
-Different pool operations create different types of deltas that need to be resolved:
-
-- **Swaps**: Create negative deltas for input tokens and positive deltas for output tokens
-- **Adding Liquidity**: Creates negative deltas (tokens you need to provide)
-- **Removing Liquidity**: Creates positive deltas (tokens you receive)
-- **Donations**: Creates negative deltas (tokens you're donating)
-
-## Using Mint and Burn
-
-The choice between mint and burn operations depends on your token movement needs:
-
-```solidity
-// When you have positive deltas (withdrawing value from PoolManager):
-poolManager.mint(currency, address(this), amount);
-
-// When you have negative deltas (transferring value to PoolManager):
-poolManager.burn(currency, address(this), amount);
-```
-
-This pattern is used throughout v4's operations:
-
-- Use mint when withdrawing value from the pool (like receiving tokens from swaps)
-- Use burn when transferring value to the pool (like providing tokens)
-
-## Hook Integration
-
-When building hooks, ERC-6909 operations help manage token movements within your hook's logic:
-
-```solidity
-function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata params)
- external
- returns (bytes4, BeforeSwapDelta, uint24)
-{
- poolManager.mint(key.currency0, address(this), amount);
-
- return (
- BaseHook.beforeSwap.selector,
- BeforeSwapDeltaLibrary.ZERO_DELTA,
- 0
- );
-}
-```
-
-Other common cases would be to use `mint` for fee collection or `burn` for token distribution.
-
-# Implementation
-
-Let's build a contract that handles donations in v4 using ERC-6909. We'll create a donation router that follows this flow:
-
-1. Users call our donation function with their desired amounts
-2. Our contract packages this data and uses the PoolManager's unlock pattern
-3. In the callback, we unpack the data and execute the donation, handling token movements using ERC-6909
-
-First, let's set up our contract with the necessary imports and create a struct to help us pass data between functions:
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity 0.8.24;
-
-import { IPoolManager } from "@uniswap/v4-core/contracts/interfaces/IPoolManager.sol";
-import { PoolKey } from "@uniswap/v4-core/contracts/types/PoolKey.sol";
-import { BalanceDelta } from "@uniswap/v4-core/contracts/types/BalanceDelta.sol";
-import { Currency } from "@uniswap/v4-core/contracts/types/Currency.sol";
-
-contract DonationRouter {
- IPoolManager public immutable poolManager;
-
- // This struct helps us pack donation parameters to pass through
- // the unlock/callback pattern
- struct CallbackData {
- PoolKey key;
- uint256 amount0;
- uint256 amount1;
- bytes hookData;
- }
-
- constructor(IPoolManager _poolManager) {
- poolManager = _poolManager;
- }
-}
-```
-
-Now let's implement the external donation function. Here we'll pack our parameters into the CallbackData struct and start the unlock process:
-
-```solidity
-/// @notice Donates tokens to a pool
-/// @param key The pool to donate to
-/// @param amount0 Amount of token0 to donate
-/// @param amount1 Amount of token1 to donate
-/// @param hookData Optional data to pass to hooks
-function donate(
- PoolKey memory key,
- uint256 amount0,
- uint256 amount1,
- bytes memory hookData
-) external returns (BalanceDelta delta) {
- // 1. Create a CallbackData struct with all our parameters
- CallbackData memory data = CallbackData({
- key: key,
- amount0: amount0,
- amount1: amount1,
- hookData: hookData
- });
-
- // 2. Encode our struct into bytes to pass through unlock
- bytes memory encodedData = abi.encode(data);
-
- // 3. Call unlock with our encoded data
- // 4. unlock will call our callback, which returns encoded delta
- // 5. Decode the returned bytes back into a BalanceDelta
- delta = abi.decode(
- poolManager.unlock(encodedData),
- (BalanceDelta)
- );
-}
-```
-
-When the PoolManager calls our callback, we need to decode our data:
-
-```solidity
-function unlockCallback(
- bytes calldata rawData
-) external returns (bytes memory) {
- // Only the PoolManager can trigger our callback
- require(msg.sender == address(poolManager));
-
- // Decode the bytes back into our CallbackData struct
- // (CallbackData) tells abi.decode what type to expect
- CallbackData memory data = abi.decode(rawData, (CallbackData));
-```
-
-Now `data` contains the same values we packed in donate():
- - `data.key`: The pool to donate to
- - `data.amount0`: Amount of first token
- - `data.amount1`: Amount of second token
- - `data.hookData`: Any hook data
-
-And we can execute the donation:
-
-```solidity
- // Execute the donation through PoolManager
- // This creates negative deltas for the tokens we're donating
- BalanceDelta delta = poolManager.donate(
- data.key,
- data.amount0,
- data.amount1,
- data.hookData
- );
-```
-
-After executing the donation through the PoolManager, we need to handle the token transfers. The donation creates negative deltas, which represent tokens that we owe to the PoolManager. This is where ERC-6909's burn operation comes into play.
-
-Instead of using traditional token transfers, we can use ERC-6909's burn operation to settle this debt. We check each token's delta and, if negative, burn the corresponding amount of ERC-6909 tokens. And finally return the encoded delta. Let’s see how:
-
-```solidity
- // Handle any negative deltas by burning ERC-6909 tokens
- if (delta.amount0() < 0) {
- poolManager.burn(
- data.key.currency0,
- address(this),
- uint256(-delta.amount0())
- );
- }
- if (delta.amount1() < 0) {
- poolManager.burn(
- data.key.currency1,
- address(this),
- uint256(-delta.amount1())
- );
- }
-
- // Encode and return the delta so donate() can decode it
- return abi.encode(delta);
-}
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/11-position-manager.mdx b/docs/contracts/v4/guides/11-position-manager.mdx
deleted file mode 100644
index 3d38a8e1b..000000000
--- a/docs/contracts/v4/guides/11-position-manager.mdx
+++ /dev/null
@@ -1,765 +0,0 @@
----
-title: Position Manager
----
-
-# Introduction
-
-The Position Manager in v4 provides a streamlined way to manage liquidity positions through a command-based interface. Unlike previous versions where each operation required separate function calls, v4’s Position Manager uses a batched command pattern that allows multiple operations to be executed in a single transaction.
-
-## Command-Based Design
-
-At its core, the Position Manager works by executing a sequence of commands:
-
-```solidity
-// Example: Minting a new position requires two commands
-bytes memory actions = abi.encodePacked(
- Actions.MINT_POSITION, // Create the position
- Actions.SETTLE_PAIR // Provide the tokens
-);
-```
-
-Each command (or action) represents a specific operation, and these actions can be:
-
-- Liquidity Operations: Creating, modifying, or removing positions
-- Delta-Resolving Operations: Handling token transfers and settlements
-
-## How Commands Work Together
-
-When executing operations through the Position Manager, you’ll always:
-
-1. Define what actions to perform
-2. Provide the parameters for each action
-3. Execute them through a single function call
-
-```solidity
-// 1. Define actions
-bytes memory actions = abi.encodePacked(action1, action2);
-
-// 2. Encode parameters for each action
-bytes[] memory params = new bytes[](2);
-params[0] = abi.encode(/* parameters for action1 */);
-params[1] = abi.encode(/* parameters for action2 */);
-
-// 3. Execute through modifyLiquidities
-positionManager.modifyLiquidities(
- abi.encode(actions, params),
- deadline
-);
-```
-
-This design enables efficient operations by:
-
-- Minimizing transaction costs through batching
-- Allowing complex position management in single transactions
-- Providing flexibility in how operations are combined
-
-In the following sections, we’ll explore how to work with these commands and implement common liquidity management operations.
-
-# Core Concepts
-
-Before diving into specific operations, let’s understand the key concepts that make up the Position Manager’s architecture.
-
-## Action Types
-
-The Position Manager operates through a system of actions that work in pairs: when you perform a liquidity operation that changes position balances, you must also include actions to handle the resulting token movements.
-
-## Understanding the Flow
-
-When you execute a liquidity operation:
-
-1. The operation creates deltas (token obligations)
-2. These deltas represent tokens that need to be paid or received
-3. Delta-resolving operations are then used to handle these token movements
-
-## Liquidity Operations
-
-[Actions](/contracts/v4/reference/periphery/libraries/Actions) that modify positions in the pool:
-
-```solidity
-// Common liquidity operations
-uint256 constant MINT_POSITION = 0x02; // Creates negative deltas (tokens needed for position)
-uint256 constant INCREASE_LIQUIDITY = 0x00; // Creates negative deltas (tokens to add)
-uint256 constant DECREASE_LIQUIDITY = 0x01; // Creates positive deltas (tokens to receive)
-uint256 constant BURN_6909 = 0x18; // Creates positive deltas (tokens to receive)
-```
-
-Each operation creates specific deltas that must be resolved:
-
-- Negative deltas when you need to provide tokens (mint, increase)
-- Positive deltas when you’re receiving tokens (decrease, burn)
-
-## Delta-Resolving Operations
-
-Actions that handle the token transfers needed to resolve deltas:
-
-```solidity
-// Common delta-resolving operations
-uint256 constant SETTLE_PAIR = 0x0d; // For negative deltas: Pay two tokens to the pool
-uint256 constant TAKE_PAIR = 0x11; // For positive deltas: Receive two tokens from the pool
-uint256 constant CLOSE_CURRENCY = 0x12; // Handles either direction based on final delta
-uint256 constant CLEAR_OR_TAKE = 0x13; // For small amounts: Take if worth it, else ignore
-```
-
-## Operation Order
-
-Understanding how operations create and resolve deltas helps in ordering them efficiently:
-
-```solidity
-// Efficient: Group operations that create deltas, then resolve them together
-bytes memory actions = abi.encodePacked(
- Actions.MINT_POSITION, // First delta: -100 tokens
- Actions.INCREASE_LIQUIDITY, // Second delta: -50 tokens
- Actions.SETTLE_PAIR // Resolve total: -150 tokens at once
-);
-
-// Less efficient: Resolving deltas multiple times
-bytes memory actions = abi.encodePacked(
- Actions.MINT_POSITION, // Delta: -100 tokens
- Actions.SETTLE_PAIR, // Resolve: -100 tokens
- Actions.INCREASE_LIQUIDITY, // New delta: -50 tokens
- Actions.SETTLE_PAIR // Resolve again: -50 tokens
-);
-```
-
-Best practices for ordering:
-
-1. Group liquidity operations that create similar deltas (e.g., all negative or all positive)
-2. Resolve all deltas together at the end when possible
-3. Use `CLOSE_CURRENCY` when you can't predict the final delta
-
-# Working with Liquidity Positions
-
-When building on v4, you’ll need to manage liquidity positions through the Position Manager. Let’s walk through each operation, starting with creating new positions.
-
-## Minting New Positions
-
-To create a new liquidity position in v4, you’ll need to:
-
-1. Define your position parameters (pool, price range, amount)
-2. Mint the position NFT
-3. Provide the initial tokens
-
-### **Understanding Position Parameters**
-
-Before minting, you need to determine:
-
-- Which pool you’re providing liquidity to
-- Your price range (defined by tick bounds)
-- How much liquidity to provide
-- Maximum amounts of tokens you’re willing to spend
-
-```solidity
-// Example position parameters
-PoolKey poolKey = // Your pool key
-int24 tickLower = -887272; // Price range lower bound
-int24 tickUpper = 887272; // Price range upper bound
-uint128 liquidity = 1000000; // Liquidity amount
-uint256 amount0Max = 1e18; // Max 1 token0
-uint256 amount1Max = 1e18; // Max 1 token1
-```
-
-### **Implementation**
-
-Let’s implement a function to mint new liquidity positions step by step:
-
-```solidity
-/// @notice Mints a new liquidity position
-/// @param poolKey The pool to provide liquidity to
-/// @param tickLower Lower bound of the price range
-/// @param tickUpper Upper bound of the price range
-/// @param liquidity Amount of liquidity to provide
-/// @param amount0Max Maximum amount of token0 to spend
-/// @param amount1Max Maximum amount of token1 to spend
-/// @param recipient Address that will own the position
-function mintNewPosition(
- PoolKey calldata poolKey,
- int24 tickLower,
- int24 tickUpper,
- uint128 liquidity,
- uint256 amount0Max,
- uint256 amount1Max,
- address recipient
-) external returns (uint256 tokenId) {
-```
-
-Define the sequence of operations needed for minting:
-
-```solidity
-// Define the sequence of operations:
-// 1. MINT_POSITION - Creates the position and calculates token requirements
-// 2. SETTLE_PAIR - Provides the tokens needed
-bytes memory actions = abi.encodePacked(
- Actions.MINT_POSITION,
- Actions.SETTLE_PAIR
-);
-```
-
-Set up parameters for each action:
-
-```solidity
-bytes[] memory params = new bytes[](2);
-
-// Parameters for MINT_POSITION
-params[0] = abi.encode(
- poolKey, // Which pool to mint in
- tickLower, // Position's lower price bound
- tickUpper, // Position's upper price bound
- liquidity, // Amount of liquidity to mint
- amount0Max, // Maximum amount of token0 to use
- amount1Max, // Maximum amount of token1 to use
- recipient, // Who receives the NFT
- "" // No hook data needed
-);
-
-// Parameters for SETTLE_PAIR - specify tokens to provide
-params[1] = abi.encode(
- poolKey.currency0, // First token to settle
- poolKey.currency1 // Second token to settle
-);
-```
-
-Finally, execute the mint operation:
-
-```solidity
-// Execute the mint operation
-positionManager.modifyLiquidities(
- abi.encode(actions, params),
- block.timestamp + 60 // 60 second deadline
-);
-```
-
-## Increasing Liquidity
-
-After a position is created, you might want to add more liquidity to it. This operation requires understanding how fee accumulation works since fees are credited to your position during an increase.
-
-### **Understanding the Operation**
-
-When increasing liquidity:
-
-1. The operation calculates the tokens needed based on current prices
-2. Any accumulated fees are **automatically credited** to your position
-3. In some cases, fee revenue might partially or fully cover the tokens needed
-
-### **Choosing the Right Delta Resolution**
-
-Unlike minting where we always use SETTLE_PAIR, increasing liquidity has different delta-resolving options depending on your scenario:
-
-1. **Standard Case**: When you’re providing new tokens
-
-```solidity
-bytes memory actions = abi.encodePacked(
- Actions.INCREASE_LIQUIDITY,
- Actions.SETTLE_PAIR
-);
-```
-
-**2. Fee Conversion**: When converting accumulated fees to liquidity
-
-```solidity
-bytes memory actions = abi.encodePacked(
- Actions.INCREASE_LIQUIDITY,
- Actions.CLOSE_CURRENCY, // For token0
- Actions.CLOSE_CURRENCY // For token1
-);
-```
-
-### **Implementation**
-
-Here’s how to implement a flexible increase liquidity function:
-
-```solidity
-/// @notice Increases liquidity in an existing position
-/// @param tokenId The ID of the position
-/// @param liquidityIncrease Amount of liquidity to add
-/// @param amount0Max Maximum amount of token0 to spend
-/// @param amount1Max Maximum amount of token1 to spend
-/// @param useFeesAsLiquidity Whether to use accumulated fees
-function increaseLiquidity(
- uint256 tokenId,
- uint128 liquidityIncrease,
- uint256 amount0Max,
- uint256 amount1Max,
- bool useFeesAsLiquidity
-) external {
-```
-
-Choose the appropriate delta resolution based on whether we’re using fees:
-
-```solidity
-// Define the sequence of operations:
-// If using fees: Handle potential fee conversion
-// If not: Standard liquidity addition
-bytes memory actions;
-if (useFeesAsLiquidity) {
- actions = abi.encodePacked(
- Actions.INCREASE_LIQUIDITY, // Add liquidity
- Actions.CLOSE_CURRENCY, // Handle token0 (might need to pay or receive)
- Actions.CLOSE_CURRENCY // Handle token1 (might need to pay or receive)
- );
-} else {
- actions = abi.encodePacked(
- Actions.INCREASE_LIQUIDITY, // Add liquidity
- Actions.SETTLE_PAIR // Provide tokens
- );
-}
-```
-
-Prepare parameters based on our chosen strategy:
-
-```solidity
-// Number of parameters depends on our strategy
-bytes[] memory params = new bytes[](
- useFeesAsLiquidity ? 3 : 2
-);
-
-// Parameters for INCREASE_LIQUIDITY
-params[0] = abi.encode(
- tokenId, // Position to increase
- liquidityIncrease, // Amount to add
- amount0Max, // Maximum token0 to spend
- amount1Max, // Maximum token1 to spend
- "" // No hook data needed
-);
-```
-
-Set up delta resolution parameters:
-
-```solidity
-if (useFeesAsLiquidity) {
- // Using CLOSE_CURRENCY for automatic handling of each token
- params[1] = abi.encode(currency0); // Handle token0
- params[2] = abi.encode(currency1); // Handle token1
-} else {
- // Standard SETTLE_PAIR for providing tokens
- params[1] = abi.encode(currency0, currency1);
-}
-```
-
-Execute the operation:
-
-```solidity
-// Execute the increase
-positionManager.modifyLiquidities(
- abi.encode(actions, params),
- block.timestamp + 60 // 60 second deadline
-);
-}
-```
-
-## Decreasing Liquidity
-
-When you want to remove liquidity from a position, you’ll need to handle both the liquidity reduction and any accumulated fees. Let’s understand how to implement this effectively.
-
-### **Understanding the Operation**
-
-Decreasing liquidity involves:
-
-1. Specifying how much liquidity to remove
-2. Setting minimum amounts to receive (slippage protection)
-3. Collecting both the removed liquidity and any accumulated fees
-
-### **Delta Resolution Options**
-
-When decreasing liquidity, you’ll receive tokens, so it's most common to receive a pair of tokens:
-
-
-```solidity
-bytes memory actions = abi.encodePacked(
- Actions.DECREASE_LIQUIDITY,
- Actions.TAKE_PAIR
-);
-```
-
-### **Implementation**
-
-When removing liquidity from a position, you’ll be able to receive tokens and any accumulated fees. Let’s break down the implementation step by step.
-
-```solidity
-/// @notice Removes liquidity from a position
-/// @param tokenId The ID of the position
-/// @param liquidityDecrease Amount of liquidity to remove
-/// @param amount0Min Minimum amount of token0 to receive
-/// @param amount1Min Minimum amount of token1 to receive
-/// @param recipient Address to receive the tokens
-function decreaseLiquidity(
- uint256 tokenId,
- uint128 liquidityDecrease,
- uint256 amount0Min,
- uint256 amount1Min,
- address recipient
-) external {
-```
-
-Prepare the parameters array:
-
-```solidity
-// Number of parameters depends on our strategy
-bytes[] memory params = new bytes[](2);
-
-// Parameters for DECREASE_LIQUIDITY
-params[0] = abi.encode(
- tokenId, // Position to decrease
- liquidityDecrease, // Amount to remove
- amount0Min, // Minimum token0 to receive
- amount1Min, // Minimum token1 to receive
- "" // No hook data needed
-);
-```
-
-Set up delta resolution parameters:
-
-```solidity
-// Parameters for TAKE_PAIR
-params[1] = abi.encode(
- currency0,
- currency1,
- recipient
-);
-```
-
-Execute the operation:
-
-```solidity
-// Execute the decrease
-positionManager.modifyLiquidities(
- abi.encode(actions, params),
- block.timestamp + 60 // 60 second deadline
-);
-```
-
-## Collecting Fees
-
-In v4’s Position Manager, there isn’t a dedicated COLLECT command. Instead, **fees are collected by using DECREASE_LIQUIDITY with zero liquidity**. This pattern leverages the fact that fees are automatically credited during liquidity operations.
-
-### **Understanding Fee Collection**
-
-When collecting fees, you need to:
-
-1. Perform a DECREASE_LIQUIDITY operation with zero liquidity
-2. Handle the positive deltas (the fees you’re collecting)
-3. Specify where the fees should go
-
-### **Implementation**
-
-```solidity
-/// @notice Collects accumulated fees from a position
-/// @param tokenId The ID of the position to collect fees from
-/// @param recipient Address that will receive the fees
-function collectFees(
- uint256 tokenId,
- address recipient
-) external {
- // Define the sequence of operations
- bytes memory actions = abi.encodePacked(
- Actions.DECREASE_LIQUIDITY, // Remove liquidity
- Actions.TAKE_PAIR // Receive both tokens
- );
-
- // Prepare parameters array
- bytes[] memory params = new bytes[](2);
-
- // Parameters for DECREASE_LIQUIDITY
- // All zeros since we're only collecting fees
- params[0] = abi.encode(
- tokenId, // Position to collect from
- 0, // No liquidity change
- 0, // No minimum for token0 (fees can't be manipulated)
- 0, // No minimum for token1
- "" // No hook data needed
- );
-```
-
-When collecting fees, we use a zero-liquidity decrease operation - this means we're not actually removing any liquidity from the position, we're just collecting accumulated fees.
-
-And note that we set minimums to 0 for fee collection because fees cannot be manipulated in a front-run attack. This is different from other liquidity operations where setting appropriate minimum amounts is crucial for slippage protection.
-
-Set up the fee collection parameters:
-
-```solidity
- // Standard TAKE_PAIR for receiving all fees
- params[1] = abi.encode(
- currency0,
- currency1,
- recipient
- );
-}
-```
-
-Execute the fee collection:
-
-```solidity
-// Execute fee collection
-positionManager.modifyLiquidities(
- abi.encode(actions, params),
- block.timestamp + 60 // 60 second deadline
-);
-```
-
-## Burning Positions
-
-When you want to completely exit a position, burning is more efficient than removing liquidity and collecting fees separately. The BURN_POSITION command handles everything in a single operation.
-
-### **Understanding Position Burning**
-
-A burn operation:
-
-- Removes all remaining liquidity from the pool
-- Collects any accumulated fees
-- Burns the position NFT
-- Settles all tokens to a specified recipient
-
-### **Implementation**
-
-Let’s implement a position burning function step by step:
-
-```solidity
-/// @notice Burns a position and receives all tokens
-/// @param tokenId The ID of the position to burn
-/// @param recipient Address that will receive the tokens
-/// @param amount0Min Minimum amount of token0 to receive
-/// @param amount1Min Minimum amount of token1 to receive
-function burnPosition(
- uint256 tokenId,
- address recipient,
- uint256 amount0Min,
- uint256 amount1Min
-) external {
- // Define the sequence of operations:
- // 1. BURN_POSITION - Removes the position and creates positive deltas
- // 2. TAKE_PAIR - Sends all tokens to the recipient
- bytes memory actions = abi.encodePacked(
- Actions.BURN_POSITION,
- Actions.TAKE_PAIR
- );
-```
-
-The burn operation requires two sets of parameters:
-
-```solidity
-bytes[] memory params = new bytes[](2);
-
-// Parameters for BURN_POSITION
-params[0] = abi.encode(
- tokenId, // Position to burn
- amount0Min, // Minimum token0 to receive
- amount1Min, // Minimum token1 to receive
- "" // No hook data needed
-);
-
-// Parameters for TAKE_PAIR - where tokens will go
-params[1] = abi.encode(
- currency0, // First token
- currency1, // Second token
- recipient // Who receives the tokens
-);
-```
-
-Finally, execute the operation:
-
-```solidity
-positionManager.modifyLiquidities(
- abi.encode(actions, params),
- block.timestamp + 60
-);
-```
-
-# Batch-Operating Liquidity
-
-The Position Manager’s command-based design enables you to perform multiple liquidity operations in a single transaction. This is particularly valuable when managing multiple positions or performing complex liquidity management strategies, such as taking tokens from one position to increase liquidity of another position.
-
-## Benefits of Batch Operations
-
-When managing liquidity across multiple positions, batching operations provides significant advantages:
-
-- Reduced gas costs by combining token settlements
-- Atomic execution of related operations
-- Simplified token handling through combined delta resolution
-
-## Implementation Guide
-
-Let’s implement a common scenario: rebalancing liquidity by creating a new position while closing an old one and collecting its fees. We’ll go through it step by step.
-
-First, let’s define our parameters:
-
-```solidity
-/// @notice Rebalances liquidity by creating a new position and closing an old one
-/// @param newPositionParams Parameters for the new position
-/// @param oldPositionId Position to close and collect fees from
-/// @param recipient Address to receive tokens from closed position
-struct NewPositionParams {
- PoolKey poolKey;
- int24 tickLower;
- int24 tickUpper;
- uint128 liquidity;
- uint256 amount0Max;
- uint256 amount1Max;
-}
-```
-
-In this example, we will rebalance liquidity by closing the old position and opening a new position. For the sake of example, let's assume the user will have to transfer additional tokens. Note that capital from the first position is automatically used towards the second position through flash accounting.
-
-```solidity
-function rebalanceLiquidity(
- NewPositionParams calldata newPositionParams,
- uint256 oldPositionId,
- address recipient
-) external {
- // Group liquidity operations first, then delta resolutions
- bytes memory actions = abi.encodePacked(
- Actions.BURN_POSITION, // Remove old position
- Actions.MINT_POSITION, // Create new position
- Actions.SETTLE_PAIR // Provide tokens for new position
- );
-```
-
-Notice how we order our operations: liquidity operations first (MINT and BURN), followed by delta resolutions (SETTLE and TAKE). This ordering is crucial for gas efficiency.
-
-Next, let’s prepare our parameters array:
-
-```solidity
-// We need one parameter set for each action
-bytes[] memory params = new bytes[](3);
-```
-
-Now, let’s encode parameters for the old position:
-
-```solidity
-// Parameters for BURN_POSITION
-params[0] = abi.encode(
- oldPositionId,
- 0, // No minimum for token0 (consider adding slippage protection)
- 0, // No minimum for token1
- "" // No hook data
-);
-```
-
-Then for minting the new position:
-
-```solidity
-// Parameters for MINT_POSITION
-params[1] = abi.encode(
- newPositionParams.poolKey,
- newPositionParams.tickLower,
- newPositionParams.tickUpper,
- newPositionParams.liquidity,
- newPositionParams.amount0Max,
- newPositionParams.amount1Max,
- address(this), // New position owner
- "" // No hook data
-);
-```
-
-Next, we handle token settlements. First for the new position:
-
-```solidity
-// Parameters for SETTLE_PAIR (providing tokens for new position)
-params[2] = abi.encode(
- newPositionParams.poolKey.currency0,
- newPositionParams.poolKey.currency1
-);
-```
-
-With everything prepared, we can execute our batch operation:
-
-```solidity
-// Execute all operations atomically
-positionManager.modifyLiquidities(
- abi.encode(actions, params),
- block.timestamp + 60
-);
- positionManager.modifyLiquidities(
- abi.encode(actions, params),
- block.timestamp + 60
- );
-}
-```
-
-# Delta-Resolving Operations
-
-While we’ve seen basic delta resolution using SETTLE_PAIR and TAKE_PAIR in previous sections, v4’s Position Manager provides additional operations for handling more complex scenarios. Let’s understand when and how to use each one.
-
-## **CLOSE_CURRENCY: Handling Unknown Deltas**
-
-When you can’t predict whether you’ll need to pay or receive tokens, CLOSE_CURRENCY automatically handles either case.
-
-```solidity
-// Example scenario: Converting fees to liquidity
-bytes memory actions = abi.encodePacked(
- Actions.INCREASE_LIQUIDITY,
- Actions.CLOSE_CURRENCY // Will automatically settle or take based on final delta
-);
-
-bytes[] memory params = new bytes[](2);
-
-// Parameters for INCREASE_LIQUIDITY
-params[0] = abi.encode(
- tokenId,
- liquidityIncrease,
- amount0Max,
- amount1Max,
- ""
-);
-
-// CLOSE_CURRENCY only needs the currency
-params[1] = abi.encode(currency0);
-```
-
-This is particularly useful when:
-
-- Converting fees to liquidity (fees might fully cover the increase)
-- Complex operations where final deltas are uncertain
-- Reducing code complexity by letting the protocol handle the direction
-
-## **CLEAR_OR_TAKE: Optimizing for Dust**
-
-Sometimes receiving small token amounts costs more in gas than they’re worth. CLEAR_OR_TAKE lets you specify a threshold:
-
-```solidity
-// Parameters for CLEAR_OR_TAKE
-params[0] = abi.encode(
- currency, // The token to handle
- threshold // Minimum amount worth taking
-);
-```
-
-If the amount to receive is:
-
-- Above threshold: Tokens are taken (like TAKE_PAIR)
-- Below threshold: Amount is forfeited, saving gas
-
-This is valuable for:
-
-- Operations where dust amounts can be ignored
-- Gas optimization in production systems
-
-## **SWEEP: Handling Excess Payments**
-
-SWEEP helps recover any excess tokens sent to the PoolManager:
-
-```solidity
-bytes memory actions = abi.encodePacked(
- Actions.YOUR_MAIN_OPERATION,
- Actions.SWEEP // Add at the end to collect any excess
-);
-
-// Parameters for SWEEP
-params[1] = abi.encode(
- currency, // Token to sweep
- recipient // Where to send excess tokens
-);
-```
-
-Use SWEEP when:
-
-- **Dealing with native ETH operations**
-- Conservative token approvals might result in excess
-- Need to ensure all tokens are properly accounted for
-
-## **Understanding modifyLiquiditiesWithoutUnlock**
-
-This function follows the same encoding and command patterns as `modifyLiquidity`, but serves a specific purpose: it's used when the PoolManager is already unlocked. This is particularly useful in certain scenarios:
-
-- When called from hooks that are already executing within the PoolManager's lock/unlock cycle
-- For operations like automatic fee compounding, where a hook might want to reinvest fees for users
-
-For example, a hook that automatically compounds fees for users would use `modifyLiquiditiesWithoutUnlock` because the hook is already executing within the PoolManager's unlock context, and cannot re-unlock the PoolManager
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/_category_.json b/docs/contracts/v4/guides/_category_.json
deleted file mode 100644
index 318ff6c96..000000000
--- a/docs/contracts/v4/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 5,
- "collapsed": true
-}
diff --git a/docs/contracts/v4/guides/hooks/01-your-first-hook.md b/docs/contracts/v4/guides/hooks/01-your-first-hook.md
deleted file mode 100644
index 0692ad08a..000000000
--- a/docs/contracts/v4/guides/hooks/01-your-first-hook.md
+++ /dev/null
@@ -1,404 +0,0 @@
----
-title: Building Your First Hook
----
-
-# Introduction
-
-Uniswap introduced the v4 of their protocol introducing several new concepts such as hooks, flash accounting, singleton architecture and more. The most interesting of these for developers is hooks, and that’s what we’ll be learning about today.
-
-In this guide, we’ll be conceptualizing, understanding and building a basic points hook, which will give you some idea of how to build your own hook.
-
-## What are we building?
-
-Let’s start by conceptualizing what we’re building today and why. Let’s say you have a token named `TOKEN` that you want to incentivize people to buy. One way of doing so is awarding people points when they buy your token. Prior to v4, you’d have to do this off-chain or via your own helper contract outside of the swap logic, but in v4 you can enable universal access using hooks.
-
-Let’s start by defining when users will be rewarded with these points:
-
-1. When the user swaps `ETH` into `TOKEN` they will get awarded points equal to how much `ETH` they swapped the token with.
-2. When the user adds liquidity, we award them with points equal to the amount of `ETH` they added.
-3. [todo]
-
-In order to keep track of these points, we’ll mint the `POINTS` token to the user, this has an added benefit for the user to be able to track it in their wallet.
-
-# Hook Design
-
-Let’s figure out how our hook will work.
-
-From the t1 v4 Documentation, there are several hooks available for developers to integrate with. In our use case, we specifically need the ability to read swaps and figure out what amounts they are swapping for and who they are.
-
-[consider adding a callout for Universal Router here]
-
-For our hook, we’ll be using `afterSwap` and `afterAddLiquidity` hooks. Why these instead of the `before...` hooks? We’ll dig deeper into this later in this guide.
-
-# Let’s create our hook!
-
-We’ll call this hook `PointsHook` and create it in such a way that any pool paired with `TOKEN` can use it.
-
-## Setting things up
-
-[todo: base this on the new template repo]
-
-## Basic Structure
-
-So far, we’ve created the file named `PointsHook.sol` which only contains the outline of a hook contract. Let’s add our `afterSwap` and `afterAddLiquidity` hooks to it.
-
-```solidity
-contract PointsHook is BaseHook {
- constructor(IPoolManager _poolManager) BaseHook(_poolManager) {}
-
- function getHookPermissions()
- public
- pure
- override
- returns (Hooks.Permissions memory)
- {
- return
- Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: false,
- beforeAddLiquidity: false,
- afterAddLiquidity: true,
- beforeRemoveLiquidity: false,
- afterRemoveLiquidity: false,
- beforeSwap: false,
- afterSwap: true,
- beforeDonate: false,
- afterDonate: false,
- beforeSwapReturnDelta: false,
- afterSwapReturnDelta: false,
- afterAddLiquidityReturnDelta: false,
- afterRemoveLiquidityReturnDelta: false
- });
- }
-
- function afterSwap(
- address,
- PoolKey calldata key,
- IPoolManager.SwapParams calldata,
- BalanceDelta delta,
- bytes calldata
- ) external override returns (bytes4, int128) {
- return (BaseHook.afterSwap.selector, 0);
- }
-
- function afterAddLiquidity(
- address sender,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- BalanceDelta delta,
- BalanceDelta feesAccrued,
- bytes calldata hookData
- ) external override returns (bytes4, BalanceDelta) {
- return (BaseHook.afterAddLiquidity.selector, delta);
- }
-}
-```
-
-You’ll notice that both hooks return their own selector in the functions, this is pattern used by the protocol to signal “successful” invocation. We’ll talk about rest of the return parameters when we start adding the functionality.
-
-Most of the code at this point should be self-explanatory. It’s not doing anything yet, but it’s a great place to start adding the functionality we need.
-
-## Points Logic
-
-Up until here, the hook isn’t actually doing anything, so let’s add some functionality! First, let’s setup the `POINTS` token that we’ll reward people with.
-
-```solidity
-contract PointsToken is ERC20, Owned {
- constructor() ERC20("Points Token", "POINTS", 18) Owned(msg.sender) {}
-
- function mint(address to, uint256 amount) external onlyOwner {
- _mint(to, amount);
- }
-}
-```
-
-Let’s make it so that our hook can mint some!
-
-```solidity
-contract PointsHook is BaseHook {
- PointsToken pointsToken;
-
- constructor(IPoolManager _poolManager) BaseHook(_poolManager) {
- pointsToken = new PointsToken();
- }
-
- [...]
-}
-```
-
-Next, we need to calculate how many points to assign based on the `ETH` value of the swap or liquidity action. We’ll be awarding `POINTS` in 1:1 ratio for the `ETH`, so if the user swapped 1 `ETH`, we’ll give them 1 `POINTS`. Let’s also create a function to award these to the user.
-
-```solidity
- function getPointsForAmount(
- uint256 amount
- ) internal pure returns (uint256) {
- return amount; // 1:1 with ETH
- }
-
- function awardPoints(address to, uint256 amount) internal {
- pointsToken.mint(to, getPointsForAmount(amount));
- }
-```
-
-## Hook Logic
-
-Now we need to actually get the value that the user is swapping or adding liquidity with. We’ll be using the two hooks to achieve that functionality.
-
-### Getting the user address
-
-Before we go into the logic for the hook, we have a side quest! How do we actually get the address of the user? The `PositionManager` doesn’t pass the user address directly to the hook, mainly because of the complexity of getting that data in the first place.
-
-You’d have noticed, both of our hooks have a `hookData` field at the end. This allows any arbitrary data to be passed to the hook at the time of invocation, and we’ll use this field to encode the user address.
-
-Let’s create some helper functions to encode and decode this data:
-
-```solidity
- function getHookData(address user) public pure returns (bytes memory) {
- return abi.encode(user);
- }
-
- function parseHookData(
- bytes calldata data
- ) public pure returns (address user) {
- return abi.decode(data, (address));
- }
-```
-
-### Hook Logic: `afterSwap`
-
-In order for us to award these points to the user, we need a few things and we also need to create a few conditions.
-
-Let’s start with the most basic ones. We want the user to be swapping in the `ETH/TOKEN` pool and be buying the `TOKEN` in order to get awarded these `POINTS` token. Next, we need to figure out who the user is and how much ETH they are spending, and finally award the points accordingly.
-
-```solidity
- function afterSwap(
- address,
- PoolKey calldata key,
- IPoolManager.SwapParams calldata swapParams,
- BalanceDelta delta,
- bytes calldata hookData
- ) external override onlyPoolManager returns (bytes4, int128) {
- // We only award points in the ETH/TOKEN pools.
- if (!key.currency0.isAddressZero()) {
- return (BaseHook.afterSwap.selector, 0);
- }
-
- // We only award points if the user is buying the TOKEN
- if (!swapParams.zeroForOne) {
- return (BaseHook.afterSwap.selector, 0);
- }
-
- // Let's figure out who's the user
- address user = parseHookData(hookData);
-
- // How much ETH are they spending?
- uint256 ethSpendAmount = swapParams.amountSpecified < 0
- ? uint256(-swapParams.amountSpecified)
- : uint256(int256(-delta.amount0()));
-
- // And award the points!
- _awardPoints(user, ethSpendAmount);
-
- return (BaseHook.afterSwap.selector, 0);
- }
-```
-
-That middle section about figuring out how much `ETH` the user spent seems a little fishy, what’s going on there? Let’s break it down.
-
-When `amountSpecified` is less than 0, it means this is an `exact input for output` swap, essentially where the user is coming in with an exact amount of ETH. In the other case, it’s an `exact output for input` swap, where the user is expecting a specific amount out. In our case, we get this from the precalculated `delta` that t1 V4 gives us as a part of the `afterSwap` hook.
-
-### Hook Logic: `afterAddLiquidity`
-
-Similar to what we did for the `afterSwap` hook, now we need to award users for adding liquidity. We’ll do the exact same thing here, except we’ll award the points based on the added liquidity.
-
-```solidity
- function afterAddLiquidity(
- address sender,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- BalanceDelta delta,
- BalanceDelta feesAccrued,
- bytes calldata hookData
- ) external override onlyPoolManager returns (bytes4, BalanceDelta) {
- // We only award points in the ETH/TOKEN pools.
- if (!key.currency0.isAddressZero()) {
- return (BaseHook.afterAddLiquidity.selector, delta);
- }
-
- // Let's figure out who's the user
- address user = parseHookData(hookData);
-
- // How much ETH are they spending?
- uint256 ethSpendAmount = uint256(int256(-delta.amount0()));
-
- // And award the points!
- _awardPoints(user, ethSpendAmount);
-
- return (BaseHook.afterAddLiquidity.selector, delta);
- }
-```
-
-# Testing
-
-We’re using Foundry for building our hook, and we’ll continue using it to write our tests. One of the great things about Foundry is that you can write tests in Solidity itself instead of context switching between another language.
-
-### Hook Contract Address
-
-The `PositionManager` for t1 v4 expects the hook address to indicate supported flags.
-
-[todo: this section is completely wrong on UHI atm and needs to be rewritten, should consider moving it out of here and have a singular place explaining hook bits]
-
-### Test Suite
-
-The starter repo you cloned already has an existing base test file, let’s start by copying it into `PointsHook.t.sol`.
-
-```solidity
-contract PointsHookTest is Test, Fixtures {
- using EasyPosm for IPositionManager;
- using StateLibrary for IPoolManager;
-
- PointsHook hook;
- PointsToken pointsToken;
- PoolId poolId;
-
- uint256 tokenId;
- int24 tickLower;
- int24 tickUpper;
-
- function setUp() public {
- // creates the pool manager, utility routers, and test tokens
- deployFreshManagerAndRouters();
- deployMintAndApprove2Currencies();
-
- deployAndApprovePosm(manager);
-
- // Deploy the hook to an address with the correct flags
- address flags = address(
- uint160(Hooks.AFTER_SWAP_FLAG | Hooks.AFTER_ADD_LIQUIDITY_FLAG) ^
- (0x4444 << 144) // Namespace the hook to avoid collisions
- );
- bytes memory constructorArgs = abi.encode(manager); //Add all the necessary constructor arguments from the hook
- deployCodeTo("PointsHook.sol:PointsHook", constructorArgs, flags);
- hook = PointsHook(flags);
- pointsToken = hook.pointsToken();
-
- // Create the pool
- key = PoolKey(
- Currency.wrap(address(0)),
- currency1,
- 3000,
- 60,
- IHooks(hook)
- );
- poolId = key.toId();
- manager.initialize(key, SQRT_PRICE_1_1, ZERO_BYTES);
-
- // Provide full-range liquidity to the pool
- tickLower = TickMath.minUsableTick(key.tickSpacing);
- tickUpper = TickMath.maxUsableTick(key.tickSpacing);
-
- deal(address(this), 200 ether);
-
- (uint256 amount0, uint256 amount1) = LiquidityAmounts
- .getAmountsForLiquidity(
- SQRT_PRICE_1_1,
- TickMath.getSqrtPriceAtTick(tickLower),
- TickMath.getSqrtPriceAtTick(tickUpper),
- uint128(100e18)
- );
-
- (tokenId, ) = posm.mint(
- key,
- tickLower,
- tickUpper,
- 100e18,
- amount0 + 1,
- amount1 + 1,
- address(this),
- block.timestamp,
- hook.getHookData(address(this))
- );
- }
-
- function test_PointsHook_Swap() public {
- // [code here]
- }
-}
-```
-
-So far this test setup is fairly simple, we create a bunch of tokens and deploy v4 along with the position manager inside our test. Then, we create a pool with our hook and add some liquidity using the position manager.
-
-Now, let’s write our test. We’ll start by testing the points awarded during the swap.
-
-```solidity
- function test_PointsHook_Swap() public {
- // We already have some points because we added some liquidity during setup.
- // So, we'll subtract those from the total points to get the points awarded for this swap.
- uint256 startingPoints = pointsToken.balanceOf(address(this));
-
- // Let's swap some ETH for the token.
- bool zeroForOne = true;
- int256 amountSpecified = -1e18; // negative number indicates exact input swap!
- BalanceDelta swapDelta = swap(
- key,
- zeroForOne,
- amountSpecified,
- hook.getHookData(address(this))
- );
-
- uint256 endingPoints = pointsToken.balanceOf(address(this));
-
- // Let's make sure we got the right amount of points!
- assertEq(
- endingPoints - startingPoints,
- uint256(-amountSpecified),
- "Points awarded for swap should be 1:1 with ETH"
- );
- }
-```
-
-This test case is fairly straightforward and simply swaps 1 ETH for the target token and compares if we got the right amount of points awarded for it.
-
-Next, we should test our liquidity addition.
-
-```solidity
-function test_PointsHook_Liquidity() public {
- // We already have some points because we added some liquidity during setup.
- // So, we'll subtract those from the total points to get the points awarded for this swap.
- uint256 startingPoints = pointsToken.balanceOf(address(this));
-
- uint128 liqToAdd = 100e18;
-
- (uint256 amount0, uint256 amount1) = LiquidityAmounts
- .getAmountsForLiquidity(
- SQRT_PRICE_1_1,
- TickMath.getSqrtPriceAtTick(tickLower),
- TickMath.getSqrtPriceAtTick(tickUpper),
- liqToAdd
- );
-
- // Let's swap some ETH for the token.
- posm.mint(
- key,
- tickLower,
- tickUpper,
- liqToAdd,
- amount0 + 1,
- amount1 + 1,
- address(this),
- block.timestamp,
- hook.getHookData(address(this))
- );
-
- uint256 endingPoints = pointsToken.balanceOf(address(this));
-
- // Let's make sure we got the right amount of points!
- assertApproxEqAbs(endingPoints - startingPoints, uint256(liqToAdd), 10);
- }
-```
-
-This test case looks very similar to the `afterSwap` one, except we’re testing based on the liquidity added. You’ll notice at the end we’re testing for approximate equality within 10 points. This is to account for minor differences in actual liquidity added due to ticks and pricing.
-
-# What’s next?
-
-[todo: explain docs and introduce advance concepts]
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/hooks/04-Volatility-fee-hook.mdx b/docs/contracts/v4/guides/hooks/04-Volatility-fee-hook.mdx
deleted file mode 100644
index d48c7abfa..000000000
--- a/docs/contracts/v4/guides/hooks/04-Volatility-fee-hook.mdx
+++ /dev/null
@@ -1,186 +0,0 @@
----
-title: Volatility-Based Dynamic Fee Hook
----
-
-This example demonstrates a complete implementation of a volatility-based dynamic fee hook for Uniswap v4, incorporating all key components and functions.
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.0;
-
-import {BaseHook} from "@uniswap/v4-core/contracts/BaseHook.sol";
-import {Hooks} from "@uniswap/v4-core/contracts/libraries/Hooks.sol";
-import {IPoolManager} from "@uniswap/v4-core/contracts/interfaces/IPoolManager.sol";
-import {PoolKey} from "@uniswap/v4-core/contracts/types/PoolKey.sol";
-import {PoolId, PoolIdLibrary} from "@uniswap/v4-core/contracts/types/PoolId.sol";
-import {LPFeeLibrary} from "@uniswap/v4-core/contracts/libraries/LPFeeLibrary.sol";
-import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "@uniswap/v4-core/contracts/types/BeforeSwapDelta.sol";
-
-interface IVolatilityOracle {
- function realizedVolatility() external view returns (uint256);
- function latestTimestamp() external view returns (uint256);
-}
-
-contract VolatilityBasedFeeHook is BaseHook {
- using PoolIdLibrary for PoolKey;
-
- uint256 public constant HIGH_VOLATILITY_TRIGGER = 1400; // 14%
- uint256 public constant MEDIUM_VOLATILITY_TRIGGER = 1000; // 10%
- uint24 public constant HIGH_VOLATILITY_FEE = 10000; // 1%
- uint24 public constant MEDIUM_VOLATILITY_FEE = 3000; // 0.3%
- uint24 public constant LOW_VOLATILITY_FEE = 500; // 0.05%
-
- IVolatilityOracle public immutable volatilityOracle;
- uint256 public lastFeeUpdate;
- uint256 public constant FEE_UPDATE_INTERVAL = 1 hours;
-
- constructor(IPoolManager _poolManager, IVolatilityOracle _volatilityOracle) BaseHook(_poolManager) {
- volatilityOracle = _volatilityOracle;
- }
-
- function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
- return Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: true,
- beforeModifyLiquidity: false,
- afterModifyLiquidity: false,
- beforeSwap: true,
- afterSwap: false,
- beforeDonate: false,
- afterDonate: false,
- noOp: false
- });
- }
-
- function afterInitialize(address, PoolKey calldata key, uint160, int24, bytes calldata)
- external
- override
- returns (bytes4)
- {
- uint24 initialFee = getFee();
- poolManager.updateDynamicLPFee(key, initialFee);
- return IHooks.afterInitialize.selector;
- }
-
- function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, bytes calldata)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24)
- {
- if (block.timestamp >= lastFeeUpdate + FEE_UPDATE_INTERVAL) {
- uint24 newFee = getFee();
- lastFeeUpdate = block.timestamp;
- return (IHooks.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, newFee | LPFeeLibrary.OVERRIDE_FEE_FLAG);
- }
- return (IHooks.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, 0);
- }
-
- function getFee(address, PoolKey calldata) public view returns (uint24) {
- uint256 realizedVolatility = volatilityOracle.realizedVolatility();
- if (realizedVolatility > HIGH_VOLATILITY_TRIGGER) {
- return HIGH_VOLATILITY_FEE;
- } else if (realizedVolatility > MEDIUM_VOLATILITY_TRIGGER) {
- return MEDIUM_VOLATILITY_FEE;
- } else {
- return LOW_VOLATILITY_FEE;
- }
- }
-}
-```
-
-# Volatility-Based Fee Structure
-
-This hook contract example sets up the structure for a volatility-based fee system, defining thresholds and corresponding fees:
-
-```solidity
-contract VolatilityBasedFeeHook is BaseHook {
- uint256 public constant HIGH_VOLATILITY_TRIGGER = 1400; // 14%
- uint256 public constant MEDIUM_VOLATILITY_TRIGGER = 1000; // 10%
- uint24 public constant HIGH_VOLATILITY_FEE = 10000; // 1%
- uint24 public constant MEDIUM_VOLATILITY_FEE = 3000; // 0.3%
- uint24 public constant LOW_VOLATILITY_FEE = 500; // 0.05%
-
- IVolatilityOracle public immutable volatilityOracle;
-
- constructor(IPoolManager _poolManager, IVolatilityOracle _volatilityOracle) BaseHook(_poolManager) {
- volatilityOracle = _volatilityOracle;
- }
-
- // Implementation of getFee and other functions...
-}
-```
-
-where:
-
-- High volatility tier: > 14% (fee: 1%)
-- Medium volatility tier: 10%-14% (fee: 0.30%)
-- Low volatility tier: < 10% (fee: 0.05%)
-
-The constructor sets up the initial parameters and connections to required contracts (PoolManager and VolatilityOracle).
-
-# Realized Volatility Oracle
-
-The contract utilizes an oracle to provide historical data on price movements for informed fee adjustments. This could be implemented as an external service or an on-chain mechanism tracking recent price changes.
-
-```solidity
-interface IVolatilityOracle {
- function realizedVolatility() external view returns (uint256);
- function latestTimestamp() external view returns (uint256);
-}
-```
-
-# getFee Function Implementation
-
-The getFee function calculates the fee based on the current volatility level and returns the appropriate fee rate. This function implements the logic for dynamically calculating fees based on current conditions. The getFee function should return a fee value based on your chosen criteria (e.g., volatility, volume, etc.).
-
-```solidity
-function getFee(address, PoolKey calldata) external view returns (uint24) {
- uint256 realizedVolatility = volatilityOracle.realizedVolatility();
- if (realizedVolatility > HIGH_VOLATILITY_TRIGGER) {
- return HIGH_VOLATILITY_FEE;
- } else if (realizedVolatility > MEDIUM_VOLATILITY_TRIGGER) {
- return MEDIUM_VOLATILITY_FEE;
- } else {
- return LOW_VOLATILITY_FEE;
- }
-}
-```
-
-# beforeSwap Hook Callback
-
-The `beforeSwap` hook is used to update fees before each swap, ensuring they reflect the most recent market conditions:
-
-```solidity
-function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, bytes calldata)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24)
-{
- if (block.timestamp >= lastFeeUpdate + FEE_UPDATE_INTERVAL) {
- uint24 newFee = getFee();
- lastFeeUpdate = block.timestamp;
- return (IHooks.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, newFee | LPFeeLibrary.OVERRIDE_FEE_FLAG);
- }
- return (IHooks.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, 0);
-}
-```
-
-This implementation calculates the new fee and returns it with the `OVERRIDE_FEE_FLAG`, allowing for per-swap fee updates without calling `updateDynamicLPFee`.
-
-# afterInitialize Hook Callback
-
-The `afterInitialize` hook is used to set the initial fee for the dynamic fee pool:
-
-```solidity
-function afterInitialize(address, PoolKey calldata key, uint160, int24, bytes calldata)
- external
- override
- returns (bytes4)
-{
- uint24 initialFee = getFee();
- poolManager.updateDynamicLPFee(key, initialFee);
- return IHooks.afterInitialize.selector;
-}
-```
-
-This ensures that the pool starts with an appropriate fee based on current market conditions.
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/hooks/05-hook-deployment.mdx b/docs/contracts/v4/guides/hooks/05-hook-deployment.mdx
deleted file mode 100644
index f513e7346..000000000
--- a/docs/contracts/v4/guides/hooks/05-hook-deployment.mdx
+++ /dev/null
@@ -1,131 +0,0 @@
----
-title: Hook Deployment
----
-
-## Hook Flags
-
-As mentioned in [Concept of Hooks](../../concepts/04-hooks.mdx), hook contracts indicate their implemented functions by __encoding its behavior in the address of the contract__. The `PoolManager` uses these permissions to determine which hook functions to call for a given pool.
-
-Each hook function e.g. `beforeSwap` - corresponds to a certain _flag_. For example, the `beforeSwap` function is correlated to the [`BEFORE_SWAP_FLAG`](https://github.com/Uniswap/v4-core/blob/main/src/libraries/Hooks.sol#L37) which has a value of `1 << 7`.
-
-These flags represent specific bits in the address of the hook smart contract - and the value of the bit (a one or a zero) represents whether that flag is true or false. An example:
-
-Addresses on Ethereum are 20 bytes long (160 bits). So for example the address:
-
-```
-0x00000000000000000000000000000000000000C0
-```
-
-represented in binary is:
-
-```solidity
-0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
-0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
-0000 0000 0000 0000 0000 0000 1100 0000
-```
-
-In binary it goes from right-to-left - so the trailing 8 bits of this address are `1100 0000` where:
-
-1st Bit to 6th Bit = `0`
-
-7th Bit and 8th Bit = `1`
-
-The `AFTER_SWAP` flag is represented by the 7th bit - which is set to `1` for the example contract address. In the `PoolManager` swap execution flow, it will observe the flag and make a call to the hook's `afterSwap` function.
-
-Similarly, the 8th bit which is also a `1`, actually corresponds to the `BEFORE_SWAP` i.e. the `beforeSwap` hook function - which will also be called by the `PoolManager` during a `swap` workflow.
-
-A full list of all flags can be found [here](https://github.com/Uniswap/v4-core/blob/main/src/libraries/Hooks.sol).
-
-## Hook Miner
-
-Because of encoded addresses, hook developers must _mine_ an address to a their particular pattern
-
-For local testing, `deployCodeTo` cheatcode in Foundry can be used to deploy hook contract to any address.
-
-But when deploying hooks to an actual network, address mining is required to find the proper deployment address
-There is a helper library [`HookMiner.sol`](https://github.com/uniswapfoundation/v4-template/blob/main/test/utils/HookMiner.sol) that can be used to mine for correct addresses.
-
-Let's see it in action for a Foundry script. We will make use of the example - Points Hook from [Building Your First Hook](./01-your-first-hook.md).
-
-First we set up the contract for Foundry script and import the relevant dependencies:
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.19;
-
-import "forge-std/Script.sol";
-import {Hooks} from "v4-core/src/libraries/Hooks.sol";
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-
-import {Constants} from "./base/Constants.sol";
-import {PointsHook} from "../src/PointsHook.sol";
-import {HookMiner} from "../test/utils/HookMiner.sol";
-
-/// @notice Mines the address and deploys the PointsHook.sol Hook contract
-contract PointsHookScript is Script, Constants {
- function setUp() public {}
-
- function run() public {
-```
-
-Specify the flags needed to be encoded in the address:
-
-```solidity
-uint160 flags = uint160(
- Hooks.AFTER_ADD_LIQUIDITY_FLAG | Hooks.AFTER_SWAP_FLAG
-);
-```
-
-Mine the address by finding a `salt` that produces a hook address with the desired `flags`, use the Foundry deterministic deployer when deploying via Foundry script:
-
-```solidity
-bytes memory constructorArgs = abi.encode(POOLMANAGER);
-(address hookAddress, bytes32 salt) =
- HookMiner.find(CREATE2_DEPLOYER, flags, type(PointsHook).creationCode, constructorArgs);
-```
-
-Deploy the hook using CREATE2 with the `salt`, and compare the deployed address with the address mined:
-
-```solidity
-vm.broadcast();
-PointsHook pointsHook = new PointsHook{salt: salt}(IPoolManager(POOLMANAGER));
-require(address(pointsHook) == hookAddress, "PointsHookScript: hook address mismatch");
-```
-
-## A Complete Foundry Script Contract
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.19;
-
-import "forge-std/Script.sol";
-import {Hooks} from "v4-core/src/libraries/Hooks.sol";
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-
-import {Constants} from "./base/Constants.sol";
-import {PointsHook} from "../src/PointsHook.sol";
-import {HookMiner} from "../test/utils/HookMiner.sol";
-
-/// @notice Mines the address and deploys the PointsHook.sol Hook contract
-contract PointsHookScript is Script, Constants {
- function setUp() public {}
-
- function run() public {
- // hook contracts must have specific flags encoded in the address
- uint160 flags = uint160(
- Hooks.BEFORE_SWAP_FLAG | Hooks.AFTER_SWAP_FLAG | Hooks.BEFORE_ADD_LIQUIDITY_FLAG
- | Hooks.BEFORE_REMOVE_LIQUIDITY_FLAG
- );
-
- // Mine a salt that will produce a hook address with the correct flags
- bytes memory constructorArgs = abi.encode(POOLMANAGER);
- (address hookAddress, bytes32 salt) =
- HookMiner.find(CREATE2_DEPLOYER, flags, type(PointsHook).creationCode, constructorArgs);
-
- // Deploy the hook using CREATE2
- vm.broadcast();
- PointsHook pointsHook = new PointsHook{salt: salt}(IPoolManager(POOLMANAGER));
- require(address(pointsHook) == hookAddress, "PointsHookScript: hook address mismatch");
- }
-}
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/guides/hooks/_category_.json b/docs/contracts/v4/guides/hooks/_category_.json
deleted file mode 100644
index 4a4dd7399..000000000
--- a/docs/contracts/v4/guides/hooks/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Hooks",
- "position": 1,
- "collapsed": true
-}
diff --git a/docs/contracts/v4/overview.mdx b/docs/contracts/v4/overview.mdx
deleted file mode 100644
index d31d17636..000000000
--- a/docs/contracts/v4/overview.mdx
+++ /dev/null
@@ -1,61 +0,0 @@
----
-id: overview
-title: Overview
-sidebar_position: 1
----
-
-# Uniswap v4
-
-Uniswap v4 inherits all of the capital efficiency gains of Uniswap v3, but provides flexibility via *hooks* and gas optimizations across the entire lifecycle.
-
-For additional information, see the [Uniswap v4 whitepaper](https://github.com/Uniswap/v4-core/blob/main/docs/whitepaper/whitepaper-v4.pdf)
-
----
-
-
-## Hooks
-
-Developers can attach solidity logic to the _swap lifecycle_ through Hooks. The logic is executed before and/or after major operations such as
-pool creation, liquidity addition and removal, swapping, and donations. Hooks are deployed contracts, and are called by the Uniswap v4 PoolManager,
-for permissionless execution.
-
-The flexibility of hooks can enable:
-* Limit orders
-* Custom oracles
-* Fee management
-* Automated liquidity management
-
-## Dynamic Fees
-
-Uniswap v4 supports dynamic fees, allowing pools to adjust their fees up or down. While other AMMs may have hard-coded logic for dynamic fees,
-v4 provides no opinionated calculation of the fee. The frequency of *liquidity fee* updates is also flexible and determined by the developer. Fee updates can
-occur on every swap, every block, or on an arbitrary schedule (weekly, monthly, yearly, etc).
-
-Dynamic fees open up the design space for fee optimization, value redistribution, and research.
-
-
-## Singleton Design
-
-Architecturally, all pool state and operations are managed by a single contract -- `PoolManager.sol`. The singleton design provides major gas
-savings. For example, creating a pool is now a state update instead of the deployment of a new contract. Swapping through multiple pools no longer requires
-transferring tokens for intermediate pools.
-
-## Flash Accounting
-
-By leveraging EIP-1153 Transient Storage, v4 provides an optimization referred to as *flash accounting*. Swapping, liquidity modification, and donations
-incur *balance changes*, i.e. tokens to be sent in and tokens to be taken out. With *flash accounting* these balance changes are efficiently recorded in transient storage and
-netted against each other. This system allows users to only pay the final balance change, without the need for resolving intermediate balance changes.
-
-## Native ETH
-
-Uniswap v4 supports native token assets (Ether), without the need to wrap/unwrap the native token to Wrapped Ether (WETH9).
-
-## Custom Accounting
-
-The flexibility of custom accounting allows developers to alter token amounts for swaps and liquidity modifications. The feature opens up the design
-space for hooks to charge fees or forgo the underlying concentrated liquidity model.
-
-Example use-cases:
-* Custom curves, opt-out of the concentrated liquidity curve in favor of an entirely independent pricing mechanism
-* Hook swap fees, charge and collect fees on swaps
-* Liquidity withdrawal fees, penalize and/or redistribute fee revenue
diff --git a/docs/contracts/v4/quickstart/01-create-pool.mdx b/docs/contracts/v4/quickstart/01-create-pool.mdx
deleted file mode 100644
index 556c8b134..000000000
--- a/docs/contracts/v4/quickstart/01-create-pool.mdx
+++ /dev/null
@@ -1,176 +0,0 @@
----
-title: Create Pool
----
-
-## Context
-
-Creating a pool on Uniswap v4 is permissionless and enables the trading of an asset. Uniswap v4 is a popular destination for creating markets due to its:
-
-* Proven track record and battle-tested codebase
-* Concentrated liquidity, unlocking capital efficiency
-* Flexibile pool design through dynamic fees and hooks
-* Gas-efficient architecture
-* Integrations with alternative trading venues
-
-For more information, developers should see [Uniswap v4 Overview](/contracts/v4/overview)
-
-The guide covers two approaches to creating a pool:
-1. Create a pool only
-2. Create a pool and add initial liquidity, with one transaction
-
-### Setup
-
-Developing with Uniswap v4 _requires [foundry](https://book.getfoundry.sh)_
-
-Install the dependencies:
-```bash
-forge install uniswap/v4-core
-forge install uniswap/v4-periphery
-```
-
-## Guide: Create a Pool Only
-
-To initialize a Uniswap v4 Pool _without initial liquidity_, developers should call [`PoolManager.initialize()`](/contracts/v4/reference/core/interfaces/IPoolManager#initialize)
-
-Creating a pool without liquidity may be useful for "reserving" a pool for future use, when initial liquidity is not available, or when external market makers would provide the starting liquidity
-
-### 1. Configure the Pool
-
-```solidity
-import {PoolKey} from "v4-core/src/types/PoolKey.sol";
-
-PoolKey memory pool = PoolKey({
- currency0: currency0,
- currency1: currency1,
- fee: lpFee,
- tickSpacing: tickSpacing,
- hooks: hookContract
-});
-```
-> For native token pairs (Ether), use `CurrencyLibrary.ADDRESS_ZERO` as `currency0`
-
-[PoolKey](/contracts/v4/reference/core/types/PoolKey) uniquely identifies a pool
-
-* _Currencies_ should be sorted, `uint160(currency0) < uint160(currency1)`
-* _lpFee_ is the fee expressed in pips, i.e. 3000 = 0.30%
-* _tickSpacing_ is the granularity of the pool. Lower values are more precise but may be more expensive to trade on
-* _hookContract_ is the address of the hook contract
-
-A note on `tickSpacing`:
-
-Lower tick spacing provides improved price precision; however, smaller tick spaces will cause swaps to cross ticks more often, incurring higher gas costs
-
-As a reference, Uniswap v3 pools are configured with:
-
-| Fee | Fee Value | Tick Spacing |
-|-------|-----------|--------------|
-| 0.01% | 100 | 1 |
-| 0.05% | 500 | 10 |
-| 0.30% | 3000 | 60 |
-| 1.00% | 10_000 | 200 |
-
-### 2. Call `initialize`
-Pools are initialized with a starting price
-```solidity
-IPoolManager(manager).initialize(pool, startingPrice);
-```
-* the _startingPrice_ is expressed as sqrtPriceX96: `floor(sqrt(token1 / token0) * 2^96)`
- - i.e. `79228162514264337593543950336` is the starting price for a 1:1 pool
-
-## Guide: Create a Pool & Add Liquidity
-Uniswap v4's [PositionManager](/contracts/v4/reference/periphery/PositionManager) supports atomic creation of a pool and initial liquidity using [_multicall_](/contracts/v4/reference/periphery/base/Multicall_v4). Developers can create a trading pool, with liquidity, in a single transaction:
-
-### 1. Initialize the parameters provided to `multicall()`
-```solidity
-bytes[] memory params = new bytes[](2);
-```
-* The first call, `params[0]`, will encode `initializePool` parameters
-* The second call, `params[1]`, will encode a _mint_ operation for `modifyLiquidities`
-
-### 2. Configure the pool
-```solidity
-PoolKey memory pool = PoolKey({
- currency0: currency0,
- currency1: currency1,
- fee: lpFee,
- tickSpacing: tickSpacing,
- hooks: hookContract
-});
-```
-> For native token pairs (Ether), use `CurrencyLibrary.ADDRESS_ZERO` as `currency0`
-
-[PoolKey](/contracts/v4/reference/core/types/PoolKey) uniquely identifies a pool
-* _Currencies_ should be sorted, `uint160(currency0) < uint160(currency1)`
-* _lpFee_ is the fee expressed in pips, i.e. 3000 = 0.30%
-* _tickSpacing_ is the granularity of the pool. Lower values are more precise but more expensive to trade
-* _hookContract_ is the address of the hook contract
-
-### 3. Encode the [`initializePool`](/contracts/v4/reference/periphery/base/PoolInitializer) parameters
-Pools are initialized with a starting price
-```solidity
-params[0] = abi.encodeWithSelector(
- PositionManager.initializePool.selector,
- pool,
- startingPrice
-);
-```
-* the _startingPrice_ is expressed as _sqrtPriceX96_: `floor(sqrt(token1 / token0) * 2^96)`
- - `79228162514264337593543950336` is the starting price for a 1:1 pool
-
-### 4. Initialize the _mint-liquidity_ parameters
-PositionManager's `modifyLiquidities` uses an encoded command system
-```solidity
-bytes memory actions = abi.encodePacked(uint8(Actions.MINT_POSITION), uint8(Actions.SETTLE_PAIR));
-```
-* The first command `MINT_POSITION` creates a new liquidity position
-* The second command `SETTLE_PAIR` indicates that tokens are to be paid by the caller, to create the position
-
-### 5. Encode the `MINT_POSITION` parameters
-```solidity
-bytes[] memory mintParams = new bytes[](2);
-mintParams[0] = abi.encode(pool, tickLower, tickUpper, liquidity, amount0Max, amount1Max, recipient, hookData);
-```
-* _pool_ the same `PoolKey` defined above, in pool-creation
-* _tickLower_ and _tickUpper_ are the range of the position, must be a multiple of `pool.tickSpacing`
-* _liquidity_ is the amount of liquidity units to add, see `LiquidityAmounts` for converting token amounts to liquidity units
-* _amount0Max_ and _amount1Max_ are the maximum amounts of token0 and token1 the caller is willing to transfer
-* _recipient_ is the address that will receive the liquidity position (ERC-721)
-* _hookData_ is the optional hook data
-
-### 6. Encode the `SETTLE_PAIR` parameters
- Creating a position on a pool requires the caller to transfer `currency0` and `currency1` tokens
-```solidity
-mintParams[1] = abi.encode(pool.currency0, pool.currency1);
-```
-
-### 7. Encode the [`modifyLiquidites`](/contracts/v4/reference/periphery/PositionManager#modifyliquidities) call
-```solidity
-uint256 deadline = block.timestamp + 60;
-params[1] = abi.encodeWithSelector(
- posm.modifyLiquidities.selector, abi.encode(actions, mintParams), deadline
-);
-```
-
-### 8. Approve the tokens
-`PositionManager` uses `Permit2` for token transfers
-* Repeat for both tokens
-```solidity
-// approve permit2 as a spender
-IERC20(token).approve(address(permit2), type(uint256).max);
-
-// approve `PositionManager` as a spender
-IAllowanceTransfer(address(permit2)).approve(token, address(positionManager), type(uint160).max, type(uint48).max);
-```
-
-### 9. Execute the multicall
-The `multicall` is used to execute multiple calls in a single transaction
-```solidity
-PositionManager(posm).multicall(params);
-```
-For pools paired with native tokens (Ether), provide `value` in the contract call
-```solidity
-PositionManager(posm).multicall{value: ethToSend}(params);
-```
-> Excess Ether is **NOT** refunded unless developers encoded `SWEEP` in the `actions` parameter
-
-For a full end-to-end script, developers should see [v4-template's scripts](https://github.com/uniswapfoundation/v4-template/tree/main/script)
diff --git a/docs/contracts/v4/quickstart/02-manage-liquidity/00-setup-liquidity.mdx b/docs/contracts/v4/quickstart/02-manage-liquidity/00-setup-liquidity.mdx
deleted file mode 100644
index 6cbe7abca..000000000
--- a/docs/contracts/v4/quickstart/02-manage-liquidity/00-setup-liquidity.mdx
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Setup
----
-
-# Setup
-
-For users looking to interact with the canonical Uniswap v4 `PositionManager`, _v4-periphery_ is a required dependency
-
-Currently, developing with Uniswap v4 _requires [foundry](https://book.getfoundry.sh)_
-
-## Quickstart
-
-_Use [v4-template](https://github.com/new?template_name=v4-template&template_owner=uniswapfoundation)_, which has pre-configured dependencies and tests for Uniswap v4
-
-Clone the repository made from _v4-template_
-```bash
-git clone https://github.com//
-```
-
-Install dependencies
-```bash
-forge install
-```
-
----
-
-## Manual Setup
-
-After cloning the repository, and installing foundry, developers can manually set up their Uniswap v4 environment:
-
-1. Initialize a foundry project
- ```bash
- forge init . --force
- ```
-
-2. Install dependencies
- ```bash
- forge install uniswap/v4-core
- forge install uniswap/v4-periphery
- ```
-
-3. Set the `remappings.txt` to:
- ```
- @uniswap/v4-core/=lib/v4-core/
- forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/
- forge-std/=lib/v4-core/lib/forge-std/src/
- permit2/=lib/v4-periphery/lib/permit2/
- solmate/=lib/v4-core/lib/solmate/
- v4-periphery/=lib/v4-periphery/
- ```
diff --git a/docs/contracts/v4/quickstart/02-manage-liquidity/01-mint-position.mdx b/docs/contracts/v4/quickstart/02-manage-liquidity/01-mint-position.mdx
deleted file mode 100644
index 7145e9880..000000000
--- a/docs/contracts/v4/quickstart/02-manage-liquidity/01-mint-position.mdx
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Mint Position
----
-
-Similar to Uniswap v3, liquidity positions are minted as ERC-721 tokens and depend on a *periphery* contract.
-v4's `PositionManager` contract will facilitate liquidity management
-
-### Context
-
-Please note that `PositionManager` is a command-based contract, where integrators will be encoding commands and their corresponding
-parameters.
-
-### Setup
-
-See the [setup guide](./00-setup-liquidity.mdx)
-
-# Guide
-
-Below is a step-by-step guide for minting a v4 liquidity position, in *solidity*
-
-### 1. Import and define `IPositionManager`
-
-```solidity
-import {IPositionManager} from "v4-periphery/src/interfaces/IPositionManager.sol";
-
-// inside a contract, test, or foundry script:
-IPositionManager posm = IPositionManager();
-```
-
-### 2. Encode Actions
-
-To mint a position, two actions are required:
-
-* mint operation - the creation of the liquidity position
-* settle pair - the two tokens to be paid by msg.sender
-
-```solidity
-import {Actions} from "v4-periphery/src/libraries/Actions.sol";
-
-bytes memory actions = abi.encodePacked(Actions.MINT_POSITION, Actions.SETTLE_PAIR);
-```
-
-### 3. Encode Parameters
-
-```solidity
-bytes[] memory params = new bytes[](2);
-```
-
-The `MINT_POSITION` action requires the following parameters:
-
-| Parameter | Type | Description |
-|--------------|-----------|----------------------------------------------------------------|
-| `poolKey` | _PoolKey_ | where the liquidity will be added to |
-| `tickLower` | _int24_ | the lower tick boundary of the position |
-| `tickUpper` | _int24_ | the upper tick boundary of the position |
-| `liquidity` | _uint256_ | the amount of liquidity units to mint |
-| `amount0Max` | _uint128_ | the maximum amount of currency0 msg.sender is willing to pay |
-| `amount1Max` | _uint128_ | the maximum amount of currency1 msg.sender is willing to pay |
-| `recipient` | _address_ | the address that will receive the liquidity position (ERC-721) |
-| `hookData` | _bytes_ | arbitrary data that will be forwarded to hook functions |
-
-```solidity
-Currency currency0 = Currency.wrap(); // tokenAddress1 = 0 for native ETH
-Currency currency1 = Currency.wrap();
-PoolKey poolKey = PoolKey(currency0, currency1, 3000, 60, IHooks(hook));
-
-params[0] = abi.encode(poolKey, tickLower, tickUpper, liquidity, amount0Max, amount1Max, recipient, hookData);
-```
-
-The `SETTLE_PAIR` action requires the following parameters:
-
-* `currency0` - _Currency_, one of the tokens to be paid by msg.sender
-* `currency1` - _Currency_, the other token to be paid by msg.sender
-
-```solidity
-params[1] = abi.encode(currency0, currency1);
-```
-
-### 4. Submit Call
-
-The entrypoint for all liquidity operations is `modifyLiquidities()`
-
-```solidity
-uint256 deadline = block.timestamp + 60;
-
-uint256 valueToPass = currency0.isAddressZero() ? amount0Max : 0;
-
-posm.modifyLiquidities{value: valueToPass}(
- abi.encode(actions, params),
- deadline
-);
-```
-
-## Additional notes:
-
-* To obtain balance changes, callers should read token balances before and after the `.modifyLiquidities()` call
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/02-manage-liquidity/02-increase-liquidity.mdx b/docs/contracts/v4/quickstart/02-manage-liquidity/02-increase-liquidity.mdx
deleted file mode 100644
index f0daf3567..000000000
--- a/docs/contracts/v4/quickstart/02-manage-liquidity/02-increase-liquidity.mdx
+++ /dev/null
@@ -1,143 +0,0 @@
----
-title: Increase Liquidity
----
-
-### Context
-
-Please note that `PositionManager` is a command-based contract, where integrators will be encoding commands and their corresponding
-parameters.
-
-Increasing liquidity assumes the position already exists and the user wants to add more tokens to the position.
-
-### Setup
-
-See the [setup guide](./00-setup-liquidity.mdx)
-
-# Guide
-
-Below is a step-by-step guide for increasing a position's liquidity, in *solidity*.
-
-### 1. Import and define `IPositionManager`
-
-```solidity
-import {IPositionManager} from "v4-periphery/src/interfaces/IPositionManager.sol";
-
-// inside a contract, test, or foundry script:
-IPositionManager posm = IPositionManager();
-```
-
-### 2. Encode Actions
-
-To increase a position's liquidity, the first action must be:
-
-* _increase_ operation - the addition of liquidity to an existing position.
-
-For _delta resolving_ operations, developers may need to choose between `SETTLE_PAIR`, `CLOSE_CURRENCY`, or `CLEAR_OR_TAKE` actions.
-
-> In Uniswap v4, fee revenue is automatically credited to a position on increasing liquidity
-
-> There are some cases, where the fee revenue can entirely "pay" for a liquidity increase, and remainder tokens need to be collected
-
-If increasing the liquidity requires the transfer of both tokens:
-
-* _settle pair_ - pays a pair of tokens, to increase liquidity
-
-Otherwise:
-
-* _close currency_ - automatically determines if a currency should be settled or taken.
-* OR _clear or take_ - if the token amount to-be-collected is below a threshold, opt to forfeit the dust. Otherwise, claim the tokens
-
-```solidity
-import {Actions} from "v4-periphery/src/libraries/Actions.sol";
-```
-
-If both tokens need to be sent:
-```solidity
-bytes memory actions = abi.encodePacked(uint8(Actions.INCREASE_LIQUIDITY), uint8(Actions.SETTLE_PAIR));
-```
-
-If converting fees to liquidity, and expect excess fees to be collected
-```solidity
-bytes memory actions = abi.encodePacked(uint8(Actions.INCREASE_LIQUIDITY), uint8(Actions.CLOSE_CURRENCY), uint8(Actions.CLOSE_CURRENCY));
-```
-
-If converting fees to liquidity, forfeiting dust:
-```solidity
-bytes memory actions = abi.encodePacked(uint8(Actions.INCREASE_LIQUIDITY), uint8(Actions.CLEAR_OR_TAKE), uint8(Actions.CLEAR_OR_TAKE));
-```
-
-### 3. Encoded Parameters
-
-When settling pair:
-
-```solidity
-bytes[] memory params = new bytes[](2);
-```
-
-Otherwise:
-
-```solidity
-bytes[] memory params = new bytes[](3);
-```
-
-The `INCREASE_LIQUIDITY` action requires the following parameters:
-
-| Parameter | Type | Description |
-|--------------|-----------|-------------------------------------------------------------------------------|
-| `tokenId` | _uint256_ | position identifier |
-| `liquidity` | _uint256_ | the amount of liquidity to add |
-| `amount0Max` | _uint128_ | the maximum amount of currency0 liquidity msg.sender is willing to pay |
-| `amount1Max` | _uint128_ | the maximum amount of currency1 liquidity msg.sender is willing to pay |
-| `hookData` | _bytes_ | arbitrary data that will be forwarded to hook functions |
-
-```solidity
-params[0] = abi.encode(tokenId, liquidity, amount0Max, amount1Max, hookData);
-```
-
-The `SETTLE_PAIR` action requires the following parameters:
-
-* `currency0` - _Currency_, one of the tokens to be paid by msg.sender
-* `currency1` - _Currency_, the other token to be paid by msg.sender
-
-In the above case, the parameter encoding is:
-
-```solidity
-Currency currency0 = Currency.wrap(); // tokenAddress1 = 0 for native ETH
-Currency currency1 = Currency.wrap();
-params[1] = abi.encode(currency0, currency1);
-```
-
-The `CLOSE_CURRENCY` action requires only one `currency` parameter
-and the encoding is:
-
-```solidity
-params[1] = abi.encode(currency0)
-params[2] = abi.encode(currency1)
-```
-
-The `CLEAR_OR_TAKE` action requires one `currency` and:
-
-* `amountMax` - _uint256_, the maximum threshold to concede dust,
-otherwise taking the dust.
-
-In this case, the parameter encoding is:
-
-```solidity
-params[1] = abi.encode(currency0, amount0Max);
-params[2] = abi.encode(currency1, amount1Max);
-```
-
-### 4. Submit Call
-
-The entrypoint for all liquidity operations is `modifyLiquidities()`.
-
-```solidity
-uint256 deadline = block.timestamp + 60;
-
-uint256 valueToPass = currency0.isAddressZero() ? amount0Max : 0;
-
-posm.modifyLiquidities{value: valueToPass}(
- abi.encode(actions, params),
- deadline
-);
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/02-manage-liquidity/03-decrease-liquidity.mdx b/docs/contracts/v4/quickstart/02-manage-liquidity/03-decrease-liquidity.mdx
deleted file mode 100644
index aa9de3c52..000000000
--- a/docs/contracts/v4/quickstart/02-manage-liquidity/03-decrease-liquidity.mdx
+++ /dev/null
@@ -1,128 +0,0 @@
----
-title: Decrease Liquidity
----
-
-### Context
-
-Please note that `PositionManager` is a command-based contract, where integrators will be encoding commands and their corresponding
-parameters.
-
-Decreasing liquidity assumes the position already exists and the user wants to remove tokens from the position.
-
-### Setup
-
-See the [setup guide](./00-setup-liquidity.mdx)
-
-# Guide
-
-Below is a step-by-step guide for decreasing a position's liquidity, in *solidity*.
-
-### 1. Import and define `IPositionManager`
-
-```solidity
-import {IPositionManager} from "v4-periphery/src/interfaces/IPositionManager.sol";
-
-// inside a contract, test, or foundry script:
-IPositionManager posm = IPositionManager();
-```
-
-### 2. Encode Actions
-
-To decrease a position's liquidity, the first action must be:
-
-* _decrease_ operation - the subtraction of liquidity to an existing position.
-
-For _delta resolving_ operations, developers may need to choose between `TAKE_PAIR`, `CLOSE_CURRENCY`, or `CLEAR_OR_TAKE` actions.
-
-> In Uniswap v4, fee revenue is automatically debited to a position on decreasing liquidity
-
-If decreasing the liquidity requires the transfer of both tokens:
-
-* _take pair_ - receives a pair of tokens, to decrease liquidity
-
-Otherwise:
-
-* _clear or take_ - if the token amount to-be-collected is below a threshold, opt to forfeit the dust. Otherwise, claim the tokens
-
-```solidity
-import {Actions} from "v4-periphery/src/libraries/Actions.sol";
-```
-
-If both tokens need to be sent:
-```solidity
-bytes memory actions = abi.encodePacked(uint8(Actions.DECREASE_LIQUIDITY), uint8(Actions.TAKE_PAIR));
-```
-
-If converting fees to liquidity, forfeiting dust:
-```solidity
-bytes memory actions = abi.encodePacked(uint8(Actions.DECREASE_LIQUIDITY), uint8(Actions.CLEAR_OR_TAKE), uint8(Actions.CLEAR_OR_TAKE));
-```
-
-### 3. Encoded Parameters
-
-When taking pair:
-
-```solidity
-bytes[] memory params = new bytes[](2);
-```
-
-Otherwise:
-
-```solidity
-bytes[] memory params = new bytes[](3);
-```
-
-The `DECREASE_LIQUIDITY` action requires the following parameters:
-
-| Parameter | Type | Description |
-|--------------|-----------|-------------------------------------------------------------------------------|
-| `tokenId` | _uint256_ | position identifier |
-| `liquidity` | _uint256_ | the amount of liquidity to remove |
-| `amount0Min` | _uint128_ | the minimum amount of currency0 liquidity msg.sender is willing to receive |
-| `amount1Min` | _uint128_ | the minimum amount of currency1 liquidity msg.sender is willing to receive |
-| `hookData` | _bytes_ | arbitrary data that will be forwarded to hook functions |
-
-```solidity
-params[0] = abi.encode(tokenId, liquidity, amount0Min, amount1Min, hookData);
-```
-
-The `TAKE_PAIR` action requires the following parameters:
-
-* `currency0` - _Currency_, one of the tokens to be received
-* `currency1` - _Currency_, the other token to be received
-* `recipient` - _Recipient_, the recipient to receive the tokens
-
-In the above case, the parameter encoding is:
-
-```solidity
-Currency currency0 = Currency.wrap(); // tokenAddress1 = 0 for native ETH
-Currency currency1 = Currency.wrap();
-params[1] = abi.encode(currency0, currency1, recipient);
-```
-
-The `CLEAR_OR_TAKE` action requires one `currency` and:
-
-* `amountMax` - _uint256_, the maximum threshold to concede dust,
-otherwise taking the dust.
-
-In this case, the parameter encoding is:
-
-```solidity
-params[1] = abi.encode(currency0, amount0Max);
-params[2] = abi.encode(currency1, amount1Max);
-```
-
-### 4. Submit Call
-
-The entrypoint for all liquidity operations is `modifyLiquidities()`.
-
-```solidity
-uint256 deadline = block.timestamp + 60;
-
-uint256 valueToPass = currency0.isAddressZero() ? amount0Max : 0;
-
-posm.modifyLiquidities{value: valueToPass}(
- abi.encode(actions, params),
- deadline
-);
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/02-manage-liquidity/04-collect.mdx b/docs/contracts/v4/quickstart/02-manage-liquidity/04-collect.mdx
deleted file mode 100644
index 5b4cc8114..000000000
--- a/docs/contracts/v4/quickstart/02-manage-liquidity/04-collect.mdx
+++ /dev/null
@@ -1,91 +0,0 @@
----
-title: Collect Fees
----
-
-### Setup
-
-See the [setup guide](./00-setup-liquidity.mdx)
-
-# Guide
-
-In order to collect fees, the integrator must execute encoded actions
-using the `PositionManager` contract. **Note** that there is no
-`COLLECT` command, instead developers must decrease liquidity with a zero
-liquidity change.
-
-### 1. Import and define `IPositionManager`
-
-```solidity
-import {IPositionManager} from "v4-periphery/src/interfaces/IPositionManager.sol";
-// inside a contract, test, or foundry script:
-IPositionManager posm = IPositionManager();
-```
-
-### 2. Encode actions
-
-To collect fees, the following operations are required:
-* decrease liquidity - collect fees from the core contract
-* take pair - transfer the fee revenue, as both tokens, to a recipient
-
-```solidity
-import {Actions} from "v4-periphery/src/libraries/Actions.sol";
-bytes memory actions = abi.encodePacked(uint8(Actions.DECREASE_LIQUIDITY), uint8(Actions.TAKE_PAIR));
-```
-
-### 3. Encode Parameters
-
-```solidity
-bytes[] memory params = new bytes[](2);
-```
-
-The `DECREASE_LIQUIDITY` action requires the following parameters:
-
-| Parameter | Type | Description |
-|--------------|-----------|-------------------------------------------------------------------------------|
-| `tokenId` | _uint256_ | position identifier |
-| `liquidity` | _uint256_ | the amount of liquidity to withdraw |
-| `amount0Min` | _uint128_ | the minimum amount of currency0 liquidity msg.sender is expecting to get back |
-| `amount1Min` | _uint128_ | the minimum amount of currency1 liquidity msg.sender is expecting to get back |
-| `hookData` | _bytes_ | arbitrary data that will be forwarded to hook functions |
-
-**Note** that in order to collect fees we will default `liquidity`, `amount0Min` and `amount1Min` to 0.
-Because fee collection can not be manipulated in a front-run attack, it is safe to set the slippage
-values `amount0Min, amount1Min` to `0`.
-
-```solidity
-/// @dev collecting fees is achieved with liquidity=0, the second parameter
-params[0] = abi.encode(tokenId, 0, 0, 0, hookData);
-```
-
-The `TAKE_PAIR` action requires the following parameters:
-
-* `currency0` - _Currency_, one of the tokens to be paid by msg.sender
-* `currency1` - _Currency_, the other token to be paid by msg.sender
-* `recipient` - _address_, destination of the fee revenue for both tokens
-
-```solidity
-Currency currency0 = Currency.wrap(); // tokenAddress1 = 0 for native ETH
-Currency currency1 = Currency.wrap();
-params[1] = abi.encode(currency0, currency1, recipient);
-```
-
-### 4. Submit Call
-
-The entrypoint for all liquidity operations is `modifyLiquidities()`.
-
-```solidity
-uint256 deadline = block.timestamp + 60;
-
-uint256 valueToPass = currency0.isAddressZero() ? amount0Max : 0;
-
-posm.modifyLiquidities{value: valueToPass}(
- abi.encode(actions, params),
- deadline
-);
-```
-
-## Additional notes:
-
-* To obtain the amount of fees received, callers should read
-token balances before and after the `.modifyLiquidities()` call.
-
diff --git a/docs/contracts/v4/quickstart/02-manage-liquidity/05-burn-liquidity.mdx b/docs/contracts/v4/quickstart/02-manage-liquidity/05-burn-liquidity.mdx
deleted file mode 100644
index 66728f1b5..000000000
--- a/docs/contracts/v4/quickstart/02-manage-liquidity/05-burn-liquidity.mdx
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: Burn Position
----
-
-### Context
-
-To liquidate a position, the _burn_ functionality can be invoked.
-The funds in the position will be withdrawn and
-all the information of the underlying token will be cleared.
-Burning the position is a cost effective way to
-exit as a liquidity provider.
-
-### Setup
-
-See the [setup guide](./00-setup-liquidity.mdx)
-
-# Guide
-
-Below is a step-by-step guide to burn a position.
-
-### 1. Import and define `IPositionManager`
-
-```solidity
-import {IPositionManager} from "v4-periphery/src/interfaces/IPositionManager.sol";
-
-// inside a contract, test, or foundry script:
-IPositionManager posm = IPositionManager();
-```
-
-### 2. Encode Actions
-
-To burn a position, one action is required:
-
-* burn operation - clears position entirely, withdrawing funds
-
-```solidity
-import {Actions} from "v4-periphery/src/libraries/Actions.sol";
-
-bytes memory actions = abi.encodePacked(Actions.BURN_POSITION);
-```
-
-### 3. Encode Parameters
-
-```solidity
-bytes[] memory params = new bytes[](1);
-```
-
-The `BURN_POSITION` action requires the following parameters:
-
-| Parameter | Type | Description |
-|--------------|-----------|-------------------------------------------------------------------------------|
-| `tokenId` | _uint256_ | position identifier |
-| `amount0Min` | _uint128_ | the minimum amount of currency0 liquidity msg.sender is expecting to get back |
-| `amount1Min` | _uint128_ | the minimum amount of currency1 liquidity msg.sender is expecting to get back |
-| `hookData` | _bytes_ | arbitrary data that will be forwarded to hook functions |
-
-```solidity
-params[0] = abi.encode(tokenId, amount0Min, amount1Min, hookData);
-```
-
-### 4. Submit Call
-
-The entrypoint for all liquidity operations is `modifyLiquidities()`
-
-```solidity
-uint256 deadline = block.timestamp + 60;
-
-posm.modifyLiquidities(
- abi.encode(actions, params),
- deadline
-);
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/02-manage-liquidity/06-batch-liquidity.mdx b/docs/contracts/v4/quickstart/02-manage-liquidity/06-batch-liquidity.mdx
deleted file mode 100644
index 2b1c7da78..000000000
--- a/docs/contracts/v4/quickstart/02-manage-liquidity/06-batch-liquidity.mdx
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: Batch Modify
----
-
-### Context
-
-As seen in previous guides, `PositionManager` is a command-based contract. This design is conducive to
-batching complex liquidity operations. For example, developers can encode efficient logic to move
-liquidity between two positions on entirely different Pools.
-
-### Setup
-
-See the [setup guide](./00-setup-liquidity.mdx)
-
-# Guide
-
-Below is a general reference guide for batch-operating on multiple liquidity positions, in *solidity*.
-This guide does _not_ focus on a specific batch sequence, and is intended to be a general guide for `PositionManager`'s command-based interface.
-
-### 1. Encoded Actions
-
-Actions are divided into two types: _liquidity-operations_ and _delta-resolving_.
-
-* _liquidity-operations_ - actions which that incur a *balance-change*, a change in the pool's liquidity
-* _delta-resolving_ - actions which facilitate token transfers, such as _settling_ and _taking_
-
-The _ordering_ of `actions` determines the sequence of operations. The minimum number of actions is roughly two actions; and the maximum is limited by block gas limit.
-Additionally, _liquidity-operations_ do not have to happen prior to _delta-resolving_ actions. Developers can mix / alternate between
-the two types of actions.
-
-> **However** is good practice to perform _liquidity-operations_ before _delta-resolving_ actions. Minimizing token transfers
-and leveraging [_flash accounting_](../../concepts/02-flash-accounting.mdx) is more gas efficient
-
-Example: `Action.Y` happens after `Action.X` but before `Action.Z`
-```solidity
-import {Actions} from "v4-periphery/src/libraries/Actions.sol";
-
-bytes memory actions = abi.encodePacked(uint8(Actions.X), uint8(Actions.Y), uint8(Actions.Z), ...);
-```
-
-**A Note on Special Actions**:
-
-`PositionManager` supports a few _delta-resolving_ actions beyond the standard `SETTLE` and `TAKE` actions
-
-* `CLOSE_CURRENCY` - automatically determines if a currency should be settled (paid) or taken. Used for cases where callers may not know the final delta
-* `CLEAR_OR_TAKE`- forfeit tokens if the amount is below a specified threshold, otherwise take the tokens. Used for cases where callers may expect to produce dust
-* `SWEEP` - return any excess token balances to a recipient. Used for cases where callers may conversatively overpay tokens
-
-### 2. Encoded Parameters
-
-Each action has its own parameters to encode. Generally:
-
-* _liquidity-operations_ - encode tokenIds, liquidity amounts, and slippage
-
-* _delta-resolving_ - encode currencies, amounts, and recipients
-
-Because actions are ordered, the parameters "zip" with their corresponding actions. The second parameter corresponds to the second action.
-Every action has its own encoded parameters
-
-```solidity
-bytes[] memory params = new bytes[](3);
-
-params[0] = abi.encode(...); // parameters for the first action
-params[1] = abi.encode(...); // parameters for the second action
-params[2] = abi.encode(...); // parameters for the third action
-```
-
-### 3. Submit Call
-
-The entrypoint for all liquidity operations is `modifyLiquidities()`
-
-```solidity
-uint256 deadline = block.timestamp + 60;
-
-posm.modifyLiquidities(
- abi.encode(actions, params),
- deadline
-);
-```
diff --git a/docs/contracts/v4/quickstart/02-manage-liquidity/_category_.json b/docs/contracts/v4/quickstart/02-manage-liquidity/_category_.json
deleted file mode 100644
index a0b9fd05b..000000000
--- a/docs/contracts/v4/quickstart/02-manage-liquidity/_category_.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "label": "Manage Liquidity",
- "collapsed": true
-}
diff --git a/docs/contracts/v4/quickstart/03-swap.mdx b/docs/contracts/v4/quickstart/03-swap.mdx
deleted file mode 100644
index 8dbbd3551..000000000
--- a/docs/contracts/v4/quickstart/03-swap.mdx
+++ /dev/null
@@ -1,283 +0,0 @@
----
-title: Swap
----
-
-# Swapping on Uniswap v4
-The `Universal Router` is a flexible, gas-efficient contract designed to execute complex swap operations across various protocols, including Uniswap v4. It serves as an intermediary between users and the Uniswap v4 `PoolManager`, handling the intricacies of swap execution.
-
-Although it's technically possible to interact directly with the PoolManager contract for swaps, this approach is not recommended due to its complexity and potential inefficiencies. Instead, the Universal Router is the preferred method, as it abstracts away these complexities. By using the Universal Router, developers and users can ensure a more straightforward, efficient, and standardized approach to executing swaps on v4 pools, aligning with best practices for Uniswap interactions.
-
-# Configuring Universal Router for Uniswap v4 Swaps
-
-Set up a foundry project and install the necessary dependencies:
-```bash
-forge install uniswap/v4-core
-forge install uniswap/v4-periphery
-forge install uniswap/permit2
-forge install uniswap/universal-router
-forge install OpenZeppelin/openzeppelin-contracts
-```
-In the `remappings.txt`, add the following:
-```
-@uniswap/v4-core/=lib/v4-core/
-@uniswap/v4-periphery/=lib/v4-periphery/
-@uniswap/permit2/=lib/permit2/
-@uniswap/universal-router/=lib/universal-router/
-@openzeppelin/contracts/=lib/openzeppelin-contracts/
-[...]
-```
-
-## Step 1: Set Up the Project
-
-First, we need to set up our project and import the necessary dependencies. We’ll create a new Solidity contract for our example.
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity 0.8.26;
-
-import { UniversalRouter } from "@uniswap/universal-router/contracts/UniversalRouter.sol";
-import { Commands } from "@uniswap/universal-router/contracts/libraries/Commands.sol";
-import { IPoolManager } from "@uniswap/v4-core/contracts/interfaces/IPoolManager.sol";
-import { IV4Router } from "@uniswap/v4-periphery/contracts/interfaces/IV4Router.sol";
-import { Actions } from "@uniswap/v4-periphery/contracts/libraries/Actions.sol";
-import { IPermit2 } from "@uniswap/permit2/contracts/interfaces/IPermit2.sol";
-import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
-
-contract Example {
- using StateLibrary for IPoolManager;
-
- UniversalRouter public immutable router;
- IPoolManager public immutable poolManager;
- IPermit2 public immutable permit2;
-
- constructor(address _router, address _poolManager, address _permit2) {
- router = UniversalRouter(_router);
- poolManager = IPoolManager(_poolManager);
- permit2 = IPermit2(_permit2);
- }
-
- // We'll add more functions here
-}
-```
-
-In this step, we’re importing the necessary contracts and interfaces:
-
-- `UniversalRouter`: This will be our main interface for executing swaps. It provides a flexible way to interact with various Uniswap versions and other protocols.
-- `Commands`: This library contains the command definitions used by the UniversalRouter.
-- `IPoolManager`: This interface is needed for interacting with Uniswap v4 pools. While we don't directly use it in our simple example, it's often necessary for more complex interactions with v4 pools.
-- `IPermit2`: This interface allows us to interact with the Permit2 contract, which provides enhanced token approval functionality.
-- `StateLibrary`: This provides optimized functions for interacting with the PoolManager’s state. By using `StateLibrary`, we can more efficiently read and manipulate pool states, which is crucial for many operations in Uniswap v4.
-
-## Step 2: Implement Token Approval with Permit2
-
-`UniversalRouter` integrates with [Permit2](https://github.com/Uniswap/permit2), to enable users to have more safety, flexibility, and control over their ERC20 token approvals.
-
-Before we can execute swaps, we need to ensure our contract can transfer tokens. We’ll implement a function to approve the Universal Router to spend tokens on behalf of our contract.
-
-Here, for testing purposes, we set up our contract to use Permit2 with the UniversalRouter:
-
-```solidity
-function approveTokenWithPermit2(
- address token,
- uint160 amount,
- uint48 expiration
-) external {
- IERC20(token).approve(address(permit2), type(uint256).max);
- permit2.approve(token, address(router), amount, expiration);
-}
-```
-
-This function first approves Permit2 to spend the token, then uses Permit2 to approve the UniversalRouter with a specific amount and expiration time.
-
-## Step 3: Implementing a Swap Function
-
-### 3.1: Function Signature
-
-First, let’s define our function signature:
-
-```solidity
-function swapExactInputSingle(
- PoolKey calldata key, // PoolKey struct that identifies the v4 pool
- uint128 amountIn, // Exact amount of tokens to swap
- uint128 minAmountOut // Minimum amount of output tokens expected
-) external returns (uint256 amountOut) {
- // Implementation will follow
-}
-```
-**Important note:**
-
-When swapping tokens involving native ETH, we use `Currency.wrap(address(0))` to represent ETH in the `PoolKey` struct.
-
-```solidity
-struct PoolKey {
- /// @notice The lower currency of the pool, sorted numerically.
- /// For native ETH, Currency currency0 = Currency.wrap(address(0));
- Currency currency0;
- /// @notice The higher currency of the pool, sorted numerically
- Currency currency1;
- /// @notice The pool LP fee, capped at 1_000_000. If the highest bit is 1, the pool has a dynamic fee and must be exactly equal to 0x800000
- uint24 fee;
- /// @notice Ticks that involve positions must be a multiple of tick spacing
- int24 tickSpacing;
- /// @notice The hooks of the pool
- IHooks hooks;
-}
-```
-
-### 3.2: Encoding the Swap Command
-
-When encoding a swap command for the Universal Router, we need to choose between two types of swaps:
-
-1. Exact Input Swaps:
-
-Use this swap-type when you know the exact amount of tokens you want to swap in, and you're willing to accept any amount of output tokens above your minimum. This is common when you want to sell a specific amount of tokens.
-
-2. Exact Output Swaps:
-
-Use this swap-type when you need a specific amount of output tokens, and you're willing to spend up to a maximum amount of input tokens. This is useful when you need to acquire a precise amount of tokens, for example, to repay a loan or meet a specific requirement.
-
-Next, we encode the swap command:
-
-```solidity
-bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP));
-```
-
-Here, we're using `V4_SWAP`, which tells the Universal Router that we want to perform a swap on a Uniswap v4 pool. The specific type of swap (exact input or exact output) will be determined by the V4Router actions we encode later. As we saw earlier, we encode this as a single byte, which is how the Universal Router expects to receive commands.
-
-Check the complete list of [commands](https://docs.uniswap.org/contracts/universal-router/technical-reference#command).
-
-### 3.3: Action Encoding
-
-Now, let’s encode the actions for the swap:
-
-```solidity
-// Encode V4Router actions
-bytes memory actions = abi.encodePacked(
- uint8(Actions.SWAP_EXACT_IN_SINGLE),
- uint8(Actions.SETTLE_ALL),
- uint8(Actions.TAKE_ALL)
-);
-```
-
-These actions define the sequence of operations that will be performed in our v4 swap:
-
-1. `SWAP_EXACT_IN_SINGLE`: This action specifies that we want to perform an exact input swap using a single pool.
-2. `SETTLE_ALL`: This action ensures all input tokens involved in the swap are properly paid. This is part of v4's settlement pattern for handling token transfers.
-3. `TAKE_ALL`: This final action collects all output tokens after the swap is complete.
-
-The sequence of these actions is important as they define the complete flow of our swap operation from start to finish.
-
-### 3.4: Preparing the Swap Inputs
-
-For our v4 swap, we need to prepare three parameters that correspond to our encoded actions:
-
-```solidity
-bytes[] memory params = new bytes[](3);
-
-// First parameter: swap configuration
-params[0] = abi.encode(
- IV4Router.ExactInputSingleParams({
- poolKey: key,
- zeroForOne: true, // true if we're swapping token0 for token1
- amountIn: amountIn, // amount of tokens we're swapping
- amountOutMinimum: minAmountOut, // minimum amount we expect to receive
- sqrtPriceLimitX96: uint160(0), // no price limit set
- hookData: bytes("") // no hook data needed
- })
-);
-
-// Second parameter: specify input tokens for the swap
-// encode SETTLE_ALL parameters
-params[1] = abi.encode(key.currency0, amountIn);
-
-// Third parameter: specify output tokens from the swap
-params[2] = abi.encode(key.currency1, minAmountOut);
-```
-
-Each encoded parameter corresponds to a specific action in our swap:
-
-1. The first parameter configures how the swap should be executed, defining the pool, amounts, and other swap-specific details
-2. The second parameter defines what tokens we're putting into the swap
-3. The third parameter defines what tokens we expect to receive from the swap
-
-The sequence of these parameters must match the sequence of actions we defined earlier (`SWAP_EXACT_IN_SINGLE`, `SETTLE_ALL`, and `TAKE_ALL`).
-
-### 3.5: Executing the Swap
-
-Now we can execute the swap using the Universal Router:
-
-```solidity
-// Combine actions and params into inputs
-inputs[0] = abi.encode(actions, params);
-
-// Execute the swap
-router.execute(commands, inputs, block.timestamp);
-```
-
-This prepares and executes the swap based on our encoded commands, actions, and parameters. The `block.timestamp` deadline parameter ensures the transaction will be executed in the current block.
-
-### 3.6: (Optional) Verifying the Swap Output
-
-After the swap, we need to verify that we received at least the minimum amount of tokens we specified:
-
-```solidity
-amountOut = IERC20(key.currency1).balanceOf(address(this));
-require(amountOut >= minAmountOut, "Insufficient output amount");
-```
-
-### 3.7: Returning the Result
-
-Finally, we return the amount of tokens we received:
-
-```solidity
-return amountOut;
-```
-
-This allows the caller of the function to know exactly how many tokens were received in the swap.
-
-Here's the complete swap function that combines all the steps we've covered:
-
-```solidity
-function swapExactInputSingle(
- PoolKey calldata key,
- uint128 amountIn,
- uint128 minAmountOut
-) external returns (uint256 amountOut) {
-// Encode the Universal Router command
- bytes memory commands = abi.encodePacked(uint8(Commands.V4_SWAP));
- bytes[] memory inputs = new bytes[](1);
-
-// Encode V4Router actions
- bytes memory actions = abi.encodePacked(
- uint8(Actions.SWAP_EXACT_IN_SINGLE),
- uint8(Actions.SETTLE_ALL),
- uint8(Actions.TAKE_ALL)
- );
-
-// Prepare parameters for each action
- bytes[] memory params = new bytes[](3);
- params[0] = abi.encode(
- IV4Router.ExactInputSingleParams({
- poolKey: key,
- zeroForOne: true,
- amountIn: amountIn,
- amountOutMinimum: minAmountOut,
- sqrtPriceLimitX96: uint160(0),
- hookData: bytes("")
- })
- );
- params[1] = abi.encode(key.currency0, amountIn);
- params[2] = abi.encode(key.currency1, minAmountOut);
-
-// Combine actions and params into inputs
- inputs[0] = abi.encode(actions, params);
-
-// Execute the swap
- router.execute(commands, inputs, block.timestamp);
-
-// Verify and return the output amount
- amountOut = IERC20(key.currency1).balanceOf(address(this));
- require(amountOut >= minAmountOut, "Insufficient output amount");
- return amountOut;
-}
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/04-hooks/00-setup.mdx b/docs/contracts/v4/quickstart/04-hooks/00-setup.mdx
deleted file mode 100644
index f350edcba..000000000
--- a/docs/contracts/v4/quickstart/04-hooks/00-setup.mdx
+++ /dev/null
@@ -1,225 +0,0 @@
----
-title: Set Up Local Environment
----
-
-Before writing the hook let's first have a local environment properly configured e.g. deploying pool manager, utility routers and test tokens.
-
-At the end of this guide a development environment will be set up to be used to build the rest of the examples in the Guides section of the docs.
-
-To get started as quickly as possible for building Uniswap v4 hooks, there is a `Quick Start` section below to clone a boilerplate and get building. To start from scratch and learn the underlying concepts, jump to the `Start from Scratch` section.
-
-# Quick Start
-
-The Uniswap [v4-template repo](https://github.com/uniswapfoundation/v4-template) provides a basic foundry environment with required imports already pre-loaded. Click on [`Use this template`](https://github.com/new?template_name=v4-template&template_owner=uniswapfoundation) to create a new repository with it.
-
-Or simply clone it and install the dependencies:
-
-```bash
-git clone https://github.com/uniswapfoundation/v4-template.git
-cd v4-template
-# requires foundry
-forge install
-forge test
-```
-
-Then hop to the [Local Node via Anvil](#local-node-via-anvil) to complete the set up and start developing.
-
----
-
-# Start from Scratch
-
-In the following sections, let's walk through the steps to create the same environment set up as the boilerplate from scratch and learn the underlying concepts.
-
-## Setting up Foundry
-
-First thing is to set up a new Foundry project.
-
-If there is no Foundry installed - follow the [Foundry Book](https://book.getfoundry.sh/getting-started/installation) for installation.
-
-Once Foundry is setup, initialize a new project:
-
-```bash
-forge init counter-hook
-cd counter-hook
-```
-
-Then install the Uniswap `v4-core` and `v4-periphery` contracts as dependencies:
-
-```bash
-forge install Uniswap/v4-core && forge install Uniswap/v4-periphery
-```
-
-Next, set up the remappings so that the shorthand syntax for importing contracts from the dependencies work nicely:
-
-```bash
-forge remappings > remappings.txt
-```
-
-> If there is something wrong with the inferred remappings, please replace with the following in `remappings.txt`:
-
-```
-@uniswap/v4-core/=lib/v4-core/
-forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/
-forge-std/=lib/v4-core/lib/forge-std/src/
-permit2/=lib/v4-periphery/lib/permit2/
-solmate/=lib/v4-core/lib/solmate/
-v4-core/=lib/v4-core/
-v4-periphery/=lib/v4-periphery/
-```
-
-After that, remove the default Counter contract and its associated test and script file that Foundry initially set up. To do that, either manually delete those files, or just run the following:
-
-```bash
-rm ./**/Counter*.sol
-```
-
-Finally, since v4 uses transient storage which is only available after Ethereum's cancun hard fork and on Solidity versions >= 0.8.24 - some config must be set in `foundry.toml` config file.
-
-To do that, add the following lines to `foundry.toml`:
-
-```toml
-# foundry.toml
-
-solc_version = "0.8.26"
-evm_version = "cancun"
-ffi = true
-```
-
-Awesome! Now it's all set to start building the hook! Let’s run a quick test to confirm everything is set up properly.
-
-## Compile a Basic Hook Contract
-
-To confirm that the environment is configured correctly let's write a basic Counter Hook contract. Create a new file, `./src/CounterHook.sol` and paste the following code into it:
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.24;
-
-import {BaseHook} from "v4-periphery/src/base/hooks/BaseHook.sol";
-
-import {Hooks} from "v4-core/src/libraries/Hooks.sol";
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-import {PoolKey} from "v4-core/src/types/PoolKey.sol";
-import {PoolId, PoolIdLibrary} from "v4-core/src/types/PoolId.sol";
-import {BalanceDelta} from "v4-core/src/types/BalanceDelta.sol";
-import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "v4-core/src/types/BeforeSwapDelta.sol";
-
-contract CounterHook is BaseHook {
- using PoolIdLibrary for PoolKey;
-
- // NOTE: ---------------------------------------------------------
- // state variables should typically be unique to a pool
- // a single hook contract should be able to service multiple pools
- // ---------------------------------------------------------------
-
- mapping(PoolId => uint256 count) public beforeSwapCount;
- mapping(PoolId => uint256 count) public afterSwapCount;
-
- mapping(PoolId => uint256 count) public beforeAddLiquidityCount;
- mapping(PoolId => uint256 count) public beforeRemoveLiquidityCount;
-
- constructor(IPoolManager _poolManager) BaseHook(_poolManager) {}
-
- function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
- return Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: false,
- beforeAddLiquidity: true,
- afterAddLiquidity: false,
- beforeRemoveLiquidity: true,
- afterRemoveLiquidity: false,
- beforeSwap: true,
- afterSwap: true,
- beforeDonate: false,
- afterDonate: false,
- beforeSwapReturnDelta: false,
- afterSwapReturnDelta: false,
- afterAddLiquidityReturnDelta: false,
- afterRemoveLiquidityReturnDelta: false
- });
- }
-
- // -----------------------------------------------
- // NOTE: see IHooks.sol for function documentation
- // -----------------------------------------------
-
- function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, bytes calldata)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24)
- {
- beforeSwapCount[key.toId()]++;
- return (BaseHook.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, 0);
- }
-
- function afterSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, BalanceDelta, bytes calldata)
- external
- override
- returns (bytes4, int128)
- {
- afterSwapCount[key.toId()]++;
- return (BaseHook.afterSwap.selector, 0);
- }
-
- function beforeAddLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- bytes calldata
- ) external override returns (bytes4) {
- beforeAddLiquidityCount[key.toId()]++;
- return BaseHook.beforeAddLiquidity.selector;
- }
-
- function beforeRemoveLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- bytes calldata
- ) external override returns (bytes4) {
- beforeRemoveLiquidityCount[key.toId()]++;
- return BaseHook.beforeRemoveLiquidity.selector;
- }
-}
-```
-
-To compile the Counter Hook contracts in the `./src` folder, use the foundry build command:
-
-```bash
-forge build
-```
-
-If the environment is compiled correctly it will display a message:
-
-```
-Compiler run successful!
-```
-
-## Local Node via Anvil
-
-Other than writing unit tests, [Anvil](https://book.getfoundry.sh/anvil/) can be used to deploy and test hooks.
-
-With the local node up and running, use the `--rpc-url 127.0.0.1:8545` flag in tests to point the Foundry testing suite to that local node:
-
-```bash
-# start anvil, a local EVM chain
-anvil
-
-# in a new terminal
-# foundry script for deploying v4 & hooks to anvil
-forge script script/Anvil.s.sol \
- --rpc-url http://localhost:8545 \
- --private-key \
- --broadcast
-
-# test on the anvil local node
-forge test --rpc-url 127.0.0.1:8545
-```
-
-# Next Steps
-With the environment set up ready to be built on. Jump over to the guides section to learn about the Uniswap functions that can be integrated with Hook. Remember to add all contracts (.sol files) to the `./src` folder and their subsequent tests to the `./test` folder. Then test them against the local anvil node by running:
-
-```bash
-forge test --rpc-url 127.0.0.1:8545
-```
-
diff --git a/docs/contracts/v4/quickstart/04-hooks/01-swap.mdx b/docs/contracts/v4/quickstart/04-hooks/01-swap.mdx
deleted file mode 100644
index c45dcac75..000000000
--- a/docs/contracts/v4/quickstart/04-hooks/01-swap.mdx
+++ /dev/null
@@ -1,201 +0,0 @@
----
-title: Swap Hooks
----
-
-Swaps are the most common interaction with the Uniswap protocol. When it comes to swap there are two hook functions available to customize and extend its behavior:
-
-- `beforeSwap`
-- `afterSwap`
-
-As the names suggest `beforeSwap`/`afterSwap` are functions called before or after a swap is executed on a pool.
-
-This guide will go through the parameters for `beforeSwap` and `afterSwap`, and a simple example of a swap hook.
-
-Note: The swap hook is not production ready code, and is implemented in a simplistic manner for the purpose of learning.
-
-## Set Up the Contract
-
-Declare the solidity version used to compile the contract, here we will use `>=0.8.24` for the solidity version as transient storage is used.
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.24;
-```
-
-Import the relevant dependencies from `v4-core` and `v4-periphery`:
-
-```solidity
-import {BaseHook} from "v4-periphery/src/base/hooks/BaseHook.sol";
-
-import {Hooks} from "v4-core/src/libraries/Hooks.sol";
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-import {PoolKey} from "v4-core/src/types/PoolKey.sol";
-import {PoolId, PoolIdLibrary} from "v4-core/src/types/PoolId.sol";
-import {BalanceDelta} from "v4-core/src/types/BalanceDelta.sol";
-import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "v4-core/src/types/BeforeSwapDelta.sol";
-```
-
-Create a contract called `SwapHook`, use `PoolIdLibrary` to attach functions of computing `poolId` for `PoolKey`. Declare two mappings as counters for `beforeSwap` and `afterSwap`.
-
-```solidity
-contract SwapHook is BaseHook {
- using PoolIdLibrary for PoolKey;
-
- // NOTE: ---------------------------------------------------------
- // state variables should typically be unique to a pool
- // a single hook contract should be able to service multiple pools
- // ---------------------------------------------------------------
-
- mapping(PoolId => uint256 count) public beforeSwapCount;
- mapping(PoolId => uint256 count) public afterSwapCount;
-
- constructor(IPoolManager _poolManager) BaseHook(_poolManager) {}
-```
-
-Override `getHookPermissions()` from `BaseHook` to return a struct of permissions to signal which hook functions are to be implemented.
-It will also be used at deployment to validate the hook address correctly represents the expected permissions.
-
-```solidity
-function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
- return Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: false,
- beforeAddLiquidity: false,
- afterAddLiquidity: false,
- beforeRemoveLiquidity: false,
- afterRemoveLiquidity: false,
- beforeSwap: true,
- afterSwap: true,
- beforeDonate: false,
- afterDonate: false,
- beforeSwapReturnDelta: false,
- afterSwapReturnDelta: false,
- afterAddLiquidityReturnDelta: false,
- afterRemoveLiquidityReturnDelta: false
- });
-}
-```
-
-## beforeSwap
-
-Here the example shows that every time __before__ a swap is executed in a pool, `beforeSwapCount` for that pool will be incremented by one.
-
-```solidity
-function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, bytes calldata)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24)
-{
- beforeSwapCount[key.toId()]++;
- return (BaseHook.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, 0);
-}
-```
-
-### `beforeSwap` Parameters
-
-When triggering the `beforeSwap` hook function, there are some parameters we can make use of to customize or extend the behavior of `swap`. These parameters are described in [`beforeSwap`](/contracts/v4/reference/core/interfaces/IHooks#beforeswap) from `IHooks`.
-
-A brief overview of the parameters:
-- `sender` The initial `msg.sender` for the `PoolManager.swap` call - typically a swap router
-- `key` The key for the pool
-- `params` The parameters for the swap i.e. [`SwapParams`](/contracts/v4/reference/core/interfaces/IPoolManager#swapparams) from `IPoolManager`
-- `hookData` Arbitrary data handed into the `PoolManager` by the swapper to be be passed on to the hook
-
-## afterSwap
-
-Similiar as above, every time __after__ a swap is executed in a pool, `afterSwapCount` for that pool will be incremented by one.
-
-```solidity
-function afterSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, BalanceDelta, bytes calldata)
- external
- override
- returns (bytes4, int128)
-{
- afterSwapCount[key.toId()]++;
- return (BaseHook.afterSwap.selector, 0);
-}
-```
-
-### `afterSwap` Parameters
-
-When triggering the `afterSwap` hook function, there are some parameters we can make use of to customize or extend the behavior of `swap`. These parameters are described in [`afterSwap`](/contracts/v4/reference/core/interfaces/IPoolManager#swapparams) from `IHooks`.
-
-A brief overview of the parameters:
-- `sender` The initial `msg.sender` for the `PoolManager.swap` call - typically a swap router
-- `key` The key for the pool
-- `params` The parameters for the swap i.e. [`SwapParams`](/contracts/v4/reference/core/interfaces/IPoolManager#swapparams) from `IPoolManager`
-- `delta` The amount owed to the caller (positive) or owed to the pool (negative)
-- `hookData` Arbitrary data handed into the `PoolManager` by the swapper to be be passed on to the hook
-
-
-
-## A Complete Swap Hook Contract
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.24;
-
-import {BaseHook} from "v4-periphery/src/base/hooks/BaseHook.sol";
-
-import {Hooks} from "v4-core/src/libraries/Hooks.sol";
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-import {PoolKey} from "v4-core/src/types/PoolKey.sol";
-import {PoolId, PoolIdLibrary} from "v4-core/src/types/PoolId.sol";
-import {BalanceDelta} from "v4-core/src/types/BalanceDelta.sol";
-import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "v4-core/src/types/BeforeSwapDelta.sol";
-
-contract SwapHook is BaseHook {
- using PoolIdLibrary for PoolKey;
-
- // NOTE: ---------------------------------------------------------
- // state variables should typically be unique to a pool
- // a single hook contract should be able to service multiple pools
- // ---------------------------------------------------------------
-
- mapping(PoolId => uint256 count) public beforeSwapCount;
- mapping(PoolId => uint256 count) public afterSwapCount;
-
- constructor(IPoolManager _poolManager) BaseHook(_poolManager) {}
-
- function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
- return Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: false,
- beforeAddLiquidity: true,
- afterAddLiquidity: false,
- beforeRemoveLiquidity: true,
- afterRemoveLiquidity: false,
- beforeSwap: true,
- afterSwap: true,
- beforeDonate: false,
- afterDonate: false,
- beforeSwapReturnDelta: false,
- afterSwapReturnDelta: false,
- afterAddLiquidityReturnDelta: false,
- afterRemoveLiquidityReturnDelta: false
- });
- }
-
- // -----------------------------------------------
- // NOTE: see IHooks.sol for function documentation
- // -----------------------------------------------
-
- function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, bytes calldata)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24)
- {
- beforeSwapCount[key.toId()]++;
- return (BaseHook.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, 0);
- }
-
- function afterSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, BalanceDelta, bytes calldata)
- external
- override
- returns (bytes4, int128)
- {
- afterSwapCount[key.toId()]++;
- return (BaseHook.afterSwap.selector, 0);
- }
-}
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/04-hooks/02-liquidity.mdx b/docs/contracts/v4/quickstart/04-hooks/02-liquidity.mdx
deleted file mode 100644
index 00a527343..000000000
--- a/docs/contracts/v4/quickstart/04-hooks/02-liquidity.mdx
+++ /dev/null
@@ -1,205 +0,0 @@
----
-title: Liquidity Hooks
----
-
-This guide will walk through on an example of adding and removing liquidity. There are four hook functions available to customize and extend these behavior:
-
-- `beforeAddLiquidity`
-- `afterAddLiquidity`
-- `beforeRemoveLiquidity`
-- `afterRemoveLiquidity`
-
-As the names suggest `beforeAddLiquidity`/`afterAddLiquidity` are functions called before or after liquidity is added to a pool.
-Similarly `beforeRemoveLiquidity`/`afterRemoveLiquidity` are functions called before or after liquidity is removed from a pool.
-
-This guide will go through the parameters and examples specifically for `beforeAddLiquidity` and `beforeRemoveLiquidity`.
-
-Note: The liquidity examples are not production ready code, and are implemented in a simplistic manner for the purpose of learning.
-
-## Set Up the Contract
-
-Declare the solidity version used to compile the contract, since transient storage is used the solidity version will be `>=0.8.24`.
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.24;
-```
-
-Import the relevant dependencies from `v4-core` and `v4-periphery`:
-
-```solidity
-import {BaseHook} from "v4-periphery/src/base/hooks/BaseHook.sol";
-
-import {Hooks} from "v4-core/src/libraries/Hooks.sol";
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-import {PoolKey} from "v4-core/src/types/PoolKey.sol";
-import {PoolId, PoolIdLibrary} from "v4-core/src/types/PoolId.sol";
-import {BalanceDelta} from "v4-core/src/types/BalanceDelta.sol";
-import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "v4-core/src/types/BeforeSwapDelta.sol";
-```
-
-Create a contract called LiquidityHook, use `PoolIdLibrary` to attach functions of computing ID of a pool to `PoolKey`. Declare two mappings to act as counters when calling `beforeAddLiquidity` and `beforeRemoveLiquidity`.
-
-```solidity
-contract LiquidityHook is BaseHook {
- using PoolIdLibrary for PoolKey;
-
- // NOTE: ---------------------------------------------------------
- // state variables should typically be unique to a pool
- // a single hook contract should be able to service multiple pools
- // ---------------------------------------------------------------
-
- mapping(PoolId => uint256 count) public beforeAddLiquidityCount;
- mapping(PoolId => uint256 count) public beforeRemoveLiquidityCount;
-
- constructor(IPoolManager _poolManager) BaseHook(_poolManager) {}
-```
-
-Override `getHookPermissions` from `BaseHook.sol` to return a struct of permissions to signal which hook functions are to be implemented.
-It will also be used at deployment to validate the address correctly represents the expected permissions.
-
-```solidity
-function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
- return Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: false,
- beforeAddLiquidity: true,
- afterAddLiquidity: false,
- beforeRemoveLiquidity: true,
- afterRemoveLiquidity: false,
- beforeSwap: false,
- afterSwap: false,
- beforeDonate: false,
- afterDonate: false,
- beforeAddLiquidityReturnDelta: false,
- afterSwapReturnDelta: false,
- afterAddLiquidityReturnDelta: false,
- afterRemoveLiquidityReturnDelta: false
- });
-}
-```
-
-## beforeAddLiquidity
-
-Here the example shows that every time __before__ liquidity is added to a pool, `beforeAddLiquidityCount` for that pool will be incremented by one.
-
-```solidity
-function beforeAddLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- bytes calldata
-) external override returns (bytes4) {
- beforeAddLiquidityCount[key.toId()]++;
- return BaseHook.beforeAddLiquidity.selector;
-}
-```
-
-### `beforeAddLiquidity` Parameters
-
-When triggering the `beforeAddLiquidity` hook function, there are some parameters we can make use of to customize or extend the behavior of `modifyLiquidity`. These parameters are described in `beforeAddLiquidity` from [`IHooks.sol`](https://github.com/Uniswap/v4-core/blob/main/src/interfaces/IHooks.sol#L47).
-
-A brief overview of the parameters:
-- `sender` The initial `msg.sender` for the add liquidity call
-- `key` The key for the pool
-- `params` The parameters for adding liquidity i.e. `ModifyLiquidityParams` from [`IPoolManager.sol`](https://github.com/Uniswap/v4-core/blob/main/src/interfaces/IPoolManager.sol#L125C12-L125C33)
-- `hookData` Arbitrary data handed into the `PoolManager` by the liquidity provider to be be passed on to the hook
-
-## beforeRemoveLiquidity
-
-Similiar as above, every time __before__ liquidity is removed from a pool, `beforeRemoveLiquidityCount` for that pool will be incremented by one.
-
-```solidity
-function beforeRemoveLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- bytes calldata
-) external override returns (bytes4) {
- beforeRemoveLiquidityCount[key.toId()]++;
- return BaseHook.beforeRemoveLiquidity.selector;
-}
-```
-
-### `beforeRemoveLiquidity` Parameters
-
-When triggering the `beforeRemoveLiquidity` hook function, there are some parameters we can make use of to customize or extend the behavior of `modifyLiquidity`. These parameters are described in `beforeRemoveLiquidity` from [`IHooks.sol`](https://github.com/Uniswap/v4-core/blob/main/src/interfaces/IHooks.sol#L78).
-
-A brief overview of the parameters:
-- `sender` The initial msg.sender for the remove liquidity call
-- `key` The key for the pool
-- `params` The parameters for removing liquidity i.e. `ModifyLiquidityParams` from [`IPoolManager.sol`](https://github.com/Uniswap/v4-core/blob/main/src/interfaces/IPoolManager.sol#L125C12-L125C33)
-- `hookData` Arbitrary data handed into the `PoolManager` by the liquidity provider to be be passed on to the hook
-
-## A Complete Liquidity Hook Contract
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.24;
-
-import {BaseHook} from "v4-periphery/src/base/hooks/BaseHook.sol";
-
-import {Hooks} from "v4-core/src/libraries/Hooks.sol";
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-import {PoolKey} from "v4-core/src/types/PoolKey.sol";
-import {PoolId, PoolIdLibrary} from "v4-core/src/types/PoolId.sol";
-import {BalanceDelta} from "v4-core/src/types/BalanceDelta.sol";
-import {BeforeSwapDelta, BeforeSwapDeltaLibrary} from "v4-core/src/types/BeforeSwapDelta.sol";
-
-contract LiquidityHook is BaseHook {
- using PoolIdLibrary for PoolKey;
-
- // NOTE: ---------------------------------------------------------
- // state variables should typically be unique to a pool
- // a single hook contract should be able to service multiple pools
- // ---------------------------------------------------------------
-
- mapping(PoolId => uint256 count) public beforeAddLiquidityCount;
- mapping(PoolId => uint256 count) public beforeRemoveLiquidityCount;
-
- constructor(IPoolManager _poolManager) BaseHook(_poolManager) {}
-
- function getHookPermissions() public pure override returns (Hooks.Permissions memory) {
- return Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: false,
- beforeAddLiquidity: true,
- afterAddLiquidity: false,
- beforeRemoveLiquidity: true,
- afterRemoveLiquidity: false,
- beforeSwap: false,
- afterSwap: false,
- beforeDonate: false,
- afterDonate: false,
- beforeAddLiquidityReturnDelta: false,
- afterSwapReturnDelta: false,
- afterAddLiquidityReturnDelta: false,
- afterRemoveLiquidityReturnDelta: false
- });
- }
-
- // -----------------------------------------------
- // NOTE: see IHooks.sol for function documentation
- // -----------------------------------------------
-
- function beforeAddLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- bytes calldata
- ) external override returns (bytes4) {
- beforeAddLiquidityCount[key.toId()]++;
- return BaseHook.beforeAddLiquidity.selector;
- }
-
- function beforeRemoveLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- bytes calldata
- ) external override returns (bytes4) {
- beforeRemoveLiquidityCount[key.toId()]++;
- return BaseHook.beforeRemoveLiquidity.selector;
- }
-}
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/04-hooks/03-NoOp.mdx b/docs/contracts/v4/quickstart/04-hooks/03-NoOp.mdx
deleted file mode 100644
index 628967930..000000000
--- a/docs/contracts/v4/quickstart/04-hooks/03-NoOp.mdx
+++ /dev/null
@@ -1,131 +0,0 @@
----
-title: NoOp Hooks
----
-
-One feature enabled by [custom accounting](/contracts/v4/guides/custom-accounting) is NoOp swap. This feature allows hook developers to replace the v4 (v3-style) swap logic.
-
-This means developers can replace Uniswap's internal core logic for how to handle swaps. Two emergent use-cases are possible with NoOp:
-
-1. Asynchronous swaps and swap-ordering. Delay the v4 swap logic for fulfillment at a later time.
-2. Custom Curves. Replace the v4 swap logic with different swap logic. The custom logic is flexible and developers can implement symmetric curves, asymmetric curves, or custom quoting.
-
-> NoOp is typically described as taking the full input to replace the internal swap logic, partially taking the input is better described as *custom accounting*
-
-Note: The flexibility of NoOp means hook developers can implement harmful behavior (such as taking all swap amounts for themselves, charging extra fees, etc.). Hooks with NoOp behavior should be examined very closely by both developers and users.
-
-# Configure a NoOp Hook
-
-To enable NoOp, developers will need the hook permission `BEFORE_SWAP_RETURNS_DELTA_FLAG`
-
-```solidity
-import {BaseHook} from "v4-periphery/BaseHook.sol";
-// ...
-
-contract NoOpHook is BaseHook {
- // ...
-
- function getHookPermissions() public pure virtual override returns (Hooks.Permissions memory) {
- return Hooks.Permissions({
- beforeInitialize: false,
- afterInitialize: false,
- beforeAddLiquidity: false,
- afterAddLiquidity: false,
- beforeRemoveLiquidity: false,
- afterRemoveLiquidity: false,
- beforeSwap: false,
- afterSwap: true,
- beforeDonate: false,
- afterDonate: false,
- beforeSwapReturnDelta: true,
- afterSwapReturnDelta: false,
- afterAddLiquidityReturnDelta: false,
- afterRemoveLiquidityReturnDelta: false
- });
- }
-
- // ...
-}
-```
-
-# beforeSwap
-
-NoOp only works on exact-input swaps and the *beforeSwap* **must** take the input currency and return [`BeforeSwapDelta`](/contracts/v4/reference/core/types/beforeswapdelta). The hook should `IPoolManager.mint` itself the corresponding tokens equal to the amount of the input (`amountSpecified`). It should then return a `BeforeSwapDelta` where `deltaSpecified = -amountSpecified` (the positive amount).
-
-The funds' movements are as follows:
-
-1. User initiates a swap, specifying -100 tokenA as input
-2. The hook's beforeSwap takes 100 tokenA for itself, and returns a value of 100 to PoolManager.
-3. The PoolManager accounts the 100 tokens against the swap input, leaving 0 tokens remaining
-4. The PoolManager does not execute swap logic, as there are no tokens left to swap
-5. The PoolManager transfers the delta from the hook to the swap router, in step 2 the hook created a debt (that must be paid)
-6. The swap router pays off the debt using the user's tokens
-
-```solidity
-contract NoOpHook is BaseHook {
- // ...
-
- function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata params, bytes calldata)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24)
- {
- // NoOp only works on exact-input swaps
- if (params.amountSpecified < 0) {
- // take the input token so that v3-swap is skipped...
- Currency input = params.zeroForOne ? key.currency0 : key.currency1;
- uint256 amountTaken = uint256(-params.amountSpecified);
- poolManager.mint(address(this), input.toId(), amountTaken);
-
- // to NoOp the exact input, we return the amount that's taken by the hook
- return (BaseHook.beforeSwap.selector, toBeforeSwapDelta(amountTaken.toInt128(), 0), 0);
- }
- else {
- return (BaseHook.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO, 0);
- }
-
- }
-}
-```
-
-# Testing
-
-To verify the NoOp behaved properly, developers should test the swap and that token balances match expected behavior.
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity ^0.8.19;
-
-import "forge-std/Test.sol";
-import {Deployers} from "v4-core/test/utils/Deployers.sol";
-// ...
-
-contract NoOpSwapTest is Test, Deployers {
- // ...
-
- function setUp() public {
- // ...
- }
-
- function test_noOp() public {
- assertEq(hook.beforeSwapCount(poolId), 0);
-
- uint256 balance0Before = currency0.balanceOfSelf();
- uint256 balance1Before = currency1.balanceOfSelf();
-
- // Perform a test swap //
- int256 amount = -1e18;
- bool zeroForOne = true;
- BalanceDelta swapDelta = swap(poolKey, zeroForOne, amount, ZERO_BYTES);
- // ------------------- //
-
- uint256 balance0After = currency0.balanceOfSelf();
- uint256 balance1After = currency1.balanceOfSelf();
-
- // user paid token0
- assertEq(balance0Before - balance0After, 1e18);
-
- // user did not recieve token1 (NoOp)
- assertEq(balance1Before, balance1After);
- }
-}
-```
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/04-hooks/_category_.json b/docs/contracts/v4/quickstart/04-hooks/_category_.json
deleted file mode 100644
index 52417c970..000000000
--- a/docs/contracts/v4/quickstart/04-hooks/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Hooks",
- "collapsed": true
- }
-
\ No newline at end of file
diff --git a/docs/contracts/v4/quickstart/05-subscriber.mdx b/docs/contracts/v4/quickstart/05-subscriber.mdx
deleted file mode 100644
index 7cf947969..000000000
--- a/docs/contracts/v4/quickstart/05-subscriber.mdx
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: Subscriber
----
-
-# Context
-
-For developers looking to support custom _liquidity mining_, Subscriber contracts can be used to receive notifications about position modifications or transfers.
-
----
-
-# Guide
-
-## 1. Implement the [`ISubscriber`](https://github.com/Uniswap/v4-periphery/blob/main/src/interfaces/ISubscriber.sol) interface
-
-Can also refer to [MockSubscriber](https://github.com/Uniswap/v4-periphery/blob/main/test/mocks/MockSubscriber.sol) for an actual implementation example.
-
-```solidity
-import {ISubscriber} from "v4-periphery/src/interfaces/ISubscriber.sol";
-
-contract MySubscriber is ISubscriber {
- uint256 public notifySubscribeCount;
- uint256 public notifyUnsubscribeCount;
- uint256 public notifyModifyLiquidityCount;
- uint256 public notifyBurnCount;
- // other implementations...
-
- function notifySubscribe(uint256, bytes memory) external onlyByPosm {
- notifySubscribeCount++;
- }
-
- function notifyUnsubscribe(uint256) external onlyByPosm {
- notifyUnsubscribeCount++;
- }
-
- function notifyModifyLiquidity(uint256, int256, BalanceDelta) external onlyByPosm {
- notifyModifyLiquidityCount++;
- }
-
- function notifyBurn(uint256, address, PositionInfo, uint256, BalanceDelta)
- external
- onlyByPosm
- {
- notifyBurnCount++;
- }
-}
-```
-
-## 2. A caveat on `unsubscribe()`
-
-There is a variable [`unsubscribeGasLimit`](/contracts/v4/reference/periphery/interfaces/INotifier#unsubscribegaslimit) specifically set at deployment of `PositionManager` to prevent gas griefing on `unsubscribe()` - which could result in the subscriber contract not being notified during `unsubscribe()`.
-
-If notifying the subscriber contract is not necessary users can still specify a gas limit where `notifyUnsubscribe()` hits `OutOfGas` and reverts yet the unsubscription will still succeed.
-
-From [`_unsubscribe()`](https://github.com/Uniswap/v4-periphery/blob/main/src/base/Notifier.sol#L80) on `Notifier`:
-```solidity
-if (address(_subscriber).code.length > 0) {
- // require that the remaining gas is sufficient to notify the subscriber
- // otherwise, users can select a gas limit where .notifyUnsubscribe hits OutOfGas yet the
- // transaction/unsubscription can still succee
- if (gasleft() < unsubscribeGasLimit) GasLimitTooLow.selector.revertWith();
- try _subscriber.notifyUnsubscribe{gas: unsubscribeGasLimit}(tokenId) {} catch {}
-}
-```
-
-## 3. Opt-in to a subscriber contract
-
-To opt-in to a subscriber contract, call [`subscribe()`](/contracts/v4/reference/periphery/interfaces/INotifier#subscribe) on `PositionManager`.
-
-```solidity
-import {IPositionManager} from "v4-periphery/src/interfaces/IPositionManager.sol";
-
-IPositionManager posm = IPositionManager();
-ISubscriber mySubscriber = ISubscriber();
-
-bytes memory optionalData = ...;
-posm.subscribe(tokenId, mySubscriber, optionalData);
-```
diff --git a/docs/contracts/v4/quickstart/_category_.json b/docs/contracts/v4/quickstart/_category_.json
deleted file mode 100644
index cc4b1b423..000000000
--- a/docs/contracts/v4/quickstart/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Quickstart",
- "position": 4,
- "collapsed": false
-}
diff --git a/docs/contracts/v4/reference/_category_.json b/docs/contracts/v4/reference/_category_.json
deleted file mode 100644
index b654b6d9c..000000000
--- a/docs/contracts/v4/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 6,
- "collapsed": true
-}
diff --git a/docs/contracts/v4/reference/core/ERC6909.md b/docs/contracts/v4/reference/core/ERC6909.md
deleted file mode 100644
index 546b47212..000000000
--- a/docs/contracts/v4/reference/core/ERC6909.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# ERC6909
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/ERC6909.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IERC6909Claims](contracts/v4/reference/core/interfaces/IERC6909Claims.md)
-
-**Author:**
-Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC6909.sol)
-
-Minimalist and gas efficient standard ERC6909 implementation.
-
-*Copied from the commit at 4b47a19038b798b4a33d9749d25e570443520647*
-
-*This contract has been modified from the implementation at the above link.*
-
-
-## State Variables
-### isOperator
-
-```solidity
-mapping(address owner => mapping(address operator => bool isOperator)) public isOperator;
-```
-
-
-### balanceOf
-
-```solidity
-mapping(address owner => mapping(uint256 id => uint256 balance)) public balanceOf;
-```
-
-
-### allowance
-
-```solidity
-mapping(address owner => mapping(address spender => mapping(uint256 id => uint256 amount))) public allowance;
-```
-
-
-## Functions
-### transfer
-
-
-```solidity
-function transfer(address receiver, uint256 id, uint256 amount) public virtual returns (bool);
-```
-
-### transferFrom
-
-
-```solidity
-function transferFrom(address sender, address receiver, uint256 id, uint256 amount) public virtual returns (bool);
-```
-
-### approve
-
-
-```solidity
-function approve(address spender, uint256 id, uint256 amount) public virtual returns (bool);
-```
-
-### setOperator
-
-
-```solidity
-function setOperator(address operator, bool approved) public virtual returns (bool);
-```
-
-### supportsInterface
-
-
-```solidity
-function supportsInterface(bytes4 interfaceId) public view virtual returns (bool);
-```
-
-### _mint
-
-
-```solidity
-function _mint(address receiver, uint256 id, uint256 amount) internal virtual;
-```
-
-### _burn
-
-
-```solidity
-function _burn(address sender, uint256 id, uint256 amount) internal virtual;
-```
-
diff --git a/docs/contracts/v4/reference/core/ERC6909Claims.md b/docs/contracts/v4/reference/core/ERC6909Claims.md
deleted file mode 100644
index 861421777..000000000
--- a/docs/contracts/v4/reference/core/ERC6909Claims.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# ERC6909Claims
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/ERC6909Claims.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[ERC6909](contracts/v4/reference/core/ERC6909.md)
-
-ERC6909Claims inherits ERC6909 and implements an internal burnFrom function
-
-
-## Functions
-### _burnFrom
-
-Burn `amount` tokens of token type `id` from `from`.
-
-*if sender is not `from` they must be an operator or have sufficient allowance.*
-
-
-```solidity
-function _burnFrom(address from, uint256 id, uint256 amount) internal;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`from`|`address`|The address to burn tokens from.|
-|`id`|`uint256`|The currency to burn.|
-|`amount`|`uint256`|The amount to burn.|
-
-
diff --git a/docs/contracts/v4/reference/core/Extsload.md b/docs/contracts/v4/reference/core/Extsload.md
deleted file mode 100644
index e57d84f6a..000000000
--- a/docs/contracts/v4/reference/core/Extsload.md
+++ /dev/null
@@ -1,75 +0,0 @@
-# Extsload
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/Extsload.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IExtsload](contracts/v4/reference/core/interfaces/IExtsload.md)
-
-Enables public storage access for efficient state retrieval by external contracts.
-https://eips.ethereum.org/EIPS/eip-2330#rationale
-
-
-## Functions
-### extsload
-
-Called by external contracts to access granular pool state
-
-
-```solidity
-function extsload(bytes32 slot) external view returns (bytes32);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`slot`|`bytes32`|Key of slot to sload|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes32`|value The value of the slot as bytes32|
-
-
-### extsload
-
-Called by external contracts to access granular pool state
-
-
-```solidity
-function extsload(bytes32 startSlot, uint256 nSlots) external view returns (bytes32[] memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`startSlot`|`bytes32`||
-|`nSlots`|`uint256`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes32[]`|value The value of the slot as bytes32|
-
-
-### extsload
-
-Called by external contracts to access granular pool state
-
-
-```solidity
-function extsload(bytes32[] calldata slots) external view returns (bytes32[] memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`slots`|`bytes32[]`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes32[]`|value The value of the slot as bytes32|
-
-
diff --git a/docs/contracts/v4/reference/core/Exttload.md b/docs/contracts/v4/reference/core/Exttload.md
deleted file mode 100644
index 4c376946b..000000000
--- a/docs/contracts/v4/reference/core/Exttload.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# Exttload
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/Exttload.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IExttload](contracts/v4/reference/core/interfaces/IExttload.md)
-
-Enables public transient storage access for efficient state retrieval by external contracts.
-https://eips.ethereum.org/EIPS/eip-2330#rationale
-
-
-## Functions
-### exttload
-
-Called by external contracts to access transient storage of the contract
-
-
-```solidity
-function exttload(bytes32 slot) external view returns (bytes32);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`slot`|`bytes32`|Key of slot to tload|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes32`|value The value of the slot as bytes32|
-
-
-### exttload
-
-Called by external contracts to access transient storage of the contract
-
-
-```solidity
-function exttload(bytes32[] calldata slots) external view returns (bytes32[] memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`slots`|`bytes32[]`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes32[]`|value The value of the slot as bytes32|
-
-
diff --git a/docs/contracts/v4/reference/core/IPoolManager.mdx b/docs/contracts/v4/reference/core/IPoolManager.mdx
deleted file mode 100644
index 5c8f1029b..000000000
--- a/docs/contracts/v4/reference/core/IPoolManager.mdx
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: IPoolManager
----
-
-The `IPoolManager` interface defines the main methods for interacting with the Uniswap V4 pool manager contract. It exposes the core _swap lifecycle_ operations
-
-# ModifyLiquidityParams
-
-Structure used to modify liquidity in a pool.
-
-- `tickLower`: Lower tick boundary of the position
-- `tickUpper`: Upper tick boundary of the position
-- `liquidityDelta`: Amount of liquidity to add (positive) or remove (negative)
-- `salt`: A value to set if you want unique liquidity positions at the same range
-
-Used in the `modifyLiquidity` function to add or remove liquidity from a specific position in the pool.
-
-# SwapParams
-
-Structure used to execute a swap in a pool.
-
-- `zeroForOne`: Direction of the swap (true for token0 to token1, false for token1 to token0)
-- `amountSpecified`: Amount of tokens to swap (positive for exact input, negative for exact output)
-- `sqrtPriceLimitX96`: Slippage limit represented as [Q64X96](https://uniswapv3book.com/milestone_3/more-on-fixed-point-numbers.html#:~:text=The%20Q64.,and%2018%20signify%20decimal%20places.) notation
-
-Used in the `swap` function to define the behavior of our swap.
-
-# Methods
-
-## initialize
-
-```solidity
-function initialize(PoolKey memory key, uint160 sqrtPriceX96)
- external
- returns (int24 tick);
-```
-
-Initialize a new pool by defining its parameters: token pair, fee tier, tick spacing, hook contract, and starting price
-
-| Param Name | Type | Description |
-|---------------|-----------|--------------------------------------------------|
-| key | PoolKey | The key defining the pool to initialize |
-| sqrtPriceX96 | uint160 | The initial sqrt price of the pool as a Q64.96 value |
-
-Returns the initial tick value of the pool.
-
-## unlock
-
-```solidity
-function unlock(bytes calldata data) external returns (bytes memory);
-```
-
-Provides a single entry point for all pool operations. The provided data is passed to the callback for execution.
-
-| Param Name | Type | Description |
-|------------|-------|--------------------------------------------------------------------------------------|
-| data | bytes | Any data to pass to the callback via `IUnlockCallback(msg.sender).unlockCallback(data)` |
-
-Returns the data returned by the callback.
-
-## modifyLiquidity
-
-```solidity
-function modifyLiquidity(
- PoolKey memory key,
- ModifyLiquidityParams memory params,
- bytes calldata hookData
-) external returns (BalanceDelta, BalanceDelta);
-```
-
-Modifies the liquidity for the given pool. Can be used to add or remove liquidity, or collect fees
-> passing zero will collect fees for the given tick range
-
-| Param Name | Type | Description |
-|------------|------------------------|--------------------------------------------------|
-| key | PoolKey | The key of the pool to modify liquidity in |
-| params | ModifyLiquidityParams | The parameters for modifying the liquidity position |
-| hookData | bytes | Any data to pass to a hook contract on the before/add liquidity hooks |
-
-Returns the balance delta for the caller (total of principal and fees) and the fee delta generated in the liquidity range.
-
-## swap
-
-```solidity
-function swap(PoolKey memory key, SwapParams memory params, bytes calldata hookData)
- external
- returns (BalanceDelta);
-```
-
-Executes a swap against the given pool using the provided parameters.
-
-| Param Name | Type | Description |
-|------------|------------|-----------------------------------------|
-| key | PoolKey | The key of the pool to swap in |
-| params | SwapParams | The parameters for executing the swap |
-| hookData | bytes | Any data to pass to a hook contract on the before/afterSwap hooks |
-
-Returns the balance delta for the address initiating the swap. Note swapping on low liquidity pools may cause unexpected amounts. Interacting with certain hooks may also alter the swap amounts.
-
-## donate
-
-```solidity
-function donate(PoolKey memory key, uint256 amount0, uint256 amount1, bytes calldata hookData)
- external
- returns (BalanceDelta);
-```
-
-Donates the specified currency amounts to the pool.
-
-| Param Name | Type | Description |
-|------------|----------|-------------------------------------|
-| key | PoolKey | The key of the pool to donate to |
-| amount0 | uint256 | The amount of token0 to donate |
-| amount1 | uint256 | The amount of token1 to donate |
-| hookData | bytes | Any data to pass to a hook contract on the before/afterDonate hooks|
-
-Returns the balance delta representing the donated amounts.
diff --git a/docs/contracts/v4/reference/core/NoDelegateCall.md b/docs/contracts/v4/reference/core/NoDelegateCall.md
deleted file mode 100644
index cf7cfd3f7..000000000
--- a/docs/contracts/v4/reference/core/NoDelegateCall.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# NoDelegateCall
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/NoDelegateCall.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Base contract that provides a modifier for preventing delegatecall to methods in a child contract
-
-
-## State Variables
-### original
-*The original address of this contract*
-
-
-```solidity
-address private immutable original;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor();
-```
-
-### checkNotDelegateCall
-
-*Private method is used instead of inlining into modifier because modifiers are copied into each method,
-and the use of immutable means the address bytes are copied in every place the modifier is used.*
-
-
-```solidity
-function checkNotDelegateCall() private view;
-```
-
-### noDelegateCall
-
-Prevents delegatecall into the modified method
-
-
-```solidity
-modifier noDelegateCall();
-```
-
-## Errors
-### DelegateCallNotAllowed
-
-```solidity
-error DelegateCallNotAllowed();
-```
-
diff --git a/docs/contracts/v4/reference/core/PoolManager.md b/docs/contracts/v4/reference/core/PoolManager.md
deleted file mode 100644
index 52cb440bd..000000000
--- a/docs/contracts/v4/reference/core/PoolManager.md
+++ /dev/null
@@ -1,383 +0,0 @@
-# PoolManager
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/PoolManager.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IPoolManager](contracts/v4/reference/core/interfaces/IPoolManager.md), [ProtocolFees](contracts/v4/reference/core/ProtocolFees.md), [NoDelegateCall](contracts/v4/reference/core/NoDelegateCall.md), [ERC6909Claims](contracts/v4/reference/core/ERC6909Claims.md), [Extsload](contracts/v4/reference/core/Extsload.md), [Exttload](contracts/v4/reference/core/Exttload.md)
-
-Holds the state for all pools
-
-
-## State Variables
-### MAX_TICK_SPACING
-
-```solidity
-int24 private constant MAX_TICK_SPACING = TickMath.MAX_TICK_SPACING;
-```
-
-
-### MIN_TICK_SPACING
-
-```solidity
-int24 private constant MIN_TICK_SPACING = TickMath.MIN_TICK_SPACING;
-```
-
-
-### _pools
-
-```solidity
-mapping(PoolId id => Pool.State) internal _pools;
-```
-
-
-## Functions
-### onlyWhenUnlocked
-
-This will revert if the contract is locked
-
-
-```solidity
-modifier onlyWhenUnlocked();
-```
-
-### constructor
-
-
-```solidity
-constructor(address initialOwner) ProtocolFees(initialOwner);
-```
-
-### unlock
-
-All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement
-`IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract.
-
-*The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`*
-
-
-```solidity
-function unlock(bytes calldata data) external override returns (bytes memory result);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`data`|`bytes`|Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`result`|`bytes`|The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`|
-
-
-### initialize
-
-Initialize the state for a given pool ID
-
-*A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee*
-
-
-```solidity
-function initialize(PoolKey memory key, uint160 sqrtPriceX96) external noDelegateCall returns (int24 tick);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool key for the pool to initialize|
-|`sqrtPriceX96`|`uint160`|The initial square root price|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tick`|`int24`|The initial tick of the pool|
-
-
-### modifyLiquidity
-
-Modify the liquidity for the given pool
-
-*Poke by calling with a zero liquidityDelta*
-
-
-```solidity
-function modifyLiquidity(PoolKey memory key, IPoolManager.ModifyLiquidityParams memory params, bytes calldata hookData)
- external
- onlyWhenUnlocked
- noDelegateCall
- returns (BalanceDelta callerDelta, BalanceDelta feesAccrued);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool to modify liquidity in|
-|`params`|`IPoolManager.ModifyLiquidityParams`|The parameters for modifying the liquidity|
-|`hookData`|`bytes`|The data to pass through to the add/removeLiquidity hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`callerDelta`|`BalanceDelta`|The balance delta of the caller of modifyLiquidity. This is the total of both principal, fee deltas, and hook deltas if applicable|
-|`feesAccrued`|`BalanceDelta`|The balance delta of the fees generated in the liquidity range. Returned for informational purposes|
-
-
-### swap
-
-Swap against the given pool
-
-*Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified.
-Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG
-the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.*
-
-
-```solidity
-function swap(PoolKey memory key, IPoolManager.SwapParams memory params, bytes calldata hookData)
- external
- onlyWhenUnlocked
- noDelegateCall
- returns (BalanceDelta swapDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool to swap in|
-|`params`|`IPoolManager.SwapParams`|The parameters for swapping|
-|`hookData`|`bytes`|The data to pass through to the swap hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`swapDelta`|`BalanceDelta`|The balance delta of the address swapping|
-
-
-### _swap
-
-Internal swap function to execute a swap, take protocol fees on input token, and emit the swap event
-
-
-```solidity
-function _swap(Pool.State storage pool, PoolId id, Pool.SwapParams memory params, Currency inputCurrency)
- internal
- returns (BalanceDelta);
-```
-
-### donate
-
-Donate the given currency amounts to the in-range liquidity providers of a pool
-
-*Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds.
-Donors should keep this in mind when designing donation mechanisms.*
-
-
-```solidity
-function donate(PoolKey memory key, uint256 amount0, uint256 amount1, bytes calldata hookData)
- external
- onlyWhenUnlocked
- noDelegateCall
- returns (BalanceDelta delta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The key of the pool to donate to|
-|`amount0`|`uint256`|The amount of currency0 to donate|
-|`amount1`|`uint256`|The amount of currency1 to donate|
-|`hookData`|`bytes`|The data to pass through to the donate hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`delta`|`BalanceDelta`|BalanceDelta The delta of the caller after the donate|
-
-
-### sync
-
-Writes the current ERC20 balance of the specified currency to transient storage
-This is used to checkpoint balances for the manager and derive deltas for the caller.
-
-*This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped
-for native tokens because the amount to settle is determined by the sent value.
-However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle
-native funds, this function can be called with the native currency to then be able to settle the native currency*
-
-
-```solidity
-function sync(Currency currency) external;
-```
-
-### take
-
-Called by the user to net out some value owed to the user
-
-*Will revert if the requested amount is not available, consider using `mint` instead*
-
-
-```solidity
-function take(Currency currency, address to, uint256 amount) external onlyWhenUnlocked;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`Currency`|The currency to withdraw from the pool manager|
-|`to`|`address`|The address to withdraw to|
-|`amount`|`uint256`|The amount of currency to withdraw|
-
-
-### settle
-
-Called by the user to pay what is owed
-
-
-```solidity
-function settle() external payable onlyWhenUnlocked returns (uint256);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|paid The amount of currency settled|
-
-
-### settleFor
-
-Called by the user to pay on behalf of another address
-
-
-```solidity
-function settleFor(address recipient) external payable onlyWhenUnlocked returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`recipient`|`address`|The address to credit for the payment|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|paid The amount of currency settled|
-
-
-### clear
-
-WARNING - Any currency that is cleared, will be non-retrievable, and locked in the contract permanently.
-A call to clear will zero out a positive balance WITHOUT a corresponding transfer.
-
-*This could be used to clear a balance that is considered dust.
-Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared.*
-
-
-```solidity
-function clear(Currency currency, uint256 amount) external onlyWhenUnlocked;
-```
-
-### mint
-
-Called by the user to move value into ERC6909 balance
-
-*The id is converted to a uint160 to correspond to a currency address
-If the upper 12 bytes are not 0, they will be 0-ed out*
-
-
-```solidity
-function mint(address to, uint256 id, uint256 amount) external onlyWhenUnlocked;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`to`|`address`|The address to mint the tokens to|
-|`id`|`uint256`|The currency address to mint to ERC6909s, as a uint256|
-|`amount`|`uint256`|The amount of currency to mint|
-
-
-### burn
-
-Called by the user to move value from ERC6909 balance
-
-*The id is converted to a uint160 to correspond to a currency address
-If the upper 12 bytes are not 0, they will be 0-ed out*
-
-
-```solidity
-function burn(address from, uint256 id, uint256 amount) external onlyWhenUnlocked;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`from`|`address`|The address to burn the tokens from|
-|`id`|`uint256`|The currency address to burn from ERC6909s, as a uint256|
-|`amount`|`uint256`|The amount of currency to burn|
-
-
-### updateDynamicLPFee
-
-Updates the pools lp fees for the a pool that has enabled dynamic lp fees.
-
-*A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee*
-
-
-```solidity
-function updateDynamicLPFee(PoolKey memory key, uint24 newDynamicLPFee) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The key of the pool to update dynamic LP fees for|
-|`newDynamicLPFee`|`uint24`|The new dynamic pool LP fee|
-
-
-### _settle
-
-
-```solidity
-function _settle(address recipient) internal returns (uint256 paid);
-```
-
-### _accountDelta
-
-Adds a balance delta in a currency for a target address
-
-
-```solidity
-function _accountDelta(Currency currency, int128 delta, address target) internal;
-```
-
-### _accountPoolBalanceDelta
-
-Accounts the deltas of 2 currencies to a target address
-
-
-```solidity
-function _accountPoolBalanceDelta(PoolKey memory key, BalanceDelta delta, address target) internal;
-```
-
-### _getPool
-
-Implementation of the _getPool function defined in ProtocolFees
-
-
-```solidity
-function _getPool(PoolId id) internal view override returns (Pool.State storage);
-```
-
-### _isUnlocked
-
-Implementation of the _isUnlocked function defined in ProtocolFees
-
-
-```solidity
-function _isUnlocked() internal view override returns (bool);
-```
-
diff --git a/docs/contracts/v4/reference/core/ProtocolFees.md b/docs/contracts/v4/reference/core/ProtocolFees.md
deleted file mode 100644
index 7b3b069e4..000000000
--- a/docs/contracts/v4/reference/core/ProtocolFees.md
+++ /dev/null
@@ -1,121 +0,0 @@
-# ProtocolFees
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/ProtocolFees.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IProtocolFees](contracts/v4/reference/core/interfaces/IProtocolFees.md), Owned
-
-Contract handling the setting and accrual of protocol fees
-
-
-## State Variables
-### protocolFeesAccrued
-Given a currency address, returns the protocol fees accrued in that currency
-
-
-```solidity
-mapping(Currency currency => uint256 amount) public protocolFeesAccrued;
-```
-
-
-### protocolFeeController
-Returns the current protocol fee controller address
-
-
-```solidity
-address public protocolFeeController;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(address initialOwner) Owned(initialOwner);
-```
-
-### setProtocolFeeController
-
-Sets the protocol fee controller
-
-
-```solidity
-function setProtocolFeeController(address controller) external onlyOwner;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`controller`|`address`|The new protocol fee controller|
-
-
-### setProtocolFee
-
-Sets the protocol fee for the given pool
-
-
-```solidity
-function setProtocolFee(PoolKey memory key, uint24 newProtocolFee) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The key of the pool to set a protocol fee for|
-|`newProtocolFee`|`uint24`|The fee to set|
-
-
-### collectProtocolFees
-
-Collects the protocol fees for a given recipient and currency, returning the amount collected
-
-*This will revert if the contract is unlocked*
-
-
-```solidity
-function collectProtocolFees(address recipient, Currency currency, uint256 amount)
- external
- returns (uint256 amountCollected);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`recipient`|`address`|The address to receive the protocol fees|
-|`currency`|`Currency`|The currency to withdraw|
-|`amount`|`uint256`|The amount of currency to withdraw|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountCollected`|`uint256`|The amount of currency successfully withdrawn|
-
-
-### _isUnlocked
-
-*abstract internal function to allow the ProtocolFees contract to access the lock*
-
-
-```solidity
-function _isUnlocked() internal virtual returns (bool);
-```
-
-### _getPool
-
-*abstract internal function to allow the ProtocolFees contract to access pool state*
-
-*this is overridden in PoolManager.sol to give access to the _pools mapping*
-
-
-```solidity
-function _getPool(PoolId id) internal virtual returns (Pool.State storage);
-```
-
-### _updateProtocolFees
-
-
-```solidity
-function _updateProtocolFees(Currency currency, uint256 amount) internal;
-```
-
diff --git a/docs/contracts/v4/reference/core/_category_.json b/docs/contracts/v4/reference/core/_category_.json
deleted file mode 100644
index 255eb73d5..000000000
--- a/docs/contracts/v4/reference/core/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Core",
- "position": 1,
- "collapsed": false
-}
diff --git a/docs/contracts/v4/reference/core/interfaces/IERC20Minimal.md b/docs/contracts/v4/reference/core/interfaces/IERC20Minimal.md
deleted file mode 100644
index 2743c30de..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IERC20Minimal.md
+++ /dev/null
@@ -1,150 +0,0 @@
-# IERC20Minimal
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/interfaces/external/IERC20Minimal.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Contains a subset of the full ERC20 interface that is used in t1 V3
-
-
-## Functions
-### balanceOf
-
-Returns an account's balance in the token
-
-
-```solidity
-function balanceOf(address account) external view returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`account`|`address`|The account for which to look up the number of tokens it has, i.e. its balance|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|The number of tokens held by the account|
-
-
-### transfer
-
-Transfers the amount of token from the `msg.sender` to the recipient
-
-
-```solidity
-function transfer(address recipient, uint256 amount) external returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`recipient`|`address`|The account that will receive the amount transferred|
-|`amount`|`uint256`|The number of tokens to send from the sender to the recipient|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|Returns true for a successful transfer, false for an unsuccessful transfer|
-
-
-### allowance
-
-Returns the current allowance given to a spender by an owner
-
-
-```solidity
-function allowance(address owner, address spender) external view returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|The account of the token owner|
-|`spender`|`address`|The account of the token spender|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|The current allowance granted by `owner` to `spender`|
-
-
-### approve
-
-Sets the allowance of a spender from the `msg.sender` to the value `amount`
-
-
-```solidity
-function approve(address spender, uint256 amount) external returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`spender`|`address`|The account which will be allowed to spend a given amount of the owners tokens|
-|`amount`|`uint256`|The amount of tokens allowed to be used by `spender`|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|Returns true for a successful approval, false for unsuccessful|
-
-
-### transferFrom
-
-Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`
-
-
-```solidity
-function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The account from which the transfer will be initiated|
-|`recipient`|`address`|The recipient of the transfer|
-|`amount`|`uint256`|The amount of the transfer|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|Returns true for a successful transfer, false for unsuccessful|
-
-
-## Events
-### Transfer
-Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.
-
-
-```solidity
-event Transfer(address indexed from, address indexed to, uint256 value);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`from`|`address`|The account from which the tokens were sent, i.e. the balance decreased|
-|`to`|`address`|The account to which the tokens were sent, i.e. the balance increased|
-|`value`|`uint256`|The amount of tokens that were transferred|
-
-### Approval
-Event emitted when the approval amount for the spender of a given owner's tokens changes.
-
-
-```solidity
-event Approval(address indexed owner, address indexed spender, uint256 value);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|The account that approved spending of its tokens|
-|`spender`|`address`|The account for which the spending allowance was modified|
-|`value`|`uint256`|The new allowance from the owner to the spender|
-
diff --git a/docs/contracts/v4/reference/core/interfaces/IERC6909Claims.md b/docs/contracts/v4/reference/core/interfaces/IERC6909Claims.md
deleted file mode 100644
index 4c6596707..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IERC6909Claims.md
+++ /dev/null
@@ -1,185 +0,0 @@
-# IERC6909Claims
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/interfaces/external/IERC6909Claims.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Interface for claims over a contract balance, wrapped as a ERC6909
-
-
-## Functions
-### balanceOf
-
-Owner balance of an id.
-
-
-```solidity
-function balanceOf(address owner, uint256 id) external view returns (uint256 amount);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|The address of the owner.|
-|`id`|`uint256`|The id of the token.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amount`|`uint256`|The balance of the token.|
-
-
-### allowance
-
-Spender allowance of an id.
-
-
-```solidity
-function allowance(address owner, address spender, uint256 id) external view returns (uint256 amount);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|The address of the owner.|
-|`spender`|`address`|The address of the spender.|
-|`id`|`uint256`|The id of the token.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amount`|`uint256`|The allowance of the token.|
-
-
-### isOperator
-
-Checks if a spender is approved by an owner as an operator
-
-
-```solidity
-function isOperator(address owner, address spender) external view returns (bool approved);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|The address of the owner.|
-|`spender`|`address`|The address of the spender.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`approved`|`bool`|The approval status.|
-
-
-### transfer
-
-Transfers an amount of an id from the caller to a receiver.
-
-
-```solidity
-function transfer(address receiver, uint256 id, uint256 amount) external returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`receiver`|`address`|The address of the receiver.|
-|`id`|`uint256`|The id of the token.|
-|`amount`|`uint256`|The amount of the token.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|bool True, always, unless the function reverts|
-
-
-### transferFrom
-
-Transfers an amount of an id from a sender to a receiver.
-
-
-```solidity
-function transferFrom(address sender, address receiver, uint256 id, uint256 amount) external returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The address of the sender.|
-|`receiver`|`address`|The address of the receiver.|
-|`id`|`uint256`|The id of the token.|
-|`amount`|`uint256`|The amount of the token.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|bool True, always, unless the function reverts|
-
-
-### approve
-
-Approves an amount of an id to a spender.
-
-
-```solidity
-function approve(address spender, uint256 id, uint256 amount) external returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`spender`|`address`|The address of the spender.|
-|`id`|`uint256`|The id of the token.|
-|`amount`|`uint256`|The amount of the token.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|bool True, always|
-
-
-### setOperator
-
-Sets or removes an operator for the caller.
-
-
-```solidity
-function setOperator(address operator, bool approved) external returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`operator`|`address`|The address of the operator.|
-|`approved`|`bool`|The approval status.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|bool True, always|
-
-
-## Events
-### OperatorSet
-
-```solidity
-event OperatorSet(address indexed owner, address indexed operator, bool approved);
-```
-
-### Approval
-
-```solidity
-event Approval(address indexed owner, address indexed spender, uint256 indexed id, uint256 amount);
-```
-
-### Transfer
-
-```solidity
-event Transfer(address caller, address indexed from, address indexed to, uint256 indexed id, uint256 amount);
-```
-
diff --git a/docs/contracts/v4/reference/core/interfaces/IExtsload.md b/docs/contracts/v4/reference/core/interfaces/IExtsload.md
deleted file mode 100644
index 0d561f591..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IExtsload.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# IExtsload
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/interfaces/IExtsload.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Interface for functions to access any storage slot in a contract
-
-
-## Functions
-### extsload
-
-Called by external contracts to access granular pool state
-
-
-```solidity
-function extsload(bytes32 slot) external view returns (bytes32 value);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`slot`|`bytes32`|Key of slot to sload|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`value`|`bytes32`|The value of the slot as bytes32|
-
-
-### extsload
-
-Called by external contracts to access granular pool state
-
-
-```solidity
-function extsload(bytes32 startSlot, uint256 nSlots) external view returns (bytes32[] memory values);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`startSlot`|`bytes32`|Key of slot to start sloading from|
-|`nSlots`|`uint256`|Number of slots to load into return value|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`values`|`bytes32[]`|List of loaded values.|
-
-
-### extsload
-
-Called by external contracts to access sparse pool state
-
-
-```solidity
-function extsload(bytes32[] calldata slots) external view returns (bytes32[] memory values);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`slots`|`bytes32[]`|List of slots to SLOAD from.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`values`|`bytes32[]`|List of loaded values.|
-
-
diff --git a/docs/contracts/v4/reference/core/interfaces/IExttload.md b/docs/contracts/v4/reference/core/interfaces/IExttload.md
deleted file mode 100644
index bfc72755c..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IExttload.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# IExttload
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/interfaces/IExttload.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Interface for functions to access any transient storage slot in a contract
-
-
-## Functions
-### exttload
-
-Called by external contracts to access transient storage of the contract
-
-
-```solidity
-function exttload(bytes32 slot) external view returns (bytes32 value);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`slot`|`bytes32`|Key of slot to tload|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`value`|`bytes32`|The value of the slot as bytes32|
-
-
-### exttload
-
-Called by external contracts to access sparse transient pool state
-
-
-```solidity
-function exttload(bytes32[] calldata slots) external view returns (bytes32[] memory values);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`slots`|`bytes32[]`|List of slots to tload|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`values`|`bytes32[]`|List of loaded values|
-
-
diff --git a/docs/contracts/v4/reference/core/interfaces/IHooks.md b/docs/contracts/v4/reference/core/interfaces/IHooks.md
deleted file mode 100644
index 4e287403f..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IHooks.md
+++ /dev/null
@@ -1,305 +0,0 @@
-# IHooks
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/interfaces/IHooks.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-V4 decides whether to invoke specific hooks by inspecting the least significant bits
-of the address that the hooks contract is deployed to.
-For example, a hooks contract deployed to address: 0x0000000000000000000000000000000000002400
-has the lowest bits '10 0100 0000 0000' which would cause the 'before initialize' and 'after add liquidity' hooks to be used.
-See the Hooks library for the full spec.
-
-*Should only be callable by the v4 PoolManager.*
-
-
-## Functions
-### beforeInitialize
-
-The hook called before the state of a pool is initialized
-
-
-```solidity
-function beforeInitialize(address sender, PoolKey calldata key, uint160 sqrtPriceX96) external returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the initialize call|
-|`key`|`PoolKey`|The key for the pool being initialized|
-|`sqrtPriceX96`|`uint160`|The sqrt(price) of the pool as a Q64.96|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### afterInitialize
-
-The hook called after the state of a pool is initialized
-
-
-```solidity
-function afterInitialize(address sender, PoolKey calldata key, uint160 sqrtPriceX96, int24 tick)
- external
- returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the initialize call|
-|`key`|`PoolKey`|The key for the pool being initialized|
-|`sqrtPriceX96`|`uint160`|The sqrt(price) of the pool as a Q64.96|
-|`tick`|`int24`|The current tick after the state of a pool is initialized|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### beforeAddLiquidity
-
-The hook called before liquidity is added
-
-
-```solidity
-function beforeAddLiquidity(
- address sender,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- bytes calldata hookData
-) external returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the add liquidity call|
-|`key`|`PoolKey`|The key for the pool|
-|`params`|`IPoolManager.ModifyLiquidityParams`|The parameters for adding liquidity|
-|`hookData`|`bytes`|Arbitrary data handed into the PoolManager by the liquidity provider to be passed on to the hook|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### afterAddLiquidity
-
-The hook called after liquidity is added
-
-
-```solidity
-function afterAddLiquidity(
- address sender,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- BalanceDelta delta,
- BalanceDelta feesAccrued,
- bytes calldata hookData
-) external returns (bytes4, BalanceDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the add liquidity call|
-|`key`|`PoolKey`|The key for the pool|
-|`params`|`IPoolManager.ModifyLiquidityParams`|The parameters for adding liquidity|
-|`delta`|`BalanceDelta`|The caller's balance delta after adding liquidity; the sum of principal delta, fees accrued, and hook delta|
-|`feesAccrued`|`BalanceDelta`|The fees accrued since the last time fees were collected from this position|
-|`hookData`|`bytes`|Arbitrary data handed into the PoolManager by the liquidity provider to be passed on to the hook|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-|``|`BalanceDelta`|BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency|
-
-
-### beforeRemoveLiquidity
-
-The hook called before liquidity is removed
-
-
-```solidity
-function beforeRemoveLiquidity(
- address sender,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- bytes calldata hookData
-) external returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the remove liquidity call|
-|`key`|`PoolKey`|The key for the pool|
-|`params`|`IPoolManager.ModifyLiquidityParams`|The parameters for removing liquidity|
-|`hookData`|`bytes`|Arbitrary data handed into the PoolManager by the liquidity provider to be be passed on to the hook|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### afterRemoveLiquidity
-
-The hook called after liquidity is removed
-
-
-```solidity
-function afterRemoveLiquidity(
- address sender,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- BalanceDelta delta,
- BalanceDelta feesAccrued,
- bytes calldata hookData
-) external returns (bytes4, BalanceDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the remove liquidity call|
-|`key`|`PoolKey`|The key for the pool|
-|`params`|`IPoolManager.ModifyLiquidityParams`|The parameters for removing liquidity|
-|`delta`|`BalanceDelta`|The caller's balance delta after removing liquidity; the sum of principal delta, fees accrued, and hook delta|
-|`feesAccrued`|`BalanceDelta`|The fees accrued since the last time fees were collected from this position|
-|`hookData`|`bytes`|Arbitrary data handed into the PoolManager by the liquidity provider to be be passed on to the hook|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-|``|`BalanceDelta`|BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency|
-
-
-### beforeSwap
-
-The hook called before a swap
-
-
-```solidity
-function beforeSwap(
- address sender,
- PoolKey calldata key,
- IPoolManager.SwapParams calldata params,
- bytes calldata hookData
-) external returns (bytes4, BeforeSwapDelta, uint24);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the swap call|
-|`key`|`PoolKey`|The key for the pool|
-|`params`|`IPoolManager.SwapParams`|The parameters for the swap|
-|`hookData`|`bytes`|Arbitrary data handed into the PoolManager by the swapper to be be passed on to the hook|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-|``|`BeforeSwapDelta`|BeforeSwapDelta The hook's delta in specified and unspecified currencies. Positive: the hook is owed/took currency, negative: the hook owes/sent currency|
-|``|`uint24`|uint24 Optionally override the lp fee, only used if three conditions are met: 1. the Pool has a dynamic fee, 2. the value's 2nd highest bit is set (23rd bit, 0x400000), and 3. the value is less than or equal to the maximum fee (1 million)|
-
-
-### afterSwap
-
-The hook called after a swap
-
-
-```solidity
-function afterSwap(
- address sender,
- PoolKey calldata key,
- IPoolManager.SwapParams calldata params,
- BalanceDelta delta,
- bytes calldata hookData
-) external returns (bytes4, int128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the swap call|
-|`key`|`PoolKey`|The key for the pool|
-|`params`|`IPoolManager.SwapParams`|The parameters for the swap|
-|`delta`|`BalanceDelta`|The amount owed to the caller (positive) or owed to the pool (negative)|
-|`hookData`|`bytes`|Arbitrary data handed into the PoolManager by the swapper to be be passed on to the hook|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-|``|`int128`|int128 The hook's delta in unspecified currency. Positive: the hook is owed/took currency, negative: the hook owes/sent currency|
-
-
-### beforeDonate
-
-The hook called before donate
-
-
-```solidity
-function beforeDonate(address sender, PoolKey calldata key, uint256 amount0, uint256 amount1, bytes calldata hookData)
- external
- returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the donate call|
-|`key`|`PoolKey`|The key for the pool|
-|`amount0`|`uint256`|The amount of token0 being donated|
-|`amount1`|`uint256`|The amount of token1 being donated|
-|`hookData`|`bytes`|Arbitrary data handed into the PoolManager by the donor to be be passed on to the hook|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### afterDonate
-
-The hook called after donate
-
-
-```solidity
-function afterDonate(address sender, PoolKey calldata key, uint256 amount0, uint256 amount1, bytes calldata hookData)
- external
- returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sender`|`address`|The initial msg.sender for the donate call|
-|`key`|`PoolKey`|The key for the pool|
-|`amount0`|`uint256`|The amount of token0 being donated|
-|`amount1`|`uint256`|The amount of token1 being donated|
-|`hookData`|`bytes`|Arbitrary data handed into the PoolManager by the donor to be be passed on to the hook|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
diff --git a/docs/contracts/v4/reference/core/interfaces/IPoolManager.md b/docs/contracts/v4/reference/core/interfaces/IPoolManager.md
deleted file mode 100644
index b0266b131..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IPoolManager.md
+++ /dev/null
@@ -1,503 +0,0 @@
-# IPoolManager
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/interfaces/IPoolManager.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IProtocolFees](contracts/v4/reference/core/interfaces/IProtocolFees.md), [IERC6909Claims](contracts/v4/reference/core/interfaces/IERC6909Claims.md), [IExtsload](contracts/v4/reference/core/interfaces/IExtsload.md), [IExttload](contracts/v4/reference/core/interfaces/IExttload.md)
-
-Interface for the PoolManager
-
-
-## Functions
-### unlock
-
-All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement
-`IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract.
-
-*The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`*
-
-
-```solidity
-function unlock(bytes calldata data) external returns (bytes memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`data`|`bytes`|Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes`|The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`|
-
-
-### initialize
-
-Initialize the state for a given pool ID
-
-*A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee*
-
-
-```solidity
-function initialize(PoolKey memory key, uint160 sqrtPriceX96) external returns (int24 tick);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool key for the pool to initialize|
-|`sqrtPriceX96`|`uint160`|The initial square root price|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tick`|`int24`|The initial tick of the pool|
-
-
-### modifyLiquidity
-
-Modify the liquidity for the given pool
-
-*Poke by calling with a zero liquidityDelta*
-
-
-```solidity
-function modifyLiquidity(PoolKey memory key, ModifyLiquidityParams memory params, bytes calldata hookData)
- external
- returns (BalanceDelta callerDelta, BalanceDelta feesAccrued);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool to modify liquidity in|
-|`params`|`ModifyLiquidityParams`|The parameters for modifying the liquidity|
-|`hookData`|`bytes`|The data to pass through to the add/removeLiquidity hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`callerDelta`|`BalanceDelta`|The balance delta of the caller of modifyLiquidity. This is the total of both principal, fee deltas, and hook deltas if applicable|
-|`feesAccrued`|`BalanceDelta`|The balance delta of the fees generated in the liquidity range. Returned for informational purposes|
-
-
-### swap
-
-Swap against the given pool
-
-*Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified.
-Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG
-the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.*
-
-
-```solidity
-function swap(PoolKey memory key, SwapParams memory params, bytes calldata hookData)
- external
- returns (BalanceDelta swapDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool to swap in|
-|`params`|`SwapParams`|The parameters for swapping|
-|`hookData`|`bytes`|The data to pass through to the swap hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`swapDelta`|`BalanceDelta`|The balance delta of the address swapping|
-
-
-### donate
-
-Donate the given currency amounts to the in-range liquidity providers of a pool
-
-*Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds.
-Donors should keep this in mind when designing donation mechanisms.*
-
-*This function donates to in-range LPs at slot0.tick. In certain edge-cases of the swap algorithm, the `sqrtPrice` of
-a pool can be at the lower boundary of tick `n`, but the `slot0.tick` of the pool is already `n - 1`. In this case a call to
-`donate` would donate to tick `n - 1` (slot0.tick) not tick `n` (getTickAtSqrtPrice(slot0.sqrtPriceX96)).
-Read the comments in `Pool.swap()` for more information about this.*
-
-
-```solidity
-function donate(PoolKey memory key, uint256 amount0, uint256 amount1, bytes calldata hookData)
- external
- returns (BalanceDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The key of the pool to donate to|
-|`amount0`|`uint256`|The amount of currency0 to donate|
-|`amount1`|`uint256`|The amount of currency1 to donate|
-|`hookData`|`bytes`|The data to pass through to the donate hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`BalanceDelta`|BalanceDelta The delta of the caller after the donate|
-
-
-### sync
-
-Writes the current ERC20 balance of the specified currency to transient storage
-This is used to checkpoint balances for the manager and derive deltas for the caller.
-
-*This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped
-for native tokens because the amount to settle is determined by the sent value.
-However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle
-native funds, this function can be called with the native currency to then be able to settle the native currency*
-
-
-```solidity
-function sync(Currency currency) external;
-```
-
-### take
-
-Called by the user to net out some value owed to the user
-
-*Will revert if the requested amount is not available, consider using `mint` instead*
-
-*Can also be used as a mechanism for free flash loans*
-
-
-```solidity
-function take(Currency currency, address to, uint256 amount) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`Currency`|The currency to withdraw from the pool manager|
-|`to`|`address`|The address to withdraw to|
-|`amount`|`uint256`|The amount of currency to withdraw|
-
-
-### settle
-
-Called by the user to pay what is owed
-
-
-```solidity
-function settle() external payable returns (uint256 paid);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`paid`|`uint256`|The amount of currency settled|
-
-
-### settleFor
-
-Called by the user to pay on behalf of another address
-
-
-```solidity
-function settleFor(address recipient) external payable returns (uint256 paid);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`recipient`|`address`|The address to credit for the payment|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`paid`|`uint256`|The amount of currency settled|
-
-
-### clear
-
-WARNING - Any currency that is cleared, will be non-retrievable, and locked in the contract permanently.
-A call to clear will zero out a positive balance WITHOUT a corresponding transfer.
-
-*This could be used to clear a balance that is considered dust.
-Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared.*
-
-
-```solidity
-function clear(Currency currency, uint256 amount) external;
-```
-
-### mint
-
-Called by the user to move value into ERC6909 balance
-
-*The id is converted to a uint160 to correspond to a currency address
-If the upper 12 bytes are not 0, they will be 0-ed out*
-
-
-```solidity
-function mint(address to, uint256 id, uint256 amount) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`to`|`address`|The address to mint the tokens to|
-|`id`|`uint256`|The currency address to mint to ERC6909s, as a uint256|
-|`amount`|`uint256`|The amount of currency to mint|
-
-
-### burn
-
-Called by the user to move value from ERC6909 balance
-
-*The id is converted to a uint160 to correspond to a currency address
-If the upper 12 bytes are not 0, they will be 0-ed out*
-
-
-```solidity
-function burn(address from, uint256 id, uint256 amount) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`from`|`address`|The address to burn the tokens from|
-|`id`|`uint256`|The currency address to burn from ERC6909s, as a uint256|
-|`amount`|`uint256`|The amount of currency to burn|
-
-
-### updateDynamicLPFee
-
-Updates the pools lp fees for the a pool that has enabled dynamic lp fees.
-
-*A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee*
-
-
-```solidity
-function updateDynamicLPFee(PoolKey memory key, uint24 newDynamicLPFee) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The key of the pool to update dynamic LP fees for|
-|`newDynamicLPFee`|`uint24`|The new dynamic pool LP fee|
-
-
-## Events
-### Initialize
-Emitted when a new pool is initialized
-
-
-```solidity
-event Initialize(
- PoolId indexed id,
- Currency indexed currency0,
- Currency indexed currency1,
- uint24 fee,
- int24 tickSpacing,
- IHooks hooks,
- uint160 sqrtPriceX96,
- int24 tick
-);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`id`|`PoolId`|The abi encoded hash of the pool key struct for the new pool|
-|`currency0`|`Currency`|The first currency of the pool by address sort order|
-|`currency1`|`Currency`|The second currency of the pool by address sort order|
-|`fee`|`uint24`|The fee collected upon every swap in the pool, denominated in hundredths of a bip|
-|`tickSpacing`|`int24`|The minimum number of ticks between initialized ticks|
-|`hooks`|`IHooks`|The hooks contract address for the pool, or address(0) if none|
-|`sqrtPriceX96`|`uint160`|The price of the pool on initialization|
-|`tick`|`int24`|The initial tick of the pool corresponding to the initialized price|
-
-### ModifyLiquidity
-Emitted when a liquidity position is modified
-
-
-```solidity
-event ModifyLiquidity(
- PoolId indexed id, address indexed sender, int24 tickLower, int24 tickUpper, int256 liquidityDelta, bytes32 salt
-);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`id`|`PoolId`|The abi encoded hash of the pool key struct for the pool that was modified|
-|`sender`|`address`|The address that modified the pool|
-|`tickLower`|`int24`|The lower tick of the position|
-|`tickUpper`|`int24`|The upper tick of the position|
-|`liquidityDelta`|`int256`|The amount of liquidity that was added or removed|
-|`salt`|`bytes32`|The extra data to make positions unique|
-
-### Swap
-Emitted for swaps between currency0 and currency1
-
-
-```solidity
-event Swap(
- PoolId indexed id,
- address indexed sender,
- int128 amount0,
- int128 amount1,
- uint160 sqrtPriceX96,
- uint128 liquidity,
- int24 tick,
- uint24 fee
-);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`id`|`PoolId`|The abi encoded hash of the pool key struct for the pool that was modified|
-|`sender`|`address`|The address that initiated the swap call, and that received the callback|
-|`amount0`|`int128`|The delta of the currency0 balance of the pool|
-|`amount1`|`int128`|The delta of the currency1 balance of the pool|
-|`sqrtPriceX96`|`uint160`|The sqrt(price) of the pool after the swap, as a Q64.96|
-|`liquidity`|`uint128`|The liquidity of the pool after the swap|
-|`tick`|`int24`|The log base 1.0001 of the price of the pool after the swap|
-|`fee`|`uint24`|The swap fee in hundredths of a bip|
-
-### Donate
-Emitted for donations
-
-
-```solidity
-event Donate(PoolId indexed id, address indexed sender, uint256 amount0, uint256 amount1);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`id`|`PoolId`|The abi encoded hash of the pool key struct for the pool that was donated to|
-|`sender`|`address`|The address that initiated the donate call|
-|`amount0`|`uint256`|The amount donated in currency0|
-|`amount1`|`uint256`|The amount donated in currency1|
-
-## Errors
-### CurrencyNotSettled
-Thrown when a currency is not netted out after the contract is unlocked
-
-
-```solidity
-error CurrencyNotSettled();
-```
-
-### PoolNotInitialized
-Thrown when trying to interact with a non-initialized pool
-
-
-```solidity
-error PoolNotInitialized();
-```
-
-### AlreadyUnlocked
-Thrown when unlock is called, but the contract is already unlocked
-
-
-```solidity
-error AlreadyUnlocked();
-```
-
-### ManagerLocked
-Thrown when a function is called that requires the contract to be unlocked, but it is not
-
-
-```solidity
-error ManagerLocked();
-```
-
-### TickSpacingTooLarge
-Pools are limited to type(int16).max tickSpacing in #initialize, to prevent overflow
-
-
-```solidity
-error TickSpacingTooLarge(int24 tickSpacing);
-```
-
-### TickSpacingTooSmall
-Pools must have a positive non-zero tickSpacing passed to #initialize
-
-
-```solidity
-error TickSpacingTooSmall(int24 tickSpacing);
-```
-
-### CurrenciesOutOfOrderOrEqual
-PoolKey must have currencies where address(currency0) < address(currency1)
-
-
-```solidity
-error CurrenciesOutOfOrderOrEqual(address currency0, address currency1);
-```
-
-### UnauthorizedDynamicLPFeeUpdate
-Thrown when a call to updateDynamicLPFee is made by an address that is not the hook,
-or on a pool that does not have a dynamic swap fee.
-
-
-```solidity
-error UnauthorizedDynamicLPFeeUpdate();
-```
-
-### SwapAmountCannotBeZero
-Thrown when trying to swap amount of 0
-
-
-```solidity
-error SwapAmountCannotBeZero();
-```
-
-### NonzeroNativeValue
-Thrown when native currency is passed to a non native settlement
-
-
-```solidity
-error NonzeroNativeValue();
-```
-
-### MustClearExactPositiveDelta
-Thrown when `clear` is called with an amount that is not exactly equal to the open currency delta.
-
-
-```solidity
-error MustClearExactPositiveDelta();
-```
-
-## Structs
-### ModifyLiquidityParams
-
-```solidity
-struct ModifyLiquidityParams {
- int24 tickLower;
- int24 tickUpper;
- int256 liquidityDelta;
- bytes32 salt;
-}
-```
-
-### SwapParams
-
-```solidity
-struct SwapParams {
- bool zeroForOne;
- int256 amountSpecified;
- uint160 sqrtPriceLimitX96;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/interfaces/IProtocolFeeController.md b/docs/contracts/v4/reference/core/interfaces/IProtocolFeeController.md
deleted file mode 100644
index a4bff3399..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IProtocolFeeController.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# IProtocolFeeController
-[Git Source](https://github.com/Uniswap/v4-core/blob/1141642f8ba4665a50660886a8a8401526677045/src/interfaces/IProtocolFeeController.sol)
-| Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Interface to fetch the protocol fees for a pool from the protocol fee controller
-
-
-## Functions
-### protocolFeeForPool
-
-Returns the protocol fees for a pool given the conditions of this contract
-
-
-```solidity
-function protocolFeeForPool(PoolKey memory poolKey) external view returns (uint24 protocolFee);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolKey`|`PoolKey`|The pool key to identify the pool. The controller may want to use attributes on the pool to determine the protocol fee, hence the entire key is needed.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`protocolFee`|`uint24`|The pool's protocol fee, expressed in hundredths of a bip. The upper 12 bits are for 1->0 and the lower 12 are for 0->1. The maximum is 1000 - meaning the maximum protocol fee is 0.1%. the protocolFee is taken from the input first, then the lpFee is taken from the remaining input|
-
-
diff --git a/docs/contracts/v4/reference/core/interfaces/IProtocolFees.md b/docs/contracts/v4/reference/core/interfaces/IProtocolFees.md
deleted file mode 100644
index 147919d5b..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IProtocolFees.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# IProtocolFees
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/interfaces/IProtocolFees.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Interface for all protocol-fee related functions in the pool manager
-
-
-## Functions
-### protocolFeesAccrued
-
-Given a currency address, returns the protocol fees accrued in that currency
-
-
-```solidity
-function protocolFeesAccrued(Currency currency) external view returns (uint256 amount);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`Currency`|The currency to check|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amount`|`uint256`|The amount of protocol fees accrued in the currency|
-
-
-### setProtocolFee
-
-Sets the protocol fee for the given pool
-
-
-```solidity
-function setProtocolFee(PoolKey memory key, uint24 newProtocolFee) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The key of the pool to set a protocol fee for|
-|`newProtocolFee`|`uint24`|The fee to set|
-
-
-### setProtocolFeeController
-
-Sets the protocol fee controller
-
-
-```solidity
-function setProtocolFeeController(address controller) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`controller`|`address`|The new protocol fee controller|
-
-
-### collectProtocolFees
-
-Collects the protocol fees for a given recipient and currency, returning the amount collected
-
-*This will revert if the contract is unlocked*
-
-
-```solidity
-function collectProtocolFees(address recipient, Currency currency, uint256 amount)
- external
- returns (uint256 amountCollected);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`recipient`|`address`|The address to receive the protocol fees|
-|`currency`|`Currency`|The currency to withdraw|
-|`amount`|`uint256`|The amount of currency to withdraw|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountCollected`|`uint256`|The amount of currency successfully withdrawn|
-
-
-### protocolFeeController
-
-Returns the current protocol fee controller address
-
-
-```solidity
-function protocolFeeController() external view returns (address);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`|address The current protocol fee controller address|
-
-
-## Events
-### ProtocolFeeControllerUpdated
-Emitted when the protocol fee controller address is updated in setProtocolFeeController.
-
-
-```solidity
-event ProtocolFeeControllerUpdated(address indexed protocolFeeController);
-```
-
-### ProtocolFeeUpdated
-Emitted when the protocol fee is updated for a pool.
-
-
-```solidity
-event ProtocolFeeUpdated(PoolId indexed id, uint24 protocolFee);
-```
-
-## Errors
-### ProtocolFeeTooLarge
-Thrown when protocol fee is set too high
-
-
-```solidity
-error ProtocolFeeTooLarge(uint24 fee);
-```
-
-### InvalidCaller
-Thrown when collectProtocolFees or setProtocolFee is not called by the controller.
-
-
-```solidity
-error InvalidCaller();
-```
-
-### ProtocolFeeCurrencySynced
-Thrown when collectProtocolFees is attempted on a token that is synced.
-
-
-```solidity
-error ProtocolFeeCurrencySynced();
-```
-
diff --git a/docs/contracts/v4/reference/core/interfaces/IUnlockCallback.md b/docs/contracts/v4/reference/core/interfaces/IUnlockCallback.md
deleted file mode 100644
index b957d272c..000000000
--- a/docs/contracts/v4/reference/core/interfaces/IUnlockCallback.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# IUnlockCallback
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/interfaces/callback/IUnlockCallback.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Interface for the callback executed when an address unlocks the pool manager
-
-
-## Functions
-### unlockCallback
-
-Called by the pool manager on `msg.sender` when the manager is unlocked
-
-
-```solidity
-function unlockCallback(bytes calldata data) external returns (bytes memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`data`|`bytes`|The data that was passed to the call to unlock|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes`|Any data that you want to be returned from the unlock call|
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/BipsLibrary.md b/docs/contracts/v4/reference/core/libraries/BipsLibrary.md
deleted file mode 100644
index 3dc5321f3..000000000
--- a/docs/contracts/v4/reference/core/libraries/BipsLibrary.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# BipsLibrary
-[Git Source](https://github.com/Uniswap/v4-core/blob/1141642f8ba4665a50660886a8a8401526677045/src/libraries/BipsLibrary.sol)
-| Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## State Variables
-### BPS_DENOMINATOR
-
-```solidity
-uint256 internal constant BPS_DENOMINATOR = 10_000;
-```
-
-
-## Functions
-### calculatePortion
-
-
-```solidity
-function calculatePortion(uint256 amount, uint256 bips) internal pure returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amount`|`uint256`|The total amount to calculate a percentage of|
-|`bips`|`uint256`|The percentage to calculate, in bips|
-
-
-## Errors
-### InvalidBips
-emitted when an invalid percentage is provided
-
-
-```solidity
-error InvalidBips();
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/BitMath.md b/docs/contracts/v4/reference/core/libraries/BitMath.md
deleted file mode 100644
index 6c5312714..000000000
--- a/docs/contracts/v4/reference/core/libraries/BitMath.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# BitMath
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/BitMath.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Author:**
-Solady (https://github.com/Vectorized/solady/blob/8200a70e8dc2a77ecb074fc2e99a2a0d36547522/src/utils/LibBit.sol)
-
-*This library provides functionality for computing bit properties of an unsigned integer*
-
-
-## Functions
-### mostSignificantBit
-
-Returns the index of the most significant bit of the number,
-where the least significant bit is at index 0 and the most significant bit is at index 255
-
-
-```solidity
-function mostSignificantBit(uint256 x) internal pure returns (uint8 r);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`uint256`|the value for which to compute the most significant bit, must be greater than 0|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`r`|`uint8`|the index of the most significant bit|
-
-
-### leastSignificantBit
-
-Returns the index of the least significant bit of the number,
-where the least significant bit is at index 0 and the most significant bit is at index 255
-
-
-```solidity
-function leastSignificantBit(uint256 x) internal pure returns (uint8 r);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`uint256`|the value for which to compute the least significant bit, must be greater than 0|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`r`|`uint8`|the index of the least significant bit|
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/CurrencyDelta.md b/docs/contracts/v4/reference/core/libraries/CurrencyDelta.md
deleted file mode 100644
index b54cb3b5e..000000000
--- a/docs/contracts/v4/reference/core/libraries/CurrencyDelta.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# CurrencyDelta
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/CurrencyDelta.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-*this library implements the equivalent of a mapping, as transient storage can only be accessed in assembly*
-
-
-## Functions
-### _computeSlot
-
-calculates which storage slot a delta should be stored in for a given account and currency
-
-
-```solidity
-function _computeSlot(address target, Currency currency) internal pure returns (bytes32 hashSlot);
-```
-
-### getDelta
-
-
-```solidity
-function getDelta(Currency currency, address target) internal view returns (int256 delta);
-```
-
-### applyDelta
-
-applies a new currency delta for a given account and currency
-
-
-```solidity
-function applyDelta(Currency currency, address target, int128 delta) internal returns (int256 previous, int256 next);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`previous`|`int256`|The prior value|
-|`next`|`int256`|The modified result|
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/CurrencyReserves.md b/docs/contracts/v4/reference/core/libraries/CurrencyReserves.md
deleted file mode 100644
index 17b49bd67..000000000
--- a/docs/contracts/v4/reference/core/libraries/CurrencyReserves.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# CurrencyReserves
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/CurrencyReserves.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## State Variables
-### RESERVES_OF_SLOT
-bytes32(uint256(keccak256("ReservesOf")) - 1)
-
-
-```solidity
-bytes32 constant RESERVES_OF_SLOT = 0x1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd95;
-```
-
-
-### CURRENCY_SLOT
-bytes32(uint256(keccak256("Currency")) - 1)
-
-
-```solidity
-bytes32 constant CURRENCY_SLOT = 0x27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b9;
-```
-
-
-## Functions
-### getSyncedCurrency
-
-
-```solidity
-function getSyncedCurrency() internal view returns (Currency currency);
-```
-
-### resetCurrency
-
-
-```solidity
-function resetCurrency() internal;
-```
-
-### syncCurrencyAndReserves
-
-
-```solidity
-function syncCurrencyAndReserves(Currency currency, uint256 value) internal;
-```
-
-### getSyncedReserves
-
-
-```solidity
-function getSyncedReserves() internal view returns (uint256 value);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/CustomRevert.md b/docs/contracts/v4/reference/core/libraries/CustomRevert.md
deleted file mode 100644
index 89652ce6a..000000000
--- a/docs/contracts/v4/reference/core/libraries/CustomRevert.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# CustomRevert
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/CustomRevert.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Contains functions for reverting with custom errors with different argument types efficiently
-
-*To use this library, declare `using CustomRevert for bytes4;` and replace `revert CustomError()` with
-`CustomError.selector.revertWith()`*
-
-*The functions may tamper with the free memory pointer but it is fine since the call context is exited immediately*
-
-
-## Functions
-### revertWith
-
-*Reverts with the selector of a custom error in the scratch space*
-
-
-```solidity
-function revertWith(bytes4 selector) internal pure;
-```
-
-### revertWith
-
-*Reverts with a custom error with an address argument in the scratch space*
-
-
-```solidity
-function revertWith(bytes4 selector, address addr) internal pure;
-```
-
-### revertWith
-
-*Reverts with a custom error with an int24 argument in the scratch space*
-
-
-```solidity
-function revertWith(bytes4 selector, int24 value) internal pure;
-```
-
-### revertWith
-
-*Reverts with a custom error with a uint160 argument in the scratch space*
-
-
-```solidity
-function revertWith(bytes4 selector, uint160 value) internal pure;
-```
-
-### revertWith
-
-*Reverts with a custom error with two int24 arguments*
-
-
-```solidity
-function revertWith(bytes4 selector, int24 value1, int24 value2) internal pure;
-```
-
-### revertWith
-
-*Reverts with a custom error with two uint160 arguments*
-
-
-```solidity
-function revertWith(bytes4 selector, uint160 value1, uint160 value2) internal pure;
-```
-
-### revertWith
-
-*Reverts with a custom error with two address arguments*
-
-
-```solidity
-function revertWith(bytes4 selector, address value1, address value2) internal pure;
-```
-
-### bubbleUpAndRevertWith
-
-bubble up the revert message returned by a call and revert with a wrapped ERC-7751 error
-
-*this method can be vulnerable to revert data bombs*
-
-
-```solidity
-function bubbleUpAndRevertWith(address revertingContract, bytes4 revertingFunctionSelector, bytes4 additionalContext)
- internal
- pure;
-```
-
-## Errors
-### WrappedError
-*ERC-7751 error for wrapping bubbled up reverts*
-
-
-```solidity
-error WrappedError(address target, bytes4 selector, bytes reason, bytes details);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/FixedPoint128.md b/docs/contracts/v4/reference/core/libraries/FixedPoint128.md
deleted file mode 100644
index c92cc7621..000000000
--- a/docs/contracts/v4/reference/core/libraries/FixedPoint128.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# FixedPoint128
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/FixedPoint128.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)
-
-
-## State Variables
-### Q128
-
-```solidity
-uint256 internal constant Q128 = 0x100000000000000000000000000000000;
-```
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/FixedPoint96.md b/docs/contracts/v4/reference/core/libraries/FixedPoint96.md
deleted file mode 100644
index 7d098dacd..000000000
--- a/docs/contracts/v4/reference/core/libraries/FixedPoint96.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# FixedPoint96
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/FixedPoint96.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)
-
-*Used in SqrtPriceMath.sol*
-
-
-## State Variables
-### RESOLUTION
-
-```solidity
-uint8 internal constant RESOLUTION = 96;
-```
-
-
-### Q96
-
-```solidity
-uint256 internal constant Q96 = 0x1000000000000000000000000;
-```
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/FullMath.md b/docs/contracts/v4/reference/core/libraries/FullMath.md
deleted file mode 100644
index 3fa739f7e..000000000
--- a/docs/contracts/v4/reference/core/libraries/FullMath.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# FullMath
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/FullMath.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision
-
-*Handles "phantom overflow" i.e., allows multiplication and division where an intermediate value overflows 256 bits*
-
-
-## Functions
-### mulDiv
-
-Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
-
-*Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv*
-
-
-```solidity
-function mulDiv(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`a`|`uint256`|The multiplicand|
-|`b`|`uint256`|The multiplier|
-|`denominator`|`uint256`|The divisor|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`result`|`uint256`|The 256-bit result|
-
-
-### mulDivRoundingUp
-
-Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0
-
-
-```solidity
-function mulDivRoundingUp(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`a`|`uint256`|The multiplicand|
-|`b`|`uint256`|The multiplier|
-|`denominator`|`uint256`|The divisor|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`result`|`uint256`|The 256-bit result|
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/Hooks.md b/docs/contracts/v4/reference/core/libraries/Hooks.md
deleted file mode 100644
index 2988766c9..000000000
--- a/docs/contracts/v4/reference/core/libraries/Hooks.md
+++ /dev/null
@@ -1,361 +0,0 @@
-# Hooks
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/Hooks.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-V4 decides whether to invoke specific hooks by inspecting the least significant bits
-of the address that the hooks contract is deployed to.
-For example, a hooks contract deployed to address: 0x0000000000000000000000000000000000002400
-has the lowest bits '10 0100 0000 0000' which would cause the 'before initialize' and 'after add liquidity' hooks to be used.
-
-
-## State Variables
-### ALL_HOOK_MASK
-
-```solidity
-uint160 internal constant ALL_HOOK_MASK = uint160((1 << 14) - 1);
-```
-
-
-### BEFORE_INITIALIZE_FLAG
-
-```solidity
-uint160 internal constant BEFORE_INITIALIZE_FLAG = 1 << 13;
-```
-
-
-### AFTER_INITIALIZE_FLAG
-
-```solidity
-uint160 internal constant AFTER_INITIALIZE_FLAG = 1 << 12;
-```
-
-
-### BEFORE_ADD_LIQUIDITY_FLAG
-
-```solidity
-uint160 internal constant BEFORE_ADD_LIQUIDITY_FLAG = 1 << 11;
-```
-
-
-### AFTER_ADD_LIQUIDITY_FLAG
-
-```solidity
-uint160 internal constant AFTER_ADD_LIQUIDITY_FLAG = 1 << 10;
-```
-
-
-### BEFORE_REMOVE_LIQUIDITY_FLAG
-
-```solidity
-uint160 internal constant BEFORE_REMOVE_LIQUIDITY_FLAG = 1 << 9;
-```
-
-
-### AFTER_REMOVE_LIQUIDITY_FLAG
-
-```solidity
-uint160 internal constant AFTER_REMOVE_LIQUIDITY_FLAG = 1 << 8;
-```
-
-
-### BEFORE_SWAP_FLAG
-
-```solidity
-uint160 internal constant BEFORE_SWAP_FLAG = 1 << 7;
-```
-
-
-### AFTER_SWAP_FLAG
-
-```solidity
-uint160 internal constant AFTER_SWAP_FLAG = 1 << 6;
-```
-
-
-### BEFORE_DONATE_FLAG
-
-```solidity
-uint160 internal constant BEFORE_DONATE_FLAG = 1 << 5;
-```
-
-
-### AFTER_DONATE_FLAG
-
-```solidity
-uint160 internal constant AFTER_DONATE_FLAG = 1 << 4;
-```
-
-
-### BEFORE_SWAP_RETURNS_DELTA_FLAG
-
-```solidity
-uint160 internal constant BEFORE_SWAP_RETURNS_DELTA_FLAG = 1 << 3;
-```
-
-
-### AFTER_SWAP_RETURNS_DELTA_FLAG
-
-```solidity
-uint160 internal constant AFTER_SWAP_RETURNS_DELTA_FLAG = 1 << 2;
-```
-
-
-### AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG
-
-```solidity
-uint160 internal constant AFTER_ADD_LIQUIDITY_RETURNS_DELTA_FLAG = 1 << 1;
-```
-
-
-### AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG
-
-```solidity
-uint160 internal constant AFTER_REMOVE_LIQUIDITY_RETURNS_DELTA_FLAG = 1 << 0;
-```
-
-
-## Functions
-### validateHookPermissions
-
-Utility function intended to be used in hook constructors to ensure
-the deployed hooks address causes the intended hooks to be called
-
-*permissions param is memory as the function will be called from constructors*
-
-
-```solidity
-function validateHookPermissions(IHooks self, Permissions memory permissions) internal pure;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`IHooks`||
-|`permissions`|`Permissions`|The hooks that are intended to be called|
-
-
-### isValidHookAddress
-
-Ensures that the hook address includes at least one hook flag or dynamic fees, or is the 0 address
-
-
-```solidity
-function isValidHookAddress(IHooks self, uint24 fee) internal pure returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`IHooks`|The hook to verify|
-|`fee`|`uint24`|The fee of the pool the hook is used with|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|bool True if the hook address is valid|
-
-
-### callHook
-
-performs a hook call using the given calldata on the given hook that doesn't return a delta
-
-
-```solidity
-function callHook(IHooks self, bytes memory data) internal returns (bytes memory result);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`result`|`bytes`|The complete data returned by the hook|
-
-
-### callHookWithReturnDelta
-
-performs a hook call using the given calldata on the given hook
-
-
-```solidity
-function callHookWithReturnDelta(IHooks self, bytes memory data, bool parseReturn) internal returns (int256);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`int256`|int256 The delta returned by the hook|
-
-
-### noSelfCall
-
-modifier to prevent calling a hook if they initiated the action
-
-
-```solidity
-modifier noSelfCall(IHooks self);
-```
-
-### beforeInitialize
-
-calls beforeInitialize hook if permissioned and validates return value
-
-
-```solidity
-function beforeInitialize(IHooks self, PoolKey memory key, uint160 sqrtPriceX96) internal noSelfCall(self);
-```
-
-### afterInitialize
-
-calls afterInitialize hook if permissioned and validates return value
-
-
-```solidity
-function afterInitialize(IHooks self, PoolKey memory key, uint160 sqrtPriceX96, int24 tick) internal noSelfCall(self);
-```
-
-### beforeModifyLiquidity
-
-calls beforeModifyLiquidity hook if permissioned and validates return value
-
-
-```solidity
-function beforeModifyLiquidity(
- IHooks self,
- PoolKey memory key,
- IPoolManager.ModifyLiquidityParams memory params,
- bytes calldata hookData
-) internal noSelfCall(self);
-```
-
-### afterModifyLiquidity
-
-calls afterModifyLiquidity hook if permissioned and validates return value
-
-
-```solidity
-function afterModifyLiquidity(
- IHooks self,
- PoolKey memory key,
- IPoolManager.ModifyLiquidityParams memory params,
- BalanceDelta delta,
- BalanceDelta feesAccrued,
- bytes calldata hookData
-) internal returns (BalanceDelta callerDelta, BalanceDelta hookDelta);
-```
-
-### beforeSwap
-
-calls beforeSwap hook if permissioned and validates return value
-
-
-```solidity
-function beforeSwap(IHooks self, PoolKey memory key, IPoolManager.SwapParams memory params, bytes calldata hookData)
- internal
- returns (int256 amountToSwap, BeforeSwapDelta hookReturn, uint24 lpFeeOverride);
-```
-
-### afterSwap
-
-calls afterSwap hook if permissioned and validates return value
-
-
-```solidity
-function afterSwap(
- IHooks self,
- PoolKey memory key,
- IPoolManager.SwapParams memory params,
- BalanceDelta swapDelta,
- bytes calldata hookData,
- BeforeSwapDelta beforeSwapHookReturn
-) internal returns (BalanceDelta, BalanceDelta);
-```
-
-### beforeDonate
-
-calls beforeDonate hook if permissioned and validates return value
-
-
-```solidity
-function beforeDonate(IHooks self, PoolKey memory key, uint256 amount0, uint256 amount1, bytes calldata hookData)
- internal
- noSelfCall(self);
-```
-
-### afterDonate
-
-calls afterDonate hook if permissioned and validates return value
-
-
-```solidity
-function afterDonate(IHooks self, PoolKey memory key, uint256 amount0, uint256 amount1, bytes calldata hookData)
- internal
- noSelfCall(self);
-```
-
-### hasPermission
-
-
-```solidity
-function hasPermission(IHooks self, uint160 flag) internal pure returns (bool);
-```
-
-## Errors
-### HookAddressNotValid
-Thrown if the address will not lead to the specified hook calls being called
-
-
-```solidity
-error HookAddressNotValid(address hooks);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`hooks`|`address`|The address of the hooks contract|
-
-### InvalidHookResponse
-Hook did not return its selector
-
-
-```solidity
-error InvalidHookResponse();
-```
-
-### HookCallFailed
-Additional context for ERC-7751 wrapped error when a hook call fails
-
-
-```solidity
-error HookCallFailed();
-```
-
-### HookDeltaExceedsSwapAmount
-The hook's delta changed the swap from exactIn to exactOut or vice versa
-
-
-```solidity
-error HookDeltaExceedsSwapAmount();
-```
-
-## Structs
-### Permissions
-
-```solidity
-struct Permissions {
- bool beforeInitialize;
- bool afterInitialize;
- bool beforeAddLiquidity;
- bool afterAddLiquidity;
- bool beforeRemoveLiquidity;
- bool afterRemoveLiquidity;
- bool beforeSwap;
- bool afterSwap;
- bool beforeDonate;
- bool afterDonate;
- bool beforeSwapReturnDelta;
- bool afterSwapReturnDelta;
- bool afterAddLiquidityReturnDelta;
- bool afterRemoveLiquidityReturnDelta;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/LPFeeLibrary.md b/docs/contracts/v4/reference/core/libraries/LPFeeLibrary.md
deleted file mode 100644
index d09280aeb..000000000
--- a/docs/contracts/v4/reference/core/libraries/LPFeeLibrary.md
+++ /dev/null
@@ -1,196 +0,0 @@
-# LPFeeLibrary
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/LPFeeLibrary.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Library of helper functions for a pools LP fee
-
-
-## State Variables
-### DYNAMIC_FEE_FLAG
-An lp fee of exactly 0b1000000... signals a dynamic fee pool. This isn't a valid static fee as it is > MAX_LP_FEE
-
-
-```solidity
-uint24 public constant DYNAMIC_FEE_FLAG = 0x800000;
-```
-
-
-### OVERRIDE_FEE_FLAG
-the second bit of the fee returned by beforeSwap is used to signal if the stored LP fee should be overridden in this swap
-
-
-```solidity
-uint24 public constant OVERRIDE_FEE_FLAG = 0x400000;
-```
-
-
-### REMOVE_OVERRIDE_MASK
-mask to remove the override fee flag from a fee returned by the beforeSwaphook
-
-
-```solidity
-uint24 public constant REMOVE_OVERRIDE_MASK = 0xBFFFFF;
-```
-
-
-### MAX_LP_FEE
-the lp fee is represented in hundredths of a bip, so the max is 100%
-
-
-```solidity
-uint24 public constant MAX_LP_FEE = 1000000;
-```
-
-
-## Functions
-### isDynamicFee
-
-returns true if a pool's LP fee signals that the pool has a dynamic fee
-
-
-```solidity
-function isDynamicFee(uint24 self) internal pure returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`uint24`|The fee to check|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|bool True of the fee is dynamic|
-
-
-### isValid
-
-returns true if an LP fee is valid, aka not above the maximum permitted fee
-
-
-```solidity
-function isValid(uint24 self) internal pure returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`uint24`|The fee to check|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|bool True of the fee is valid|
-
-
-### validate
-
-validates whether an LP fee is larger than the maximum, and reverts if invalid
-
-
-```solidity
-function validate(uint24 self) internal pure;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`uint24`|The fee to validate|
-
-
-### getInitialLPFee
-
-gets and validates the initial LP fee for a pool. Dynamic fee pools have an initial fee of 0.
-
-*if a dynamic fee pool wants a non-0 initial fee, it should call `updateDynamicLPFee` in the afterInitialize hook*
-
-
-```solidity
-function getInitialLPFee(uint24 self) internal pure returns (uint24);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`uint24`|The fee to get the initial LP from|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint24`|initialFee 0 if the fee is dynamic, otherwise the fee (if valid)|
-
-
-### isOverride
-
-returns true if the fee has the override flag set (2nd highest bit of the uint24)
-
-
-```solidity
-function isOverride(uint24 self) internal pure returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`uint24`|The fee to check|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|bool True of the fee has the override flag set|
-
-
-### removeOverrideFlag
-
-returns a fee with the override flag removed
-
-
-```solidity
-function removeOverrideFlag(uint24 self) internal pure returns (uint24);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`uint24`|The fee to remove the override flag from|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint24`|fee The fee without the override flag set|
-
-
-### removeOverrideFlagAndValidate
-
-Removes the override flag and validates the fee (reverts if the fee is too large)
-
-
-```solidity
-function removeOverrideFlagAndValidate(uint24 self) internal pure returns (uint24 fee);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`uint24`|The fee to remove the override flag from, and then validate|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`fee`|`uint24`|The fee without the override flag set (if valid)|
-
-
-## Errors
-### LPFeeTooLarge
-Thrown when the static or dynamic fee on a pool exceeds 100%.
-
-
-```solidity
-error LPFeeTooLarge(uint24 fee);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/LiquidityMath.md b/docs/contracts/v4/reference/core/libraries/LiquidityMath.md
deleted file mode 100644
index 3f5de6eba..000000000
--- a/docs/contracts/v4/reference/core/libraries/LiquidityMath.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# LiquidityMath
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/LiquidityMath.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### addDelta
-
-Add a signed liquidity delta to liquidity and revert if it overflows or underflows
-
-
-```solidity
-function addDelta(uint128 x, int128 y) internal pure returns (uint128 z);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`uint128`|The liquidity before change|
-|`y`|`int128`|The delta by which liquidity should be changed|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`z`|`uint128`|The liquidity delta|
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/Lock.md b/docs/contracts/v4/reference/core/libraries/Lock.md
deleted file mode 100644
index f64208181..000000000
--- a/docs/contracts/v4/reference/core/libraries/Lock.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Lock
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/Lock.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-This is a temporary library that allows us to use transient storage (tstore/tload)
-TODO: This library can be deleted when we have the transient keyword support in solidity.
-
-
-## State Variables
-### IS_UNLOCKED_SLOT
-
-```solidity
-bytes32 internal constant IS_UNLOCKED_SLOT = 0xc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab23;
-```
-
-
-## Functions
-### unlock
-
-
-```solidity
-function unlock() internal;
-```
-
-### lock
-
-
-```solidity
-function lock() internal;
-```
-
-### isUnlocked
-
-
-```solidity
-function isUnlocked() internal view returns (bool unlocked);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/NonzeroDeltaCount.md b/docs/contracts/v4/reference/core/libraries/NonzeroDeltaCount.md
deleted file mode 100644
index 8a04de784..000000000
--- a/docs/contracts/v4/reference/core/libraries/NonzeroDeltaCount.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# NonzeroDeltaCount
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/NonzeroDeltaCount.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-This is a temporary library that allows us to use transient storage (tstore/tload)
-for the nonzero delta count.
-TODO: This library can be deleted when we have the transient keyword support in solidity.
-
-
-## State Variables
-### NONZERO_DELTA_COUNT_SLOT
-
-```solidity
-bytes32 internal constant NONZERO_DELTA_COUNT_SLOT = 0x7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b;
-```
-
-
-## Functions
-### read
-
-
-```solidity
-function read() internal view returns (uint256 count);
-```
-
-### increment
-
-
-```solidity
-function increment() internal;
-```
-
-### decrement
-
-Potential to underflow. Ensure checks are performed by integrating contracts to ensure this does not happen.
-Current usage ensures this will not happen because we call decrement with known boundaries (only up to the number of times we call increment).
-
-
-```solidity
-function decrement() internal;
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/ParseBytes.md b/docs/contracts/v4/reference/core/libraries/ParseBytes.md
deleted file mode 100644
index 682a92878..000000000
--- a/docs/contracts/v4/reference/core/libraries/ParseBytes.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# ParseBytes
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/ParseBytes.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Parses bytes returned from hooks and the byte selector used to check return selectors from hooks.
-
-*parseSelector also is used to parse the expected selector
-For parsing hook returns, note that all hooks return either bytes4 or (bytes4, 32-byte-delta) or (bytes4, 32-byte-delta, uint24).*
-
-
-## Functions
-### parseSelector
-
-
-```solidity
-function parseSelector(bytes memory result) internal pure returns (bytes4 selector);
-```
-
-### parseFee
-
-
-```solidity
-function parseFee(bytes memory result) internal pure returns (uint24 lpFee);
-```
-
-### parseReturnDelta
-
-
-```solidity
-function parseReturnDelta(bytes memory result) internal pure returns (int256 hookReturn);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/Pool.md b/docs/contracts/v4/reference/core/libraries/Pool.md
deleted file mode 100644
index 8e0d37c16..000000000
--- a/docs/contracts/v4/reference/core/libraries/Pool.md
+++ /dev/null
@@ -1,418 +0,0 @@
-# Pool
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/Pool.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-a library with all actions that can be performed on a pool
-
-
-## Functions
-### checkTicks
-
-*Common checks for valid tick inputs.*
-
-
-```solidity
-function checkTicks(int24 tickLower, int24 tickUpper) private pure;
-```
-
-### initialize
-
-
-```solidity
-function initialize(State storage self, uint160 sqrtPriceX96, uint24 lpFee) internal returns (int24 tick);
-```
-
-### setProtocolFee
-
-
-```solidity
-function setProtocolFee(State storage self, uint24 protocolFee) internal;
-```
-
-### setLPFee
-
-Only dynamic fee pools may update the lp fee.
-
-
-```solidity
-function setLPFee(State storage self, uint24 lpFee) internal;
-```
-
-### modifyLiquidity
-
-Effect changes to a position in a pool
-
-*PoolManager checks that the pool is initialized before calling*
-
-
-```solidity
-function modifyLiquidity(State storage self, ModifyLiquidityParams memory params)
- internal
- returns (BalanceDelta delta, BalanceDelta feeDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`State`||
-|`params`|`ModifyLiquidityParams`|the position details and the change to the position's liquidity to effect|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`delta`|`BalanceDelta`|the deltas of the token balances of the pool, from the liquidity change|
-|`feeDelta`|`BalanceDelta`|the fees generated by the liquidity range|
-
-
-### swap
-
-Executes a swap against the state, and returns the amount deltas of the pool
-
-*PoolManager checks that the pool is initialized before calling*
-
-
-```solidity
-function swap(State storage self, SwapParams memory params)
- internal
- returns (BalanceDelta swapDelta, uint256 amountToProtocol, uint24 swapFee, SwapResult memory result);
-```
-
-### donate
-
-Donates the given amount of currency0 and currency1 to the pool
-
-
-```solidity
-function donate(State storage state, uint256 amount0, uint256 amount1) internal returns (BalanceDelta delta);
-```
-
-### getFeeGrowthInside
-
-Retrieves fee growth data
-
-
-```solidity
-function getFeeGrowthInside(State storage self, int24 tickLower, int24 tickUpper)
- internal
- view
- returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`State`|The Pool state struct|
-|`tickLower`|`int24`|The lower tick boundary of the position|
-|`tickUpper`|`int24`|The upper tick boundary of the position|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`feeGrowthInside0X128`|`uint256`|The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries|
-|`feeGrowthInside1X128`|`uint256`|The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries|
-
-
-### updateTick
-
-Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa
-
-
-```solidity
-function updateTick(State storage self, int24 tick, int128 liquidityDelta, bool upper)
- internal
- returns (bool flipped, uint128 liquidityGrossAfter);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`State`|The mapping containing all tick information for initialized ticks|
-|`tick`|`int24`|The tick that will be updated|
-|`liquidityDelta`|`int128`|A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left)|
-|`upper`|`bool`|true for updating a position's upper tick, or false for updating a position's lower tick|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`flipped`|`bool`|Whether the tick was flipped from initialized to uninitialized, or vice versa|
-|`liquidityGrossAfter`|`uint128`|The total amount of liquidity for all positions that references the tick after the update|
-
-
-### tickSpacingToMaxLiquidityPerTick
-
-Derives max liquidity per tick from given tick spacing
-
-*Executed when adding liquidity*
-
-
-```solidity
-function tickSpacingToMaxLiquidityPerTick(int24 tickSpacing) internal pure returns (uint128 result);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickSpacing`|`int24`|The amount of required tick separation, realized in multiples of `tickSpacing` e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`result`|`uint128`|The max liquidity per tick|
-
-
-### checkPoolInitialized
-
-Reverts if the given pool has not been initialized
-
-
-```solidity
-function checkPoolInitialized(State storage self) internal view;
-```
-
-### clearTick
-
-Clears tick data
-
-
-```solidity
-function clearTick(State storage self, int24 tick) internal;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`State`|The mapping containing all initialized tick information for initialized ticks|
-|`tick`|`int24`|The tick that will be cleared|
-
-
-### crossTick
-
-Transitions to next tick as needed by price movement
-
-
-```solidity
-function crossTick(State storage self, int24 tick, uint256 feeGrowthGlobal0X128, uint256 feeGrowthGlobal1X128)
- internal
- returns (int128 liquidityNet);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`State`|The Pool state struct|
-|`tick`|`int24`|The destination tick of the transition|
-|`feeGrowthGlobal0X128`|`uint256`|The all-time global fee growth, per unit of liquidity, in token0|
-|`feeGrowthGlobal1X128`|`uint256`|The all-time global fee growth, per unit of liquidity, in token1|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidityNet`|`int128`|The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)|
-
-
-## Errors
-### TicksMisordered
-Thrown when tickLower is not below tickUpper
-
-
-```solidity
-error TicksMisordered(int24 tickLower, int24 tickUpper);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickLower`|`int24`|The invalid tickLower|
-|`tickUpper`|`int24`|The invalid tickUpper|
-
-### TickLowerOutOfBounds
-Thrown when tickLower is less than min tick
-
-
-```solidity
-error TickLowerOutOfBounds(int24 tickLower);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickLower`|`int24`|The invalid tickLower|
-
-### TickUpperOutOfBounds
-Thrown when tickUpper exceeds max tick
-
-
-```solidity
-error TickUpperOutOfBounds(int24 tickUpper);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickUpper`|`int24`|The invalid tickUpper|
-
-### TickLiquidityOverflow
-For the tick spacing, the tick has too much liquidity
-
-
-```solidity
-error TickLiquidityOverflow(int24 tick);
-```
-
-### PoolAlreadyInitialized
-Thrown when trying to initialize an already initialized pool
-
-
-```solidity
-error PoolAlreadyInitialized();
-```
-
-### PoolNotInitialized
-Thrown when trying to interact with a non-initialized pool
-
-
-```solidity
-error PoolNotInitialized();
-```
-
-### PriceLimitAlreadyExceeded
-Thrown when sqrtPriceLimitX96 on a swap has already exceeded its limit
-
-
-```solidity
-error PriceLimitAlreadyExceeded(uint160 sqrtPriceCurrentX96, uint160 sqrtPriceLimitX96);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceCurrentX96`|`uint160`|The invalid, already surpassed sqrtPriceLimitX96|
-|`sqrtPriceLimitX96`|`uint160`|The surpassed price limit|
-
-### PriceLimitOutOfBounds
-Thrown when sqrtPriceLimitX96 lies outside of valid tick/price range
-
-
-```solidity
-error PriceLimitOutOfBounds(uint160 sqrtPriceLimitX96);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceLimitX96`|`uint160`|The invalid, out-of-bounds sqrtPriceLimitX96|
-
-### NoLiquidityToReceiveFees
-Thrown by donate if there is currently 0 liquidity, since the fees will not go to any liquidity providers
-
-
-```solidity
-error NoLiquidityToReceiveFees();
-```
-
-### InvalidFeeForExactOut
-Thrown when trying to swap with max lp fee and specifying an output amount
-
-
-```solidity
-error InvalidFeeForExactOut();
-```
-
-## Structs
-### TickInfo
-
-```solidity
-struct TickInfo {
- uint128 liquidityGross;
- int128 liquidityNet;
- uint256 feeGrowthOutside0X128;
- uint256 feeGrowthOutside1X128;
-}
-```
-
-### State
-*The state of a pool*
-
-
-```solidity
-struct State {
- Slot0 slot0;
- uint256 feeGrowthGlobal0X128;
- uint256 feeGrowthGlobal1X128;
- uint128 liquidity;
- mapping(int24 tick => TickInfo) ticks;
- mapping(int16 wordPos => uint256) tickBitmap;
- mapping(bytes32 positionKey => Position.State) positions;
-}
-```
-
-### ModifyLiquidityParams
-
-```solidity
-struct ModifyLiquidityParams {
- address owner;
- int24 tickLower;
- int24 tickUpper;
- int128 liquidityDelta;
- int24 tickSpacing;
- bytes32 salt;
-}
-```
-
-### ModifyLiquidityState
-
-```solidity
-struct ModifyLiquidityState {
- bool flippedLower;
- uint128 liquidityGrossAfterLower;
- bool flippedUpper;
- uint128 liquidityGrossAfterUpper;
-}
-```
-
-### SwapResult
-
-```solidity
-struct SwapResult {
- uint160 sqrtPriceX96;
- int24 tick;
- uint128 liquidity;
-}
-```
-
-### StepComputations
-
-```solidity
-struct StepComputations {
- uint160 sqrtPriceStartX96;
- int24 tickNext;
- bool initialized;
- uint160 sqrtPriceNextX96;
- uint256 amountIn;
- uint256 amountOut;
- uint256 feeAmount;
- uint256 feeGrowthGlobalX128;
-}
-```
-
-### SwapParams
-
-```solidity
-struct SwapParams {
- int256 amountSpecified;
- int24 tickSpacing;
- bool zeroForOne;
- uint160 sqrtPriceLimitX96;
- uint24 lpFeeOverride;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/Position.md b/docs/contracts/v4/reference/core/libraries/Position.md
deleted file mode 100644
index d7b9c8670..000000000
--- a/docs/contracts/v4/reference/core/libraries/Position.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Position
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/Position.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Positions represent an owner address' liquidity between a lower and upper tick boundary
-
-*Positions store additional state for tracking fees owed to the position*
-
-
-## Functions
-### get
-
-Returns the State struct of a position, given an owner and position boundaries
-
-
-```solidity
-function get(mapping(bytes32 => State) storage self, address owner, int24 tickLower, int24 tickUpper, bytes32 salt)
- internal
- view
- returns (State storage position);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`mapping(bytes32 => State)`|The mapping containing all user positions|
-|`owner`|`address`|The address of the position owner|
-|`tickLower`|`int24`|The lower tick boundary of the position|
-|`tickUpper`|`int24`|The upper tick boundary of the position|
-|`salt`|`bytes32`|A unique value to differentiate between multiple positions in the same range|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`position`|`State`|The position info struct of the given owners' position|
-
-
-### calculatePositionKey
-
-A helper function to calculate the position key
-
-
-```solidity
-function calculatePositionKey(address owner, int24 tickLower, int24 tickUpper, bytes32 salt)
- internal
- pure
- returns (bytes32 positionKey);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|The address of the position owner|
-|`tickLower`|`int24`|the lower tick boundary of the position|
-|`tickUpper`|`int24`|the upper tick boundary of the position|
-|`salt`|`bytes32`|A unique value to differentiate between multiple positions in the same range, by the same owner. Passed in by the caller.|
-
-
-### update
-
-Credits accumulated fees to a user's position
-
-
-```solidity
-function update(State storage self, int128 liquidityDelta, uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128)
- internal
- returns (uint256 feesOwed0, uint256 feesOwed1);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`State`|The individual position to update|
-|`liquidityDelta`|`int128`|The change in pool liquidity as a result of the position update|
-|`feeGrowthInside0X128`|`uint256`|The all-time fee growth in currency0, per unit of liquidity, inside the position's tick boundaries|
-|`feeGrowthInside1X128`|`uint256`|The all-time fee growth in currency1, per unit of liquidity, inside the position's tick boundaries|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`feesOwed0`|`uint256`|The amount of currency0 owed to the position owner|
-|`feesOwed1`|`uint256`|The amount of currency1 owed to the position owner|
-
-
-## Errors
-### CannotUpdateEmptyPosition
-Cannot update a position with no liquidity
-
-
-```solidity
-error CannotUpdateEmptyPosition();
-```
-
-## Structs
-### State
-
-```solidity
-struct State {
- uint128 liquidity;
- uint256 feeGrowthInside0LastX128;
- uint256 feeGrowthInside1LastX128;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/ProtocolFeeLibrary.md b/docs/contracts/v4/reference/core/libraries/ProtocolFeeLibrary.md
deleted file mode 100644
index 0c71798c5..000000000
--- a/docs/contracts/v4/reference/core/libraries/ProtocolFeeLibrary.md
+++ /dev/null
@@ -1,74 +0,0 @@
-# ProtocolFeeLibrary
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/ProtocolFeeLibrary.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-library of functions related to protocol fees
-
-
-## State Variables
-### MAX_PROTOCOL_FEE
-Max protocol fee is 0.1% (1000 pips)
-
-*Increasing these values could lead to overflow in Pool.swap*
-
-
-```solidity
-uint16 public constant MAX_PROTOCOL_FEE = 1000;
-```
-
-
-### FEE_0_THRESHOLD
-Thresholds used for optimized bounds checks on protocol fees
-
-
-```solidity
-uint24 internal constant FEE_0_THRESHOLD = 1001;
-```
-
-
-### FEE_1_THRESHOLD
-
-```solidity
-uint24 internal constant FEE_1_THRESHOLD = 1001 << 12;
-```
-
-
-### PIPS_DENOMINATOR
-the protocol fee is represented in hundredths of a bip
-
-
-```solidity
-uint256 internal constant PIPS_DENOMINATOR = 1_000_000;
-```
-
-
-## Functions
-### getZeroForOneFee
-
-
-```solidity
-function getZeroForOneFee(uint24 self) internal pure returns (uint16);
-```
-
-### getOneForZeroFee
-
-
-```solidity
-function getOneForZeroFee(uint24 self) internal pure returns (uint16);
-```
-
-### isValidProtocolFee
-
-
-```solidity
-function isValidProtocolFee(uint24 self) internal pure returns (bool valid);
-```
-
-### calculateSwapFee
-
-*here `self` is just a single direction's protocol fee, not a packed type of 2 protocol fees*
-
-
-```solidity
-function calculateSwapFee(uint16 self, uint24 lpFee) internal pure returns (uint24 swapFee);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/SafeCast.md b/docs/contracts/v4/reference/core/libraries/SafeCast.md
deleted file mode 100644
index 3edb69a61..000000000
--- a/docs/contracts/v4/reference/core/libraries/SafeCast.md
+++ /dev/null
@@ -1,140 +0,0 @@
-# SafeCast
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/SafeCast.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Contains methods for safely casting between types
-
-
-## Functions
-### toUint160
-
-Cast a uint256 to a uint160, revert on overflow
-
-
-```solidity
-function toUint160(uint256 x) internal pure returns (uint160 y);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`uint256`|The uint256 to be downcasted|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`y`|`uint160`|The downcasted integer, now type uint160|
-
-
-### toUint128
-
-Cast a uint256 to a uint128, revert on overflow
-
-
-```solidity
-function toUint128(uint256 x) internal pure returns (uint128 y);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`uint256`|The uint256 to be downcasted|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`y`|`uint128`|The downcasted integer, now type uint128|
-
-
-### toUint128
-
-Cast a int128 to a uint128, revert on overflow or underflow
-
-
-```solidity
-function toUint128(int128 x) internal pure returns (uint128 y);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`int128`|The int128 to be casted|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`y`|`uint128`|The casted integer, now type uint128|
-
-
-### toInt128
-
-Cast a int256 to a int128, revert on overflow or underflow
-
-
-```solidity
-function toInt128(int256 x) internal pure returns (int128 y);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`int256`|The int256 to be downcasted|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`y`|`int128`|The downcasted integer, now type int128|
-
-
-### toInt256
-
-Cast a uint256 to a int256, revert on overflow
-
-
-```solidity
-function toInt256(uint256 x) internal pure returns (int256 y);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`uint256`|The uint256 to be casted|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`y`|`int256`|The casted integer, now type int256|
-
-
-### toInt128
-
-Cast a uint256 to a int128, revert on overflow
-
-
-```solidity
-function toInt128(uint256 x) internal pure returns (int128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`uint256`|The uint256 to be downcasted|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`int128`|The downcasted integer, now type int128|
-
-
-## Errors
-### SafeCastOverflow
-
-```solidity
-error SafeCastOverflow();
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/SqrtPriceMath.md b/docs/contracts/v4/reference/core/libraries/SqrtPriceMath.md
deleted file mode 100644
index 8154eed72..000000000
--- a/docs/contracts/v4/reference/core/libraries/SqrtPriceMath.md
+++ /dev/null
@@ -1,281 +0,0 @@
-# SqrtPriceMath
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/SqrtPriceMath.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas
-
-
-## Functions
-### getNextSqrtPriceFromAmount0RoundingUp
-
-Gets the next sqrt price given a delta of currency0
-
-*Always rounds up, because in the exact output case (increasing price) we need to move the price at least
-far enough to get the desired output amount, and in the exact input case (decreasing price) we need to move the
-price less in order to not send too much output.
-The most precise formula for this is liquidity * sqrtPX96 / (liquidity +- amount * sqrtPX96),
-if this is impossible because of overflow, we calculate liquidity / (liquidity / sqrtPX96 +- amount).*
-
-
-```solidity
-function getNextSqrtPriceFromAmount0RoundingUp(uint160 sqrtPX96, uint128 liquidity, uint256 amount, bool add)
- internal
- pure
- returns (uint160);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPX96`|`uint160`|The starting price, i.e. before accounting for the currency0 delta|
-|`liquidity`|`uint128`|The amount of usable liquidity|
-|`amount`|`uint256`|How much of currency0 to add or remove from virtual reserves|
-|`add`|`bool`|Whether to add or remove the amount of currency0|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint160`|The price after adding or removing amount, depending on add|
-
-
-### getNextSqrtPriceFromAmount1RoundingDown
-
-Gets the next sqrt price given a delta of currency1
-
-*Always rounds down, because in the exact output case (decreasing price) we need to move the price at least
-far enough to get the desired output amount, and in the exact input case (increasing price) we need to move the
-price less in order to not send too much output.
-The formula we compute is within <1 wei of the lossless version: sqrtPX96 +- amount / liquidity*
-
-
-```solidity
-function getNextSqrtPriceFromAmount1RoundingDown(uint160 sqrtPX96, uint128 liquidity, uint256 amount, bool add)
- internal
- pure
- returns (uint160);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPX96`|`uint160`|The starting price, i.e., before accounting for the currency1 delta|
-|`liquidity`|`uint128`|The amount of usable liquidity|
-|`amount`|`uint256`|How much of currency1 to add, or remove, from virtual reserves|
-|`add`|`bool`|Whether to add, or remove, the amount of currency1|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint160`|The price after adding or removing `amount`|
-
-
-### getNextSqrtPriceFromInput
-
-Gets the next sqrt price given an input amount of currency0 or currency1
-
-*Throws if price or liquidity are 0, or if the next price is out of bounds*
-
-
-```solidity
-function getNextSqrtPriceFromInput(uint160 sqrtPX96, uint128 liquidity, uint256 amountIn, bool zeroForOne)
- internal
- pure
- returns (uint160);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPX96`|`uint160`|The starting price, i.e., before accounting for the input amount|
-|`liquidity`|`uint128`|The amount of usable liquidity|
-|`amountIn`|`uint256`|How much of currency0, or currency1, is being swapped in|
-|`zeroForOne`|`bool`|Whether the amount in is currency0 or currency1|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint160`|uint160 The price after adding the input amount to currency0 or currency1|
-
-
-### getNextSqrtPriceFromOutput
-
-Gets the next sqrt price given an output amount of currency0 or currency1
-
-*Throws if price or liquidity are 0 or the next price is out of bounds*
-
-
-```solidity
-function getNextSqrtPriceFromOutput(uint160 sqrtPX96, uint128 liquidity, uint256 amountOut, bool zeroForOne)
- internal
- pure
- returns (uint160);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPX96`|`uint160`|The starting price before accounting for the output amount|
-|`liquidity`|`uint128`|The amount of usable liquidity|
-|`amountOut`|`uint256`|How much of currency0, or currency1, is being swapped out|
-|`zeroForOne`|`bool`|Whether the amount out is currency1 or currency0|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint160`|uint160 The price after removing the output amount of currency0 or currency1|
-
-
-### getAmount0Delta
-
-Gets the amount0 delta between two prices
-
-*Calculates liquidity / sqrt(lower) - liquidity / sqrt(upper),
-i.e. liquidity * (sqrt(upper) - sqrt(lower)) / (sqrt(upper) * sqrt(lower))*
-
-
-```solidity
-function getAmount0Delta(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, uint128 liquidity, bool roundUp)
- internal
- pure
- returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceAX96`|`uint160`|A sqrt price|
-|`sqrtPriceBX96`|`uint160`|Another sqrt price|
-|`liquidity`|`uint128`|The amount of usable liquidity|
-|`roundUp`|`bool`|Whether to round the amount up or down|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|uint256 Amount of currency0 required to cover a position of size liquidity between the two passed prices|
-
-
-### absDiff
-
-Equivalent to: `a >= b ? a - b : b - a`
-
-
-```solidity
-function absDiff(uint160 a, uint160 b) internal pure returns (uint256 res);
-```
-
-### getAmount1Delta
-
-Gets the amount1 delta between two prices
-
-*Calculates liquidity * (sqrt(upper) - sqrt(lower))*
-
-
-```solidity
-function getAmount1Delta(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, uint128 liquidity, bool roundUp)
- internal
- pure
- returns (uint256 amount1);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceAX96`|`uint160`|A sqrt price|
-|`sqrtPriceBX96`|`uint160`|Another sqrt price|
-|`liquidity`|`uint128`|The amount of usable liquidity|
-|`roundUp`|`bool`|Whether to round the amount up, or down|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amount1`|`uint256`|Amount of currency1 required to cover a position of size liquidity between the two passed prices|
-
-
-### getAmount0Delta
-
-Equivalent to:
-amount1 = roundUp
-? FullMath.mulDivRoundingUp(liquidity, sqrtPriceBX96 - sqrtPriceAX96, FixedPoint96.Q96)
-: FullMath.mulDiv(liquidity, sqrtPriceBX96 - sqrtPriceAX96, FixedPoint96.Q96);
-Cannot overflow because `type(uint128).max * type(uint160).max >> 96 < (1 << 192)`.
-
-Helper that gets signed currency0 delta
-
-
-```solidity
-function getAmount0Delta(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, int128 liquidity)
- internal
- pure
- returns (int256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceAX96`|`uint160`|A sqrt price|
-|`sqrtPriceBX96`|`uint160`|Another sqrt price|
-|`liquidity`|`int128`|The change in liquidity for which to compute the amount0 delta|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`int256`|int256 Amount of currency0 corresponding to the passed liquidityDelta between the two prices|
-
-
-### getAmount1Delta
-
-Helper that gets signed currency1 delta
-
-
-```solidity
-function getAmount1Delta(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, int128 liquidity)
- internal
- pure
- returns (int256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceAX96`|`uint160`|A sqrt price|
-|`sqrtPriceBX96`|`uint160`|Another sqrt price|
-|`liquidity`|`int128`|The change in liquidity for which to compute the amount1 delta|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`int256`|int256 Amount of currency1 corresponding to the passed liquidityDelta between the two prices|
-
-
-## Errors
-### InvalidPriceOrLiquidity
-
-```solidity
-error InvalidPriceOrLiquidity();
-```
-
-### InvalidPrice
-
-```solidity
-error InvalidPrice();
-```
-
-### NotEnoughLiquidity
-
-```solidity
-error NotEnoughLiquidity();
-```
-
-### PriceOverflow
-
-```solidity
-error PriceOverflow();
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/StateLibrary.md b/docs/contracts/v4/reference/core/libraries/StateLibrary.md
deleted file mode 100644
index e3a7e141a..000000000
--- a/docs/contracts/v4/reference/core/libraries/StateLibrary.md
+++ /dev/null
@@ -1,404 +0,0 @@
-# StateLibrary
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/StateLibrary.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-A helper library to provide state getters that use extsload
-
-
-## State Variables
-### POOLS_SLOT
-index of pools mapping in the PoolManager
-
-
-```solidity
-bytes32 public constant POOLS_SLOT = bytes32(uint256(6));
-```
-
-
-### FEE_GROWTH_GLOBAL0_OFFSET
-index of feeGrowthGlobal0X128 in Pool.State
-
-
-```solidity
-uint256 public constant FEE_GROWTH_GLOBAL0_OFFSET = 1;
-```
-
-
-### LIQUIDITY_OFFSET
-index of liquidity in Pool.State
-
-
-```solidity
-uint256 public constant LIQUIDITY_OFFSET = 3;
-```
-
-
-### TICKS_OFFSET
-index of TicksInfo mapping in Pool.State: mapping(int24 => TickInfo) ticks;
-
-
-```solidity
-uint256 public constant TICKS_OFFSET = 4;
-```
-
-
-### TICK_BITMAP_OFFSET
-index of tickBitmap mapping in Pool.State
-
-
-```solidity
-uint256 public constant TICK_BITMAP_OFFSET = 5;
-```
-
-
-### POSITIONS_OFFSET
-index of Position.State mapping in Pool.State: mapping(bytes32 => Position.State) positions;
-
-
-```solidity
-uint256 public constant POSITIONS_OFFSET = 6;
-```
-
-
-## Functions
-### getSlot0
-
-Get Slot0 of the pool: sqrtPriceX96, tick, protocolFee, lpFee
-
-*Corresponds to pools[poolId].slot0*
-
-
-```solidity
-function getSlot0(IPoolManager manager, PoolId poolId)
- internal
- view
- returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceX96`|`uint160`|The square root of the price of the pool, in Q96 precision.|
-|`tick`|`int24`|The current tick of the pool.|
-|`protocolFee`|`uint24`|The protocol fee of the pool.|
-|`lpFee`|`uint24`|The swap fee of the pool.|
-
-
-### getTickInfo
-
-Retrieves the tick information of a pool at a specific tick.
-
-*Corresponds to pools[poolId].ticks[tick]*
-
-
-```solidity
-function getTickInfo(IPoolManager manager, PoolId poolId, int24 tick)
- internal
- view
- returns (uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tick`|`int24`|The tick to retrieve information for.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidityGross`|`uint128`|The total position liquidity that references this tick|
-|`liquidityNet`|`int128`|The amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left)|
-|`feeGrowthOutside0X128`|`uint256`|fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)|
-|`feeGrowthOutside1X128`|`uint256`|fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)|
-
-
-### getTickLiquidity
-
-Retrieves the liquidity information of a pool at a specific tick.
-
-*Corresponds to pools[poolId].ticks[tick].liquidityGross and pools[poolId].ticks[tick].liquidityNet. A more gas efficient version of getTickInfo*
-
-
-```solidity
-function getTickLiquidity(IPoolManager manager, PoolId poolId, int24 tick)
- internal
- view
- returns (uint128 liquidityGross, int128 liquidityNet);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tick`|`int24`|The tick to retrieve liquidity for.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidityGross`|`uint128`|The total position liquidity that references this tick|
-|`liquidityNet`|`int128`|The amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left)|
-
-
-### getTickFeeGrowthOutside
-
-Retrieves the fee growth outside a tick range of a pool
-
-*Corresponds to pools[poolId].ticks[tick].feeGrowthOutside0X128 and pools[poolId].ticks[tick].feeGrowthOutside1X128. A more gas efficient version of getTickInfo*
-
-
-```solidity
-function getTickFeeGrowthOutside(IPoolManager manager, PoolId poolId, int24 tick)
- internal
- view
- returns (uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tick`|`int24`|The tick to retrieve fee growth for.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`feeGrowthOutside0X128`|`uint256`|fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)|
-|`feeGrowthOutside1X128`|`uint256`|fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)|
-
-
-### getFeeGrowthGlobals
-
-Retrieves the global fee growth of a pool.
-
-*Corresponds to pools[poolId].feeGrowthGlobal0X128 and pools[poolId].feeGrowthGlobal1X128*
-
-
-```solidity
-function getFeeGrowthGlobals(IPoolManager manager, PoolId poolId)
- internal
- view
- returns (uint256 feeGrowthGlobal0, uint256 feeGrowthGlobal1);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`feeGrowthGlobal0`|`uint256`|The global fee growth for token0.|
-|`feeGrowthGlobal1`|`uint256`|The global fee growth for token1.|
-
-
-### getLiquidity
-
-Retrieves total the liquidity of a pool.
-
-*Corresponds to pools[poolId].liquidity*
-
-
-```solidity
-function getLiquidity(IPoolManager manager, PoolId poolId) internal view returns (uint128 liquidity);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|The liquidity of the pool.|
-
-
-### getTickBitmap
-
-Retrieves the tick bitmap of a pool at a specific tick.
-
-*Corresponds to pools[poolId].tickBitmap[tick]*
-
-
-```solidity
-function getTickBitmap(IPoolManager manager, PoolId poolId, int16 tick) internal view returns (uint256 tickBitmap);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tick`|`int16`|The tick to retrieve the bitmap for.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickBitmap`|`uint256`|The bitmap of the tick.|
-
-
-### getPositionInfo
-
-Retrieves the position information of a pool without needing to calculate the `positionId`.
-
-*Corresponds to pools[poolId].positions[positionId]*
-
-
-```solidity
-function getPositionInfo(
- IPoolManager manager,
- PoolId poolId,
- address owner,
- int24 tickLower,
- int24 tickUpper,
- bytes32 salt
-) internal view returns (uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`||
-|`poolId`|`PoolId`|The ID of the pool.|
-|`owner`|`address`|The owner of the liquidity position.|
-|`tickLower`|`int24`|The lower tick of the liquidity range.|
-|`tickUpper`|`int24`|The upper tick of the liquidity range.|
-|`salt`|`bytes32`|The bytes32 randomness to further distinguish position state.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|The liquidity of the position.|
-|`feeGrowthInside0LastX128`|`uint256`|The fee growth inside the position for token0.|
-|`feeGrowthInside1LastX128`|`uint256`|The fee growth inside the position for token1.|
-
-
-### getPositionInfo
-
-Retrieves the position information of a pool at a specific position ID.
-
-*Corresponds to pools[poolId].positions[positionId]*
-
-
-```solidity
-function getPositionInfo(IPoolManager manager, PoolId poolId, bytes32 positionId)
- internal
- view
- returns (uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`positionId`|`bytes32`|The ID of the position.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|The liquidity of the position.|
-|`feeGrowthInside0LastX128`|`uint256`|The fee growth inside the position for token0.|
-|`feeGrowthInside1LastX128`|`uint256`|The fee growth inside the position for token1.|
-
-
-### getPositionLiquidity
-
-Retrieves the liquidity of a position.
-
-*Corresponds to pools[poolId].positions[positionId].liquidity. More gas efficient for just retrieiving liquidity as compared to getPositionInfo*
-
-
-```solidity
-function getPositionLiquidity(IPoolManager manager, PoolId poolId, bytes32 positionId)
- internal
- view
- returns (uint128 liquidity);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`positionId`|`bytes32`|The ID of the position.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|The liquidity of the position.|
-
-
-### getFeeGrowthInside
-
-Calculate the fee growth inside a tick range of a pool
-
-*pools[poolId].feeGrowthInside0LastX128 in Position.State is cached and can become stale. This function will calculate the up to date feeGrowthInside*
-
-
-```solidity
-function getFeeGrowthInside(IPoolManager manager, PoolId poolId, int24 tickLower, int24 tickUpper)
- internal
- view
- returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tickLower`|`int24`|The lower tick of the range.|
-|`tickUpper`|`int24`|The upper tick of the range.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`feeGrowthInside0X128`|`uint256`|The fee growth inside the tick range for token0.|
-|`feeGrowthInside1X128`|`uint256`|The fee growth inside the tick range for token1.|
-
-
-### _getPoolStateSlot
-
-
-```solidity
-function _getPoolStateSlot(PoolId poolId) internal pure returns (bytes32);
-```
-
-### _getTickInfoSlot
-
-
-```solidity
-function _getTickInfoSlot(PoolId poolId, int24 tick) internal pure returns (bytes32);
-```
-
-### _getPositionInfoSlot
-
-
-```solidity
-function _getPositionInfoSlot(PoolId poolId, bytes32 positionId) internal pure returns (bytes32);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/SwapMath.md b/docs/contracts/v4/reference/core/libraries/SwapMath.md
deleted file mode 100644
index 72c4cb9fb..000000000
--- a/docs/contracts/v4/reference/core/libraries/SwapMath.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# SwapMath
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/SwapMath.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Contains methods for computing the result of a swap within a single tick price range, i.e., a single tick.
-
-
-## State Variables
-### MAX_SWAP_FEE
-the swap fee is represented in hundredths of a bip, so the max is 100%
-
-*the swap fee is the total fee on a swap, including both LP and Protocol fee*
-
-
-```solidity
-uint256 internal constant MAX_SWAP_FEE = 1e6;
-```
-
-
-## Functions
-### getSqrtPriceTarget
-
-Computes the sqrt price target for the next swap step
-
-
-```solidity
-function getSqrtPriceTarget(bool zeroForOne, uint160 sqrtPriceNextX96, uint160 sqrtPriceLimitX96)
- internal
- pure
- returns (uint160 sqrtPriceTargetX96);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`zeroForOne`|`bool`|The direction of the swap, true for currency0 to currency1, false for currency1 to currency0|
-|`sqrtPriceNextX96`|`uint160`|The Q64.96 sqrt price for the next initialized tick|
-|`sqrtPriceLimitX96`|`uint160`|The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceTargetX96`|`uint160`|The price target for the next swap step|
-
-
-### computeSwapStep
-
-Computes the result of swapping some amount in, or amount out, given the parameters of the swap
-
-*If the swap's amountSpecified is negative, the combined fee and input amount will never exceed the absolute value of the remaining amount.*
-
-*feePips must be no larger than MAX_SWAP_FEE for this function. We ensure that before setting a fee using LPFeeLibrary.isValid.*
-
-
-```solidity
-function computeSwapStep(
- uint160 sqrtPriceCurrentX96,
- uint160 sqrtPriceTargetX96,
- uint128 liquidity,
- int256 amountRemaining,
- uint24 feePips
-) internal pure returns (uint160 sqrtPriceNextX96, uint256 amountIn, uint256 amountOut, uint256 feeAmount);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceCurrentX96`|`uint160`|The current sqrt price of the pool|
-|`sqrtPriceTargetX96`|`uint160`|The price that cannot be exceeded, from which the direction of the swap is inferred|
-|`liquidity`|`uint128`|The usable liquidity|
-|`amountRemaining`|`int256`|How much input or output amount is remaining to be swapped in/out|
-|`feePips`|`uint24`|The fee taken from the input amount, expressed in hundredths of a bip|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceNextX96`|`uint160`|The price after swapping the amount in/out, not to exceed the price target|
-|`amountIn`|`uint256`|The amount to be swapped in, of either currency0 or currency1, based on the direction of the swap|
-|`amountOut`|`uint256`|The amount to be received, of either currency0 or currency1, based on the direction of the swap|
-|`feeAmount`|`uint256`|The amount of input that will be taken as a fee|
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/TickBitmap.md b/docs/contracts/v4/reference/core/libraries/TickBitmap.md
deleted file mode 100644
index 43aa6f80d..000000000
--- a/docs/contracts/v4/reference/core/libraries/TickBitmap.md
+++ /dev/null
@@ -1,104 +0,0 @@
-# TickBitmap
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/TickBitmap.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Stores a packed mapping of tick index to its initialized state
-
-*The mapping uses int16 for keys since ticks are represented as int24 and there are 256 (2^8) values per word.*
-
-
-## Functions
-### compress
-
-*round towards negative infinity*
-
-
-```solidity
-function compress(int24 tick, int24 tickSpacing) internal pure returns (int24 compressed);
-```
-
-### position
-
-Computes the position in the mapping where the initialized bit for a tick lives
-
-
-```solidity
-function position(int24 tick) internal pure returns (int16 wordPos, uint8 bitPos);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tick`|`int24`|The tick for which to compute the position|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`wordPos`|`int16`|The key in the mapping containing the word in which the bit is stored|
-|`bitPos`|`uint8`|The bit position in the word where the flag is stored|
-
-
-### flipTick
-
-Flips the initialized state for a given tick from false to true, or vice versa
-
-
-```solidity
-function flipTick(mapping(int16 => uint256) storage self, int24 tick, int24 tickSpacing) internal;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`mapping(int16 => uint256)`|The mapping in which to flip the tick|
-|`tick`|`int24`|The tick to flip|
-|`tickSpacing`|`int24`|The spacing between usable ticks|
-
-
-### nextInitializedTickWithinOneWord
-
-Returns the next initialized tick contained in the same word (or adjacent word) as the tick that is either
-to the left (less than or equal to) or right (greater than) of the given tick
-
-
-```solidity
-function nextInitializedTickWithinOneWord(
- mapping(int16 => uint256) storage self,
- int24 tick,
- int24 tickSpacing,
- bool lte
-) internal view returns (int24 next, bool initialized);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`self`|`mapping(int16 => uint256)`|The mapping in which to compute the next initialized tick|
-|`tick`|`int24`|The starting tick|
-|`tickSpacing`|`int24`|The spacing between usable ticks|
-|`lte`|`bool`|Whether to search for the next initialized tick to the left (less than or equal to the starting tick)|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`next`|`int24`|The next initialized or uninitialized tick up to 256 ticks away from the current tick|
-|`initialized`|`bool`|Whether the next tick is initialized, as the function only searches within up to 256 ticks|
-
-
-## Errors
-### TickMisaligned
-Thrown when the tick is not enumerated by the tick spacing
-
-
-```solidity
-error TickMisaligned(int24 tick, int24 tickSpacing);
-```
-
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tick`|`int24`|the invalid tick|
-|`tickSpacing`|`int24`|The tick spacing of the pool|
-
diff --git a/docs/contracts/v4/reference/core/libraries/TickMath.md b/docs/contracts/v4/reference/core/libraries/TickMath.md
deleted file mode 100644
index 99e490a4d..000000000
--- a/docs/contracts/v4/reference/core/libraries/TickMath.md
+++ /dev/null
@@ -1,159 +0,0 @@
-# TickMath
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/TickMath.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports
-prices between 2**-128 and 2**128
-
-
-## State Variables
-### MIN_TICK
-*The minimum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**-128*
-
-*If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used*
-
-
-```solidity
-int24 internal constant MIN_TICK = -887272;
-```
-
-
-### MAX_TICK
-*The maximum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**128*
-
-*If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used*
-
-
-```solidity
-int24 internal constant MAX_TICK = 887272;
-```
-
-
-### MIN_TICK_SPACING
-*The minimum tick spacing value drawn from the range of type int16 that is greater than 0, i.e. min from the range [1, 32767]*
-
-
-```solidity
-int24 internal constant MIN_TICK_SPACING = 1;
-```
-
-
-### MAX_TICK_SPACING
-*The maximum tick spacing value drawn from the range of type int16, i.e. max from the range [1, 32767]*
-
-
-```solidity
-int24 internal constant MAX_TICK_SPACING = type(int16).max;
-```
-
-
-### MIN_SQRT_PRICE
-*The minimum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MIN_TICK)*
-
-
-```solidity
-uint160 internal constant MIN_SQRT_PRICE = 4295128739;
-```
-
-
-### MAX_SQRT_PRICE
-*The maximum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MAX_TICK)*
-
-
-```solidity
-uint160 internal constant MAX_SQRT_PRICE = 1461446703485210103287273052203988822378723970342;
-```
-
-
-### MAX_SQRT_PRICE_MINUS_MIN_SQRT_PRICE_MINUS_ONE
-*A threshold used for optimized bounds check, equals `MAX_SQRT_PRICE - MIN_SQRT_PRICE - 1`*
-
-
-```solidity
-uint160 internal constant MAX_SQRT_PRICE_MINUS_MIN_SQRT_PRICE_MINUS_ONE =
- 1461446703485210103287273052203988822378723970342 - 4295128739 - 1;
-```
-
-
-## Functions
-### maxUsableTick
-
-Given a tickSpacing, compute the maximum usable tick
-
-
-```solidity
-function maxUsableTick(int24 tickSpacing) internal pure returns (int24);
-```
-
-### minUsableTick
-
-Given a tickSpacing, compute the minimum usable tick
-
-
-```solidity
-function minUsableTick(int24 tickSpacing) internal pure returns (int24);
-```
-
-### getSqrtPriceAtTick
-
-Calculates sqrt(1.0001^tick) * 2^96
-
-*Throws if |tick| > max tick*
-
-
-```solidity
-function getSqrtPriceAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tick`|`int24`|The input tick for the above formula|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceX96`|`uint160`|A Fixed point Q64.96 number representing the sqrt of the price of the two assets (currency1/currency0) at the given tick|
-
-
-### getTickAtSqrtPrice
-
-Calculates the greatest tick value such that getSqrtPriceAtTick(tick) <= sqrtPriceX96
-
-*Throws in case sqrtPriceX96 < MIN_SQRT_PRICE, as MIN_SQRT_PRICE is the lowest value getSqrtPriceAtTick may
-ever return.*
-
-
-```solidity
-function getTickAtSqrtPrice(uint160 sqrtPriceX96) internal pure returns (int24 tick);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceX96`|`uint160`|The sqrt price for which to compute the tick as a Q64.96|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tick`|`int24`|The greatest tick for which the getSqrtPriceAtTick(tick) is less than or equal to the input sqrtPriceX96|
-
-
-## Errors
-### InvalidTick
-Thrown when the tick passed to #getSqrtPriceAtTick is not between MIN_TICK and MAX_TICK
-
-
-```solidity
-error InvalidTick(int24 tick);
-```
-
-### InvalidSqrtPrice
-Thrown when the price passed to #getTickAtSqrtPrice does not correspond to a price between MIN_TICK and MAX_TICK
-
-
-```solidity
-error InvalidSqrtPrice(uint160 sqrtPriceX96);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/TransientStateLibrary.md b/docs/contracts/v4/reference/core/libraries/TransientStateLibrary.md
deleted file mode 100644
index 85b115065..000000000
--- a/docs/contracts/v4/reference/core/libraries/TransientStateLibrary.md
+++ /dev/null
@@ -1,73 +0,0 @@
-# TransientStateLibrary
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/TransientStateLibrary.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-A helper library to provide state getters that use exttload
-
-
-## Functions
-### getSyncedReserves
-
-returns the reserves for the synced currency
-
-*returns 0 if the reserves are not synced or value is 0.
-Checks the synced currency to only return valid reserve values (after a sync and before a settle).*
-
-
-```solidity
-function getSyncedReserves(IPoolManager manager) internal view returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`|The pool manager contract.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|uint256 The reserves of the currency.|
-
-
-### getSyncedCurrency
-
-
-```solidity
-function getSyncedCurrency(IPoolManager manager) internal view returns (Currency);
-```
-
-### getNonzeroDeltaCount
-
-Returns the number of nonzero deltas open on the PoolManager that must be zeroed out before the contract is locked
-
-
-```solidity
-function getNonzeroDeltaCount(IPoolManager manager) internal view returns (uint256);
-```
-
-### currencyDelta
-
-Get the current delta for a caller in the given currency
-
-
-```solidity
-function currencyDelta(IPoolManager manager, address target, Currency currency) internal view returns (int256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`manager`|`IPoolManager`||
-|`target`|`address`|The credited account address|
-|`currency`|`Currency`|The currency for which to lookup the delta|
-
-
-### isUnlocked
-
-Returns whether the contract is unlocked or not
-
-
-```solidity
-function isUnlocked(IPoolManager manager) internal view returns (bool);
-```
-
diff --git a/docs/contracts/v4/reference/core/libraries/UnsafeMath.md b/docs/contracts/v4/reference/core/libraries/UnsafeMath.md
deleted file mode 100644
index dc23f66fa..000000000
--- a/docs/contracts/v4/reference/core/libraries/UnsafeMath.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# UnsafeMath
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/libraries/UnsafeMath.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Contains methods that perform common math functions but do not do any overflow or underflow checks
-
-
-## Functions
-### divRoundingUp
-
-Returns ceil(x / y)
-
-*division by 0 will return 0, and should be checked externally*
-
-
-```solidity
-function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`uint256`|The dividend|
-|`y`|`uint256`|The divisor|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`z`|`uint256`|The quotient, ceil(x / y)|
-
-
-### simpleMulDiv
-
-Calculates floor(a×b÷denominator)
-
-*division by 0 will return 0, and should be checked externally*
-
-
-```solidity
-function simpleMulDiv(uint256 a, uint256 b, uint256 denominator) internal pure returns (uint256 result);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`a`|`uint256`|The multiplicand|
-|`b`|`uint256`|The multiplier|
-|`denominator`|`uint256`|The divisor|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`result`|`uint256`|The 256-bit result, floor(a×b÷denominator)|
-
-
diff --git a/docs/contracts/v4/reference/core/libraries/_category_.json b/docs/contracts/v4/reference/core/libraries/_category_.json
deleted file mode 100644
index 57982ec8d..000000000
--- a/docs/contracts/v4/reference/core/libraries/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Libraries",
- "position": 0,
- "collapsed": true
-}
diff --git a/docs/contracts/v4/reference/core/libraries/liquidity-amounts.mdx b/docs/contracts/v4/reference/core/libraries/liquidity-amounts.mdx
deleted file mode 100644
index 641741dbd..000000000
--- a/docs/contracts/v4/reference/core/libraries/liquidity-amounts.mdx
+++ /dev/null
@@ -1,133 +0,0 @@
----
-title: LiquidityAmounts
----
-
-The `LiquidityAmounts` library provides functions for computing liquidity amounts from token amounts and prices in Uniswap V4.
-
-# Key Concept: sqrtPriceX96
-
-`sqrtPriceX96` represents the square root of the price ratio of token1 to token0, multiplied by 2^96. This representation allows for precise price calculations across a wide range of values while using fixed-point arithmetic. It's more efficient than using ticks for intermediate calculations, as it avoids frequent conversions between prices and ticks.
-
-# Functions
-
-## getLiquidityForAmount0
-
-```solidity
-function getLiquidityForAmount0(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, uint256 amount0)
-internal
-pure
-returns (uint128 liquidity)
-```
-
-Computes the amount of liquidity received for a given amount of token0 and price range.
-
-| Param Name | Type | Description |
-|----------------|---------|-----------------------------------------------|
-| sqrtPriceAX96 | uint160 | Square root of price at first tick boundary |
-| sqrtPriceBX96 | uint160 | Square root of price at second tick boundary |
-| amount0 | uint256 | The amount of token0 being sent in |
-
-Returns the amount of liquidity received.
-
-## getLiquidityForAmount1
-
-```solidity
-function getLiquidityForAmount1(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, uint256 amount1)
-internal
-pure
-returns (uint128 liquidity)
-```
-
-Computes the amount of liquidity received for a given amount of token1 and price range.
-
-| Param Name | Type | Description |
-|----------------|---------|-----------------------------------------------|
-| sqrtPriceAX96 | uint160 | Square root of price at first tick boundary |
-| sqrtPriceBX96 | uint160 | Square root of price at second tick boundary |
-| amount1 | uint256 | The amount of token1 being sent in |
-
-Returns the amount of liquidity received.
-
-## getLiquidityForAmounts
-
-```solidity
-function getLiquidityForAmounts(
-uint160 sqrtPriceX96,
-uint160 sqrtPriceAX96,
-uint160 sqrtPriceBX96,
-uint256 amount0,
-uint256 amount1
-) internal pure returns (uint128 liquidity)
-```
-
-Computes the maximum amount of liquidity received for given amounts of token0 and token1, the current pool prices, and the prices at the tick boundaries.
-
-| Param Name | Type | Description |
-|----------------|---------|-----------------------------------------------|
-| sqrtPriceX96 | uint160 | Current square root price of the pool |
-| sqrtPriceAX96 | uint160 | Square root of price at first tick boundary |
-| sqrtPriceBX96 | uint160 | Square root of price at second tick boundary |
-| amount0 | uint256 | The amount of token0 being sent in |
-| amount1 | uint256 | The amount of token1 being sent in |
-
-Returns the maximum amount of liquidity received.
-
-## getAmount0ForLiquidity
-
-```solidity
-function getAmount0ForLiquidity(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, uint128 liquidity)
-internal
-pure
-returns (uint256 amount0)
-```
-
-Computes the amount of token0 for a given amount of liquidity and a price range.
-
-| Param Name | Type | Description |
-|----------------|---------|-----------------------------------------------|
-| sqrtPriceAX96 | uint160 | Square root of price at first tick boundary |
-| sqrtPriceBX96 | uint160 | Square root of price at second tick boundary |
-| liquidity | uint128 | The liquidity being valued |
-
-Returns the amount of token0.
-
-## getAmount1ForLiquidity
-
-```solidity
-function getAmount1ForLiquidity(uint160 sqrtPriceAX96, uint160 sqrtPriceBX96, uint128 liquidity)
-internal
-pure
-returns (uint256 amount1)
-```
-
-Computes the amount of token1 for a given amount of liquidity and a price range.
-
-| Param Name | Type | Description |
-|----------------|---------|-----------------------------------------------|
-| sqrtPriceAX96 | uint160 | Square root of price at first tick boundary |
-| sqrtPriceBX96 | uint160 | Square root of price at second tick boundary |
-| liquidity | uint128 | The liquidity being valued |
-
-Returns the amount of token1.
-
-## getAmountsForLiquidity
-
-```solidity
-function getAmountsForLiquidity(
-uint160 sqrtPriceX96,
-uint160 sqrtPriceAX96,
-uint160 sqrtPriceBX96,
-uint128 liquidity
-) internal pure returns (uint256 amount0, uint256 amount1)
-```
-
-Computes the token0 and token1 value for a given amount of liquidity, the current pool prices, and the prices at the tick boundaries.
-
-| Param Name | Type | Description |
-|----------------|---------|-----------------------------------------------|
-| sqrtPriceX96 | uint160 | Current square root price of the pool |
-| sqrtPriceAX96 | uint160 | Square root of price at first tick boundary |
-| sqrtPriceBX96 | uint160 | Square root of price at second tick boundary |
-| liquidity | uint128 | The liquidity being valued |
-
-Returns the amount of token0 and token1.
\ No newline at end of file
diff --git a/docs/contracts/v4/reference/core/libraries/transient-state-library.mdx b/docs/contracts/v4/reference/core/libraries/transient-state-library.mdx
deleted file mode 100644
index 9df782a43..000000000
--- a/docs/contracts/v4/reference/core/libraries/transient-state-library.mdx
+++ /dev/null
@@ -1,132 +0,0 @@
----
-title: TransientStateLibrary
----
-
-The `TransientStateLibrary` is a crucial component of Uniswap V4, providing utility functions for managing transient state in the PoolManager contract. This library handles operations related to reserves, delta counts, and locking state, which are essential for the efficient and secure operation of the Uniswap V4 protocol.
-
-# Key Concepts
-
-## Transient Storage
-
-Uniswap V4 uses transient storage to optimize gas costs and improve efficiency. Transient storage, introduced in EIP-1153, is a way to store data that is only needed for the duration of a transaction, without persisting it to the blockchain's state trie. This is achieved using the `TLOAD` and `TSTORE` opcodes.
-
-Key points about transient storage in Uniswap V4:
-
-1. **PoolManager and** `exttload`: Instead of exposing custom getters for transient storage, the PoolManager implements an `exttload` (external tload) function. This function serves as an external wrapper for the `TLOAD` opcode, providing a standardized interface for accessing transient storage.
-2. **TransientStateLibrary's Role:** The `TransientStateLibrary` acts as an intermediary, making calls to the PoolManager's `exttload` function to access transient storage. This abstraction simplifies the interaction with transient storage for other parts of the Uniswap V4 ecosystem.
-3. **Standardization:** By channeling all transient storage access through the PoolManager's `exttload` function, Uniswap V4 ensures a consistent and controlled approach to managing transient data across the protocol.
-
-Common operations that involve transient state include:
-
-- Checking reserves (`getReserves`)
-- Verifying currency deltas (`currencyDelta`)
-- Syncing currency states (`sync`)
-- Settling currency balances (`settle`)
-
-This architecture allows Uniswap V4 to benefit from the gas efficiency of transient storage while maintaining a clean and standardized interface for interacting with this temporary data.
-
-# Functions
-
-## getReserves
-
-```solidity
-function getReserves(IPoolManager manager, Currency currency) internal view returns (uint256)
-```
-
-Retrieves the reserves of a specific currency from the PoolManager's transient storage.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------------------|
-| manager | IPoolManager | The PoolManager contract instance |
-| currency | Currency | The currency for which to fetch reserves |
-
-**Returns:**
-- `uint256`: The amount of reserves for the specified currency
-
-**Notes:**
-- Returns `0` if the reserves are not synced
-- Returns `type(uint256).max` if the reserves are synced but the value is `0`
-
-## getNonzeroDeltaCount
-
-```solidity
-function getNonzeroDeltaCount(IPoolManager manager) internal view returns (uint256)
-```
-
-Retrieves the count of nonzero deltas that must be zeroed out before the contract can be locked.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------|
-| manager | IPoolManager | The PoolManager contract instance |
-
-**Returns:**
-
-- `uint256`: The number of nonzero deltas
-
-## currencyDelta
-
-```solidity
-function currencyDelta(IPoolManager manager, address caller_, Currency currency) internal view returns (int256)
-```
-
-Fetches the current delta for a specific caller and currency from the PoolManager's transient storage.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------------------|
-| manager | IPoolManager | The PoolManager contract instance |
-| caller_ | address | The address of the caller |
-| currency | Currency | The currency for which to lookup the delta |
-
-**Returns:**
-
-- `int256`: The delta value for the specified caller and currency
-
-**Notes:**
-
-- A **negative** delta indicates an amount that must be **paid or settled** by the caller. In other words, a negative delta means the caller owes that amount and needs to pay or settle it.
-- A **positive** delta indicates an amount that is owed to the caller. This delta amount must be **taken or claimed** by the caller.
-
-## isUnlocked
-
-```solidity
-function isUnlocked(IPoolManager manager) internal view returns (bool)
-```
-
-Checks if the PoolManager contract is currently unlocked.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------|
-| manager | IPoolManager | The PoolManager contract instance |
-
-**Returns:**
-
-- `bool`: `true` if the contract is unlocked, `false` otherwise
-
-# Usage and Importance
-
-The `TransientStateLibrary` plays a critical role in Uniswap V4's operation:
-
-1. **Gas Optimization:** By using transient storage, the library helps reduce gas costs associated with state changes that are only relevant within a single transaction. This is particularly important for multi-hop transactions, where internal net balances (deltas) are updated instead of making token transfers for each hop.
-2. **Security:** The library provides functions to check the lock state and manage deltas, which are crucial for maintaining the integrity of the protocol during operations. The use of transient storage also allows for more efficient implementation of security measures compared to V3's reentrancy guards.
-3. **Flexibility:** The library allows for efficient management of currency-specific data, such as reserves and deltas, which is essential for Uniswap V4's multi-currency pools.
-4. **Encapsulation:** By centralizing these utility functions in a library, the code promotes better organization and reusability across the Uniswap V4 codebase.
-
-# Integration with PoolManager
-
-The `TransientStateLibrary` is designed to work closely with the `PoolManager` contract. The `TransientStateLibrary` can be easily integrated with the `PoolManager` contract using the `using` keyword for syntactic sugar. This allows you to call the library functions as if they were methods of the `IPoolManager` instance. Here's an example:
-
-```solidity
-import {IPoolManager} from "v4-core/src/interfaces/IPoolManager.sol";
-import {TransientStateLibrary} from "v4-core/src/libraries/TransientStateLibrary.sol";
-
-contract Example {
- using TransientStateLibrary for IPoolManager;
-
- function example() external {
- int256 delta = manager.currencyDelta(address(this), currency);
- // Use the delta value...
- }
-}
-```
-
-In this example, the `using TransientStateLibrary for IPoolManager;` statement allows you to call `currencyDelta` directly on the `manager` instance, making your code more readable and concise.
\ No newline at end of file
diff --git a/docs/contracts/v4/reference/core/test/ActionsRouter.md b/docs/contracts/v4/reference/core/test/ActionsRouter.md
deleted file mode 100644
index 710e50229..000000000
--- a/docs/contracts/v4/reference/core/test/ActionsRouter.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Actions
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/ActionsRouter.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-```solidity
-enum Actions {
- SETTLE,
- SETTLE_NATIVE,
- SETTLE_FOR,
- TAKE,
- PRANK_TAKE_FROM,
- SYNC,
- MINT,
- CLEAR,
- ASSERT_BALANCE_EQUALS,
- ASSERT_RESERVES_EQUALS,
- ASSERT_DELTA_EQUALS,
- ASSERT_NONZERO_DELTA_COUNT_EQUALS,
- TRANSFER_FROM,
- COLLECT_PROTOCOL_FEES
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/test/BaseTestHooks.md b/docs/contracts/v4/reference/core/test/BaseTestHooks.md
deleted file mode 100644
index 5e48fe74c..000000000
--- a/docs/contracts/v4/reference/core/test/BaseTestHooks.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# BaseTestHooks
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/BaseTestHooks.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IHooks](contracts/v4/reference/core/interfaces/IHooks.md)
-
-
-## Functions
-### beforeInitialize
-
-
-```solidity
-function beforeInitialize(address, PoolKey calldata, uint160) external virtual returns (bytes4);
-```
-
-### afterInitialize
-
-
-```solidity
-function afterInitialize(address, PoolKey calldata, uint160, int24) external virtual returns (bytes4);
-```
-
-### beforeAddLiquidity
-
-
-```solidity
-function beforeAddLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, bytes calldata)
- external
- virtual
- returns (bytes4);
-```
-
-### afterAddLiquidity
-
-
-```solidity
-function afterAddLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata
-) external virtual returns (bytes4, BalanceDelta);
-```
-
-### beforeRemoveLiquidity
-
-
-```solidity
-function beforeRemoveLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, bytes calldata)
- external
- virtual
- returns (bytes4);
-```
-
-### afterRemoveLiquidity
-
-
-```solidity
-function afterRemoveLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata
-) external virtual returns (bytes4, BalanceDelta);
-```
-
-### beforeSwap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, bytes calldata)
- external
- virtual
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-
-### afterSwap
-
-
-```solidity
-function afterSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, BalanceDelta, bytes calldata)
- external
- virtual
- returns (bytes4, int128);
-```
-
-### beforeDonate
-
-
-```solidity
-function beforeDonate(address, PoolKey calldata, uint256, uint256, bytes calldata) external virtual returns (bytes4);
-```
-
-### afterDonate
-
-
-```solidity
-function afterDonate(address, PoolKey calldata, uint256, uint256, bytes calldata) external virtual returns (bytes4);
-```
-
-## Errors
-### HookNotImplemented
-
-```solidity
-error HookNotImplemented();
-```
-
diff --git a/docs/contracts/v4/reference/core/test/CurrencyTest.md b/docs/contracts/v4/reference/core/test/CurrencyTest.md
deleted file mode 100644
index 7e9daa498..000000000
--- a/docs/contracts/v4/reference/core/test/CurrencyTest.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# CurrencyTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/CurrencyTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### transfer
-
-
-```solidity
-function transfer(Currency currency, address to, uint256 amount) external;
-```
-
-### balanceOfSelf
-
-
-```solidity
-function balanceOfSelf(Currency currency) external view returns (uint256);
-```
-
-### balanceOf
-
-
-```solidity
-function balanceOf(Currency currency, address owner) external view returns (uint256);
-```
-
-### isAddressZero
-
-
-```solidity
-function isAddressZero(Currency currency) external pure returns (bool);
-```
-
-### toId
-
-
-```solidity
-function toId(Currency currency) external pure returns (uint256);
-```
-
-### fromId
-
-
-```solidity
-function fromId(uint256 id) external pure returns (Currency);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/CustomCurveHook.md b/docs/contracts/v4/reference/core/test/CustomCurveHook.md
deleted file mode 100644
index 6cd49cac6..000000000
--- a/docs/contracts/v4/reference/core/test/CustomCurveHook.md
+++ /dev/null
@@ -1,72 +0,0 @@
-# CustomCurveHook
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/CustomCurveHook.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[BaseTestHooks](contracts/v4/reference/core/test/BaseTestHooks.md)
-
-
-## State Variables
-### manager
-
-```solidity
-IPoolManager immutable manager;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager);
-```
-
-### onlyPoolManager
-
-
-```solidity
-modifier onlyPoolManager();
-```
-
-### beforeSwap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata params, bytes calldata)
- external
- override
- onlyPoolManager
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-
-### afterAddLiquidity
-
-
-```solidity
-function afterAddLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata
-) external view override onlyPoolManager returns (bytes4, BalanceDelta);
-```
-
-### _getInputOutputAndAmount
-
-
-```solidity
-function _getInputOutputAndAmount(PoolKey calldata key, IPoolManager.SwapParams calldata params)
- internal
- pure
- returns (Currency input, Currency output, uint256 amount);
-```
-
-## Errors
-### AddLiquidityDirectToHook
-
-```solidity
-error AddLiquidityDirectToHook();
-```
-
diff --git a/docs/contracts/v4/reference/core/test/DeltaReturningHook.md b/docs/contracts/v4/reference/core/test/DeltaReturningHook.md
deleted file mode 100644
index 199613a9c..000000000
--- a/docs/contracts/v4/reference/core/test/DeltaReturningHook.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# DeltaReturningHook
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/DeltaReturningHook.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[BaseTestHooks](contracts/v4/reference/core/test/BaseTestHooks.md)
-
-
-## State Variables
-### manager
-
-```solidity
-IPoolManager immutable manager;
-```
-
-
-### deltaSpecified
-
-```solidity
-int128 deltaSpecified;
-```
-
-
-### deltaUnspecifiedBeforeSwap
-
-```solidity
-int128 deltaUnspecifiedBeforeSwap;
-```
-
-
-### deltaUnspecifiedAfterSwap
-
-```solidity
-int128 deltaUnspecifiedAfterSwap;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager);
-```
-
-### onlyPoolManager
-
-
-```solidity
-modifier onlyPoolManager();
-```
-
-### setDeltaSpecified
-
-
-```solidity
-function setDeltaSpecified(int128 delta) external;
-```
-
-### setDeltaUnspecifiedBeforeSwap
-
-
-```solidity
-function setDeltaUnspecifiedBeforeSwap(int128 delta) external;
-```
-
-### setDeltaUnspecifiedAfterSwap
-
-
-```solidity
-function setDeltaUnspecifiedAfterSwap(int128 delta) external;
-```
-
-### beforeSwap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata params, bytes calldata)
- external
- override
- onlyPoolManager
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-
-### afterSwap
-
-
-```solidity
-function afterSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata params, BalanceDelta, bytes calldata)
- external
- override
- onlyPoolManager
- returns (bytes4, int128);
-```
-
-### _sortCurrencies
-
-
-```solidity
-function _sortCurrencies(PoolKey calldata key, IPoolManager.SwapParams calldata params)
- internal
- pure
- returns (Currency specified, Currency unspecified);
-```
-
-### _settleOrTake
-
-
-```solidity
-function _settleOrTake(Currency currency, int128 delta) internal;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/DynamicFeesTestHook.md b/docs/contracts/v4/reference/core/test/DynamicFeesTestHook.md
deleted file mode 100644
index 99103f98d..000000000
--- a/docs/contracts/v4/reference/core/test/DynamicFeesTestHook.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# DynamicFeesTestHook
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/DynamicFeesTestHook.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[BaseTestHooks](contracts/v4/reference/core/test/BaseTestHooks.md)
-
-
-## State Variables
-### fee
-
-```solidity
-uint24 internal fee;
-```
-
-
-### manager
-
-```solidity
-IPoolManager manager;
-```
-
-
-## Functions
-### setManager
-
-
-```solidity
-function setManager(IPoolManager _manager) external;
-```
-
-### setFee
-
-
-```solidity
-function setFee(uint24 _fee) external;
-```
-
-### afterInitialize
-
-
-```solidity
-function afterInitialize(address, PoolKey calldata key, uint160, int24) external override returns (bytes4);
-```
-
-### beforeSwap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata, bytes calldata)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-
-### forcePoolFeeUpdate
-
-
-```solidity
-function forcePoolFeeUpdate(PoolKey calldata _key, uint24 _fee) external;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/DynamicReturnFeeTestHook.md b/docs/contracts/v4/reference/core/test/DynamicReturnFeeTestHook.md
deleted file mode 100644
index e6c75c018..000000000
--- a/docs/contracts/v4/reference/core/test/DynamicReturnFeeTestHook.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# DynamicReturnFeeTestHook
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/DynamicReturnFeeTestHook.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[BaseTestHooks](contracts/v4/reference/core/test/BaseTestHooks.md)
-
-
-## State Variables
-### fee
-
-```solidity
-uint24 internal fee;
-```
-
-
-### manager
-
-```solidity
-IPoolManager manager;
-```
-
-
-## Functions
-### setManager
-
-
-```solidity
-function setManager(IPoolManager _manager) external;
-```
-
-### setFee
-
-
-```solidity
-function setFee(uint24 _fee) external;
-```
-
-### beforeSwap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, bytes calldata)
- external
- view
- override
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-
-### forcePoolFeeUpdate
-
-
-```solidity
-function forcePoolFeeUpdate(PoolKey calldata _key, uint24 _fee) external;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/EmptyRevertContract.md b/docs/contracts/v4/reference/core/test/EmptyRevertContract.md
deleted file mode 100644
index 433eda3c0..000000000
--- a/docs/contracts/v4/reference/core/test/EmptyRevertContract.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# EmptyRevertContract
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/EmptyRevertContract.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### fallback
-
-
-```solidity
-fallback() external;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/EmptyTestHooks.md b/docs/contracts/v4/reference/core/test/EmptyTestHooks.md
deleted file mode 100644
index 1009622a1..000000000
--- a/docs/contracts/v4/reference/core/test/EmptyTestHooks.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# EmptyTestHooks
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/EmptyTestHooks.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IHooks](contracts/v4/reference/core/interfaces/IHooks.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor();
-```
-
-### beforeInitialize
-
-
-```solidity
-function beforeInitialize(address, PoolKey calldata, uint160) external pure override returns (bytes4);
-```
-
-### afterInitialize
-
-
-```solidity
-function afterInitialize(address, PoolKey calldata, uint160, int24) external pure override returns (bytes4);
-```
-
-### beforeAddLiquidity
-
-
-```solidity
-function beforeAddLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, bytes calldata)
- external
- pure
- override
- returns (bytes4);
-```
-
-### afterAddLiquidity
-
-
-```solidity
-function afterAddLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata
-) external pure override returns (bytes4, BalanceDelta);
-```
-
-### beforeRemoveLiquidity
-
-
-```solidity
-function beforeRemoveLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, bytes calldata)
- external
- pure
- override
- returns (bytes4);
-```
-
-### afterRemoveLiquidity
-
-
-```solidity
-function afterRemoveLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata
-) external pure override returns (bytes4, BalanceDelta);
-```
-
-### beforeSwap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, bytes calldata)
- external
- pure
- override
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-
-### afterSwap
-
-
-```solidity
-function afterSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, BalanceDelta, bytes calldata)
- external
- pure
- override
- returns (bytes4, int128);
-```
-
-### beforeDonate
-
-
-```solidity
-function beforeDonate(address, PoolKey calldata, uint256, uint256, bytes calldata)
- external
- pure
- override
- returns (bytes4);
-```
-
-### afterDonate
-
-
-```solidity
-function afterDonate(address, PoolKey calldata, uint256, uint256, bytes calldata)
- external
- pure
- override
- returns (bytes4);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/FeeTakingHook.md b/docs/contracts/v4/reference/core/test/FeeTakingHook.md
deleted file mode 100644
index 0b7b64e71..000000000
--- a/docs/contracts/v4/reference/core/test/FeeTakingHook.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# FeeTakingHook
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/FeeTakingHook.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[BaseTestHooks](contracts/v4/reference/core/test/BaseTestHooks.md)
-
-
-## State Variables
-### manager
-
-```solidity
-IPoolManager immutable manager;
-```
-
-
-### LIQUIDITY_FEE
-
-```solidity
-uint128 public constant LIQUIDITY_FEE = 543;
-```
-
-
-### SWAP_FEE_BIPS
-
-```solidity
-uint128 public constant SWAP_FEE_BIPS = 123;
-```
-
-
-### TOTAL_BIPS
-
-```solidity
-uint128 public constant TOTAL_BIPS = 10000;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager);
-```
-
-### onlyPoolManager
-
-
-```solidity
-modifier onlyPoolManager();
-```
-
-### afterSwap
-
-
-```solidity
-function afterSwap(
- address,
- PoolKey calldata key,
- IPoolManager.SwapParams calldata params,
- BalanceDelta delta,
- bytes calldata
-) external override onlyPoolManager returns (bytes4, int128);
-```
-
-### afterRemoveLiquidity
-
-
-```solidity
-function afterRemoveLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta delta,
- BalanceDelta,
- bytes calldata
-) external override onlyPoolManager returns (bytes4, BalanceDelta);
-```
-
-### afterAddLiquidity
-
-
-```solidity
-function afterAddLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta delta,
- BalanceDelta,
- bytes calldata
-) external override onlyPoolManager returns (bytes4, BalanceDelta);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/Fuzzers.md b/docs/contracts/v4/reference/core/test/Fuzzers.md
deleted file mode 100644
index 3efe7fe1b..000000000
--- a/docs/contracts/v4/reference/core/test/Fuzzers.md
+++ /dev/null
@@ -1,129 +0,0 @@
-# Fuzzers
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/Fuzzers.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-StdUtils
-
-
-## State Variables
-### _vm
-
-```solidity
-Vm internal constant _vm = Vm(address(uint160(uint256(keccak256("hevm cheat code")))));
-```
-
-
-## Functions
-### boundLiquidityDelta
-
-
-```solidity
-function boundLiquidityDelta(PoolKey memory key, int256 liquidityDeltaUnbounded, int256 liquidityMaxByAmount)
- internal
- pure
- returns (int256);
-```
-
-### boundLiquidityDeltaTightly
-
-
-```solidity
-function boundLiquidityDeltaTightly(
- PoolKey memory key,
- int256 liquidityDeltaUnbounded,
- int256 liquidityMaxByAmount,
- uint256 maxPositions
-) internal pure returns (int256);
-```
-
-### getLiquidityDeltaFromAmounts
-
-
-```solidity
-function getLiquidityDeltaFromAmounts(int24 tickLower, int24 tickUpper, uint160 sqrtPriceX96)
- internal
- pure
- returns (int256);
-```
-
-### boundTicks
-
-
-```solidity
-function boundTicks(int24 tickLower, int24 tickUpper, int24 tickSpacing) internal pure returns (int24, int24);
-```
-
-### boundTicks
-
-
-```solidity
-function boundTicks(PoolKey memory key, int24 tickLower, int24 tickUpper) internal pure returns (int24, int24);
-```
-
-### createRandomSqrtPriceX96
-
-
-```solidity
-function createRandomSqrtPriceX96(int24 tickSpacing, int256 seed) internal pure returns (uint160);
-```
-
-### createFuzzyLiquidityParams
-
-*Obtain fuzzed and bounded parameters for creating liquidity*
-
-
-```solidity
-function createFuzzyLiquidityParams(
- PoolKey memory key,
- IPoolManager.ModifyLiquidityParams memory params,
- uint160 sqrtPriceX96
-) internal pure returns (IPoolManager.ModifyLiquidityParams memory result);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool key|
-|`params`|`IPoolManager.ModifyLiquidityParams`|IPoolManager.ModifyLiquidityParams Note that these parameters are unbounded|
-|`sqrtPriceX96`|`uint160`|The current sqrt price|
-
-
-### createFuzzyLiquidityParamsWithTightBound
-
-
-```solidity
-function createFuzzyLiquidityParamsWithTightBound(
- PoolKey memory key,
- IPoolManager.ModifyLiquidityParams memory params,
- uint160 sqrtPriceX96,
- uint256 maxPositions
-) internal pure returns (IPoolManager.ModifyLiquidityParams memory result);
-```
-
-### createFuzzyLiquidity
-
-
-```solidity
-function createFuzzyLiquidity(
- PoolModifyLiquidityTest modifyLiquidityRouter,
- PoolKey memory key,
- IPoolManager.ModifyLiquidityParams memory params,
- uint160 sqrtPriceX96,
- bytes memory hookData
-) internal returns (IPoolManager.ModifyLiquidityParams memory result, BalanceDelta delta);
-```
-
-### createFuzzyLiquidityWithTightBound
-
-
-```solidity
-function createFuzzyLiquidityWithTightBound(
- PoolModifyLiquidityTest modifyLiquidityRouter,
- PoolKey memory key,
- IPoolManager.ModifyLiquidityParams memory params,
- uint160 sqrtPriceX96,
- bytes memory hookData,
- uint256 maxPositions
-) internal returns (IPoolManager.ModifyLiquidityParams memory result, BalanceDelta delta);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/HooksTest.md b/docs/contracts/v4/reference/core/test/HooksTest.md
deleted file mode 100644
index 7b31b70a8..000000000
--- a/docs/contracts/v4/reference/core/test/HooksTest.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# HooksTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/HooksTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### validateHookPermissions
-
-
-```solidity
-function validateHookPermissions(address hookAddress, Hooks.Permissions calldata params) external pure;
-```
-
-### isValidHookAddress
-
-
-```solidity
-function isValidHookAddress(address hookAddress, uint24 fee) external pure returns (bool);
-```
-
-### shouldCallBeforeInitialize
-
-
-```solidity
-function shouldCallBeforeInitialize(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallAfterInitialize
-
-
-```solidity
-function shouldCallAfterInitialize(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallBeforeSwap
-
-
-```solidity
-function shouldCallBeforeSwap(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallAfterSwap
-
-
-```solidity
-function shouldCallAfterSwap(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallBeforeAddLiquidity
-
-
-```solidity
-function shouldCallBeforeAddLiquidity(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallAfterAddLiquidity
-
-
-```solidity
-function shouldCallAfterAddLiquidity(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallBeforeRemoveLiquidity
-
-
-```solidity
-function shouldCallBeforeRemoveLiquidity(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallAfterRemoveLiquidity
-
-
-```solidity
-function shouldCallAfterRemoveLiquidity(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallBeforeDonate
-
-
-```solidity
-function shouldCallBeforeDonate(address hookAddress) external pure returns (bool);
-```
-
-### shouldCallAfterDonate
-
-
-```solidity
-function shouldCallAfterDonate(address hookAddress) external pure returns (bool);
-```
-
-### getGasCostOfShouldCall
-
-
-```solidity
-function getGasCostOfShouldCall(address hookAddress) external view returns (uint256);
-```
-
-### getGasCostOfValidateHookAddress
-
-
-```solidity
-function getGasCostOfValidateHookAddress(address hookAddress, Hooks.Permissions calldata params)
- external
- view
- returns (uint256);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/LPFeeTakingHook.md b/docs/contracts/v4/reference/core/test/LPFeeTakingHook.md
deleted file mode 100644
index e238227eb..000000000
--- a/docs/contracts/v4/reference/core/test/LPFeeTakingHook.md
+++ /dev/null
@@ -1,62 +0,0 @@
-# LPFeeTakingHook
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/LPFeeTakingHook.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[BaseTestHooks](contracts/v4/reference/core/test/BaseTestHooks.md)
-
-a hook that takes all of the LP fee revenue
-
-*an example test hook to validate the data is provided correctly*
-
-
-## State Variables
-### manager
-
-```solidity
-IPoolManager immutable manager;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager);
-```
-
-### onlyPoolManager
-
-
-```solidity
-modifier onlyPoolManager();
-```
-
-### afterRemoveLiquidity
-
-
-```solidity
-function afterRemoveLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta feeDelta,
- bytes calldata
-) external override onlyPoolManager returns (bytes4, BalanceDelta);
-```
-
-### afterAddLiquidity
-
-
-```solidity
-function afterAddLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta feeDelta,
- bytes calldata
-) external override onlyPoolManager returns (bytes4, BalanceDelta);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/LiquidityMathTest.md b/docs/contracts/v4/reference/core/test/LiquidityMathTest.md
deleted file mode 100644
index 2f1def5ca..000000000
--- a/docs/contracts/v4/reference/core/test/LiquidityMathTest.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# LiquidityMathTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/LiquidityMathTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### addDelta
-
-
-```solidity
-function addDelta(uint128 x, int128 y) external pure returns (uint128 z);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/MockContract.md b/docs/contracts/v4/reference/core/test/MockContract.md
deleted file mode 100644
index e3fde7523..000000000
--- a/docs/contracts/v4/reference/core/test/MockContract.md
+++ /dev/null
@@ -1,104 +0,0 @@
-# MockContract
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/MockContract.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-Proxy
-
-Mock contract that tracks the number of calls to various functions by selector
-
-*allows for proxying to an implementation contract
-if real logic or return values are needed*
-
-
-## State Variables
-### calls
-
-```solidity
-mapping(bytes32 => uint256) public calls;
-```
-
-
-### callParams
-
-```solidity
-mapping(bytes32 => mapping(bytes => uint256)) public callParams;
-```
-
-
-### impl
-If set, delegatecall to implementation after tracking call
-
-
-```solidity
-address internal impl;
-```
-
-
-## Functions
-### timesCalledSelector
-
-
-```solidity
-function timesCalledSelector(bytes32 selector) public view returns (uint256);
-```
-
-### timesCalled
-
-
-```solidity
-function timesCalled(string calldata fnSig) public view returns (uint256);
-```
-
-### calledWithSelector
-
-
-```solidity
-function calledWithSelector(bytes32 selector, bytes calldata params) public view returns (bool);
-```
-
-### calledWith
-
-
-```solidity
-function calledWith(string calldata fnSig, bytes calldata params) public view returns (bool);
-```
-
-### _implementation
-
-exposes implementation contract address
-
-
-```solidity
-function _implementation() internal view override returns (address);
-```
-
-### setImplementation
-
-
-```solidity
-function setImplementation(address _impl) external;
-```
-
-### _beforeFallback
-
-Captures calls by selector
-
-
-```solidity
-function _beforeFallback() internal;
-```
-
-### _fallback
-
-
-```solidity
-function _fallback() internal override;
-```
-
-### receive
-
-
-```solidity
-receive() external payable;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/MockERC6909Claims.md b/docs/contracts/v4/reference/core/test/MockERC6909Claims.md
deleted file mode 100644
index da1a5b0b4..000000000
--- a/docs/contracts/v4/reference/core/test/MockERC6909Claims.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# MockERC6909Claims
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/MockERC6909Claims.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[ERC6909Claims](contracts/v4/reference/core/ERC6909Claims.md)
-
-Mock contract for testing ERC6909Claims
-
-
-## Functions
-### mint
-
-mocked mint logic
-
-
-```solidity
-function mint(address to, uint256 id, uint256 amount) public;
-```
-
-### burn
-
-mocked burn logic
-
-
-```solidity
-function burn(uint256 id, uint256 amount) public;
-```
-
-### burnFrom
-
-mocked burn logic without checking sender allowance
-
-
-```solidity
-function burnFrom(address from, uint256 id, uint256 amount) public;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/MockHooks.md b/docs/contracts/v4/reference/core/test/MockHooks.md
deleted file mode 100644
index 12552e7e0..000000000
--- a/docs/contracts/v4/reference/core/test/MockHooks.md
+++ /dev/null
@@ -1,213 +0,0 @@
-# MockHooks
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/MockHooks.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IHooks](contracts/v4/reference/core/interfaces/IHooks.md)
-
-
-## State Variables
-### beforeInitializeData
-
-```solidity
-bytes public beforeInitializeData;
-```
-
-
-### afterInitializeData
-
-```solidity
-bytes public afterInitializeData;
-```
-
-
-### beforeAddLiquidityData
-
-```solidity
-bytes public beforeAddLiquidityData;
-```
-
-
-### afterAddLiquidityData
-
-```solidity
-bytes public afterAddLiquidityData;
-```
-
-
-### beforeRemoveLiquidityData
-
-```solidity
-bytes public beforeRemoveLiquidityData;
-```
-
-
-### afterRemoveLiquidityData
-
-```solidity
-bytes public afterRemoveLiquidityData;
-```
-
-
-### beforeSwapData
-
-```solidity
-bytes public beforeSwapData;
-```
-
-
-### afterSwapData
-
-```solidity
-bytes public afterSwapData;
-```
-
-
-### beforeDonateData
-
-```solidity
-bytes public beforeDonateData;
-```
-
-
-### afterDonateData
-
-```solidity
-bytes public afterDonateData;
-```
-
-
-### returnValues
-
-```solidity
-mapping(bytes4 => bytes4) public returnValues;
-```
-
-
-### lpFees
-
-```solidity
-mapping(PoolId => uint16) public lpFees;
-```
-
-
-## Functions
-### beforeInitialize
-
-
-```solidity
-function beforeInitialize(address, PoolKey calldata, uint160) external override returns (bytes4);
-```
-
-### afterInitialize
-
-
-```solidity
-function afterInitialize(address, PoolKey calldata, uint160, int24) external override returns (bytes4);
-```
-
-### beforeAddLiquidity
-
-
-```solidity
-function beforeAddLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- bytes calldata hookData
-) external override returns (bytes4);
-```
-
-### afterAddLiquidity
-
-
-```solidity
-function afterAddLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata hookData
-) external override returns (bytes4, BalanceDelta);
-```
-
-### beforeRemoveLiquidity
-
-
-```solidity
-function beforeRemoveLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- bytes calldata hookData
-) external override returns (bytes4);
-```
-
-### afterRemoveLiquidity
-
-
-```solidity
-function afterRemoveLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata hookData
-) external override returns (bytes4, BalanceDelta);
-```
-
-### beforeSwap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, bytes calldata hookData)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-
-### afterSwap
-
-
-```solidity
-function afterSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, BalanceDelta, bytes calldata hookData)
- external
- override
- returns (bytes4, int128);
-```
-
-### beforeDonate
-
-
-```solidity
-function beforeDonate(address, PoolKey calldata, uint256, uint256, bytes calldata hookData)
- external
- override
- returns (bytes4);
-```
-
-### afterDonate
-
-
-```solidity
-function afterDonate(address, PoolKey calldata, uint256, uint256, bytes calldata hookData)
- external
- override
- returns (bytes4);
-```
-
-### setReturnValue
-
-
-```solidity
-function setReturnValue(bytes4 key, bytes4 value) external;
-```
-
-### setlpFee
-
-
-```solidity
-function setlpFee(PoolKey calldata key, uint16 value) external;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/NativeERC20.md b/docs/contracts/v4/reference/core/test/NativeERC20.md
deleted file mode 100644
index d58ae4255..000000000
--- a/docs/contracts/v4/reference/core/test/NativeERC20.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# NativeERC20
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/NativeERC20.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-Test
-
-*This token contract simulates the ERC20 representation of a native token where on `transfer` and `transferFrom` the native balances are modified using a precompile*
-
-
-## State Variables
-### name
-
-```solidity
-string public name = "NativeERC20";
-```
-
-
-### symbol
-
-```solidity
-string public symbol = "NERC20";
-```
-
-
-### decimals
-
-```solidity
-uint8 public decimals = 18;
-```
-
-
-### allowance
-
-```solidity
-mapping(address => mapping(address => uint256)) public allowance;
-```
-
-
-## Functions
-### totalSupply
-
-
-```solidity
-function totalSupply() public view returns (uint256);
-```
-
-### approve
-
-
-```solidity
-function approve(address guy, uint256 wad) public returns (bool);
-```
-
-### transfer
-
-
-```solidity
-function transfer(address dst, uint256 wad) public returns (bool);
-```
-
-### transferFrom
-
-
-```solidity
-function transferFrom(address src, address dst, uint256 wad) public returns (bool);
-```
-
-### balanceOf
-
-
-```solidity
-function balanceOf(address account) external view returns (uint256);
-```
-
-## Events
-### Approval
-
-```solidity
-event Approval(address indexed src, address indexed guy, uint256 wad);
-```
-
-### Transfer
-
-```solidity
-event Transfer(address indexed src, address indexed dst, uint256 wad);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/NoDelegateCallTest.md b/docs/contracts/v4/reference/core/test/NoDelegateCallTest.md
deleted file mode 100644
index 32eca69a3..000000000
--- a/docs/contracts/v4/reference/core/test/NoDelegateCallTest.md
+++ /dev/null
@@ -1,50 +0,0 @@
-# NoDelegateCallTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/NoDelegateCallTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[NoDelegateCall](contracts/v4/reference/core/NoDelegateCall.md)
-
-
-## Functions
-### canBeDelegateCalled
-
-
-```solidity
-function canBeDelegateCalled() public view returns (uint256);
-```
-
-### cannotBeDelegateCalled
-
-
-```solidity
-function cannotBeDelegateCalled() public view noDelegateCall returns (uint256);
-```
-
-### getGasCostOfCanBeDelegateCalled
-
-
-```solidity
-function getGasCostOfCanBeDelegateCalled() external view returns (uint256);
-```
-
-### getGasCostOfCannotBeDelegateCalled
-
-
-```solidity
-function getGasCostOfCannotBeDelegateCalled() external view returns (uint256);
-```
-
-### callsIntoNoDelegateCallFunction
-
-
-```solidity
-function callsIntoNoDelegateCallFunction() external view;
-```
-
-### noDelegateCallPrivate
-
-
-```solidity
-function noDelegateCallPrivate() private view noDelegateCall;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolClaimsTest.md b/docs/contracts/v4/reference/core/test/PoolClaimsTest.md
deleted file mode 100644
index d2da97fa1..000000000
--- a/docs/contracts/v4/reference/core/test/PoolClaimsTest.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# PoolClaimsTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolClaimsTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[PoolTestBase](contracts/v4/reference/core/test/PoolTestBase.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager) PoolTestBase(_manager);
-```
-
-### deposit
-
-Convert ERC20 into a claimable 6909
-
-
-```solidity
-function deposit(Currency currency, address user, uint256 amount) external payable;
-```
-
-### withdraw
-
-Redeem claimable 6909 for ERC20
-
-
-```solidity
-function withdraw(Currency currency, address user, uint256 amount) external payable;
-```
-
-### unlockCallback
-
-
-```solidity
-function unlockCallback(bytes calldata rawData) external returns (bytes memory);
-```
-
-## Structs
-### CallbackData
-
-```solidity
-struct CallbackData {
- address sender;
- address user;
- Currency currency;
- uint256 amount;
- bool deposit;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolDonateTest.md b/docs/contracts/v4/reference/core/test/PoolDonateTest.md
deleted file mode 100644
index b3ae0bee3..000000000
--- a/docs/contracts/v4/reference/core/test/PoolDonateTest.md
+++ /dev/null
@@ -1,45 +0,0 @@
-# PoolDonateTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolDonateTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[PoolTestBase](contracts/v4/reference/core/test/PoolTestBase.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager) PoolTestBase(_manager);
-```
-
-### donate
-
-
-```solidity
-function donate(PoolKey memory key, uint256 amount0, uint256 amount1, bytes memory hookData)
- external
- payable
- returns (BalanceDelta delta);
-```
-
-### unlockCallback
-
-
-```solidity
-function unlockCallback(bytes calldata rawData) external returns (bytes memory);
-```
-
-## Structs
-### CallbackData
-
-```solidity
-struct CallbackData {
- address sender;
- PoolKey key;
- uint256 amount0;
- uint256 amount1;
- bytes hookData;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolEmptyUnlockTest.md b/docs/contracts/v4/reference/core/test/PoolEmptyUnlockTest.md
deleted file mode 100644
index 685fd4475..000000000
--- a/docs/contracts/v4/reference/core/test/PoolEmptyUnlockTest.md
+++ /dev/null
@@ -1,46 +0,0 @@
-# PoolEmptyUnlockTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolEmptyUnlockTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IUnlockCallback](/src/interfaces/callback/IUnlockCallback.sol/interface.IUnlockCallback.md)
-
-
-## State Variables
-### manager
-
-```solidity
-IPoolManager manager;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager);
-```
-
-### unlock
-
-
-```solidity
-function unlock() external;
-```
-
-### unlockCallback
-
-Called by the pool manager on `msg.sender` when the manager is unlocked
-
-
-```solidity
-function unlockCallback(bytes calldata) external override returns (bytes memory);
-```
-
-## Events
-### UnlockCallback
-
-```solidity
-event UnlockCallback();
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolModifyLiquidityTest.md b/docs/contracts/v4/reference/core/test/PoolModifyLiquidityTest.md
deleted file mode 100644
index cc7ee5792..000000000
--- a/docs/contracts/v4/reference/core/test/PoolModifyLiquidityTest.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# PoolModifyLiquidityTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolModifyLiquidityTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[PoolTestBase](contracts/v4/reference/core/test/PoolTestBase.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager) PoolTestBase(_manager);
-```
-
-### modifyLiquidity
-
-
-```solidity
-function modifyLiquidity(PoolKey memory key, IPoolManager.ModifyLiquidityParams memory params, bytes memory hookData)
- external
- payable
- returns (BalanceDelta delta);
-```
-
-### modifyLiquidity
-
-
-```solidity
-function modifyLiquidity(
- PoolKey memory key,
- IPoolManager.ModifyLiquidityParams memory params,
- bytes memory hookData,
- bool settleUsingBurn,
- bool takeClaims
-) public payable returns (BalanceDelta delta);
-```
-
-### unlockCallback
-
-
-```solidity
-function unlockCallback(bytes calldata rawData) external returns (bytes memory);
-```
-
-## Structs
-### CallbackData
-
-```solidity
-struct CallbackData {
- address sender;
- PoolKey key;
- IPoolManager.ModifyLiquidityParams params;
- bytes hookData;
- bool settleUsingBurn;
- bool takeClaims;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolModifyLiquidityTestNoChecks.md b/docs/contracts/v4/reference/core/test/PoolModifyLiquidityTestNoChecks.md
deleted file mode 100644
index eb56c1405..000000000
--- a/docs/contracts/v4/reference/core/test/PoolModifyLiquidityTestNoChecks.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# PoolModifyLiquidityTestNoChecks
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolModifyLiquidityTestNoChecks.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[PoolTestBase](contracts/v4/reference/core/test/PoolTestBase.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager) PoolTestBase(_manager);
-```
-
-### modifyLiquidity
-
-
-```solidity
-function modifyLiquidity(PoolKey memory key, IPoolManager.ModifyLiquidityParams memory params, bytes memory hookData)
- external
- payable
- returns (BalanceDelta delta);
-```
-
-### modifyLiquidity
-
-
-```solidity
-function modifyLiquidity(
- PoolKey memory key,
- IPoolManager.ModifyLiquidityParams memory params,
- bytes memory hookData,
- bool settleUsingBurn,
- bool takeClaims
-) public payable returns (BalanceDelta delta);
-```
-
-### unlockCallback
-
-
-```solidity
-function unlockCallback(bytes calldata rawData) external returns (bytes memory);
-```
-
-## Structs
-### CallbackData
-
-```solidity
-struct CallbackData {
- address sender;
- PoolKey key;
- IPoolManager.ModifyLiquidityParams params;
- bytes hookData;
- bool settleUsingBurn;
- bool takeClaims;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolNestedActionsTest.md b/docs/contracts/v4/reference/core/test/PoolNestedActionsTest.md
deleted file mode 100644
index 49ead8a86..000000000
--- a/docs/contracts/v4/reference/core/test/PoolNestedActionsTest.md
+++ /dev/null
@@ -1,138 +0,0 @@
-# NestedActionExecutor
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolNestedActionsTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-Test, [PoolTestBase](contracts/v4/reference/core/test/PoolTestBase.md)
-
-
-## State Variables
-### key
-
-```solidity
-PoolKey internal key;
-```
-
-
-### user
-
-```solidity
-address user;
-```
-
-
-### ADD_LIQUIDITY_PARAMS
-
-```solidity
-IPoolManager.ModifyLiquidityParams internal ADD_LIQUIDITY_PARAMS =
- IPoolManager.ModifyLiquidityParams({tickLower: -120, tickUpper: 120, liquidityDelta: 1e18, salt: 0});
-```
-
-
-### REMOVE_LIQUIDITY_PARAMS
-
-```solidity
-IPoolManager.ModifyLiquidityParams internal REMOVE_LIQUIDITY_PARAMS =
- IPoolManager.ModifyLiquidityParams({tickLower: -120, tickUpper: 120, liquidityDelta: -1e18, salt: 0});
-```
-
-
-### SWAP_PARAMS
-
-```solidity
-IPoolManager.SwapParams internal SWAP_PARAMS =
- IPoolManager.SwapParams({zeroForOne: true, amountSpecified: -100, sqrtPriceLimitX96: Constants.SQRT_PRICE_1_2});
-```
-
-
-### DONATE_AMOUNT0
-
-```solidity
-uint256 internal DONATE_AMOUNT0 = 12345e6;
-```
-
-
-### DONATE_AMOUNT1
-
-```solidity
-uint256 internal DONATE_AMOUNT1 = 98765e4;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager, address _user) PoolTestBase(_manager);
-```
-
-### setKey
-
-
-```solidity
-function setKey(PoolKey memory _key) external;
-```
-
-### execute
-
-
-```solidity
-function execute(Action[] memory actions) public;
-```
-
-### _nestedUnlock
-
-
-```solidity
-function _nestedUnlock() internal;
-```
-
-### _swap
-
-
-```solidity
-function _swap(address caller) internal;
-```
-
-### _addLiquidity
-
-
-```solidity
-function _addLiquidity(address caller) internal;
-```
-
-### _removeLiquidity
-
-
-```solidity
-function _removeLiquidity(address caller) internal;
-```
-
-### _donate
-
-
-```solidity
-function _donate(address caller) internal;
-```
-
-### _initialize
-
-
-```solidity
-function _initialize() internal;
-```
-
-### unlockCallback
-
-
-```solidity
-function unlockCallback(bytes calldata) external pure override returns (bytes memory);
-```
-
-## Errors
-### KeyNotSet
-
-```solidity
-error KeyNotSet();
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolSwapTest.md b/docs/contracts/v4/reference/core/test/PoolSwapTest.md
deleted file mode 100644
index eeb9fbb65..000000000
--- a/docs/contracts/v4/reference/core/test/PoolSwapTest.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# PoolSwapTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolSwapTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[PoolTestBase](contracts/v4/reference/core/test/PoolTestBase.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager) PoolTestBase(_manager);
-```
-
-### swap
-
-
-```solidity
-function swap(
- PoolKey memory key,
- IPoolManager.SwapParams memory params,
- TestSettings memory testSettings,
- bytes memory hookData
-) external payable returns (BalanceDelta delta);
-```
-
-### unlockCallback
-
-
-```solidity
-function unlockCallback(bytes calldata rawData) external returns (bytes memory);
-```
-
-## Errors
-### NoSwapOccurred
-
-```solidity
-error NoSwapOccurred();
-```
-
-## Structs
-### CallbackData
-
-```solidity
-struct CallbackData {
- address sender;
- TestSettings testSettings;
- PoolKey key;
- IPoolManager.SwapParams params;
- bytes hookData;
-}
-```
-
-### TestSettings
-
-```solidity
-struct TestSettings {
- bool takeClaims;
- bool settleUsingBurn;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolTakeTest.md b/docs/contracts/v4/reference/core/test/PoolTakeTest.md
deleted file mode 100644
index f98d96956..000000000
--- a/docs/contracts/v4/reference/core/test/PoolTakeTest.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# PoolTakeTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolTakeTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[PoolTestBase](contracts/v4/reference/core/test/PoolTestBase.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager) PoolTestBase(_manager);
-```
-
-### take
-
-
-```solidity
-function take(PoolKey memory key, uint256 amount0, uint256 amount1) external payable;
-```
-
-### unlockCallback
-
-
-```solidity
-function unlockCallback(bytes calldata rawData) external returns (bytes memory);
-```
-
-### _testTake
-
-
-```solidity
-function _testTake(Currency currency, address sender, uint256 amount) internal;
-```
-
-## Structs
-### CallbackData
-
-```solidity
-struct CallbackData {
- address sender;
- PoolKey key;
- uint256 amount0;
- uint256 amount1;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/test/PoolTestBase.md b/docs/contracts/v4/reference/core/test/PoolTestBase.md
deleted file mode 100644
index cd9114f0e..000000000
--- a/docs/contracts/v4/reference/core/test/PoolTestBase.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# PoolTestBase
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/PoolTestBase.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IUnlockCallback](/src/interfaces/callback/IUnlockCallback.sol/interface.IUnlockCallback.md)
-
-
-## State Variables
-### manager
-
-```solidity
-IPoolManager public immutable manager;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager);
-```
-
-### _fetchBalances
-
-
-```solidity
-function _fetchBalances(Currency currency, address user, address deltaHolder)
- internal
- view
- returns (uint256 userBalance, uint256 poolBalance, int256 delta);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/ProtocolFeeControllerTest.md b/docs/contracts/v4/reference/core/test/ProtocolFeeControllerTest.md
deleted file mode 100644
index ca6c6cab0..000000000
--- a/docs/contracts/v4/reference/core/test/ProtocolFeeControllerTest.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# RevertingProtocolFeeControllerTest
-[Git Source](https://github.com/Uniswap/v4-core/blob/1141642f8ba4665a50660886a8a8401526677045/src/test/ProtocolFeeControllerTest.sol)
-| Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IProtocolFeeController](contracts/v4/reference/core/interfaces/IProtocolFeeController.md)
-
-Reverts on call
-
-
-## Functions
-### protocolFeeForPool
-
-
-```solidity
-function protocolFeeForPool(PoolKey memory) external pure returns (uint24);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/ProtocolFeesImplementation.md b/docs/contracts/v4/reference/core/test/ProtocolFeesImplementation.md
deleted file mode 100644
index 2b1da1a8f..000000000
--- a/docs/contracts/v4/reference/core/test/ProtocolFeesImplementation.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# ProtocolFeesImplementation
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/ProtocolFeesImplementation.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[ProtocolFees](contracts/v4/reference/core/ProtocolFees.md)
-
-
-## State Variables
-### _pools
-
-```solidity
-mapping(PoolId id => Pool.State) internal _pools;
-```
-
-
-### isUnlocked
-
-```solidity
-bool internal isUnlocked;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor() ProtocolFees(msg.sender);
-```
-
-### setPrice
-
-
-```solidity
-function setPrice(PoolKey memory key, uint160 sqrtPriceX96) public;
-```
-
-### _getPool
-
-
-```solidity
-function _getPool(PoolId id) internal view override returns (Pool.State storage);
-```
-
-### setIsUnlocked
-
-
-```solidity
-function setIsUnlocked(bool newValue) public;
-```
-
-### _isUnlocked
-
-
-```solidity
-function _isUnlocked() internal view override returns (bool);
-```
-
-### updateProtocolFees
-
-
-```solidity
-function updateProtocolFees(Currency currency, uint256 amount) public;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/ProxyPoolManager.md b/docs/contracts/v4/reference/core/test/ProxyPoolManager.md
deleted file mode 100644
index cf0365e99..000000000
--- a/docs/contracts/v4/reference/core/test/ProxyPoolManager.md
+++ /dev/null
@@ -1,363 +0,0 @@
-# ProxyPoolManager
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/ProxyPoolManager.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IPoolManager](contracts/v4/reference/core/interfaces/IPoolManager.md), [ProtocolFees](contracts/v4/reference/core/ProtocolFees.md), [NoDelegateCall](contracts/v4/reference/core/NoDelegateCall.md), [ERC6909Claims](contracts/v4/reference/core/ERC6909Claims.md), [Extsload](contracts/v4/reference/core/Extsload.md), [Exttload](contracts/v4/reference/core/Exttload.md)
-
-A proxy pool manager that delegates calls to the real/delegate pool manager
-
-
-## State Variables
-### MAX_TICK_SPACING
-
-```solidity
-int24 private constant MAX_TICK_SPACING = TickMath.MAX_TICK_SPACING;
-```
-
-
-### MIN_TICK_SPACING
-
-```solidity
-int24 private constant MIN_TICK_SPACING = TickMath.MIN_TICK_SPACING;
-```
-
-
-### _pools
-
-```solidity
-mapping(PoolId id => Pool.State) internal _pools;
-```
-
-
-### _delegateManager
-
-```solidity
-address internal immutable _delegateManager;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(address delegateManager) ProtocolFees(msg.sender);
-```
-
-### onlyWhenUnlocked
-
-This will revert if the contract is locked
-
-
-```solidity
-modifier onlyWhenUnlocked();
-```
-
-### unlock
-
-All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement
-`IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract.
-
-*The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`*
-
-
-```solidity
-function unlock(bytes calldata data) external noDelegateCall returns (bytes memory result);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`data`|`bytes`|Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`result`|`bytes`|The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`|
-
-
-### initialize
-
-Initialize the state for a given pool ID
-
-*A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee*
-
-
-```solidity
-function initialize(PoolKey memory key, uint160 sqrtPriceX96) external noDelegateCall returns (int24 tick);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool key for the pool to initialize|
-|`sqrtPriceX96`|`uint160`|The initial square root price|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tick`|`int24`|The initial tick of the pool|
-
-
-### modifyLiquidity
-
-Modify the liquidity for the given pool
-
-*Poke by calling with a zero liquidityDelta*
-
-
-```solidity
-function modifyLiquidity(PoolKey memory key, IPoolManager.ModifyLiquidityParams memory params, bytes calldata hookData)
- external
- onlyWhenUnlocked
- noDelegateCall
- returns (BalanceDelta callerDelta, BalanceDelta feesAccrued);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool to modify liquidity in|
-|`params`|`IPoolManager.ModifyLiquidityParams`|The parameters for modifying the liquidity|
-|`hookData`|`bytes`|The data to pass through to the add/removeLiquidity hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`callerDelta`|`BalanceDelta`|The balance delta of the caller of modifyLiquidity. This is the total of both principal, fee deltas, and hook deltas if applicable|
-|`feesAccrued`|`BalanceDelta`|The balance delta of the fees generated in the liquidity range. Returned for informational purposes|
-
-
-### swap
-
-Swap against the given pool
-
-*Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified.
-Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG
-the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.*
-
-
-```solidity
-function swap(PoolKey memory key, IPoolManager.SwapParams memory params, bytes calldata hookData)
- external
- onlyWhenUnlocked
- noDelegateCall
- returns (BalanceDelta swapDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The pool to swap in|
-|`params`|`IPoolManager.SwapParams`|The parameters for swapping|
-|`hookData`|`bytes`|The data to pass through to the swap hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`swapDelta`|`BalanceDelta`|The balance delta of the address swapping|
-
-
-### donate
-
-Donate the given currency amounts to the in-range liquidity providers of a pool
-
-*Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds.
-Donors should keep this in mind when designing donation mechanisms.*
-
-
-```solidity
-function donate(PoolKey memory key, uint256 amount0, uint256 amount1, bytes calldata hookData)
- external
- onlyWhenUnlocked
- noDelegateCall
- returns (BalanceDelta delta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The key of the pool to donate to|
-|`amount0`|`uint256`|The amount of currency0 to donate|
-|`amount1`|`uint256`|The amount of currency1 to donate|
-|`hookData`|`bytes`|The data to pass through to the donate hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`delta`|`BalanceDelta`|BalanceDelta The delta of the caller after the donate|
-
-
-### sync
-
-Writes the current ERC20 balance of the specified currency to transient storage
-This is used to checkpoint balances for the manager and derive deltas for the caller.
-
-*This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped
-for native tokens because the amount to settle is determined by the sent value.
-However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle
-native funds, this function can be called with the native currency to then be able to settle the native currency*
-
-
-```solidity
-function sync(Currency currency) public;
-```
-
-### take
-
-Called by the user to net out some value owed to the user
-
-*Will revert if the requested amount is not available, consider using `mint` instead*
-
-
-```solidity
-function take(Currency currency, address to, uint256 amount) external onlyWhenUnlocked noDelegateCall;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`Currency`|The currency to withdraw from the pool manager|
-|`to`|`address`|The address to withdraw to|
-|`amount`|`uint256`|The amount of currency to withdraw|
-
-
-### settle
-
-Called by the user to pay what is owed
-
-
-```solidity
-function settle() external payable onlyWhenUnlocked noDelegateCall returns (uint256 paid);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`paid`|`uint256`|The amount of currency settled|
-
-
-### settleFor
-
-Called by the user to pay on behalf of another address
-
-
-```solidity
-function settleFor(address recipient) external payable onlyWhenUnlocked noDelegateCall returns (uint256 paid);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`recipient`|`address`|The address to credit for the payment|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`paid`|`uint256`|The amount of currency settled|
-
-
-### clear
-
-WARNING - Any currency that is cleared, will be non-retrievable, and locked in the contract permanently.
-A call to clear will zero out a positive balance WITHOUT a corresponding transfer.
-
-*This could be used to clear a balance that is considered dust.
-Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared.*
-
-
-```solidity
-function clear(Currency currency, uint256 amount) external onlyWhenUnlocked;
-```
-
-### mint
-
-Called by the user to move value into ERC6909 balance
-
-*The id is converted to a uint160 to correspond to a currency address
-If the upper 12 bytes are not 0, they will be 0-ed out*
-
-
-```solidity
-function mint(address to, uint256 id, uint256 amount) external onlyWhenUnlocked noDelegateCall;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`to`|`address`|The address to mint the tokens to|
-|`id`|`uint256`|The currency address to mint to ERC6909s, as a uint256|
-|`amount`|`uint256`|The amount of currency to mint|
-
-
-### burn
-
-Called by the user to move value from ERC6909 balance
-
-*The id is converted to a uint160 to correspond to a currency address
-If the upper 12 bytes are not 0, they will be 0-ed out*
-
-
-```solidity
-function burn(address from, uint256 id, uint256 amount) external onlyWhenUnlocked noDelegateCall;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`from`|`address`|The address to burn the tokens from|
-|`id`|`uint256`|The currency address to burn from ERC6909s, as a uint256|
-|`amount`|`uint256`|The amount of currency to burn|
-
-
-### updateDynamicLPFee
-
-Updates the pools lp fees for the a pool that has enabled dynamic lp fees.
-
-*A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee*
-
-
-```solidity
-function updateDynamicLPFee(PoolKey memory key, uint24 newDynamicLPFee) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|The key of the pool to update dynamic LP fees for|
-|`newDynamicLPFee`|`uint24`|The new dynamic pool LP fee|
-
-
-### _delegateCall
-
-Make a delegate call, bubble up any error or return the result
-
-
-```solidity
-function _delegateCall(address target, bytes memory data) internal returns (bytes memory result);
-```
-
-### _getPool
-
-Implementation of the _getPool function defined in ProtocolFees
-
-
-```solidity
-function _getPool(PoolId id) internal view override returns (Pool.State storage);
-```
-
-### _isUnlocked
-
-Implementation of the _isUnlocked function defined in ProtocolFees
-
-
-```solidity
-function _isUnlocked() internal view override returns (bool);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/SkipCallsTestHook.md b/docs/contracts/v4/reference/core/test/SkipCallsTestHook.md
deleted file mode 100644
index 25f641476..000000000
--- a/docs/contracts/v4/reference/core/test/SkipCallsTestHook.md
+++ /dev/null
@@ -1,182 +0,0 @@
-# SkipCallsTestHook
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/SkipCallsTestHook.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[BaseTestHooks](contracts/v4/reference/core/test/BaseTestHooks.md), Test
-
-
-## State Variables
-### counter
-
-```solidity
-uint256 public counter;
-```
-
-
-### manager
-
-```solidity
-IPoolManager manager;
-```
-
-
-## Functions
-### setManager
-
-
-```solidity
-function setManager(IPoolManager _manager) external;
-```
-
-### beforeInitialize
-
-
-```solidity
-function beforeInitialize(address, PoolKey calldata key, uint160 sqrtPriceX96) external override returns (bytes4);
-```
-
-### afterInitialize
-
-
-```solidity
-function afterInitialize(address, PoolKey calldata key, uint160 sqrtPriceX96, int24)
- external
- override
- returns (bytes4);
-```
-
-### beforeAddLiquidity
-
-
-```solidity
-function beforeAddLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- bytes calldata hookData
-) external override returns (bytes4);
-```
-
-### afterAddLiquidity
-
-
-```solidity
-function afterAddLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- BalanceDelta,
- BalanceDelta,
- bytes calldata hookData
-) external override returns (bytes4, BalanceDelta);
-```
-
-### beforeRemoveLiquidity
-
-
-```solidity
-function beforeRemoveLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- bytes calldata hookData
-) external override returns (bytes4);
-```
-
-### afterRemoveLiquidity
-
-
-```solidity
-function afterRemoveLiquidity(
- address,
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams calldata params,
- BalanceDelta,
- BalanceDelta,
- bytes calldata hookData
-) external override returns (bytes4, BalanceDelta);
-```
-
-### beforeSwap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata key, IPoolManager.SwapParams calldata params, bytes calldata hookData)
- external
- override
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-
-### afterSwap
-
-
-```solidity
-function afterSwap(
- address,
- PoolKey calldata key,
- IPoolManager.SwapParams calldata params,
- BalanceDelta,
- bytes calldata hookData
-) external override returns (bytes4, int128);
-```
-
-### beforeDonate
-
-
-```solidity
-function beforeDonate(address, PoolKey calldata key, uint256 amt0, uint256 amt1, bytes calldata hookData)
- external
- override
- returns (bytes4);
-```
-
-### afterDonate
-
-
-```solidity
-function afterDonate(address, PoolKey calldata key, uint256 amt0, uint256 amt1, bytes calldata hookData)
- external
- override
- returns (bytes4);
-```
-
-### _initialize
-
-
-```solidity
-function _initialize(PoolKey memory key, uint160 sqrtPriceX96) public;
-```
-
-### _swap
-
-
-```solidity
-function _swap(PoolKey calldata key, IPoolManager.SwapParams memory params, bytes calldata hookData) public;
-```
-
-### _addLiquidity
-
-
-```solidity
-function _addLiquidity(PoolKey calldata key, IPoolManager.ModifyLiquidityParams memory params, bytes calldata hookData)
- public;
-```
-
-### _removeLiquidity
-
-
-```solidity
-function _removeLiquidity(
- PoolKey calldata key,
- IPoolManager.ModifyLiquidityParams memory params,
- bytes calldata hookData
-) public;
-```
-
-### _donate
-
-
-```solidity
-function _donate(PoolKey calldata key, uint256 amt0, uint256 amt1, bytes calldata hookData) public;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/SqrtPriceMathEchidnaTest.md b/docs/contracts/v4/reference/core/test/SqrtPriceMathEchidnaTest.md
deleted file mode 100644
index 43ade74ce..000000000
--- a/docs/contracts/v4/reference/core/test/SqrtPriceMathEchidnaTest.md
+++ /dev/null
@@ -1,102 +0,0 @@
-# SqrtPriceMathEchidnaTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/SqrtPriceMathEchidnaTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### mulDivRoundingUpInvariants
-
-
-```solidity
-function mulDivRoundingUpInvariants(uint256 x, uint256 y, uint256 z) external pure;
-```
-
-### getNextSqrtPriceFromInputInvariants
-
-
-```solidity
-function getNextSqrtPriceFromInputInvariants(uint160 sqrtP, uint128 liquidity, uint256 amountIn, bool zeroForOne)
- external
- pure;
-```
-
-### getNextSqrtPriceFromOutputInvariants
-
-
-```solidity
-function getNextSqrtPriceFromOutputInvariants(uint160 sqrtP, uint128 liquidity, uint256 amountOut, bool zeroForOne)
- external
- pure;
-```
-
-### getNextSqrtPriceFromAmount0RoundingUpInvariants
-
-
-```solidity
-function getNextSqrtPriceFromAmount0RoundingUpInvariants(uint160 sqrtPX96, uint128 liquidity, uint256 amount, bool add)
- external
- pure;
-```
-
-### getNextSqrtPriceFromAmount1RoundingDownInvariants
-
-
-```solidity
-function getNextSqrtPriceFromAmount1RoundingDownInvariants(
- uint160 sqrtPX96,
- uint128 liquidity,
- uint256 amount,
- bool add
-) external pure;
-```
-
-### getAmount0DeltaInvariants
-
-
-```solidity
-function getAmount0DeltaInvariants(uint160 sqrtP, uint160 sqrtQ, uint128 liquidity) external pure;
-```
-
-### getAmount0DeltaEquivalency
-
-
-```solidity
-function getAmount0DeltaEquivalency(uint160 sqrtP, uint160 sqrtQ, uint128 liquidity, bool roundUp) external pure;
-```
-
-### getAmount1DeltaInvariants
-
-
-```solidity
-function getAmount1DeltaInvariants(uint160 sqrtP, uint160 sqrtQ, uint128 liquidity) external pure;
-```
-
-### getAmount0DeltaSignedInvariants
-
-
-```solidity
-function getAmount0DeltaSignedInvariants(uint160 sqrtP, uint160 sqrtQ, int128 liquidity) external pure;
-```
-
-### getAmount1DeltaSignedInvariants
-
-
-```solidity
-function getAmount1DeltaSignedInvariants(uint160 sqrtP, uint160 sqrtQ, int128 liquidity) external pure;
-```
-
-### getOutOfRangeMintInvariants
-
-
-```solidity
-function getOutOfRangeMintInvariants(uint160 sqrtA, uint160 sqrtB, int128 liquidity) external pure;
-```
-
-### getInRangeMintInvariants
-
-
-```solidity
-function getInRangeMintInvariants(uint160 sqrtLower, uint160 sqrtCurrent, uint160 sqrtUpper, int128 liquidity)
- external
- pure;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/SwapRouterNoChecks.md b/docs/contracts/v4/reference/core/test/SwapRouterNoChecks.md
deleted file mode 100644
index d15f52e68..000000000
--- a/docs/contracts/v4/reference/core/test/SwapRouterNoChecks.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# SwapRouterNoChecks
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/SwapRouterNoChecks.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[PoolTestBase](contracts/v4/reference/core/test/PoolTestBase.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager) PoolTestBase(_manager);
-```
-
-### swap
-
-
-```solidity
-function swap(PoolKey memory key, IPoolManager.SwapParams memory params) external payable;
-```
-
-### unlockCallback
-
-
-```solidity
-function unlockCallback(bytes calldata rawData) external returns (bytes memory);
-```
-
-## Errors
-### NoSwapOccurred
-
-```solidity
-error NoSwapOccurred();
-```
-
-## Structs
-### CallbackData
-
-```solidity
-struct CallbackData {
- address sender;
- PoolKey key;
- IPoolManager.SwapParams params;
-}
-```
-
diff --git a/docs/contracts/v4/reference/core/test/TestERC20.md b/docs/contracts/v4/reference/core/test/TestERC20.md
deleted file mode 100644
index 1c923ea38..000000000
--- a/docs/contracts/v4/reference/core/test/TestERC20.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# TestERC20
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/TestERC20.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IERC20Minimal](contracts/v4/reference/core/interfaces/IERC20Minimal.md)
-
-
-## State Variables
-### balanceOf
-
-```solidity
-mapping(address => uint256) public override balanceOf;
-```
-
-
-### allowance
-
-```solidity
-mapping(address => mapping(address => uint256)) public override allowance;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(uint256 amountToMint);
-```
-
-### mint
-
-
-```solidity
-function mint(address to, uint256 amount) public;
-```
-
-### transfer
-
-
-```solidity
-function transfer(address recipient, uint256 amount) external override returns (bool);
-```
-
-### approve
-
-
-```solidity
-function approve(address spender, uint256 amount) external override returns (bool);
-```
-
-### transferFrom
-
-
-```solidity
-function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/TestInvalidERC20.md b/docs/contracts/v4/reference/core/test/TestInvalidERC20.md
deleted file mode 100644
index 7961429ad..000000000
--- a/docs/contracts/v4/reference/core/test/TestInvalidERC20.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# TestInvalidERC20
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/TestInvalidERC20.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IERC20Minimal](contracts/v4/reference/core/interfaces/IERC20Minimal.md)
-
-
-## State Variables
-### balanceOf
-
-```solidity
-mapping(address => uint256) public override balanceOf;
-```
-
-
-### allowance
-
-```solidity
-mapping(address => mapping(address => uint256)) public override allowance;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(uint256 amountToMint);
-```
-
-### mint
-
-
-```solidity
-function mint(address to, uint256 amount) public;
-```
-
-### transfer
-
-
-```solidity
-function transfer(address recipient, uint256 amount) external override returns (bool);
-```
-
-### approve
-
-
-```solidity
-function approve(address spender, uint256 amount) external override returns (bool);
-```
-
-### transferFrom
-
-
-```solidity
-function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/TickMathEchidnaTest.md b/docs/contracts/v4/reference/core/test/TickMathEchidnaTest.md
deleted file mode 100644
index c711f44ad..000000000
--- a/docs/contracts/v4/reference/core/test/TickMathEchidnaTest.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# TickMathEchidnaTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/TickMathEchidnaTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### checkGetSqrtPriceAtTickInvariants
-
-
-```solidity
-function checkGetSqrtPriceAtTickInvariants(int24 tick) external pure;
-```
-
-### checkGetTickAtSqrtPriceInvariants
-
-
-```solidity
-function checkGetTickAtSqrtPriceInvariants(uint160 price) external pure;
-```
-
diff --git a/docs/contracts/v4/reference/core/test/TickMathTest.md b/docs/contracts/v4/reference/core/test/TickMathTest.md
deleted file mode 100644
index 3fea9bc35..000000000
--- a/docs/contracts/v4/reference/core/test/TickMathTest.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# TickMathTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/TickMathTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### getSqrtPriceAtTick
-
-
-```solidity
-function getSqrtPriceAtTick(int24 tick) external pure returns (uint160);
-```
-
-### getGasCostOfGetSqrtPriceAtTick
-
-
-```solidity
-function getGasCostOfGetSqrtPriceAtTick(int24 tick) external view returns (uint256);
-```
-
-### getTickAtSqrtPrice
-
-
-```solidity
-function getTickAtSqrtPrice(uint160 sqrtPriceX96) external pure returns (int24);
-```
-
-### getGasCostOfGetTickAtSqrtPrice
-
-
-```solidity
-function getGasCostOfGetTickAtSqrtPrice(uint160 sqrtPriceX96) external view returns (uint256);
-```
-
-### MIN_SQRT_PRICE
-
-
-```solidity
-function MIN_SQRT_PRICE() external pure returns (uint160);
-```
-
-### MAX_SQRT_PRICE
-
-
-```solidity
-function MAX_SQRT_PRICE() external pure returns (uint160);
-```
-
-### MIN_TICK
-
-
-```solidity
-function MIN_TICK() external pure returns (int24);
-```
-
-### MAX_TICK
-
-
-```solidity
-function MAX_TICK() external pure returns (int24);
-```
-
diff --git a/docs/contracts/v4/reference/core/test/TickOverflowSafetyEchidnaTest.md b/docs/contracts/v4/reference/core/test/TickOverflowSafetyEchidnaTest.md
deleted file mode 100644
index 14bef07ef..000000000
--- a/docs/contracts/v4/reference/core/test/TickOverflowSafetyEchidnaTest.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# TickOverflowSafetyEchidnaTest
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/test/TickOverflowSafetyEchidnaTest.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## State Variables
-### MIN_TICK
-
-```solidity
-int24 private constant MIN_TICK = -16;
-```
-
-
-### MAX_TICK
-
-```solidity
-int24 private constant MAX_TICK = 16;
-```
-
-
-### pool
-
-```solidity
-Pool.State private pool;
-```
-
-
-### tick
-
-```solidity
-int24 private tick = 0;
-```
-
-
-### feeGrowthGlobal0X128
-
-```solidity
-uint256 feeGrowthGlobal0X128 = type(uint256).max / 2;
-```
-
-
-### feeGrowthGlobal1X128
-
-```solidity
-uint256 feeGrowthGlobal1X128 = type(uint256).max / 2;
-```
-
-
-### totalLiquidity
-
-```solidity
-int256 totalLiquidity = 0;
-```
-
-
-### totalGrowth0
-
-```solidity
-uint256 private totalGrowth0 = 0;
-```
-
-
-### totalGrowth1
-
-```solidity
-uint256 private totalGrowth1 = 0;
-```
-
-
-## Functions
-### increaseFeeGrowthGlobal0X128
-
-
-```solidity
-function increaseFeeGrowthGlobal0X128(uint256 amount) external;
-```
-
-### increaseFeeGrowthGlobal1X128
-
-
-```solidity
-function increaseFeeGrowthGlobal1X128(uint256 amount) external;
-```
-
-### setPosition
-
-
-```solidity
-function setPosition(int24 tickLower, int24 tickUpper, int128 liquidityDelta) external;
-```
-
-### moveToTick
-
-
-```solidity
-function moveToTick(int24 target) external;
-```
-
diff --git a/docs/contracts/v4/reference/core/types/PoolId.md b/docs/contracts/v4/reference/core/types/PoolId.md
deleted file mode 100644
index 844f1586e..000000000
--- a/docs/contracts/v4/reference/core/types/PoolId.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# PoolId
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/types/PoolId.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-```solidity
-type PoolId is bytes32;
-```
-
diff --git a/docs/contracts/v4/reference/core/types/Slot0.md b/docs/contracts/v4/reference/core/types/Slot0.md
deleted file mode 100644
index 383f019b3..000000000
--- a/docs/contracts/v4/reference/core/types/Slot0.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Slot0
-[Git Source](https://github.com/uniswap/v4-core/blob/b619b6718e31aa5b4fa0286520c455ceb950276d/src/types/Slot0.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-*Slot0 is a packed version of solidity structure.
-Using the packaged version saves gas by not storing the structure fields in memory slots.
-Layout:
-24 bits empty | 24 bits lpFee | 12 bits protocolFee 1->0 | 12 bits protocolFee 0->1 | 24 bits tick | 160 bits sqrtPriceX96
-Fields in the direction from the least significant bit:
-The current price
-uint160 sqrtPriceX96;
-The current tick
-int24 tick;
-Protocol fee, expressed in hundredths of a bip, upper 12 bits are for 1->0, and the lower 12 are for 0->1
-the maximum is 1000 - meaning the maximum protocol fee is 0.1%
-the protocolFee is taken from the input first, then the lpFee is taken from the remaining input
-uint24 protocolFee;
-The current LP fee of the pool. If the pool is dynamic, this does not include the dynamic fee flag.
-uint24 lpFee;*
-
-
-```solidity
-type Slot0 is bytes32;
-```
-
diff --git a/docs/contracts/v4/reference/core/types/_category_.json b/docs/contracts/v4/reference/core/types/_category_.json
deleted file mode 100644
index 8ef8d9321..000000000
--- a/docs/contracts/v4/reference/core/types/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Types",
- "position": 1,
- "collapsed": true
-}
diff --git a/docs/contracts/v4/reference/core/types/balancedelta.mdx b/docs/contracts/v4/reference/core/types/balancedelta.mdx
deleted file mode 100644
index aff5be7f6..000000000
--- a/docs/contracts/v4/reference/core/types/balancedelta.mdx
+++ /dev/null
@@ -1,147 +0,0 @@
----
-title: BalanceDelta
----
-
-`BalanceDelta` is a type used in Uniswap V4 to represent the balance changes of two tokens (token0 and token1). It tightly packs the two values in a single 256 bits. It is designed to efficiently store and manipulate these balance deltas, with the upper 128 bits representing the change in token0 (`amount0`) and the lower 128 bits representing the change in token1 (`amount1`).
-
-# Purpose
-
-The main purpose of `BalanceDelta` is to keep track of the net balance changes in the two tokens of a pool after various operations such as swaps, liquidity modifications, and interactions with hooks. It provides a compact and efficient way to store and update these balance deltas throughout the execution flow of the pool.
-
-In the context of hooks, `BalanceDelta` is used to ensure that the net balance change for each token is zero after the hook's functionality is executed. This is important for maintaining the integrity of the pool's balances and ensuring that the hooks do not introduce any unexpected or unauthorized balance changes.
-
-# Type Definition
-
-```solidity
-type BalanceDelta is int256;
-```
-
-# Using Directives
-
-```solidity
-using {add as +, sub as -, eq as ==, neq as !=} for BalanceDelta global;
-using BalanceDeltaLibrary for BalanceDelta global;
-using SafeCast for int256;
-```
-
-These using directives enable arithmetic operations, equality comparisons, and library functions to be used directly on `BalanceDelta` values.
-
-# Functions
-
-## toBalanceDelta
-
-```solidity
-function toBalanceDelta(int128 amount0, int128 amount1) pure returns (BalanceDelta balanceDelta);
-```
-
-Creates a `BalanceDelta` value from two `int128` values representing `amount0` and `amount1`.
-
-| Param Name | Type | Description |
-|------------|---------|--------------------------------------|
-| amount0 | int128 | The amount for the first token |
-| amount1 | int128 | The amount for the second token |
-
-Returns the created `BalanceDelta` value.
-
-## add
-
-```solidity
-function add(BalanceDelta a, BalanceDelta b) pure returns (BalanceDelta);
-```
-
-Adds two `BalanceDelta` values.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------|
-| a | BalanceDelta | The first `BalanceDelta` value |
-| b | BalanceDelta | The second `BalanceDelta` value |
-
-Returns the sum of the two `BalanceDelta` values.
-
-## sub
-
-```solidity
-function sub(BalanceDelta a, BalanceDelta b) pure returns (BalanceDelta);
-```
-
-Subtracts one `BalanceDelta` value from another.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------|
-| a | BalanceDelta | The first `BalanceDelta` value |
-| b | BalanceDelta | The second `BalanceDelta` value |
-
-Returns the difference of the two `BalanceDelta` values.
-
-## eq
-
-```solidity
-function eq(BalanceDelta a, BalanceDelta b) pure returns (bool);
-```
-
-Checks if two `BalanceDelta` values are equal.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------|
-| a | BalanceDelta | The first `BalanceDelta` value |
-| b | BalanceDelta | The second `BalanceDelta` value |
-
-Returns `true` if the values are equal, `false` otherwise.
-
-## neq
-
-```solidity
-function neq(BalanceDelta a, BalanceDelta b) pure returns (bool);
-```
-
-Checks if two `BalanceDelta` values are not equal.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------|
-| a | BalanceDelta | The first `BalanceDelta` value |
-| b | BalanceDelta | The second `BalanceDelta` value |
-
-Returns `true` if the values are not equal, `false` otherwise.
-
-# Library Functions
-
-## amount0
-
-```solidity
-function amount0(BalanceDelta balanceDelta) internal pure returns (int128 _amount0);
-```
-
-Extracts the `amount0` value from a `BalanceDelta`.
-
-| Param Name | Type | Description |
-|--------------|--------------|--------------------------------------|
-| balanceDelta | BalanceDelta | The `BalanceDelta` value |
-
-Returns the extracted `amount0` value as an `int128`.
-
-## amount1
-
-```solidity
-function amount1(BalanceDelta balanceDelta) internal pure returns (int128 _amount1);
-```
-
-Extracts the `amount1` value from a `BalanceDelta`.
-
-| Param Name | Type | Description |
-|--------------|--------------|--------------------------------------|
-| balanceDelta | BalanceDelta | The `BalanceDelta` value |
-
-Returns the extracted `amount1` value as an `int128`.
-
-# Usage in Hooks
-
-When a hook is called during a swap or liquidity modification, it can perform custom logic and interact with the pool's balances. However, to maintain the correctness of the pool's state, the hook must ensure that any balance changes it introduces are properly accounted for and net to zero at the end of its execution.
-The BalanceDelta is forwarded to the `afterSwap` & `afterAddliquidity`, `afterRemoveLiquidity` hooks.
-
-# Usage in the Pool Library
-
-In the `Pool` library, `BalanceDelta` is used extensively to track balance changes during various operations such as swaps, liquidity modifications, and donations. The library functions `swap`, `modifyLiquidity`, and `donate` all return `BalanceDelta` values representing the net balance changes resulting from these operations.
-
-The `Pool` library uses `BalanceDelta` to efficiently update and manage the pool's balances, ensuring that the net balance changes are accurately accounted for and that the pool remains in a consistent state.
-
-By leveraging the compact representation and efficient arithmetic operations provided by `BalanceDelta`, the `Pool` library can perform complex balance calculations and updates in a gas-optimized manner, reducing the overall cost of executing pool-related operations.
\ No newline at end of file
diff --git a/docs/contracts/v4/reference/core/types/beforeswapdelta.mdx b/docs/contracts/v4/reference/core/types/beforeswapdelta.mdx
deleted file mode 100644
index db7a6e8f7..000000000
--- a/docs/contracts/v4/reference/core/types/beforeswapdelta.mdx
+++ /dev/null
@@ -1,429 +0,0 @@
----
-title: BeforeSwapDelta
----
-
-`BeforeSwapDelta` is a custom type used in Uniswap V4 hook contracts to represent balance changes during swap operations. It is specifically designed to handle the return value of the `beforeSwap` hook and to be compatible with the `afterSwap` hook.
-
-Before explaining `BeforeSwapDelta` in detail, it is worth noting that in the context of Uniswap V4 swaps:
-
-- The **specified** token is the one for which the user specifies an exact input or output amount.
-- The **unspecified** token is the counterpart in the swap, whose amount is determined by the pool's pricing mechanism.
-
-# Purpose
-
-The main purpose of `BeforeSwapDelta` is to efficiently encode and decode balance changes for both specified and unspecified tokens in a single 256-bit value. This compact representation allows for gas-efficient operations and seamless integration with Uniswap V4's hook system.
-
-`BeforeSwapDelta` is essential for:
-
-- Allowing hooks to modify swap parameters or override default swap behavior
-- Allowing hooks to take fees from swaps
-- Providing fine-grained control over balance adjustments resulting from swaps
-- Optimizing gas usage by packing two `int128` values into a single `int256`
-
-To summarise, `BeforeSwapDelta` is used to ensure that the net balance change for each token is zero after the hook's functionality is executed. This is important for maintaining the integrity of the pool's balances and ensuring that the hooks do not introduce any unexpected or unauthorized balance changes.
-
-# Type Definition
-
-```solidity
-type BeforeSwapDelta is int256;
-```
-
-The `BeforeSwapDelta` type is an alias for int256, where:
-
-- The upper 128 bits represent the delta in specified tokens
-- The lower 128 bits represent the delta in unspecified tokens
-
-# Using Directives
-
-```solidity
-using BeforeSwapDeltaLibrary for BeforeSwapDelta global;
-using SafeCast for int256;
-```
-
-These using directives enable library functions to be used directly on `BeforeSwapDelta` values and provide safe casting operations for int256 values.
-
-# Functions
-
-## toBeforeSwapDelta
-
-```solidity
-function toBeforeSwapDelta(int128 deltaSpecified, int128 deltaUnspecified) pure returns (BeforeSwapDelta beforeSwapDelta);
-```
-
-Creates a `BeforeSwapDelta` value from two `int128` values representing `deltaSpecified` and `deltaUnspecified`.
-
-| Param Name | Type | Description |
-|------------|---------|--------------------------------------|
-| deltaSpecified | int128 | The balance change for the specified token |
-| deltaUnspecified | int128 | The balance change for the unspecified token |
-
-Returns the created `BeforeSwapDelta` value.
-
-This function uses bitwise operations in assembly for gas-efficient packing of the two int128 values:
-
-```solidity
-assembly ("memory-safe") {
- beforeSwapDelta := or(shl(128, deltaSpecified), and(sub(shl(128, 1), 1), deltaUnspecified))
-}
-```
-
-# Library Functions
-
-## ZERO_DELTA
-
-```solidity
-BeforeSwapDelta public constant ZERO_DELTA = BeforeSwapDelta.wrap(0);
-```
-
-A constant representing a zero delta (no balance changes). It should be used as a default return value. It is most commonly used for hooks that are *not* implementing custom accounting.
-
-## getSpecifiedDelta
-
-```solidity
-function getSpecifiedDelta(BeforeSwapDelta delta) internal pure returns (int128 deltaSpecified);
-```
-
-Extracts the specified token delta from a `BeforeSwapDelta` value.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------|
-| delta | BeforeSwapDelta | The `BeforeSwapDelta` value |
-
-Returns the extracted specified token delta as an `int128`.
-
-## getUnspecifiedDelta
-
-```solidity
-function getUnspecifiedDelta(BeforeSwapDelta delta) internal pure returns (int128 deltaUnspecified);
-```
-
-Extracts the unspecified token delta from a BeforeSwapDelta value.
-
-| Param Name | Type | Description |
-|------------|--------------|--------------------------------------|
-| delta | BeforeSwapDelta | The `BeforeSwapDelta` |
-
-Returns the extracted unspecified token delta as an `int128`.
-
-# Usage in Hooks
-
-When a hook is called during a swap operation, it can perform custom logic and interact with the pool's balances. The `beforeSwap` hook returns a `BeforeSwapDelta` value to indicate any balance changes the *hook* introduces. For example, hooks taking fees should return the value it took as a `BeforeSwapDelta`.
-
-# Usage in PoolManager.sol
-
-`BeforeSwapDelta` plays a crucial role in Uniswap V4's PoolManager contract, particularly in the swap process. Here's an overview of how it's used:
-
-## Calling the `beforeSwap` Hook
-
-In the `swap` function of the PoolManager contract, the `beforeSwap` hook is called:
-
-```solidity
-function swap(PoolKey memory key, IPoolManager.SwapParams memory params, bytes calldata hookData)
- // ...
- returns (BalanceDelta swapDelta)
-{
- // ... (other code)
-
- BeforeSwapDelta beforeSwapDelta;
- {
- int256 amountToSwap;
- uint24 lpFeeOverride;
- (amountToSwap, beforeSwapDelta, lpFeeOverride) = key.hooks.beforeSwap(key, params, hookData);
-
- // ... (swap execution)
- }
-
- // ... (other code)
-}
-```
-
-The `beforeSwap` hook returns a `BeforeSwapDelta` value along with other parameters.
-
-## Interaction between `beforeSwapDelta` and `amountToSwap`
-
-The `beforeSwapDelta` returned by the hook is used in conjunction with `params.amountSpecified` to determine the final `amountToSwap`. This allows hooks to modify the swap amount based on their custom logic. Here's a more detailed explanation of how this works:
-
-1. The `beforeSwap` hook returns a `BeforeSwapDelta` value.
-2. The `getSpecifiedDelta()` of this `BeforeSwapDelta` is used to adjust the original `params.amountSpecified`.
-3. This adjustment results in the final `amountToSwap` that will be used for the actual swap operation.
-
-Here's a simplified representation of this calculation:
-
-```solidity
-int256 amountToSwap = params.amountSpecified + beforeSwapDelta.getSpecifiedDelta();
-```
-
-In this example, the `amountToSwap` is calculated by adding the specified delta from `beforeSwapDelta` to the original `amountSpecified`. This calculation allows hooks to increase or decrease the swap amount, effectively implementing features like fees, rebates, or other custom logic.
-
-**Detailed Example:**
-
-Let's say a user wants to swap 100 tokens, but a hook implements a 1% fee:
-
-1. `params.amountSpecified` would be 100
-2. The hook calculates the fee as 1 token and returns a `beforeSwapDelta` with a specified delta of -1
-3. `amountToSwap` is then calculated as 100 + (-1) = 99
-
-This way, the actual amount swapped (99) reflects the fee taken by the hook, while still allowing the pool to execute the swap based on the original 100 token input from the user.
-
-Here's how the `beforeSwap` hook might handle this:
-
-```solidity
-function beforeSwap(
- address,
- PoolKey calldata,
- IPoolManager.SwapParams calldata params,
- bytes calldata
-) external override returns (int256 amountIn, BeforeSwapDelta delta, uint24) {
- int128 specifiedAmount = params.amountSpecified.toInt128();
- int128 fee = specifiedAmount / 100; // 1% fee
- int128 adjustedAmount = specifiedAmount - fee;
-
- delta = BeforeSwapDelta.from(-fee, 0); // Fee taken from specified token
- amountIn = params.amountSpecified; // Original amount
-
- return (amountIn, delta, 0);
-}
-```
-
-After this hook executes:
-
-- `amountIn` remains 100 (the original `params.amountSpecified`)
-- `delta` represents a change of -1 in the specified token (the fee)
-
-Then, in the PoolManager:
-
-```solidity
-int256 amountToSwap = params.amountSpecified + beforeSwapDelta.getSpecifiedDelta();
-// This effectively calculates: 100 + (-1) = 99
-```
-
-As a result:
-
-- The pool sees the full input amount of 100 tokens.
-- The actual amount swapped is 99 tokens.
-- The 1 token difference becomes the hook's fee.
-
-This mechanism allows hooks to influence the swap amount while maintaining transparency about the full input amount, enabling complex custom logic within the Uniswap V4 framework.
-
-## Relation to `afterSwap`
-
-While `beforeSwapDelta` is primarily used in the `beforeSwap` hook, it also plays a role in the `afterSwap` process. Specifically:
-
-- The `afterSwap` hook receives the `beforeSwapDelta` as a parameter.
-- The unspecified delta (`beforeSwapDelta.getUnspecifiedDelta()`) is particularly important in the `afterSwap` context.
-- This unspecified delta is accounted for in `afterSwap`'s calculations, allowing for consistent balance tracking across the entire swap process.
-
-This mechanism ensures that:
-
-1. Changes made by the `beforeSwap` hook are properly considered when finalizing the swap.
-2. The `afterSwap` hook can make informed decisions based on the full context of the swap, including any modifications made in `beforeSwap`.
-3. Complex swap logic can be implemented across multiple hook points while maintaining consistency.
-
-For example, if a fee was taken on the specified token in `beforeSwap`, the `afterSwap` hook can use this information to ensure the overall balance changes are correct, potentially adjusting the unspecified token amount accordingly.
-
-Developers implementing custom hooks should be aware of this relationship and ensure their `beforeSwap` and `afterSwap` implementations work together coherently, especially when implementing features like fees or rebates that affect token balances.
-
-# Key Purposes of BeforeSwapDelta
-
-The `BeforeSwapDelta` serves several important purposes in the Uniswap V4 swap process:
-
-1. **Customization of Swap Behavior:** It allows hooks to modify the swap parameters or even completely override the default swap behavior.
-2. **Balance Adjustment:** The delta values can be used to adjust the final balance changes resulting from the swap, giving hooks fine-grained control over the swap's outcome.
-3. **Gas Optimization:** By packing two `int128` values into a single `int256`, it reduces the number of stack variables and can lead to gas savings.
-4. **Cross-Hook Communication:** It provides a way for the `beforeSwap` hook to pass information to the `afterSwap` hook, enabling more complex and stateful hook logic.
-5. **Hook Fees Implementation:** `BeforeSwapDelta` offers flexible options for implementing hook fees:
-
-- Fees can be charged on either the specified or unspecified token.
-- Fees can be implemented in either the `beforeSwap` or `afterSwap` hook.
-- For `beforeSwap`:
-
-1. Adjust the specified amount to account for the fee.
-2. Useful for scenarios where the fee needs to be known before the swap execution.
-
-
-- For `afterSwap`:
-
-1. Generally considered best practice to charge fees on the unspecified token.
-2. Allows for more accurate fee calculation based on the actual swap outcome.
-
-- As a result, developers can implement various fee structures, such as:
-
-1. Fixed fee amounts
-2. Percentage-based fees
-3. Tiered fee structures based on swap volume or other criteria
-
-Example of a simple percentage-based fee in `beforeSwap`:
-
-```solidity
-int128 fee = specifiedAmount * FEE_PERCENTAGE / 100;
-int128 adjustedAmount = specifiedAmount - fee;
-delta = BeforeSwapDelta.from(-adjustedAmount, 0);
-```
-
-This flexibility in fee implementation allows developers to create sophisticated economic models within their Uniswap V4 hooks, tailoring the behavior to specific use cases while maintaining the efficiency and standardization provided by the `BeforeSwapDelta` structure.
-
-# Perspective
-
-It's important to note that the `BeforeSwapDelta` is from the perspective of the hook itself, not the user. For example, if a user swaps 1 USDC for 1 USDT:
-
-- User gives 1 USDC: balance0OfUser decreases
-- Hook gets 1 USDC: balance0OfHook increases
-
-This perspective is key to correctly interpreting and manipulating the delta values within hook implementations.
-
-# Implementation Details
-
-The `BeforeSwapDelta` type and its associated functions use low-level assembly code for efficient bit manipulation and gas optimization:
-
-- The `toBeforeSwapDelta` function uses bitwise operations (`shl`, `or`, `and`, `sub`) to pack two `int128` values into a single `int256`.
-- The `getSpecifiedDelta` function uses the `sar` (shift arithmetic right) operation to extract the upper 128 bits.
-- The `getUnspecifiedDelta` function uses the `signextend` operation to extract and sign-extend the lower 128 bits.
-
-The `toBeforeSwapDelta` function combines the specified and unspecified deltas into a single `int256` value using bitwise operations. The `getSpecifiedDelta` and `getUnspecifiedDelta` functions extract the respective deltas using bit shifting and sign extension.
-
-By leveraging this compact representation and efficient arithmetic operations, Uniswap V4 can perform complex balance calculations and updates in a gas-optimized manner, reducing the overall cost of executing pool-related operations.
-
-# Implementation Considerations
-
-When working with `BeforeSwapDelta`, especially for implementing hook fees, consider the following:
-
-- **Fee Timing:** While fees can be implemented in either `beforeSwap` or `afterSwap`, charging fees on the unspecified token in `afterSwap` is often considered best practice. This approach can provide more accurate fee calculations based on the final swap amounts.
-- **Fee Direction:** Remember that the deltas in `BeforeSwapDelta` are from the perspective of the hook. A positive delta means the hook is receiving tokens, while a negative delta means the hook is paying out tokens.
-- **Consistency:** Ensure that your fee implementation is consistent across both `beforeSwap` and `afterSwap` hooks to maintain the integrity of the swap process.
-- **Gas Efficiency:** When implementing fees, consider the gas costs of your calculations. The compact nature of `BeforeSwapDelta` can help in optimizing gas usage, but complex fee structures might increase gas costs.
-
-# Comparison with BalanceDelta
-
-`BeforeSwapDelta` shares a similar structure with `BalanceDelta`, both packing two `int128` values into a single `int256`. However, there are key differences:
-
-- `BalanceDelta` represents amount0 and amount1.
-- `BeforeSwapDelta` represents specified and unspecified amounts, which may not directly correspond to token0 and token1, depending on the swap direction.
-
-# Best Practices
-
-When working with `BeforeSwapDelta`, consider the following best practices:
-
-- Always use the provided library functions (`getSpecifiedDelta` and `getUnspecifiedDelta`) to extract delta values.
-- Ensure that the signs of the delta values are correct from the hook's perspective.
-- Use `SafeCast` when converting between different integer types to prevent overflow/underflow errors.
-
-# Error Handling and Edge Cases
-
-- **Overflow/Underflow:** Ensure that the input int128 values do not exceed their range when packing into BeforeSwapDelta.
-- **Zero Values:** ZERO_DELTA represents no balance changes. Be cautious when interpreting zero values in specific contexts.
-- **Sign Mismatch:** Ensure that the signs of the delta values correctly represent the intended balance changes from the hook's perspective.
-
-# Example Usage in a Hook
-
-## Basic Example
-
-Here's a simple example of how `BeforeSwapDelta` might be used in a `beforeSwap` hook:
-
-```solidity
-function beforeSwap(
- address,
- PoolKey calldata,
- IPoolManager.SwapParams calldata params,
- bytes calldata
-) external override returns (int256 amountIn, BeforeSwapDelta delta, uint24) {
- // Convert the specified amount to int128
- int128 specifiedAmount = params.amountSpecified.toInt128();
-
- // In this example, we're not modifying the unspecified amount
- int128 unspecifiedAmount = 0; // Calculated based on your custom logic
-
- // Create the BeforeSwapDelta
- delta = toBeforeSwapDelta(specifiedAmount, unspecifiedAmount);
-
- // Return the original amount as amountIn
- amountIn = params.amountSpecified;
-
- // Return 0 for lpFeeOverride as we're not changing the LP fee
- return (amountIn, delta, 0);
-}
-```
-
-Let's break down what this basic hook is doing:
-
-1. It converts the `params.amountSpecified` to `int128`, which is required for `BeforeSwapDelta`.
-2. It sets the `unspecifiedAmount` to 0, which means this hook isn't modifying the counterpart token in the swap.
-3. It creates a `BeforeSwapDelta` using these amounts.
-4. It returns the original `amountIn`, the created `delta`, and 0 for `lpFeeOverride`.
-
-This basic example doesn't modify the swap parameters or introduce any fees. It demonstrates the minimal structure of a `beforeSwap` hook using `BeforeSwapDelta`.
-
-## Advanced Example: Implementing a Fee
-
-For a more practical use case, here's an example that implements a simple fee mechanism:
-
-```solidity
-function beforeSwap(
- address,
- PoolKey calldata key,
- IPoolManager.SwapParams calldata params,
- bytes calldata
-) external override returns (int256 amountIn, BeforeSwapDelta delta, uint24) {
- // Determine if this is a swap for token0 or token1
- bool zeroForOne = params.zeroForOne;
-
- // Convert the specified amount to int128, ensuring it's positive
- int128 specifiedAmount = params.amountSpecified.abs().toInt128();
-
- // Calculate a 0.1% fee
- int128 fee = specifiedAmount / 1000;
-
- // Adjust the specified amount based on swap direction
- int128 adjustedSpecifiedAmount;
- if (params.exactInput) {
- // For exact input, reduce the amount by the fee
- adjustedSpecifiedAmount = specifiedAmount - fee;
- } else {
- // For exact output, increase the amount by the fee
- adjustedSpecifiedAmount = specifiedAmount + fee;
- }
-
- // Create the BeforeSwapDelta
- delta = zeroForOne
- ? BeforeSwapDelta.from(-adjustedSpecifiedAmount, 0)
- : BeforeSwapDelta.from(0, -adjustedSpecifiedAmount);
-
- // Return the original amount as amountIn
- amountIn = params.amountSpecified;
-
- // Return 0 for lpFeeOverride as we're not changing the LP fee
- return (amountIn, delta, 0);
-}
-```
-
-**Let's break down what this hook is doing:**
-
-1. **Swap Direction Determination:**
- The hook checks `params.zeroForOne` to determine the direction of the swap (token0 to token1 or vice versa).
-2. **Amount Conversion:** It converts `params.amountSpecified` to a positive `int128`. This is necessary because `BeforeSwapDelta` works with `int128` values.
-3. **Fee Calculation:** A 0.1% fee is calculated based on the specified amount.
-4. **Amount Adjustment:** Depending on whether the swap is exact input or exact output, the specified amount is adjusted:
- - For exact input, the fee is subtracted (user provides less to the pool).
- - For exact output, the fee is added (user needs to provide more to the pool).
-5. **BeforeSwapDelta Creation:** The `BeforeSwapDelta` is created using the adjusted amount. The negative sign indicates that the pool will receive these tokens from the user. The amount is placed in either the first or second parameter of `BeforeSwapDelta.from()` depending on the swap direction.
-6. **Return Values:**
- - `amountIn` is set to the original `params.amountSpecified`. This allows the pool to account for the full amount the user is putting in or expecting out.
- - The `delta` value contains our adjusted amounts.
- - `0` is returned for `lpFeeOverride`, meaning we're not changing the default LP fee.
-
-**What This Accomplishes:**
-
-- This hook implements a 0.1% fee on the swaps.
-- It handles both exact input and exact output swaps correctly.
-- It accounts for the swap direction (token0 to token1 or vice versa).
-- The fee is taken from the input amount for exact input swaps, or added to the input amount for exact output swaps.
-- The pool will see the full input/output amount, but will only swap the adjusted amount (after accounting for the fee).
-- The difference between the original amount and the adjusted amount effectively becomes the hook's fee.
-
-**Considerations:**
-
-- This example assumes the fee is always taken in the input token. In practice, you might want to design more sophisticated fee structures.
-- The hook doesn't handle storage of collected fees. In a real implementation, you'd need to account for and possibly transfer these fees.
-- Always ensure that your hook's logic is consistent with the overall pool behavior and doesn't introduce unexpected side effects.
-- This implementation doesn't change the LP fee (lpFeeOverride is 0). In some cases, you might want to adjust this as well.
-
-As you can see from this example, by using `BeforeSwapDelta`, hooks can implement custom logic such as fees, rebates, or other modifications to the swap parameters, allowing for highly flexible and customizable pool behavior in Uniswap V4.
\ No newline at end of file
diff --git a/docs/contracts/v4/reference/core/types/currency.mdx b/docs/contracts/v4/reference/core/types/currency.mdx
deleted file mode 100644
index 376499b90..000000000
--- a/docs/contracts/v4/reference/core/types/currency.mdx
+++ /dev/null
@@ -1,176 +0,0 @@
----
-title: Currency and CurrencyLibrary
----
-
-`Currency` is a custom type that represents either native currency (ETH) or ERC20 tokens.
-
-## Type Definition
-
-```solidity
-type Currency is address;
-```
-
-## Global Functions
-
-### equals
-
-```solidity
-function equals(Currency currency, Currency other) pure returns (bool)
-```
-
-Checks if two `Currency` values are equal.
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| currency | Currency | The first Currency value |
-| other | Currency | The second Currency value |
-
-Returns `true` if the Currency values are equal, `false` otherwise.
-
-### greaterThan
-
-```solidity
-function greaterThan(Currency currency, Currency other) pure returns (bool)
-```
-
-Compares two `Currency` values based on their underlying addresses.
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| currency | Currency | The first Currency value |
-| other | Currency | The second Currency value |
-
-Returns `true` if the underlying address of `currency` is numerically greater than the underlying address of `other`, `false` otherwise.
-
-Note: This comparison is based on the numerical value of the addresses and does not imply any inherent ordering or value relationship between different currencies. It's primarily used for consistent ordering in data structures.
-
-### lessThan
-
-```solidity
-function lessThan(Currency currency, Currency other) pure returns (bool)
-```
-
-Compares two `Currency` values based on their underlying addresses.
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| currency | Currency | The first Currency value |
-| other | Currency | The second Currency value |
-
-Returns `true` if the underlying address of `currency` is numerically less than the underlying address of `other`, `false` otherwise.
-
-Note: As with `greaterThan`, this comparison is based on address values and does not imply any inherent ordering or value relationship between currencies.
-
-### greaterThanOrEqualTo
-
-```solidity
-function greaterThanOrEqualTo(Currency currency, Currency other) pure returns (bool)
-```
-
-Checks if one `Currency` value is greater than or equal to another, based on their underlying addresses.
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| currency | Currency | The first Currency value |
-| other | Currency | The second Currency value |
-
-Returns `true` if the underlying address of `currency` is numerically greater than or equal to the underlying address of `other`, `false` otherwise.
-
-# CurrencyLibrary
-
-The `CurrencyLibrary` provides utility functions for handling both native currency (ETH) and ERC20 tokens.
-
-## Constants
-
-```solidity
-Currency public constant NATIVE = Currency.wrap(address(0));
-```
-
-`NATIVE` represents the native currency (ETH). It is defined as a `Currency` with the underlying address of `address(0)`.
-
-## Functions
-
-### transfer
-
-```solidity
-function transfer(Currency currency, address to, uint256 amount) internal
-```
-
-Transfers `amount` of `currency` to the `to` address.
-
-| Param Name | Type | Description |
-|------------|----------|---------------------------------------|
-| currency | Currency | The currency to transfer |
-| to | address | The recipient address |
-| amount | uint256 | The amount of currency to transfer |
-
-### balanceOfSelf
-
-```solidity
-function balanceOfSelf(Currency currency) internal view returns (uint256)
-```
-
-Returns the balance of `currency` held by the contract itself.
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| currency | Currency | The currency to check |
-
-Returns the balance of the specified currency.
-
-### balanceOf
-
-```solidity
-function balanceOf(Currency currency, address owner) internal view returns (uint256)
-```
-
-Returns the balance of `currency` held by the `owner` address.
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| currency | Currency | The currency to check |
-| owner | address | The address to check |
-
-Returns the balance of the specified currency for the given address.
-
-### isNative
-
-```solidity
-function isNative(Currency currency) internal pure returns (bool)
-```
-
-Checks if the given `currency` is the native currency (ETH).
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| currency | Currency | The currency to check |
-
-Returns `true` if the currency is native (ETH), `false` otherwise.
-
-### toId
-
-```solidity
-function toId(Currency currency) internal pure returns (uint256)
-```
-
-Converts a `Currency` to its corresponding ID.
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| currency | Currency | The currency to convert |
-
-Returns the ID of the currency.
-
-### fromId
-
-```solidity
-function fromId(uint256 id) internal pure returns (Currency)
-```
-
-Converts an ID to its corresponding `Currency`.
-
-| Param Name | Type | Description |
-|------------|----------|----------------------------|
-| id | uint256 | The ID to convert |
-
-Returns the Currency corresponding to the given ID.
\ No newline at end of file
diff --git a/docs/contracts/v4/reference/core/types/poolkey.mdx b/docs/contracts/v4/reference/core/types/poolkey.mdx
deleted file mode 100644
index 765b33f31..000000000
--- a/docs/contracts/v4/reference/core/types/poolkey.mdx
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: PoolKey
----
-
-`PoolKey` is a crucial struct in Uniswap V4 that uniquely identifies a liquidity pool. It encapsulates all the essential parameters that define a pool's characteristics.
-
-# Structure
-
-```solidity
-struct PoolKey {
- Currency currency0;
- Currency currency1;
- uint24 fee;
- int24 tickSpacing;
- IHooks hooks;
-}
-```
-
-# Fields
-
-| Field Name | Type | Description |
-|-------------|----------|----------------------------------------------------------------------------------------|
-| currency0 | Currency | The lower currency of the pool, sorted numerically |
-| currency1 | Currency | The higher currency of the pool, sorted numerically |
-| fee | uint24 | The pool swap fee, capped at 1,000,000. If the first bit is 1, the pool has a dynamic fee |
-| tickSpacing | int24 | The spacing between ticks for the pool |
-| hooks | IHooks | The address of the hooks contract associated with the pool |
-
-# Important Notes
-
-- The `currency0` and `currency1` fields are always sorted numerically, with `currency0` being the lower value. This ensures consistent pool identification regardless of the order in which tokens are provided.
-- The `fee` field can represent either a static fee or indicate that the pool uses a dynamic fee mechanism.
-- The `tickSpacing` field determines the granularity of price ranges that can be used for liquidity provision.
-- The `hooks` field is an interface of our Hooks that the PoolManager uses to call these functions
\ No newline at end of file
diff --git a/docs/contracts/v4/reference/errors/_category_.json b/docs/contracts/v4/reference/errors/_category_.json
deleted file mode 100644
index 7b00c0be1..000000000
--- a/docs/contracts/v4/reference/errors/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Errors",
- "position": 0,
- "collapsed": false
-}
diff --git a/docs/contracts/v4/reference/errors/errors.mdx b/docs/contracts/v4/reference/errors/errors.mdx
deleted file mode 100644
index c044678f5..000000000
--- a/docs/contracts/v4/reference/errors/errors.mdx
+++ /dev/null
@@ -1,93 +0,0 @@
----
-title: Custom Error Selectors
----
-# Custom Error Selectors
-These are custom error selectors for Uniswap v4 contracts.
-
-## IPoolManager.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|--------------|
-| `IPoolManager.CurrencyNotSettled.selector` | `0x5212cba1` |
-| `IPoolManager.PoolNotInitialized.selector` | `0x486aa307` |
-| `IPoolManager.AlreadyUnlocked.selector` | `0x5090d6c6` |
-| `IPoolManager.ManagerLocked.selector` | `0x54e3ca0d` |
-| `IPoolManager.TickSpacingTooLarge.selector` | `0xb02b5dc2` |
-| `IPoolManager.TickSpacingTooSmall.selector` | `0x16fe7696` |
-| `IPoolManager.CurrenciesOutOfOrderOrEqual.selector` | `0xeaa6c6eb` |
-| `IPoolManager.UnauthorizedDynamicLPFeeUpdate.selector` | `0x30d21641` |
-| `IPoolManager.SwapAmountCannotBeZero.selector` | `0xbe8b8507` |
-| `IPoolManager.NonZeroNativeValue.selector` | `0x19d245cf` |
-
-## Hooks.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|--------------|
-| `Hooks.HookAddressNotValid.selector` | `0xe65af6a0` |
-| `Hooks.InvalidHookResponse.selector` | `0x1e048e1d` |
-| `Hooks.FailedHookCall.selector` | `0x36bc48c5` |
-| `Hooks.HookDeltaExceedsSwapAmount.selector` | `0xfa0b71d6` |
-
-## Pool.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|--------------|
-| `Pool.TicksMisordered.selector` | `0xc4433ed5` |
-| `Pool.TickLowerOutOfBounds.selector` | `0xd5e2f7ab` |
-| `Pool.TickUpperOutOfBounds.selector` | `0x1ad777f8` |
-| `Pool.TickLiquidityOverflow.selector` | `0xb8e3c385` |
-| `Pool.TickNotInitialized.selector` | `0x82a774d3` |
-| `Pool.PoolAlreadyInitialized.selector` | `0x7983c051` |
-| `Pool.PoolNotInitialized.selector` | `0x486aa307` |
-| `Pool.PriceLimitAlreadyExceeded.selector` | `0x7c9c6e8f` |
-| `Pool.PriceLimitOutOfBounds.selector` | `0x9e4d7cc7` |
-| `Pool.NoLiquidityToReceiveFees.selector` | `0xa74f97ab` |
-| `Pool.InvalidFeeForExactOut.selector` | `0x96206246` |
-
-## IProtocolFees.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|--------------|
-| `IProtocolFees.ProtocolFeeCannotBeFetched.selector` | `0x1ee49702` |
-| `IProtocolFees.InvalidProtocolFee.selector` | `0xba97f838` |
-| `IProtocolFees.InvalidCaller.selector` | `0x48f5c3ed` |
-
-## LPFeeLibrary.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|--------------|
-| `LPFeeLibrary.FeeTooLarge.selector` | `0xfc5bee12` |
-
-## Position.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|----------------|
-| `Position.CannotUpdateEmptyPosition.selector` | `0xaefeb924` |
-
-## Reserves.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|----------------|
-| `Reserves.ReservesMustBeSynced.selector` | `0x8774be48` |
-
-## SqrtPriceMath.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|--------------|
-| `SqrtPriceMath.InvalidPriceOrLiquidity.selector` | `0x4f2461b8` |
-| `SqrtPriceMath.InvalidPrice.selector` | `0x00bfc921` |
-| `SqrtPriceMath.NotEnoughLiquidity.selector` | `0x4323a555` |
-| `SqrtPriceMath.PriceOverflow.selector` | `0xf5c787f1` |
-
-## TickBitmap.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|--------------|
-| `TickBitmap.TickMisaligned.selector` | `0xd4d8f3e6` |
-
-## TickMath.sol
-
-| Error Selector | Hex Value |
-|-----------------------------------------------------|--------------|
-| `TickMath.InvalidTick.selector` | `0xce8ef7fc` |
-| `TickMath.InvalidSqrtPrice.selector` | `0x31efafe8` |
\ No newline at end of file
diff --git a/docs/contracts/v4/reference/periphery/PositionDescriptor.md b/docs/contracts/v4/reference/periphery/PositionDescriptor.md
deleted file mode 100644
index e41a18eed..000000000
--- a/docs/contracts/v4/reference/periphery/PositionDescriptor.md
+++ /dev/null
@@ -1,149 +0,0 @@
-# PositionDescriptor
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/PositionDescriptor.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IPositionDescriptor](contracts/v4/reference/periphery/interfaces/IPositionDescriptor.md)
-
-Produces a string containing the data URI for a JSON metadata string
-
-
-## State Variables
-### DAI
-
-```solidity
-address private constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
-```
-
-
-### USDC
-
-```solidity
-address private constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-```
-
-
-### USDT
-
-```solidity
-address private constant USDT = 0xdAC17F958D2ee523a2206206994597C13D831ec7;
-```
-
-
-### TBTC
-
-```solidity
-address private constant TBTC = 0x8dAEBADE922dF735c38C80C7eBD708Af50815fAa;
-```
-
-
-### WBTC
-
-```solidity
-address private constant WBTC = 0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599;
-```
-
-
-### wrappedNative
-
-```solidity
-address public immutable wrappedNative;
-```
-
-
-### nativeCurrencyLabel
-
-```solidity
-string public nativeCurrencyLabel;
-```
-
-
-### poolManager
-
-```solidity
-IPoolManager public immutable poolManager;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _poolManager, address _wrappedNative, string memory _nativeCurrencyLabel);
-```
-
-### tokenURI
-
-Produces the URI describing a particular token ID
-
-*Note this URI may be a data: URI with the JSON contents directly inlined*
-
-
-```solidity
-function tokenURI(IPositionManager positionManager, uint256 tokenId) external view override returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`positionManager`|`IPositionManager`|The position manager for which to describe the token|
-|`tokenId`|`uint256`|The ID of the token for which to produce a description, which may not be valid|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The URI of the ERC721-compliant metadata|
-
-
-### flipRatio
-
-Returns true if currency0 has higher priority than currency1
-
-
-```solidity
-function flipRatio(address currency0, address currency1) public view returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency0`|`address`|The first currency address|
-|`currency1`|`address`|The second currency address|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|flipRatio True if currency0 has higher priority than currency1|
-
-
-### currencyRatioPriority
-
-Returns the priority of a currency.
-For certain currencies on mainnet, the smaller the currency, the higher the priority
-
-
-```solidity
-function currencyRatioPriority(address currency) public view returns (int256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`address`|The currency address|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`int256`|priority The priority of the currency|
-
-
-## Errors
-### InvalidTokenId
-
-```solidity
-error InvalidTokenId(uint256 tokenId);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/PositionManager.md b/docs/contracts/v4/reference/periphery/PositionManager.md
deleted file mode 100644
index 6b8beed60..000000000
--- a/docs/contracts/v4/reference/periphery/PositionManager.md
+++ /dev/null
@@ -1,362 +0,0 @@
-# PositionManager
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/PositionManager.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IPositionManager](contracts/v4/reference/periphery/interfaces/IPositionManager.md), [ERC721Permit_v4](contracts/v4/reference/periphery/base/ERC721Permit_v4.md), [PoolInitializer](contracts/v4/reference/periphery/base/PoolInitializer.md), [Multicall_v4](contracts/v4/reference/periphery/base/Multicall_v4.md), [DeltaResolver](contracts/v4/reference/periphery/base/DeltaResolver.md), [ReentrancyLock](contracts/v4/reference/periphery/base/ReentrancyLock.md), [BaseActionsRouter](contracts/v4/reference/periphery/base/BaseActionsRouter.md), [Notifier](contracts/v4/reference/periphery/base/Notifier.md), [Permit2Forwarder](contracts/v4/reference/periphery/base/Permit2Forwarder.md), [NativeWrapper](contracts/v4/reference/periphery/base/NativeWrapper.md)
-
-The PositionManager (PosM) contract is responsible for creating liquidity positions on v4.
-PosM mints and manages ERC721 tokens associated with each position.
-
-
-## State Variables
-### nextTokenId
-Used to get the ID that will be used for the next minted liquidity position
-
-*The ID of the next token that will be minted. Skips 0*
-
-
-```solidity
-uint256 public nextTokenId = 1;
-```
-
-
-### tokenDescriptor
-
-```solidity
-IPositionDescriptor public immutable tokenDescriptor;
-```
-
-
-### positionInfo
-
-```solidity
-mapping(uint256 tokenId => PositionInfo info) public positionInfo;
-```
-
-
-### poolKeys
-
-```solidity
-mapping(bytes25 poolId => PoolKey poolKey) public poolKeys;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(
- IPoolManager _poolManager,
- IAllowanceTransfer _permit2,
- uint256 _unsubscribeGasLimit,
- IPositionDescriptor _tokenDescriptor,
- IWETH9 _weth9
-)
- BaseActionsRouter(_poolManager)
- Permit2Forwarder(_permit2)
- ERC721Permit_v4("Uniswap v4 Positions NFT", "UNI-V4-POSM")
- Notifier(_unsubscribeGasLimit)
- NativeWrapper(_weth9);
-```
-
-### checkDeadline
-
-Reverts if the deadline has passed
-
-
-```solidity
-modifier checkDeadline(uint256 deadline);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`deadline`|`uint256`|The timestamp at which the call is no longer valid, passed in by the caller|
-
-
-### onlyIfApproved
-
-Reverts if the caller is not the owner or approved for the ERC721 token
-
-*either msg.sender or msgSender() is passed in as the caller
-msgSender() should ONLY be used if this is called from within the unlockCallback, unless the codepath has reentrancy protection*
-
-
-```solidity
-modifier onlyIfApproved(address caller, uint256 tokenId) override;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`caller`|`address`|The address of the caller|
-|`tokenId`|`uint256`|the unique identifier of the ERC721 token|
-
-
-### onlyIfPoolManagerLocked
-
-Enforces that the PoolManager is locked.
-
-
-```solidity
-modifier onlyIfPoolManagerLocked() override;
-```
-
-### tokenURI
-
-
-```solidity
-function tokenURI(uint256 tokenId) public view override returns (string memory);
-```
-
-### modifyLiquidities
-
-Unlocks t1 v4 PoolManager and batches actions for modifying liquidity
-
-*This is the standard entrypoint for the PositionManager*
-
-
-```solidity
-function modifyLiquidities(bytes calldata unlockData, uint256 deadline)
- external
- payable
- isNotLocked
- checkDeadline(deadline);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`unlockData`|`bytes`|is an encoding of actions, and parameters for those actions|
-|`deadline`|`uint256`|is the deadline for the batched actions to be executed|
-
-
-### modifyLiquiditiesWithoutUnlock
-
-Batches actions for modifying liquidity without unlocking v4 PoolManager
-
-*This must be called by a contract that has already unlocked the v4 PoolManager*
-
-
-```solidity
-function modifyLiquiditiesWithoutUnlock(bytes calldata actions, bytes[] calldata params) external payable isNotLocked;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`actions`|`bytes`|the actions to perform|
-|`params`|`bytes[]`|the parameters to provide for the actions|
-
-
-### msgSender
-
-function that returns address considered executor of the actions
-
-*The other context functions, _msgData and _msgValue, are not supported by this contract
-In many contracts this will be the address that calls the initial entry point that calls `_executeActions`
-`msg.sender` shouldn't be used, as this will be the v4 pool manager contract that calls `unlockCallback`
-If using ReentrancyLock.sol, this function can return _getLocker()*
-
-
-```solidity
-function msgSender() public view override returns (address);
-```
-
-### _handleAction
-
-
-```solidity
-function _handleAction(uint256 action, bytes calldata params) internal virtual override;
-```
-
-### _increase
-
-*Calling increase with 0 liquidity will credit the caller with any underlying fees of the position*
-
-
-```solidity
-function _increase(uint256 tokenId, uint256 liquidity, uint128 amount0Max, uint128 amount1Max, bytes calldata hookData)
- internal
- onlyIfApproved(msgSender(), tokenId);
-```
-
-### _decrease
-
-*Calling decrease with 0 liquidity will credit the caller with any underlying fees of the position*
-
-
-```solidity
-function _decrease(uint256 tokenId, uint256 liquidity, uint128 amount0Min, uint128 amount1Min, bytes calldata hookData)
- internal
- onlyIfApproved(msgSender(), tokenId);
-```
-
-### _mint
-
-
-```solidity
-function _mint(
- PoolKey calldata poolKey,
- int24 tickLower,
- int24 tickUpper,
- uint256 liquidity,
- uint128 amount0Max,
- uint128 amount1Max,
- address owner,
- bytes calldata hookData
-) internal;
-```
-
-### _burn
-
-*this is overloaded with ERC721Permit_v4._burn*
-
-
-```solidity
-function _burn(uint256 tokenId, uint128 amount0Min, uint128 amount1Min, bytes calldata hookData)
- internal
- onlyIfApproved(msgSender(), tokenId);
-```
-
-### _settlePair
-
-
-```solidity
-function _settlePair(Currency currency0, Currency currency1) internal;
-```
-
-### _takePair
-
-
-```solidity
-function _takePair(Currency currency0, Currency currency1, address recipient) internal;
-```
-
-### _close
-
-
-```solidity
-function _close(Currency currency) internal;
-```
-
-### _clearOrTake
-
-*integrators may elect to forfeit positive deltas with clear
-if the forfeit amount exceeds the user-specified max, the amount is taken instead*
-
-
-```solidity
-function _clearOrTake(Currency currency, uint256 amountMax) internal;
-```
-
-### _sweep
-
-Sweeps the entire contract balance of specified currency to the recipient
-
-
-```solidity
-function _sweep(Currency currency, address to) internal;
-```
-
-### _modifyLiquidity
-
-
-```solidity
-function _modifyLiquidity(
- PositionInfo info,
- PoolKey memory poolKey,
- int256 liquidityChange,
- bytes32 salt,
- bytes calldata hookData
-) internal returns (BalanceDelta liquidityDelta, BalanceDelta feesAccrued);
-```
-
-### _pay
-
-
-```solidity
-function _pay(Currency currency, address payer, uint256 amount) internal override;
-```
-
-### _setSubscribed
-
-an internal helper used by Notifier
-
-
-```solidity
-function _setSubscribed(uint256 tokenId) internal override;
-```
-
-### _setUnsubscribed
-
-an internal helper used by Notifier
-
-
-```solidity
-function _setUnsubscribed(uint256 tokenId) internal override;
-```
-
-### transferFrom
-
-*overrides solmate transferFrom in case a notification to subscribers is needed*
-
-*will revert if pool manager is locked*
-
-
-```solidity
-function transferFrom(address from, address to, uint256 id) public virtual override onlyIfPoolManagerLocked;
-```
-
-### getPoolAndPositionInfo
-
-
-```solidity
-function getPoolAndPositionInfo(uint256 tokenId) public view returns (PoolKey memory poolKey, PositionInfo info);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolKey`|`PoolKey`|the pool key of the position|
-|`info`|`PositionInfo`|poolKey the pool key of the position|
-
-
-### getPositionLiquidity
-
-*this value can be processed as an amount0 and amount1 by using the LiquidityAmounts library*
-
-
-```solidity
-function getPositionLiquidity(uint256 tokenId) external view returns (uint128 liquidity);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|the position's liquidity, as a liquidityAmount|
-
-
-### _getLiquidity
-
-
-```solidity
-function _getLiquidity(uint256 tokenId, PoolKey memory poolKey, int24 tickLower, int24 tickUpper)
- internal
- view
- returns (uint128 liquidity);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/UniswapV4DeployerCompetition.md b/docs/contracts/v4/reference/periphery/UniswapV4DeployerCompetition.md
deleted file mode 100644
index ae22c747c..000000000
--- a/docs/contracts/v4/reference/periphery/UniswapV4DeployerCompetition.md
+++ /dev/null
@@ -1,122 +0,0 @@
-# t1V4DeployerCompetition
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/UniswapV4DeployerCompetition.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IUniswapV4DeployerCompetition](contracts/v4/reference/periphery/interfaces/IUniswapV4DeployerCompetition.md)
-
-A contract to crowdsource a salt for the best t1 V4 address
-
-
-## State Variables
-### bestAddressSalt
-*The salt for the best address found so far*
-
-
-```solidity
-bytes32 public bestAddressSalt;
-```
-
-
-### bestAddressSubmitter
-*The submitter of the best address found so far*
-
-
-```solidity
-address public bestAddressSubmitter;
-```
-
-
-### competitionDeadline
-*The deadline for the competition*
-
-
-```solidity
-uint256 public immutable competitionDeadline;
-```
-
-
-### initCodeHash
-*The init code hash of the V4 contract*
-
-
-```solidity
-bytes32 public immutable initCodeHash;
-```
-
-
-### deployer
-*The deployer who can initiate the deployment of the v4 PoolManager, until the exclusive deploy deadline.*
-
-*After this deadline anyone can deploy.*
-
-
-```solidity
-address public immutable deployer;
-```
-
-
-### exclusiveDeployDeadline
-*The deadline for exclusive deployment by deployer after deadline*
-
-
-```solidity
-uint256 public immutable exclusiveDeployDeadline;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(
- bytes32 _initCodeHash,
- uint256 _competitionDeadline,
- address _exclusiveDeployer,
- uint256 _exclusiveDeployLength
-);
-```
-
-### updateBestAddress
-
-Updates the best address if the new address has a better vanity score
-
-*The first 20 bytes of the salt must be either address(0) or msg.sender*
-
-
-```solidity
-function updateBestAddress(bytes32 salt) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`salt`|`bytes32`|The salt to use to compute the new address with CREATE2|
-
-
-### deploy
-
-deploys the t1 v4 PoolManager contract
-
-*The bytecode must match the initCodeHash*
-
-
-```solidity
-function deploy(bytes memory bytecode) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`bytecode`|`bytes`|The bytecode of the t1 v4 PoolManager contract|
-
-
-### bestAddress
-
-*returns the best address found so far*
-
-
-```solidity
-function bestAddress() public view returns (address);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/V4Router.md b/docs/contracts/v4/reference/periphery/V4Router.md
deleted file mode 100644
index ba6980ceb..000000000
--- a/docs/contracts/v4/reference/periphery/V4Router.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# V4Router
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/V4Router.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IV4Router](contracts/v4/reference/periphery/interfaces/IV4Router.md), [BaseActionsRouter](contracts/v4/reference/periphery/base/BaseActionsRouter.md), [DeltaResolver](contracts/v4/reference/periphery/base/DeltaResolver.md)
-
-Abstract contract that contains all internal logic needed for routing through t1 v4 pools
-
-*the entry point to executing actions in this contract is calling `BaseActionsRouter._executeActions`
-An inheriting contract should call _executeActions at the point that they wish actions to be executed*
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _poolManager) BaseActionsRouter(_poolManager);
-```
-
-### _handleAction
-
-
-```solidity
-function _handleAction(uint256 action, bytes calldata params) internal override;
-```
-
-### _swapExactInputSingle
-
-
-```solidity
-function _swapExactInputSingle(IV4Router.ExactInputSingleParams calldata params) private;
-```
-
-### _swapExactInput
-
-
-```solidity
-function _swapExactInput(IV4Router.ExactInputParams calldata params) private;
-```
-
-### _swapExactOutputSingle
-
-
-```solidity
-function _swapExactOutputSingle(IV4Router.ExactOutputSingleParams calldata params) private;
-```
-
-### _swapExactOutput
-
-
-```solidity
-function _swapExactOutput(IV4Router.ExactOutputParams calldata params) private;
-```
-
-### _swap
-
-
-```solidity
-function _swap(PoolKey memory poolKey, bool zeroForOne, int256 amountSpecified, bytes calldata hookData)
- private
- returns (int128 reciprocalAmount);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/_category_.json b/docs/contracts/v4/reference/periphery/_category_.json
deleted file mode 100644
index bef23ca2d..000000000
--- a/docs/contracts/v4/reference/periphery/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Periphery",
- "position": 2,
- "collapsed": true
-}
diff --git a/docs/contracts/v4/reference/periphery/base/BaseActionsRouter.md b/docs/contracts/v4/reference/periphery/base/BaseActionsRouter.md
deleted file mode 100644
index 803b11cb3..000000000
--- a/docs/contracts/v4/reference/periphery/base/BaseActionsRouter.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# BaseActionsRouter
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/BaseActionsRouter.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[SafeCallback](contracts/v4/reference/periphery/base/SafeCallback.md)
-
-Abstract contract for performing a combination of actions on t1 v4.
-
-*Suggested uint256 action values are defined in Actions.sol, however any definition can be used*
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _poolManager) SafeCallback(_poolManager);
-```
-
-### _executeActions
-
-internal function that triggers the execution of a set of actions on v4
-
-*inheriting contracts should call this function to trigger execution*
-
-
-```solidity
-function _executeActions(bytes calldata unlockData) internal;
-```
-
-### _unlockCallback
-
-function that is called by the PoolManager through the SafeCallback.unlockCallback
-
-
-```solidity
-function _unlockCallback(bytes calldata data) internal override returns (bytes memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`data`|`bytes`|Abi encoding of (bytes actions, bytes[] params) where params[i] is the encoded parameters for actions[i]|
-
-
-### _executeActionsWithoutUnlock
-
-
-```solidity
-function _executeActionsWithoutUnlock(bytes calldata actions, bytes[] calldata params) internal;
-```
-
-### _handleAction
-
-function to handle the parsing and execution of an action and its parameters
-
-
-```solidity
-function _handleAction(uint256 action, bytes calldata params) internal virtual;
-```
-
-### msgSender
-
-function that returns address considered executor of the actions
-
-*The other context functions, _msgData and _msgValue, are not supported by this contract
-In many contracts this will be the address that calls the initial entry point that calls `_executeActions`
-`msg.sender` shouldn't be used, as this will be the v4 pool manager contract that calls `unlockCallback`
-If using ReentrancyLock.sol, this function can return _getLocker()*
-
-
-```solidity
-function msgSender() public view virtual returns (address);
-```
-
-### _mapRecipient
-
-Calculates the address for a action
-
-
-```solidity
-function _mapRecipient(address recipient) internal view returns (address);
-```
-
-### _mapPayer
-
-Calculates the payer for an action
-
-
-```solidity
-function _mapPayer(bool payerIsUser) internal view returns (address);
-```
-
-## Errors
-### InputLengthMismatch
-emitted when different numbers of parameters and actions are provided
-
-
-```solidity
-error InputLengthMismatch();
-```
-
-### UnsupportedAction
-emitted when an inheriting contract does not support an action
-
-
-```solidity
-error UnsupportedAction(uint256 action);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/BaseHook.md b/docs/contracts/v4/reference/periphery/base/BaseHook.md
deleted file mode 100644
index cee0f211c..000000000
--- a/docs/contracts/v4/reference/periphery/base/BaseHook.md
+++ /dev/null
@@ -1,368 +0,0 @@
-# BaseHook
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/hooks/BaseHook.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-IHooks, [SafeCallback](contracts/v4/reference/periphery/base/SafeCallback.md)
-
-abstract contract for hook implementations
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _manager) SafeCallback(_manager);
-```
-
-### selfOnly
-
-*Only this address may call this function*
-
-
-```solidity
-modifier selfOnly();
-```
-
-### onlyValidPools
-
-*Only pools with hooks set to this contract may call this function*
-
-
-```solidity
-modifier onlyValidPools(IHooks hooks);
-```
-
-### getHookPermissions
-
-Returns a struct of permissions to signal which hook functions are to be implemented
-
-*Used at deployment to validate the address correctly represents the expected permissions*
-
-
-```solidity
-function getHookPermissions() public pure virtual returns (Hooks.Permissions memory);
-```
-
-### validateHookAddress
-
-Validates the deployed hook address agrees with the expected permissions of the hook
-
-*this function is virtual so that we can override it during testing,
-which allows us to deploy an implementation to any address
-and then etch the bytecode into the correct address*
-
-
-```solidity
-function validateHookAddress(BaseHook _this) internal pure virtual;
-```
-
-### _unlockCallback
-
-
-```solidity
-function _unlockCallback(bytes calldata data) internal virtual override returns (bytes memory);
-```
-
-### beforeInitialize
-
-The hook called before the state of a pool is initialized
-
-
-```solidity
-function beforeInitialize(address, PoolKey calldata, uint160) external virtual returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`uint160`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### afterInitialize
-
-The hook called after the state of a pool is initialized
-
-
-```solidity
-function afterInitialize(address, PoolKey calldata, uint160, int24) external virtual returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`uint160`||
-|``|`int24`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### beforeAddLiquidity
-
-The hook called before liquidity is added
-
-
-```solidity
-function beforeAddLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, bytes calldata)
- external
- virtual
- returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`IPoolManager.ModifyLiquidityParams`||
-|``|`bytes`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### beforeRemoveLiquidity
-
-The hook called before liquidity is removed
-
-
-```solidity
-function beforeRemoveLiquidity(address, PoolKey calldata, IPoolManager.ModifyLiquidityParams calldata, bytes calldata)
- external
- virtual
- returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`IPoolManager.ModifyLiquidityParams`||
-|``|`bytes`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### afterAddLiquidity
-
-The hook called after liquidity is added
-
-
-```solidity
-function afterAddLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata
-) external virtual returns (bytes4, BalanceDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`IPoolManager.ModifyLiquidityParams`||
-|``|`BalanceDelta`||
-|``|`BalanceDelta`||
-|``|`bytes`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-|``|`BalanceDelta`|BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency|
-
-
-### afterRemoveLiquidity
-
-The hook called after liquidity is removed
-
-
-```solidity
-function afterRemoveLiquidity(
- address,
- PoolKey calldata,
- IPoolManager.ModifyLiquidityParams calldata,
- BalanceDelta,
- BalanceDelta,
- bytes calldata
-) external virtual returns (bytes4, BalanceDelta);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`IPoolManager.ModifyLiquidityParams`||
-|``|`BalanceDelta`||
-|``|`BalanceDelta`||
-|``|`bytes`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-|``|`BalanceDelta`|BalanceDelta The hook's delta in token0 and token1. Positive: the hook is owed/took currency, negative: the hook owes/sent currency|
-
-
-### beforeSwap
-
-The hook called before a swap
-
-
-```solidity
-function beforeSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, bytes calldata)
- external
- virtual
- returns (bytes4, BeforeSwapDelta, uint24);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`IPoolManager.SwapParams`||
-|``|`bytes`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-|``|`BeforeSwapDelta`|BeforeSwapDelta The hook's delta in specified and unspecified currencies. Positive: the hook is owed/took currency, negative: the hook owes/sent currency|
-|``|`uint24`|uint24 Optionally override the lp fee, only used if three conditions are met: 1. the Pool has a dynamic fee, 2. the value's 2nd highest bit is set (23rd bit, 0x400000), and 3. the value is less than or equal to the maximum fee (1 million)|
-
-
-### afterSwap
-
-The hook called after a swap
-
-
-```solidity
-function afterSwap(address, PoolKey calldata, IPoolManager.SwapParams calldata, BalanceDelta, bytes calldata)
- external
- virtual
- returns (bytes4, int128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`IPoolManager.SwapParams`||
-|``|`BalanceDelta`||
-|``|`bytes`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-|``|`int128`|int128 The hook's delta in unspecified currency. Positive: the hook is owed/took currency, negative: the hook owes/sent currency|
-
-
-### beforeDonate
-
-The hook called before donate
-
-
-```solidity
-function beforeDonate(address, PoolKey calldata, uint256, uint256, bytes calldata) external virtual returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`uint256`||
-|``|`uint256`||
-|``|`bytes`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-### afterDonate
-
-The hook called after donate
-
-
-```solidity
-function afterDonate(address, PoolKey calldata, uint256, uint256, bytes calldata) external virtual returns (bytes4);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`address`||
-|``|`PoolKey`||
-|``|`uint256`||
-|``|`uint256`||
-|``|`bytes`||
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes4`|bytes4 The function selector for the hook|
-
-
-## Errors
-### NotSelf
-
-```solidity
-error NotSelf();
-```
-
-### InvalidPool
-
-```solidity
-error InvalidPool();
-```
-
-### LockFailure
-
-```solidity
-error LockFailure();
-```
-
-### HookNotImplemented
-
-```solidity
-error HookNotImplemented();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/BaseV4Quoter.md b/docs/contracts/v4/reference/periphery/base/BaseV4Quoter.md
deleted file mode 100644
index 5f209f8a6..000000000
--- a/docs/contracts/v4/reference/periphery/base/BaseV4Quoter.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# BaseV4Quoter
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/BaseV4Quoter.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[SafeCallback](contracts/v4/reference/periphery/base/SafeCallback.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _poolManager) SafeCallback(_poolManager);
-```
-
-### selfOnly
-
-*Only this address may call this function. Used to mimic internal functions, using an
-external call to catch and parse revert reasons*
-
-
-```solidity
-modifier selfOnly();
-```
-
-### _unlockCallback
-
-
-```solidity
-function _unlockCallback(bytes calldata data) internal override returns (bytes memory);
-```
-
-### _swap
-
-if amountSpecified < 0, the swap is exactInput, otherwise exactOutput
-
-*Execute a swap and return the balance delta*
-
-
-```solidity
-function _swap(PoolKey memory poolKey, bool zeroForOne, int256 amountSpecified, bytes calldata hookData)
- internal
- returns (BalanceDelta swapDelta);
-```
-
-## Errors
-### NotEnoughLiquidity
-
-```solidity
-error NotEnoughLiquidity(PoolId poolId);
-```
-
-### NotSelf
-
-```solidity
-error NotSelf();
-```
-
-### UnexpectedCallSuccess
-
-```solidity
-error UnexpectedCallSuccess();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/DeltaResolver.md b/docs/contracts/v4/reference/periphery/base/DeltaResolver.md
deleted file mode 100644
index 6138f6d54..000000000
--- a/docs/contracts/v4/reference/periphery/base/DeltaResolver.md
+++ /dev/null
@@ -1,176 +0,0 @@
-# DeltaResolver
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/DeltaResolver.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[ImmutableState](contracts/v4/reference/periphery/base/ImmutableState.md)
-
-Abstract contract used to sync, send, and settle funds to the pool manager
-
-*Note that sync() is called before any erc-20 transfer in `settle`.*
-
-
-## Functions
-### _take
-
-Take an amount of currency out of the PoolManager
-
-*Returns early if the amount is 0*
-
-
-```solidity
-function _take(Currency currency, address recipient, uint256 amount) internal;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`Currency`|Currency to take|
-|`recipient`|`address`|Address to receive the currency|
-|`amount`|`uint256`|Amount to take|
-
-
-### _settle
-
-Pay and settle a currency to the PoolManager
-
-*The implementing contract must ensure that the `payer` is a secure address*
-
-*Returns early if the amount is 0*
-
-
-```solidity
-function _settle(Currency currency, address payer, uint256 amount) internal;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`Currency`|Currency to settle|
-|`payer`|`address`|Address of the payer|
-|`amount`|`uint256`|Amount to send|
-
-
-### _pay
-
-Abstract function for contracts to implement paying tokens to the poolManager
-
-*The recipient of the payment should be the poolManager*
-
-
-```solidity
-function _pay(Currency token, address payer, uint256 amount) internal virtual;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`token`|`Currency`|The token to settle. This is known not to be the native currency|
-|`payer`|`address`|The address who should pay tokens|
-|`amount`|`uint256`|The number of tokens to send|
-
-
-### _getFullDebt
-
-Obtain the full amount owed by this contract (negative delta)
-
-
-```solidity
-function _getFullDebt(Currency currency) internal view returns (uint256 amount);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`Currency`|Currency to get the delta for|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amount`|`uint256`|The amount owed by this contract as a uint256|
-
-
-### _getFullCredit
-
-Obtain the full credit owed to this contract (positive delta)
-
-
-```solidity
-function _getFullCredit(Currency currency) internal view returns (uint256 amount);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`Currency`|Currency to get the delta for|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amount`|`uint256`|The amount owed to this contract as a uint256|
-
-
-### _mapSettleAmount
-
-Calculates the amount for a settle action
-
-
-```solidity
-function _mapSettleAmount(uint256 amount, Currency currency) internal view returns (uint256);
-```
-
-### _mapTakeAmount
-
-Calculates the amount for a take action
-
-
-```solidity
-function _mapTakeAmount(uint256 amount, Currency currency) internal view returns (uint256);
-```
-
-### _mapWrapUnwrapAmount
-
-Calculates the sanitized amount before wrapping/unwrapping.
-
-
-```solidity
-function _mapWrapUnwrapAmount(Currency inputCurrency, uint256 amount, Currency outputCurrency)
- internal
- view
- returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`inputCurrency`|`Currency`|The currency, either native or wrapped native, that this contract holds|
-|`amount`|`uint256`|The amount to wrap or unwrap. Can be CONTRACT_BALANCE, OPEN_DELTA or a specific amount|
-|`outputCurrency`|`Currency`|The currency after the wrap/unwrap that the user may owe a balance in on the poolManager|
-
-
-## Errors
-### DeltaNotPositive
-Emitted trying to settle a positive delta.
-
-
-```solidity
-error DeltaNotPositive(Currency currency);
-```
-
-### DeltaNotNegative
-Emitted trying to take a negative delta.
-
-
-```solidity
-error DeltaNotNegative(Currency currency);
-```
-
-### InsufficientBalance
-Emitted when the contract does not have enough balance to wrap or unwrap.
-
-
-```solidity
-error InsufficientBalance();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/EIP712_v4.md b/docs/contracts/v4/reference/periphery/base/EIP712_v4.md
deleted file mode 100644
index 6e6748bf1..000000000
--- a/docs/contracts/v4/reference/periphery/base/EIP712_v4.md
+++ /dev/null
@@ -1,87 +0,0 @@
-# EIP712_v4
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/EIP712_v4.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IEIP712_v4](contracts/v4/reference/periphery/interfaces/IEIP712_v4.md)
-
-Generic EIP712 implementation
-
-*Maintains cross-chain replay protection in the event of a fork*
-
-*Should not be delegatecall'd because DOMAIN_SEPARATOR returns the cached hash and does not recompute with the delegatecallers address*
-
-*Reference: https://github.com/Uniswap/permit2/blob/3f17e8db813189a03950dc7fc8382524a095c053/src/EIP712.sol*
-
-*Reference: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/7bd2b2aaf68c21277097166a9a51eb72ae239b34/contracts/utils/cryptography/EIP712.sol*
-
-
-## State Variables
-### _CACHED_DOMAIN_SEPARATOR
-
-```solidity
-bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;
-```
-
-
-### _CACHED_CHAIN_ID
-
-```solidity
-uint256 private immutable _CACHED_CHAIN_ID;
-```
-
-
-### _HASHED_NAME
-
-```solidity
-bytes32 private immutable _HASHED_NAME;
-```
-
-
-### _TYPE_HASH
-
-```solidity
-bytes32 private constant _TYPE_HASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(string memory name);
-```
-
-### DOMAIN_SEPARATOR
-
-Returns the domain separator for the current chain.
-
-
-```solidity
-function DOMAIN_SEPARATOR() public view returns (bytes32);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes32`|bytes32 The domain separator|
-
-
-### _buildDomainSeparator
-
-Builds a domain separator using the current chainId and contract address.
-
-
-```solidity
-function _buildDomainSeparator() private view returns (bytes32);
-```
-
-### _hashTypedData
-
-Creates an EIP-712 typed data hash
-
-
-```solidity
-function _hashTypedData(bytes32 dataHash) internal view returns (bytes32 digest);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/ERC721Permit_v4.md b/docs/contracts/v4/reference/periphery/base/ERC721Permit_v4.md
deleted file mode 100644
index d82aa5e8a..000000000
--- a/docs/contracts/v4/reference/periphery/base/ERC721Permit_v4.md
+++ /dev/null
@@ -1,145 +0,0 @@
-# ERC721Permit_v4
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/ERC721Permit_v4.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-ERC721, [IERC721Permit_v4](contracts/v4/reference/periphery/interfaces/IERC721Permit_v4.md), [EIP712_v4](contracts/v4/reference/periphery/base/EIP712_v4.md), [UnorderedNonce](contracts/v4/reference/periphery/base/UnorderedNonce.md)
-
-Nonfungible tokens that support an approve via signature, i.e. permit
-
-
-## Functions
-### constructor
-
-Computes the nameHash and versionHash
-
-
-```solidity
-constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) EIP712_v4(name_);
-```
-
-### checkSignatureDeadline
-
-Checks if the block's timestamp is before a signature's deadline
-
-
-```solidity
-modifier checkSignatureDeadline(uint256 deadline);
-```
-
-### permit
-
-Approve of a specific token ID for spending by spender via signature
-
-*payable so it can be multicalled with NATIVE related actions*
-
-
-```solidity
-function permit(address spender, uint256 tokenId, uint256 deadline, uint256 nonce, bytes calldata signature)
- external
- payable
- checkSignatureDeadline(deadline);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`spender`|`address`|The account that is being approved|
-|`tokenId`|`uint256`|The ID of the token that is being approved for spending|
-|`deadline`|`uint256`|The deadline timestamp by which the call must be mined for the approve to work|
-|`nonce`|`uint256`|a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word|
-|`signature`|`bytes`|Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)|
-
-
-### permitForAll
-
-Set an operator with full permission to an owner's tokens via signature
-
-*payable so it can be multicalled with NATIVE related actions*
-
-
-```solidity
-function permitForAll(
- address owner,
- address operator,
- bool approved,
- uint256 deadline,
- uint256 nonce,
- bytes calldata signature
-) external payable checkSignatureDeadline(deadline);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|The address that is setting the operator|
-|`operator`|`address`|The address that will be set as an operator for the owner|
-|`approved`|`bool`|The permission to set on the operator|
-|`deadline`|`uint256`|The deadline timestamp by which the call must be mined for the approve to work|
-|`nonce`|`uint256`|a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word|
-|`signature`|`bytes`|Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)|
-
-
-### setApprovalForAll
-
-Enable or disable approval for a third party ("operator") to manage
-all of `msg.sender`'s assets
-
-*Emits the ApprovalForAll event. The contract MUST allow
-multiple operators per owner.*
-
-*Override Solmate's ERC721 setApprovalForAll so setApprovalForAll() and permit() share the _approveForAll method*
-
-
-```solidity
-function setApprovalForAll(address operator, bool approved) public override;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`operator`|`address`|Address to add to the set of authorized operators|
-|`approved`|`bool`|True if the operator is approved, false to revoke approval|
-
-
-### _approveForAll
-
-
-```solidity
-function _approveForAll(address owner, address operator, bool approved) internal;
-```
-
-### approve
-
-Change or reaffirm the approved address for an NFT
-
-*override Solmate's ERC721 approve so approve() and permit() share the _approve method
-Passing a spender address of zero can be used to remove any outstanding approvals
-Throws error unless `msg.sender` is the current NFT owner,
-or an authorized operator of the current owner.*
-
-
-```solidity
-function approve(address spender, uint256 id) public override;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`spender`|`address`|The new approved NFT controller|
-|`id`|`uint256`|The tokenId of the NFT to approve|
-
-
-### _approve
-
-
-```solidity
-function _approve(address owner, address spender, uint256 id) internal;
-```
-
-### _isApprovedOrOwner
-
-
-```solidity
-function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/ImmutableState.md b/docs/contracts/v4/reference/periphery/base/ImmutableState.md
deleted file mode 100644
index 8039d5d29..000000000
--- a/docs/contracts/v4/reference/periphery/base/ImmutableState.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# ImmutableState
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/ImmutableState.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IImmutableState](contracts/v4/reference/periphery/interfaces/IImmutableState.md)
-
-A collection of immutable state variables, commonly used across multiple contracts
-
-
-## State Variables
-### poolManager
-The t1 v4 PoolManager contract
-
-
-```solidity
-IPoolManager public immutable poolManager;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _poolManager);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/Multicall_v4.md b/docs/contracts/v4/reference/periphery/base/Multicall_v4.md
deleted file mode 100644
index 61625ecdc..000000000
--- a/docs/contracts/v4/reference/periphery/base/Multicall_v4.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Multicall_v4
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/Multicall_v4.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IMulticall_v4](contracts/v4/reference/periphery/interfaces/IMulticall_v4.md)
-
-Enables calling multiple methods in a single call to the contract
-
-
-## Functions
-### multicall
-
-Call multiple functions in the current contract and return the data from all of them if they all succeed
-
-*The `msg.value` is passed onto all subcalls, even if a previous subcall has consumed the ether.
-Subcalls can instead use `address(this).value` to see the available ETH, and consume it using {value: x}.*
-
-
-```solidity
-function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`data`|`bytes[]`|The encoded function data for each of the calls to make to this contract|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`results`|`bytes[]`|The results from each of the calls passed in via data|
-
-
diff --git a/docs/contracts/v4/reference/periphery/base/NativeWrapper.md b/docs/contracts/v4/reference/periphery/base/NativeWrapper.md
deleted file mode 100644
index c97b5c7df..000000000
--- a/docs/contracts/v4/reference/periphery/base/NativeWrapper.md
+++ /dev/null
@@ -1,61 +0,0 @@
-# NativeWrapper
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/NativeWrapper.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[ImmutableState](contracts/v4/reference/periphery/base/ImmutableState.md)
-
-Used for wrapping and unwrapping native
-
-
-## State Variables
-### WETH9
-The address for WETH9
-
-
-```solidity
-IWETH9 public immutable WETH9;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IWETH9 _weth9);
-```
-
-### _wrap
-
-*The amount should already be <= the current balance in this contract.*
-
-
-```solidity
-function _wrap(uint256 amount) internal;
-```
-
-### _unwrap
-
-*The amount should already be <= the current balance in this contract.*
-
-
-```solidity
-function _unwrap(uint256 amount) internal;
-```
-
-### receive
-
-
-```solidity
-receive() external payable;
-```
-
-## Errors
-### InvalidEthSender
-Thrown when an unexpected address sends ETH to this contract
-
-
-```solidity
-error InvalidEthSender();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/Notifier.md b/docs/contracts/v4/reference/periphery/base/Notifier.md
deleted file mode 100644
index 787b9a04e..000000000
--- a/docs/contracts/v4/reference/periphery/base/Notifier.md
+++ /dev/null
@@ -1,152 +0,0 @@
-# Notifier
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/Notifier.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[INotifier](contracts/v4/reference/periphery/interfaces/INotifier.md)
-
-Notifier is used to opt in to sending updates to external contracts about position modifications or transfers
-
-
-## State Variables
-### NO_SUBSCRIBER
-
-```solidity
-ISubscriber private constant NO_SUBSCRIBER = ISubscriber(address(0));
-```
-
-
-### unsubscribeGasLimit
-Returns and determines the maximum allowable gas-used for notifying unsubscribe
-
-
-```solidity
-uint256 public immutable unsubscribeGasLimit;
-```
-
-
-### subscriber
-Returns the subscriber for a respective position
-
-
-```solidity
-mapping(uint256 tokenId => ISubscriber subscriber) public subscriber;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(uint256 _unsubscribeGasLimit);
-```
-
-### onlyIfApproved
-
-Only allow callers that are approved as spenders or operators of the tokenId
-
-*to be implemented by the parent contract (PositionManager)*
-
-
-```solidity
-modifier onlyIfApproved(address caller, uint256 tokenId) virtual;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`caller`|`address`|the address of the caller|
-|`tokenId`|`uint256`|the tokenId of the position|
-
-
-### onlyIfPoolManagerLocked
-
-Enforces that the PoolManager is locked.
-
-
-```solidity
-modifier onlyIfPoolManagerLocked() virtual;
-```
-
-### _setUnsubscribed
-
-
-```solidity
-function _setUnsubscribed(uint256 tokenId) internal virtual;
-```
-
-### _setSubscribed
-
-
-```solidity
-function _setSubscribed(uint256 tokenId) internal virtual;
-```
-
-### subscribe
-
-Enables the subscriber to receive notifications for a respective position
-
-*Calling subscribe when a position is already subscribed will revert*
-
-
-```solidity
-function subscribe(uint256 tokenId, address newSubscriber, bytes calldata data)
- external
- payable
- onlyIfPoolManagerLocked
- onlyIfApproved(msg.sender, tokenId);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-|`newSubscriber`|`address`|the address of the subscriber contract|
-|`data`|`bytes`|caller-provided data that's forwarded to the subscriber contract|
-
-
-### unsubscribe
-
-Removes the subscriber from receiving notifications for a respective position
-
-*Callers must specify a high gas limit (remaining gas should be higher than unsubscriberGasLimit) such that the subscriber can be notified*
-
-
-```solidity
-function unsubscribe(uint256 tokenId) external payable onlyIfPoolManagerLocked onlyIfApproved(msg.sender, tokenId);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-
-
-### _unsubscribe
-
-
-```solidity
-function _unsubscribe(uint256 tokenId) internal;
-```
-
-### _notifyModifyLiquidity
-
-
-```solidity
-function _notifyModifyLiquidity(uint256 tokenId, int256 liquidityChange, BalanceDelta feesAccrued) internal;
-```
-
-### _notifyTransfer
-
-
-```solidity
-function _notifyTransfer(uint256 tokenId, address previousOwner, address newOwner) internal;
-```
-
-### _call
-
-
-```solidity
-function _call(address target, bytes memory encodedCall) internal returns (bool success);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/Permit2Forwarder.md b/docs/contracts/v4/reference/periphery/base/Permit2Forwarder.md
deleted file mode 100644
index 2be890f00..000000000
--- a/docs/contracts/v4/reference/periphery/base/Permit2Forwarder.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# Permit2Forwarder
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/Permit2Forwarder.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-PermitForwarder allows permitting this contract as a spender on permit2
-
-*This contract does not enforce the spender to be this contract, but that is the intended use case*
-
-
-## State Variables
-### permit2
-the Permit2 contract to forward approvals
-
-
-```solidity
-IAllowanceTransfer public immutable permit2;
-```
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IAllowanceTransfer _permit2);
-```
-
-### permit
-
-allows forwarding a single permit to permit2
-
-*this function is payable to allow multicall with NATIVE based actions*
-
-
-```solidity
-function permit(address owner, IAllowanceTransfer.PermitSingle calldata permitSingle, bytes calldata signature)
- external
- payable
- returns (bytes memory err);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|the owner of the tokens|
-|`permitSingle`|`IAllowanceTransfer.PermitSingle`|the permit data|
-|`signature`|`bytes`|the signature of the permit; abi.encodePacked(r, s, v)|
-
-
-### permitBatch
-
-allows forwarding batch permits to permit2
-
-*this function is payable to allow multicall with NATIVE based actions*
-
-
-```solidity
-function permitBatch(address owner, IAllowanceTransfer.PermitBatch calldata _permitBatch, bytes calldata signature)
- external
- payable
- returns (bytes memory err);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|the owner of the tokens|
-|`_permitBatch`|`IAllowanceTransfer.PermitBatch`|a batch of approvals|
-|`signature`|`bytes`|the signature of the permit; abi.encodePacked(r, s, v)|
-
-
diff --git a/docs/contracts/v4/reference/periphery/base/PoolInitializer.md b/docs/contracts/v4/reference/periphery/base/PoolInitializer.md
deleted file mode 100644
index 3a7127d12..000000000
--- a/docs/contracts/v4/reference/periphery/base/PoolInitializer.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# PoolInitializer
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/PoolInitializer.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[ImmutableState](contracts/v4/reference/periphery/base/ImmutableState.md)
-
-Initializes a t1 v4 Pool
-
-*Enables create pool + mint liquidity in a single transaction with multicall*
-
-
-## Functions
-### initializePool
-
-Initialize a t1 v4 Pool
-
-
-```solidity
-function initializePool(PoolKey calldata key, uint160 sqrtPriceX96) external payable returns (int24);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`key`|`PoolKey`|the PoolKey of the pool to initialize|
-|`sqrtPriceX96`|`uint160`|the initial sqrtPriceX96 of the pool|
-
-
diff --git a/docs/contracts/v4/reference/periphery/base/ReentrancyLock.md b/docs/contracts/v4/reference/periphery/base/ReentrancyLock.md
deleted file mode 100644
index ce94a6051..000000000
--- a/docs/contracts/v4/reference/periphery/base/ReentrancyLock.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# ReentrancyLock
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/ReentrancyLock.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-A transient reentrancy lock, that stores the caller's address as the lock
-
-
-## Functions
-### isNotLocked
-
-
-```solidity
-modifier isNotLocked();
-```
-
-### _getLocker
-
-
-```solidity
-function _getLocker() internal view returns (address);
-```
-
-## Errors
-### ContractLocked
-
-```solidity
-error ContractLocked();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/SafeCallback.md b/docs/contracts/v4/reference/periphery/base/SafeCallback.md
deleted file mode 100644
index 0f4bd0073..000000000
--- a/docs/contracts/v4/reference/periphery/base/SafeCallback.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# SafeCallback
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/SafeCallback.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[ImmutableState](contracts/v4/reference/periphery/base/ImmutableState.md), IUnlockCallback
-
-A contract that only allows the t1 v4 PoolManager to call the unlockCallback
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _poolManager) ImmutableState(_poolManager);
-```
-
-### onlyPoolManager
-
-Only allow calls from the PoolManager contract
-
-
-```solidity
-modifier onlyPoolManager();
-```
-
-### unlockCallback
-
-Called by the pool manager on `msg.sender` when the manager is unlocked
-
-*We force the onlyPoolManager modifier by exposing a virtual function after the onlyPoolManager check.*
-
-
-```solidity
-function unlockCallback(bytes calldata data) external onlyPoolManager returns (bytes memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`data`|`bytes`|The data that was passed to the call to unlock|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes`|Any data that you want to be returned from the unlock call|
-
-
-### _unlockCallback
-
-*to be implemented by the child contract, to safely guarantee the logic is only executed by the PoolManager*
-
-
-```solidity
-function _unlockCallback(bytes calldata data) internal virtual returns (bytes memory);
-```
-
-## Errors
-### NotPoolManager
-Thrown when calling unlockCallback where the caller is not PoolManager
-
-
-```solidity
-error NotPoolManager();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/base/UnorderedNonce.md b/docs/contracts/v4/reference/periphery/base/UnorderedNonce.md
deleted file mode 100644
index 6c3ef1e39..000000000
--- a/docs/contracts/v4/reference/periphery/base/UnorderedNonce.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# UnorderedNonce
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/base/UnorderedNonce.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Contract state and methods for using unordered nonces in signatures
-
-
-## State Variables
-### nonces
-mapping of nonces consumed by each address, where a nonce is a single bit on the 256-bit bitmap
-
-*word is at most type(uint248).max*
-
-
-```solidity
-mapping(address owner => mapping(uint256 word => uint256 bitmap)) public nonces;
-```
-
-
-## Functions
-### _useUnorderedNonce
-
-Consume a nonce, reverting if it has already been used
-
-
-```solidity
-function _useUnorderedNonce(address owner, uint256 nonce) internal;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|address, the owner/signer of the nonce|
-|`nonce`|`uint256`|uint256, the nonce to consume. The top 248 bits are the word, the bottom 8 bits indicate the bit position|
-
-
-### revokeNonce
-
-Revoke a nonce by spending it, preventing it from being used again
-
-*Used in cases where a valid nonce has not been broadcasted onchain, and the owner wants to revoke the validity of the nonce*
-
-*payable so it can be multicalled with native-token related actions*
-
-
-```solidity
-function revokeNonce(uint256 nonce) external payable;
-```
-
-## Errors
-### NonceAlreadyUsed
-
-```solidity
-error NonceAlreadyUsed();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IEIP712_v4.md b/docs/contracts/v4/reference/periphery/interfaces/IEIP712_v4.md
deleted file mode 100644
index a952f9023..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IEIP712_v4.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# IEIP712_v4
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IEIP712_v4.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-This interface is used for an EIP712 implementation
-
-
-## Functions
-### DOMAIN_SEPARATOR
-
-Returns the domain separator for the current chain.
-
-
-```solidity
-function DOMAIN_SEPARATOR() external view returns (bytes32);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bytes32`|bytes32 The domain separator|
-
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IERC721Permit_v4.md b/docs/contracts/v4/reference/periphery/interfaces/IERC721Permit_v4.md
deleted file mode 100644
index daf245ea2..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IERC721Permit_v4.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# IERC721Permit_v4
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IERC721Permit_v4.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Extension to ERC721 that includes a permit function for signature based approvals
-
-
-## Functions
-### permit
-
-Approve of a specific token ID for spending by spender via signature
-
-*payable so it can be multicalled with NATIVE related actions*
-
-
-```solidity
-function permit(address spender, uint256 tokenId, uint256 deadline, uint256 nonce, bytes calldata signature)
- external
- payable;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`spender`|`address`|The account that is being approved|
-|`tokenId`|`uint256`|The ID of the token that is being approved for spending|
-|`deadline`|`uint256`|The deadline timestamp by which the call must be mined for the approve to work|
-|`nonce`|`uint256`|a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word|
-|`signature`|`bytes`|Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)|
-
-
-### permitForAll
-
-Set an operator with full permission to an owner's tokens via signature
-
-*payable so it can be multicalled with NATIVE related actions*
-
-
-```solidity
-function permitForAll(
- address owner,
- address operator,
- bool approved,
- uint256 deadline,
- uint256 nonce,
- bytes calldata signature
-) external payable;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`owner`|`address`|The address that is setting the operator|
-|`operator`|`address`|The address that will be set as an operator for the owner|
-|`approved`|`bool`|The permission to set on the operator|
-|`deadline`|`uint256`|The deadline timestamp by which the call must be mined for the approve to work|
-|`nonce`|`uint256`|a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word|
-|`signature`|`bytes`|Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)|
-
-
-## Errors
-### SignatureDeadlineExpired
-
-```solidity
-error SignatureDeadlineExpired();
-```
-
-### NoSelfPermit
-
-```solidity
-error NoSelfPermit();
-```
-
-### Unauthorized
-
-```solidity
-error Unauthorized();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IImmutableState.md b/docs/contracts/v4/reference/periphery/interfaces/IImmutableState.md
deleted file mode 100644
index ccf2eebb4..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IImmutableState.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# IImmutableState
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IImmutableState.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### poolManager
-
-The t1 v4 PoolManager contract
-
-
-```solidity
-function poolManager() external view returns (IPoolManager);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IMulticall_v4.md b/docs/contracts/v4/reference/periphery/interfaces/IMulticall_v4.md
deleted file mode 100644
index cc7151a03..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IMulticall_v4.md
+++ /dev/null
@@ -1,31 +0,0 @@
-# IMulticall_v4
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IMulticall_v4.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Enables calling multiple methods in a single call to the contract
-
-
-## Functions
-### multicall
-
-Call multiple functions in the current contract and return the data from all of them if they all succeed
-
-*The `msg.value` is passed onto all subcalls, even if a previous subcall has consumed the ether.
-Subcalls can instead use `address(this).value` to see the available ETH, and consume it using {value: x}.*
-
-
-```solidity
-function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`data`|`bytes[]`|The encoded function data for each of the calls to make to this contract|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`results`|`bytes[]`|The results from each of the calls passed in via data|
-
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/INotifier.md b/docs/contracts/v4/reference/periphery/interfaces/INotifier.md
deleted file mode 100644
index 334987594..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/INotifier.md
+++ /dev/null
@@ -1,163 +0,0 @@
-# INotifier
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/INotifier.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-This interface is used to opt in to sending updates to external contracts about position modifications or transfers
-
-
-## Functions
-### subscriber
-
-Returns the subscriber for a respective position
-
-
-```solidity
-function subscriber(uint256 tokenId) external view returns (ISubscriber subscriber);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`subscriber`|`ISubscriber`|the subscriber contract|
-
-
-### subscribe
-
-Enables the subscriber to receive notifications for a respective position
-
-*Calling subscribe when a position is already subscribed will revert*
-
-*payable so it can be multicalled with NATIVE related actions*
-
-*will revert if pool manager is locked*
-
-
-```solidity
-function subscribe(uint256 tokenId, address newSubscriber, bytes calldata data) external payable;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-|`newSubscriber`|`address`|the address of the subscriber contract|
-|`data`|`bytes`|caller-provided data that's forwarded to the subscriber contract|
-
-
-### unsubscribe
-
-Removes the subscriber from receiving notifications for a respective position
-
-*Callers must specify a high gas limit (remaining gas should be higher than unsubscriberGasLimit) such that the subscriber can be notified*
-
-*payable so it can be multicalled with NATIVE related actions*
-
-*Must always allow a user to unsubscribe. In the case of a malicious subscriber, a user can always unsubscribe safely, ensuring liquidity is always modifiable.*
-
-*will revert if pool manager is locked*
-
-
-```solidity
-function unsubscribe(uint256 tokenId) external payable;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-
-
-### unsubscribeGasLimit
-
-Returns and determines the maximum allowable gas-used for notifying unsubscribe
-
-
-```solidity
-function unsubscribeGasLimit() external view returns (uint256);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|uint256 the maximum gas limit when notifying a subscriber's `notifyUnsubscribe` function|
-
-
-## Events
-### Subscription
-Emitted on a successful call to subscribe
-
-
-```solidity
-event Subscription(uint256 indexed tokenId, address indexed subscriber);
-```
-
-### Unsubscription
-Emitted on a successful call to unsubscribe
-
-
-```solidity
-event Unsubscription(uint256 indexed tokenId, address indexed subscriber);
-```
-
-## Errors
-### NotSubscribed
-Thrown when unsubscribing without a subscriber
-
-
-```solidity
-error NotSubscribed();
-```
-
-### NoCodeSubscriber
-Thrown when a subscriber does not have code
-
-
-```solidity
-error NoCodeSubscriber();
-```
-
-### GasLimitTooLow
-Thrown when a user specifies a gas limit too low to avoid valid unsubscribe notifications
-
-
-```solidity
-error GasLimitTooLow();
-```
-
-### SubscriptionReverted
-Wraps the revert message of the subscriber contract on a reverting subscription
-
-
-```solidity
-error SubscriptionReverted(address subscriber, bytes reason);
-```
-
-### ModifyLiquidityNotificationReverted
-Wraps the revert message of the subscriber contract on a reverting modify liquidity notification
-
-
-```solidity
-error ModifyLiquidityNotificationReverted(address subscriber, bytes reason);
-```
-
-### TransferNotificationReverted
-Wraps the revert message of the subscriber contract on a reverting transfer notification
-
-
-```solidity
-error TransferNotificationReverted(address subscriber, bytes reason);
-```
-
-### AlreadySubscribed
-Thrown when a tokenId already has a subscriber
-
-
-```solidity
-error AlreadySubscribed(uint256 tokenId, address subscriber);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IPositionDescriptor.md b/docs/contracts/v4/reference/periphery/interfaces/IPositionDescriptor.md
deleted file mode 100644
index c4a0f83c4..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IPositionDescriptor.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# IPositionDescriptor
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IPositionDescriptor.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### tokenURI
-
-Produces the URI describing a particular token ID
-
-*Note this URI may be a data: URI with the JSON contents directly inlined*
-
-
-```solidity
-function tokenURI(IPositionManager positionManager, uint256 tokenId) external view returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`positionManager`|`IPositionManager`|The position manager for which to describe the token|
-|`tokenId`|`uint256`|The ID of the token for which to produce a description, which may not be valid|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The URI of the ERC721-compliant metadata|
-
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IPositionManager.md b/docs/contracts/v4/reference/periphery/interfaces/IPositionManager.md
deleted file mode 100644
index fcb15d845..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IPositionManager.md
+++ /dev/null
@@ -1,129 +0,0 @@
-# IPositionManager
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IPositionManager.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[INotifier](contracts/v4/reference/periphery/interfaces/INotifier.md), [IImmutableState](contracts/v4/reference/periphery/interfaces/IImmutableState.md)
-
-Interface for the PositionManager contract
-
-
-## Functions
-### modifyLiquidities
-
-Unlocks t1 v4 PoolManager and batches actions for modifying liquidity
-
-*This is the standard entrypoint for the PositionManager*
-
-
-```solidity
-function modifyLiquidities(bytes calldata unlockData, uint256 deadline) external payable;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`unlockData`|`bytes`|is an encoding of actions, and parameters for those actions|
-|`deadline`|`uint256`|is the deadline for the batched actions to be executed|
-
-
-### modifyLiquiditiesWithoutUnlock
-
-Batches actions for modifying liquidity without unlocking v4 PoolManager
-
-*This must be called by a contract that has already unlocked the v4 PoolManager*
-
-
-```solidity
-function modifyLiquiditiesWithoutUnlock(bytes calldata actions, bytes[] calldata params) external payable;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`actions`|`bytes`|the actions to perform|
-|`params`|`bytes[]`|the parameters to provide for the actions|
-
-
-### nextTokenId
-
-Used to get the ID that will be used for the next minted liquidity position
-
-
-```solidity
-function nextTokenId() external view returns (uint256);
-```
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|uint256 The next token ID|
-
-
-### getPositionLiquidity
-
-*this value can be processed as an amount0 and amount1 by using the LiquidityAmounts library*
-
-
-```solidity
-function getPositionLiquidity(uint256 tokenId) external view returns (uint128 liquidity);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|the position's liquidity, as a liquidityAmount|
-
-
-### getPoolAndPositionInfo
-
-
-```solidity
-function getPoolAndPositionInfo(uint256 tokenId) external view returns (PoolKey memory, PositionInfo);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the ERC721 tokenId|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`PoolKey`|PositionInfo a uint256 packed value holding information about the position including the range (tickLower, tickUpper)|
-|``|`PositionInfo`|poolKey the pool key of the position|
-
-
-## Errors
-### NotApproved
-Thrown when the caller is not approved to modify a position
-
-
-```solidity
-error NotApproved(address caller);
-```
-
-### DeadlinePassed
-Thrown when the block.timestamp exceeds the user-provided deadline
-
-
-```solidity
-error DeadlinePassed(uint256 deadline);
-```
-
-### PoolManagerMustBeLocked
-Thrown when calling transfer, subscribe, or unsubscribe when the PoolManager is unlocked.
-
-*This is to prevent hooks from being able to trigger notifications at the same time the position is being modified.*
-
-
-```solidity
-error PoolManagerMustBeLocked();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IQuoter.md b/docs/contracts/v4/reference/periphery/interfaces/IQuoter.md
deleted file mode 100644
index b824955d1..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IQuoter.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# IQuoter
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IQuoter.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Supports quoting the delta amounts for exact input or exact output swaps.
-
-For each pool also tells you the sqrt price of the pool after the swap.
-
-*These functions are not marked view because they rely on calling non-view functions and reverting
-to compute the result. They are also not gas efficient and should not be called on-chain.*
-
-
-## Functions
-### quoteExactInputSingle
-
-Returns the delta amounts for a given exact input swap of a single pool
-
-
-```solidity
-function quoteExactInputSingle(QuoteExactSingleParams memory params)
- external
- returns (uint256 amountOut, uint256 gasEstimate);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`QuoteExactSingleParams`|The params for the quote, encoded as `QuoteExactSingleParams` poolKey The key for identifying a V4 pool zeroForOne If the swap is from currency0 to currency1 exactAmount The desired input amount hookData arbitrary hookData to pass into the associated hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountOut`|`uint256`|The output quote for the exactIn swap|
-|`gasEstimate`|`uint256`|Estimated gas units used for the swap|
-
-
-### quoteExactInput
-
-Returns the delta amounts along the swap path for a given exact input swap
-
-
-```solidity
-function quoteExactInput(QuoteExactParams memory params) external returns (uint256 amountOut, uint256 gasEstimate);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`QuoteExactParams`|the params for the quote, encoded as 'QuoteExactParams' currencyIn The input currency of the swap path The path of the swap encoded as PathKeys that contains currency, fee, tickSpacing, and hook info exactAmount The desired input amount|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountOut`|`uint256`|The output quote for the exactIn swap|
-|`gasEstimate`|`uint256`|Estimated gas units used for the swap|
-
-
-### quoteExactOutputSingle
-
-Returns the delta amounts for a given exact output swap of a single pool
-
-
-```solidity
-function quoteExactOutputSingle(QuoteExactSingleParams memory params)
- external
- returns (uint256 amountIn, uint256 gasEstimate);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`QuoteExactSingleParams`|The params for the quote, encoded as `QuoteExactSingleParams` poolKey The key for identifying a V4 pool zeroForOne If the swap is from currency0 to currency1 exactAmount The desired output amount hookData arbitrary hookData to pass into the associated hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountIn`|`uint256`|The input quote for the exactOut swap|
-|`gasEstimate`|`uint256`|Estimated gas units used for the swap|
-
-
-### quoteExactOutput
-
-Returns the delta amounts along the swap path for a given exact output swap
-
-
-```solidity
-function quoteExactOutput(QuoteExactParams memory params) external returns (uint256 amountIn, uint256 gasEstimate);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`QuoteExactParams`|the params for the quote, encoded as 'QuoteExactParams' currencyOut The output currency of the swap path The path of the swap encoded as PathKeys that contains currency, fee, tickSpacing, and hook info exactAmount The desired output amount|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountIn`|`uint256`|The input quote for the exactOut swap|
-|`gasEstimate`|`uint256`|Estimated gas units used for the swap|
-
-
-## Structs
-### QuoteExactSingleParams
-
-```solidity
-struct QuoteExactSingleParams {
- PoolKey poolKey;
- bool zeroForOne;
- uint128 exactAmount;
- bytes hookData;
-}
-```
-
-### QuoteExactParams
-
-```solidity
-struct QuoteExactParams {
- Currency exactCurrency;
- PathKey[] path;
- uint128 exactAmount;
-}
-```
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/ISubscriber.md b/docs/contracts/v4/reference/periphery/interfaces/ISubscriber.md
deleted file mode 100644
index 1e1168a3f..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/ISubscriber.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# ISubscriber
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/ISubscriber.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Interface that a Subscriber contract should implement to receive updates from the v4 position manager
-
-
-## Functions
-### notifySubscribe
-
-
-```solidity
-function notifySubscribe(uint256 tokenId, bytes memory data) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the token ID of the position|
-|`data`|`bytes`|additional data passed in by the caller|
-
-
-### notifyUnsubscribe
-
-Called when a position unsubscribes from the subscriber
-
-*This call's gas is capped at `unsubscribeGasLimit` (set at deployment)*
-
-*Because of EIP-150, solidity may only allocate 63/64 of gasleft()*
-
-
-```solidity
-function notifyUnsubscribe(uint256 tokenId) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the token ID of the position|
-
-
-### notifyModifyLiquidity
-
-
-```solidity
-function notifyModifyLiquidity(uint256 tokenId, int256 liquidityChange, BalanceDelta feesAccrued) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the token ID of the position|
-|`liquidityChange`|`int256`|the change in liquidity on the underlying position|
-|`feesAccrued`|`BalanceDelta`|the fees to be collected from the position as a result of the modifyLiquidity call|
-
-
-### notifyTransfer
-
-
-```solidity
-function notifyTransfer(uint256 tokenId, address previousOwner, address newOwner) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|the token ID of the position|
-|`previousOwner`|`address`|address of the old owner|
-|`newOwner`|`address`|address of the new owner|
-
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IUniswapV4DeployerCompetition.md b/docs/contracts/v4/reference/periphery/interfaces/IUniswapV4DeployerCompetition.md
deleted file mode 100644
index b366a417c..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IUniswapV4DeployerCompetition.md
+++ /dev/null
@@ -1,85 +0,0 @@
-# IUniswapV4DeployerCompetition
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IUniswapV4DeployerCompetition.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-A competition to deploy the t1V4 contract with the best address
-
-
-## Functions
-### updateBestAddress
-
-Updates the best address if the new address has a better vanity score
-
-*The first 20 bytes of the salt must be either address(0) or msg.sender*
-
-
-```solidity
-function updateBestAddress(bytes32 salt) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`salt`|`bytes32`|The salt to use to compute the new address with CREATE2|
-
-
-### deploy
-
-deploys the t1 v4 PoolManager contract
-
-*The bytecode must match the initCodeHash*
-
-
-```solidity
-function deploy(bytes memory bytecode) external;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`bytecode`|`bytes`|The bytecode of the t1 v4 PoolManager contract|
-
-
-## Events
-### NewAddressFound
-
-```solidity
-event NewAddressFound(address indexed bestAddress, address indexed submitter, uint256 score);
-```
-
-## Errors
-### InvalidBytecode
-
-```solidity
-error InvalidBytecode();
-```
-
-### CompetitionNotOver
-
-```solidity
-error CompetitionNotOver(uint256 currentTime, uint256 deadline);
-```
-
-### CompetitionOver
-
-```solidity
-error CompetitionOver(uint256 currentTime, uint256 deadline);
-```
-
-### NotAllowedToDeploy
-
-```solidity
-error NotAllowedToDeploy(address sender, address deployer);
-```
-
-### WorseAddress
-
-```solidity
-error WorseAddress(address newAddress, address bestAddress, uint256 newScore, uint256 bestScore);
-```
-
-### InvalidSender
-
-```solidity
-error InvalidSender(bytes32 salt, address sender);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IV4Router.md b/docs/contracts/v4/reference/periphery/interfaces/IV4Router.md
deleted file mode 100644
index 26413f4e6..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IV4Router.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# IV4Router
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/IV4Router.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IImmutableState](contracts/v4/reference/periphery/interfaces/IImmutableState.md)
-
-Interface containing all the structs and errors for different v4 swap types
-
-
-## Errors
-### V4TooLittleReceived
-Emitted when an exactInput swap does not receive its minAmountOut
-
-
-```solidity
-error V4TooLittleReceived(uint256 minAmountOutReceived, uint256 amountReceived);
-```
-
-### V4TooMuchRequested
-Emitted when an exactOutput is asked for more than its maxAmountIn
-
-
-```solidity
-error V4TooMuchRequested(uint256 maxAmountInRequested, uint256 amountRequested);
-```
-
-## Structs
-### ExactInputSingleParams
-Parameters for a single-hop exact-input swap
-
-
-```solidity
-struct ExactInputSingleParams {
- PoolKey poolKey;
- bool zeroForOne;
- uint128 amountIn;
- uint128 amountOutMinimum;
- bytes hookData;
-}
-```
-
-### ExactInputParams
-Parameters for a multi-hop exact-input swap
-
-
-```solidity
-struct ExactInputParams {
- Currency currencyIn;
- PathKey[] path;
- uint128 amountIn;
- uint128 amountOutMinimum;
-}
-```
-
-### ExactOutputSingleParams
-Parameters for a single-hop exact-output swap
-
-
-```solidity
-struct ExactOutputSingleParams {
- PoolKey poolKey;
- bool zeroForOne;
- uint128 amountOut;
- uint128 amountInMaximum;
- bytes hookData;
-}
-```
-
-### ExactOutputParams
-Parameters for a multi-hop exact-output swap
-
-
-```solidity
-struct ExactOutputParams {
- Currency currencyOut;
- PathKey[] path;
- uint128 amountOut;
- uint128 amountInMaximum;
-}
-```
-
diff --git a/docs/contracts/v4/reference/periphery/interfaces/IWETH9.md b/docs/contracts/v4/reference/periphery/interfaces/IWETH9.md
deleted file mode 100644
index 4687b897a..000000000
--- a/docs/contracts/v4/reference/periphery/interfaces/IWETH9.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# IWETH9
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/interfaces/external/IWETH9.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-IERC20
-
-
-## Functions
-### deposit
-
-Deposit ether to get wrapped ether
-
-
-```solidity
-function deposit() external payable;
-```
-
-### withdraw
-
-Withdraw wrapped ether to get ether
-
-
-```solidity
-function withdraw(uint256) external;
-```
-
diff --git a/docs/contracts/v4/reference/periphery/lens/Quoter.md b/docs/contracts/v4/reference/periphery/lens/Quoter.md
deleted file mode 100644
index e2c2ea943..000000000
--- a/docs/contracts/v4/reference/periphery/lens/Quoter.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# Quoter
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/lens/Quoter.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[IQuoter](contracts/v4/reference/periphery/interfaces/IQuoter.md), [BaseV4Quoter](contracts/v4/reference/periphery/base/BaseV4Quoter.md)
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _poolManager) BaseV4Quoter(_poolManager);
-```
-
-### quoteExactInputSingle
-
-Returns the delta amounts for a given exact input swap of a single pool
-
-
-```solidity
-function quoteExactInputSingle(QuoteExactSingleParams memory params)
- external
- returns (uint256 amountOut, uint256 gasEstimate);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`QuoteExactSingleParams`|The params for the quote, encoded as `QuoteExactSingleParams` poolKey The key for identifying a V4 pool zeroForOne If the swap is from currency0 to currency1 exactAmount The desired input amount hookData arbitrary hookData to pass into the associated hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountOut`|`uint256`|The output quote for the exactIn swap|
-|`gasEstimate`|`uint256`|Estimated gas units used for the swap|
-
-
-### quoteExactInput
-
-Returns the delta amounts along the swap path for a given exact input swap
-
-
-```solidity
-function quoteExactInput(QuoteExactParams memory params) external returns (uint256 amountOut, uint256 gasEstimate);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`QuoteExactParams`|the params for the quote, encoded as 'QuoteExactParams' currencyIn The input currency of the swap path The path of the swap encoded as PathKeys that contains currency, fee, tickSpacing, and hook info exactAmount The desired input amount|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountOut`|`uint256`|The output quote for the exactIn swap|
-|`gasEstimate`|`uint256`|Estimated gas units used for the swap|
-
-
-### quoteExactOutputSingle
-
-Returns the delta amounts for a given exact output swap of a single pool
-
-
-```solidity
-function quoteExactOutputSingle(QuoteExactSingleParams memory params)
- external
- returns (uint256 amountIn, uint256 gasEstimate);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`QuoteExactSingleParams`|The params for the quote, encoded as `QuoteExactSingleParams` poolKey The key for identifying a V4 pool zeroForOne If the swap is from currency0 to currency1 exactAmount The desired output amount hookData arbitrary hookData to pass into the associated hooks|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountIn`|`uint256`|The input quote for the exactOut swap|
-|`gasEstimate`|`uint256`|Estimated gas units used for the swap|
-
-
-### quoteExactOutput
-
-Returns the delta amounts along the swap path for a given exact output swap
-
-
-```solidity
-function quoteExactOutput(QuoteExactParams memory params) external returns (uint256 amountIn, uint256 gasEstimate);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`QuoteExactParams`|the params for the quote, encoded as 'QuoteExactParams' currencyOut The output currency of the swap path The path of the swap encoded as PathKeys that contains currency, fee, tickSpacing, and hook info exactAmount The desired output amount|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amountIn`|`uint256`|The input quote for the exactOut swap|
-|`gasEstimate`|`uint256`|Estimated gas units used for the swap|
-
-
-### _quoteExactInput
-
-*external function called within the _unlockCallback, to simulate an exact input swap, then revert with the result*
-
-
-```solidity
-function _quoteExactInput(QuoteExactParams calldata params) external selfOnly returns (bytes memory);
-```
-
-### _quoteExactInputSingle
-
-*external function called within the _unlockCallback, to simulate a single-hop exact input swap, then revert with the result*
-
-
-```solidity
-function _quoteExactInputSingle(QuoteExactSingleParams calldata params) external selfOnly returns (bytes memory);
-```
-
-### _quoteExactOutput
-
-*external function called within the _unlockCallback, to simulate an exact output swap, then revert with the result*
-
-
-```solidity
-function _quoteExactOutput(QuoteExactParams calldata params) external selfOnly returns (bytes memory);
-```
-
-### _quoteExactOutputSingle
-
-*external function called within the _unlockCallback, to simulate a single-hop exact output swap, then revert with the result*
-
-
-```solidity
-function _quoteExactOutputSingle(QuoteExactSingleParams calldata params) external selfOnly returns (bytes memory);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/lens/StateView.md b/docs/contracts/v4/reference/periphery/lens/StateView.md
deleted file mode 100644
index c6cf2163e..000000000
--- a/docs/contracts/v4/reference/periphery/lens/StateView.md
+++ /dev/null
@@ -1,320 +0,0 @@
-# StateView
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/lens/StateView.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-**Inherits:**
-[ImmutableState](contracts/v4/reference/periphery/base/ImmutableState.md)
-
-A view only contract wrapping the StateLibrary.sol library for reading storage in v4-core.
-
-
-## Functions
-### constructor
-
-
-```solidity
-constructor(IPoolManager _poolManager) ImmutableState(_poolManager);
-```
-
-### getSlot0
-
-Get Slot0 of the pool: sqrtPriceX96, tick, protocolFee, lpFee
-
-*Corresponds to pools[poolId].slot0*
-
-
-```solidity
-function getSlot0(PoolId poolId)
- external
- view
- returns (uint160 sqrtPriceX96, int24 tick, uint24 protocolFee, uint24 lpFee);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtPriceX96`|`uint160`|The square root of the price of the pool, in Q96 precision.|
-|`tick`|`int24`|The current tick of the pool.|
-|`protocolFee`|`uint24`|The protocol fee of the pool.|
-|`lpFee`|`uint24`|The swap fee of the pool.|
-
-
-### getTickInfo
-
-Retrieves the tick information of a pool at a specific tick.
-
-*Corresponds to pools[poolId].ticks[tick]*
-
-
-```solidity
-function getTickInfo(PoolId poolId, int24 tick)
- external
- view
- returns (uint128 liquidityGross, int128 liquidityNet, uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tick`|`int24`|The tick to retrieve information for.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidityGross`|`uint128`|The total position liquidity that references this tick|
-|`liquidityNet`|`int128`|The amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left)|
-|`feeGrowthOutside0X128`|`uint256`|fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)|
-|`feeGrowthOutside1X128`|`uint256`|fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)|
-
-
-### getTickLiquidity
-
-Retrieves the liquidity information of a pool at a specific tick.
-
-*Corresponds to pools[poolId].ticks[tick].liquidityGross and pools[poolId].ticks[tick].liquidityNet. A more gas efficient version of getTickInfo*
-
-
-```solidity
-function getTickLiquidity(PoolId poolId, int24 tick)
- external
- view
- returns (uint128 liquidityGross, int128 liquidityNet);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tick`|`int24`|The tick to retrieve liquidity for.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidityGross`|`uint128`|The total position liquidity that references this tick|
-|`liquidityNet`|`int128`|The amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left)|
-
-
-### getTickFeeGrowthOutside
-
-Retrieves the fee growth outside a tick range of a pool
-
-*Corresponds to pools[poolId].ticks[tick].feeGrowthOutside0X128 and pools[poolId].ticks[tick].feeGrowthOutside1X128. A more gas efficient version of getTickInfo*
-
-
-```solidity
-function getTickFeeGrowthOutside(PoolId poolId, int24 tick)
- external
- view
- returns (uint256 feeGrowthOutside0X128, uint256 feeGrowthOutside1X128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tick`|`int24`|The tick to retrieve fee growth for.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`feeGrowthOutside0X128`|`uint256`|fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)|
-|`feeGrowthOutside1X128`|`uint256`|fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)|
-
-
-### getFeeGrowthGlobals
-
-Retrieves the global fee growth of a pool.
-
-*Corresponds to pools[poolId].feeGrowthGlobal0X128 and pools[poolId].feeGrowthGlobal1X128*
-
-
-```solidity
-function getFeeGrowthGlobals(PoolId poolId)
- external
- view
- returns (uint256 feeGrowthGlobal0, uint256 feeGrowthGlobal1);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`feeGrowthGlobal0`|`uint256`|The global fee growth for token0.|
-|`feeGrowthGlobal1`|`uint256`|The global fee growth for token1.|
-
-
-### getLiquidity
-
-Retrieves the total liquidity of a pool.
-
-*Corresponds to pools[poolId].liquidity*
-
-
-```solidity
-function getLiquidity(PoolId poolId) external view returns (uint128 liquidity);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|The liquidity of the pool.|
-
-
-### getTickBitmap
-
-Retrieves the tick bitmap of a pool at a specific tick.
-
-*Corresponds to pools[poolId].tickBitmap[tick]*
-
-
-```solidity
-function getTickBitmap(PoolId poolId, int16 tick) external view returns (uint256 tickBitmap);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tick`|`int16`|The tick to retrieve the bitmap for.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickBitmap`|`uint256`|The bitmap of the tick.|
-
-
-### getPositionInfo
-
-Retrieves the position info without needing to calculate the `positionId`.
-
-*Corresponds to pools[poolId].positions[positionId]*
-
-
-```solidity
-function getPositionInfo(PoolId poolId, address owner, int24 tickLower, int24 tickUpper, bytes32 salt)
- external
- view
- returns (uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`owner`|`address`|The owner of the liquidity position.|
-|`tickLower`|`int24`|The lower tick of the liquidity range.|
-|`tickUpper`|`int24`|The upper tick of the liquidity range.|
-|`salt`|`bytes32`|The bytes32 randomness to further distinguish position state.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|The liquidity of the position.|
-|`feeGrowthInside0LastX128`|`uint256`|The fee growth inside the position for token0.|
-|`feeGrowthInside1LastX128`|`uint256`|The fee growth inside the position for token1.|
-
-
-### getPositionInfo
-
-Retrieves the position information of a pool at a specific position ID.
-
-*Corresponds to pools[poolId].positions[positionId]*
-
-
-```solidity
-function getPositionInfo(PoolId poolId, bytes32 positionId)
- external
- view
- returns (uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`positionId`|`bytes32`|The ID of the position.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|The liquidity of the position.|
-|`feeGrowthInside0LastX128`|`uint256`|The fee growth inside the position for token0.|
-|`feeGrowthInside1LastX128`|`uint256`|The fee growth inside the position for token1.|
-
-
-### getPositionLiquidity
-
-Retrieves the liquidity of a position.
-
-*Corresponds to pools[poolId].positions[positionId].liquidity. More gas efficient for just retrieving liquidity as compared to getPositionInfo*
-
-
-```solidity
-function getPositionLiquidity(PoolId poolId, bytes32 positionId) external view returns (uint128 liquidity);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`positionId`|`bytes32`|The ID of the position.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`liquidity`|`uint128`|The liquidity of the position.|
-
-
-### getFeeGrowthInside
-
-Calculate the fee growth inside a tick range of a pool
-
-*pools[poolId].feeGrowthInside0LastX128 in Position.Info is cached and can become stale. This function will calculate the up to date feeGrowthInside*
-
-
-```solidity
-function getFeeGrowthInside(PoolId poolId, int24 tickLower, int24 tickUpper)
- external
- view
- returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`poolId`|`PoolId`|The ID of the pool.|
-|`tickLower`|`int24`|The lower tick of the range.|
-|`tickUpper`|`int24`|The upper tick of the range.|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`feeGrowthInside0X128`|`uint256`|The fee growth inside the tick range for token0.|
-|`feeGrowthInside1X128`|`uint256`|The fee growth inside the tick range for token1.|
-
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/ActionConstants.md b/docs/contracts/v4/reference/periphery/libraries/ActionConstants.md
deleted file mode 100644
index 488d67cd3..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/ActionConstants.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# ActionConstants
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/ActionConstants.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Common constants used in actions
-
-*Constants are gas efficient alternatives to their literal values*
-
-
-## State Variables
-### OPEN_DELTA
-used to signal that an action should use the input value of the open delta on the pool manager
-or of the balance that the contract holds
-
-
-```solidity
-uint128 internal constant OPEN_DELTA = 0;
-```
-
-
-### CONTRACT_BALANCE
-used to signal that an action should use the contract's entire balance of a currency
-This value is equivalent to 1<<255, i.e. a singular 1 in the most significant bit.
-
-
-```solidity
-uint256 internal constant CONTRACT_BALANCE = 0x8000000000000000000000000000000000000000000000000000000000000000;
-```
-
-
-### MSG_SENDER
-used to signal that the recipient of an action should be the msgSender
-
-
-```solidity
-address internal constant MSG_SENDER = address(1);
-```
-
-
-### ADDRESS_THIS
-used to signal that the recipient of an action should be the address(this)
-
-
-```solidity
-address internal constant ADDRESS_THIS = address(2);
-```
-
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/Actions.md b/docs/contracts/v4/reference/periphery/libraries/Actions.md
deleted file mode 100644
index 201ec9490..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/Actions.md
+++ /dev/null
@@ -1,177 +0,0 @@
-# Actions
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/Actions.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Library to define different pool actions.
-
-*These are suggested common commands, however additional commands should be defined as required*
-
-
-## State Variables
-### INCREASE_LIQUIDITY
-
-```solidity
-uint256 constant INCREASE_LIQUIDITY = 0x00;
-```
-
-
-### DECREASE_LIQUIDITY
-
-```solidity
-uint256 constant DECREASE_LIQUIDITY = 0x01;
-```
-
-
-### MINT_POSITION
-
-```solidity
-uint256 constant MINT_POSITION = 0x02;
-```
-
-
-### BURN_POSITION
-
-```solidity
-uint256 constant BURN_POSITION = 0x03;
-```
-
-
-### SWAP_EXACT_IN_SINGLE
-
-```solidity
-uint256 constant SWAP_EXACT_IN_SINGLE = 0x04;
-```
-
-
-### SWAP_EXACT_IN
-
-```solidity
-uint256 constant SWAP_EXACT_IN = 0x05;
-```
-
-
-### SWAP_EXACT_OUT_SINGLE
-
-```solidity
-uint256 constant SWAP_EXACT_OUT_SINGLE = 0x06;
-```
-
-
-### SWAP_EXACT_OUT
-
-```solidity
-uint256 constant SWAP_EXACT_OUT = 0x07;
-```
-
-
-### DONATE
-
-```solidity
-uint256 constant DONATE = 0x08;
-```
-
-
-### SETTLE
-
-```solidity
-uint256 constant SETTLE = 0x09;
-```
-
-
-### SETTLE_ALL
-
-```solidity
-uint256 constant SETTLE_ALL = 0x10;
-```
-
-
-### SETTLE_PAIR
-
-```solidity
-uint256 constant SETTLE_PAIR = 0x11;
-```
-
-
-### TAKE
-
-```solidity
-uint256 constant TAKE = 0x12;
-```
-
-
-### TAKE_ALL
-
-```solidity
-uint256 constant TAKE_ALL = 0x13;
-```
-
-
-### TAKE_PORTION
-
-```solidity
-uint256 constant TAKE_PORTION = 0x14;
-```
-
-
-### TAKE_PAIR
-
-```solidity
-uint256 constant TAKE_PAIR = 0x15;
-```
-
-
-### SETTLE_TAKE_PAIR
-
-```solidity
-uint256 constant SETTLE_TAKE_PAIR = 0x16;
-```
-
-
-### CLOSE_CURRENCY
-
-```solidity
-uint256 constant CLOSE_CURRENCY = 0x17;
-```
-
-
-### CLEAR_OR_TAKE
-
-```solidity
-uint256 constant CLEAR_OR_TAKE = 0x18;
-```
-
-
-### SWEEP
-
-```solidity
-uint256 constant SWEEP = 0x19;
-```
-
-
-### WRAP
-
-```solidity
-uint256 constant WRAP = 0x20;
-```
-
-
-### UNWRAP
-
-```solidity
-uint256 constant UNWRAP = 0x21;
-```
-
-
-### MINT_6909
-
-```solidity
-uint256 constant MINT_6909 = 0x22;
-```
-
-
-### BURN_6909
-
-```solidity
-uint256 constant BURN_6909 = 0x23;
-```
-
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/AddressStringUtil.md b/docs/contracts/v4/reference/periphery/libraries/AddressStringUtil.md
deleted file mode 100644
index c3579398c..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/AddressStringUtil.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# AddressStringUtil
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/AddressStringUtil.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-provides utility functions for converting addresses to strings
-
-*Reference: https://github.com/Uniswap/solidity-lib/blob/master/contracts/libraries/AddressStringUtil.sol*
-
-
-## Functions
-### toAsciiString
-
-Converts an address to the uppercase hex string, extracting only len bytes (up to 20, multiple of 2)
-
-
-```solidity
-function toAsciiString(address addr, uint256 len) internal pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`addr`|`address`|the address to convert|
-|`len`|`uint256`|the number of bytes to extract|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|the hex string|
-
-
-### char
-
-Converts a value into is corresponding ASCII character for the hex representation
-
-
-```solidity
-function char(uint8 b) private pure returns (bytes1 c);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`b`|`uint8`|the value to convert|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`c`|`bytes1`|the ASCII character|
-
-
-## Errors
-### InvalidAddressLength
-
-```solidity
-error InvalidAddressLength(uint256 len);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/BipsLibrary.md b/docs/contracts/v4/reference/periphery/libraries/BipsLibrary.md
deleted file mode 100644
index 15c898068..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/BipsLibrary.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# BipsLibrary
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/BipsLibrary.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## State Variables
-### BPS_DENOMINATOR
-
-```solidity
-uint256 internal constant BPS_DENOMINATOR = 10_000;
-```
-
-
-## Functions
-### calculatePortion
-
-
-```solidity
-function calculatePortion(uint256 amount, uint256 bips) internal pure returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`amount`|`uint256`|The total amount to calculate a percentage of|
-|`bips`|`uint256`|The percentage to calculate, in bips|
-
-
-## Errors
-### InvalidBips
-emitted when an invalid percentage is provided
-
-
-```solidity
-error InvalidBips();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/CalldataDecoder.md b/docs/contracts/v4/reference/periphery/libraries/CalldataDecoder.md
deleted file mode 100644
index 7dcd1eae9..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/CalldataDecoder.md
+++ /dev/null
@@ -1,244 +0,0 @@
-# CalldataDecoder
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/CalldataDecoder.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## State Variables
-### OFFSET_OR_LENGTH_MASK
-mask used for offsets and lengths to ensure no overflow
-
-*no sane abi encoding will pass in an offset or length greater than type(uint32).max
-(note that this does deviate from standard solidity behavior and offsets/lengths will
-be interpreted as mod type(uint32).max which will only impact malicious/buggy callers)*
-
-
-```solidity
-uint256 constant OFFSET_OR_LENGTH_MASK = 0xffffffff;
-```
-
-
-### OFFSET_OR_LENGTH_MASK_AND_WORD_ALIGN
-
-```solidity
-uint256 constant OFFSET_OR_LENGTH_MASK_AND_WORD_ALIGN = 0xffffffe0;
-```
-
-
-### SLICE_ERROR_SELECTOR
-equivalent to SliceOutOfBounds.selector, stored in least-significant bits
-
-
-```solidity
-uint256 constant SLICE_ERROR_SELECTOR = 0x3b99b53d;
-```
-
-
-## Functions
-### decodeActionsRouterParams
-
-*equivalent to: abi.decode(params, (bytes, bytes[])) in calldata (requires strict abi encoding)*
-
-
-```solidity
-function decodeActionsRouterParams(bytes calldata _bytes)
- internal
- pure
- returns (bytes calldata actions, bytes[] calldata params);
-```
-
-### decodeModifyLiquidityParams
-
-*equivalent to: abi.decode(params, (uint256, uint256, uint128, uint128, bytes)) in calldata*
-
-
-```solidity
-function decodeModifyLiquidityParams(bytes calldata params)
- internal
- pure
- returns (uint256 tokenId, uint256 liquidity, uint128 amount0, uint128 amount1, bytes calldata hookData);
-```
-
-### decodeMintParams
-
-*equivalent to: abi.decode(params, (PoolKey, int24, int24, uint256, uint128, uint128, address, bytes)) in calldata*
-
-
-```solidity
-function decodeMintParams(bytes calldata params)
- internal
- pure
- returns (
- PoolKey calldata poolKey,
- int24 tickLower,
- int24 tickUpper,
- uint256 liquidity,
- uint128 amount0Max,
- uint128 amount1Max,
- address owner,
- bytes calldata hookData
- );
-```
-
-### decodeBurnParams
-
-*equivalent to: abi.decode(params, (uint256, uint128, uint128, bytes)) in calldata*
-
-
-```solidity
-function decodeBurnParams(bytes calldata params)
- internal
- pure
- returns (uint256 tokenId, uint128 amount0Min, uint128 amount1Min, bytes calldata hookData);
-```
-
-### decodeSwapExactInParams
-
-*equivalent to: abi.decode(params, (IV4Router.ExactInputParams))*
-
-
-```solidity
-function decodeSwapExactInParams(bytes calldata params)
- internal
- pure
- returns (IV4Router.ExactInputParams calldata swapParams);
-```
-
-### decodeSwapExactInSingleParams
-
-*equivalent to: abi.decode(params, (IV4Router.ExactInputSingleParams))*
-
-
-```solidity
-function decodeSwapExactInSingleParams(bytes calldata params)
- internal
- pure
- returns (IV4Router.ExactInputSingleParams calldata swapParams);
-```
-
-### decodeSwapExactOutParams
-
-*equivalent to: abi.decode(params, (IV4Router.ExactOutputParams))*
-
-
-```solidity
-function decodeSwapExactOutParams(bytes calldata params)
- internal
- pure
- returns (IV4Router.ExactOutputParams calldata swapParams);
-```
-
-### decodeSwapExactOutSingleParams
-
-*equivalent to: abi.decode(params, (IV4Router.ExactOutputSingleParams))*
-
-
-```solidity
-function decodeSwapExactOutSingleParams(bytes calldata params)
- internal
- pure
- returns (IV4Router.ExactOutputSingleParams calldata swapParams);
-```
-
-### decodeCurrency
-
-*equivalent to: abi.decode(params, (Currency)) in calldata*
-
-
-```solidity
-function decodeCurrency(bytes calldata params) internal pure returns (Currency currency);
-```
-
-### decodeCurrencyPair
-
-*equivalent to: abi.decode(params, (Currency, Currency)) in calldata*
-
-
-```solidity
-function decodeCurrencyPair(bytes calldata params) internal pure returns (Currency currency0, Currency currency1);
-```
-
-### decodeCurrencyPairAndAddress
-
-*equivalent to: abi.decode(params, (Currency, Currency, address)) in calldata*
-
-
-```solidity
-function decodeCurrencyPairAndAddress(bytes calldata params)
- internal
- pure
- returns (Currency currency0, Currency currency1, address _address);
-```
-
-### decodeCurrencyAndAddress
-
-*equivalent to: abi.decode(params, (Currency, address)) in calldata*
-
-
-```solidity
-function decodeCurrencyAndAddress(bytes calldata params) internal pure returns (Currency currency, address _address);
-```
-
-### decodeCurrencyAddressAndUint256
-
-*equivalent to: abi.decode(params, (Currency, address, uint256)) in calldata*
-
-
-```solidity
-function decodeCurrencyAddressAndUint256(bytes calldata params)
- internal
- pure
- returns (Currency currency, address _address, uint256 amount);
-```
-
-### decodeCurrencyAndUint256
-
-*equivalent to: abi.decode(params, (Currency, uint256)) in calldata*
-
-
-```solidity
-function decodeCurrencyAndUint256(bytes calldata params) internal pure returns (Currency currency, uint256 amount);
-```
-
-### decodeUint256
-
-*equivalent to: abi.decode(params, (uint256)) in calldata*
-
-
-```solidity
-function decodeUint256(bytes calldata params) internal pure returns (uint256 amount);
-```
-
-### decodeCurrencyUint256AndBool
-
-*equivalent to: abi.decode(params, (Currency, uint256, bool)) in calldata*
-
-
-```solidity
-function decodeCurrencyUint256AndBool(bytes calldata params)
- internal
- pure
- returns (Currency currency, uint256 amount, bool boolean);
-```
-
-### toBytes
-
-Decode the `_arg`-th element in `_bytes` as `bytes`
-
-
-```solidity
-function toBytes(bytes calldata _bytes, uint256 _arg) internal pure returns (bytes calldata res);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`_bytes`|`bytes`|The input bytes string to extract a bytes string from|
-|`_arg`|`uint256`|The index of the argument to extract|
-
-
-## Errors
-### SliceOutOfBounds
-
-```solidity
-error SliceOutOfBounds();
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/CurrencyRatioSortOrder.md b/docs/contracts/v4/reference/periphery/libraries/CurrencyRatioSortOrder.md
deleted file mode 100644
index 090d83c4c..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/CurrencyRatioSortOrder.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# CurrencyRatioSortOrder
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/CurrencyRatioSortOrder.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Provides constants for sorting currencies when displaying price ratios
-Currencies given larger values will be in the numerator of the price ratio
-
-*Reference: https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/TokenRatioSortOrder.sol*
-
-
-## State Variables
-### NUMERATOR_MOST
-
-```solidity
-int256 constant NUMERATOR_MOST = 300;
-```
-
-
-### NUMERATOR_MORE
-
-```solidity
-int256 constant NUMERATOR_MORE = 200;
-```
-
-
-### NUMERATOR
-
-```solidity
-int256 constant NUMERATOR = 100;
-```
-
-
-### DENOMINATOR_MOST
-
-```solidity
-int256 constant DENOMINATOR_MOST = -300;
-```
-
-
-### DENOMINATOR_MORE
-
-```solidity
-int256 constant DENOMINATOR_MORE = -200;
-```
-
-
-### DENOMINATOR
-
-```solidity
-int256 constant DENOMINATOR = -100;
-```
-
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/Descriptor.md b/docs/contracts/v4/reference/periphery/libraries/Descriptor.md
deleted file mode 100644
index 9e012ba4c..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/Descriptor.md
+++ /dev/null
@@ -1,383 +0,0 @@
-# Descriptor
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/Descriptor.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Describes NFT token positions
-
-*Reference: https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/NFTDescriptor.sol*
-
-
-## State Variables
-### sqrt10X128
-
-```solidity
-uint256 constant sqrt10X128 = 1076067327063303206878105757264492625226;
-```
-
-
-## Functions
-### constructTokenURI
-
-Constructs the token URI for a t1 v4 NFT
-
-
-```solidity
-function constructTokenURI(ConstructTokenURIParams memory params) internal pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`ConstructTokenURIParams`|Parameters needed to construct the token URI|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The token URI as a string|
-
-
-### escapeSpecialCharacters
-
-Escapes special characters in a string if they are present
-
-
-```solidity
-function escapeSpecialCharacters(string memory symbol) internal pure returns (string memory);
-```
-
-### generateDescriptionPartOne
-
-Generates the first part of the description for a t1 v4 NFT
-
-
-```solidity
-function generateDescriptionPartOne(
- string memory quoteCurrencySymbol,
- string memory baseCurrencySymbol,
- string memory poolManager
-) private pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`quoteCurrencySymbol`|`string`|The symbol of the quote currency|
-|`baseCurrencySymbol`|`string`|The symbol of the base currency|
-|`poolManager`|`string`|The address of the pool manager|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The first part of the description|
-
-
-### generateDescriptionPartTwo
-
-Generates the second part of the description for a t1 v4 NFTs
-
-
-```solidity
-function generateDescriptionPartTwo(
- string memory tokenId,
- string memory baseCurrencySymbol,
- string memory quoteCurrency,
- string memory baseCurrency,
- string memory hooks,
- string memory feeTier
-) private pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`string`|The token ID|
-|`baseCurrencySymbol`|`string`|The symbol of the base currency|
-|`quoteCurrency`|`string`|The address of the quote currency|
-|`baseCurrency`|`string`|The address of the base currency|
-|`hooks`|`string`|The address of the hooks contract|
-|`feeTier`|`string`|The fee tier of the pool|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The second part of the description|
-
-
-### generateName
-
-Generates the name for a t1 v4 NFT
-
-
-```solidity
-function generateName(ConstructTokenURIParams memory params, string memory feeTier)
- private
- pure
- returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`ConstructTokenURIParams`|Parameters needed to generate the name|
-|`feeTier`|`string`|The fee tier of the pool|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The name of the NFT|
-
-
-### generateDecimalString
-
-
-```solidity
-function generateDecimalString(DecimalStringParams memory params) private pure returns (string memory);
-```
-
-### tickToDecimalString
-
-Gets the price (quote/base) at a specific tick in decimal form
-MIN or MAX are returned if tick is at the bottom or top of the price curve
-
-
-```solidity
-function tickToDecimalString(
- int24 tick,
- int24 tickSpacing,
- uint8 baseCurrencyDecimals,
- uint8 quoteCurrencyDecimals,
- bool flipRatio
-) internal pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tick`|`int24`|The tick (either tickLower or tickUpper)|
-|`tickSpacing`|`int24`|The tick spacing of the pool|
-|`baseCurrencyDecimals`|`uint8`|The decimals of the base currency|
-|`quoteCurrencyDecimals`|`uint8`|The decimals of the quote currency|
-|`flipRatio`|`bool`|True if the ratio was flipped|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The ratio value as a string|
-
-
-### sigfigsRounded
-
-
-```solidity
-function sigfigsRounded(uint256 value, uint8 digits) private pure returns (uint256, bool);
-```
-
-### adjustForDecimalPrecision
-
-Adjusts the sqrt price for different currencies with different decimals
-
-
-```solidity
-function adjustForDecimalPrecision(uint160 sqrtRatioX96, uint8 baseCurrencyDecimals, uint8 quoteCurrencyDecimals)
- private
- pure
- returns (uint256 adjustedSqrtRatioX96);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`sqrtRatioX96`|`uint160`|The sqrt price at a specific tick|
-|`baseCurrencyDecimals`|`uint8`|The decimals of the base currency|
-|`quoteCurrencyDecimals`|`uint8`|The decimals of the quote currency|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`adjustedSqrtRatioX96`|`uint256`|The adjusted sqrt price|
-
-
-### abs
-
-Absolute value of a signed integer
-
-
-```solidity
-function abs(int256 x) private pure returns (uint256);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`x`|`int256`|The signed integer|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint256`|The absolute value of x|
-
-
-### fixedPointToDecimalString
-
-
-```solidity
-function fixedPointToDecimalString(uint160 sqrtRatioX96, uint8 baseCurrencyDecimals, uint8 quoteCurrencyDecimals)
- internal
- pure
- returns (string memory);
-```
-
-### feeToPercentString
-
-Converts fee amount in pips to decimal string with percent sign
-
-
-```solidity
-function feeToPercentString(uint24 fee) internal pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`fee`|`uint24`|fee amount|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|fee as a decimal string with percent sign|
-
-
-### addressToString
-
-
-```solidity
-function addressToString(address addr) internal pure returns (string memory);
-```
-
-### generateSVGImage
-
-Generates the SVG image for a t1 v4 NFT
-
-
-```solidity
-function generateSVGImage(ConstructTokenURIParams memory params) internal pure returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`ConstructTokenURIParams`|Parameters needed to generate the SVG image|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG image as a string|
-
-
-### overRange
-
-Checks if the current price is within your position range, above, or below
-
-
-```solidity
-function overRange(int24 tickLower, int24 tickUpper, int24 tickCurrent) private pure returns (int8);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickLower`|`int24`|The lower tick|
-|`tickUpper`|`int24`|The upper tick|
-|`tickCurrent`|`int24`|The current tick|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`int8`|0 if the current price is within the position range, -1 if below, 1 if above|
-
-
-### isSpecialCharacter
-
-
-```solidity
-function isSpecialCharacter(bytes1 b) private pure returns (bool);
-```
-
-### scale
-
-
-```solidity
-function scale(uint256 n, uint256 inMn, uint256 inMx, uint256 outMn, uint256 outMx)
- private
- pure
- returns (string memory);
-```
-
-### currencyToColorHex
-
-
-```solidity
-function currencyToColorHex(uint256 currency, uint256 offset) internal pure returns (string memory str);
-```
-
-### getCircleCoord
-
-
-```solidity
-function getCircleCoord(uint256 currency, uint256 offset, uint256 tokenId) internal pure returns (uint256);
-```
-
-### sliceCurrencyHex
-
-
-```solidity
-function sliceCurrencyHex(uint256 currency, uint256 offset) internal pure returns (uint256);
-```
-
-## Structs
-### ConstructTokenURIParams
-
-```solidity
-struct ConstructTokenURIParams {
- uint256 tokenId;
- address quoteCurrency;
- address baseCurrency;
- string quoteCurrencySymbol;
- string baseCurrencySymbol;
- uint8 quoteCurrencyDecimals;
- uint8 baseCurrencyDecimals;
- bool flipRatio;
- int24 tickLower;
- int24 tickUpper;
- int24 tickCurrent;
- int24 tickSpacing;
- uint24 fee;
- address poolManager;
- address hooks;
-}
-```
-
-### DecimalStringParams
-
-```solidity
-struct DecimalStringParams {
- uint256 sigfigs;
- uint8 bufferLength;
- uint8 sigfigIndex;
- uint8 decimalIndex;
- uint8 zerosStartIndex;
- uint8 zerosEndIndex;
- bool isLessThanOne;
- bool isPercent;
-}
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/ERC721PermitHash.md b/docs/contracts/v4/reference/periphery/libraries/ERC721PermitHash.md
deleted file mode 100644
index db4f3475d..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/ERC721PermitHash.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# ERC721PermitHash
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/ERC721PermitHash.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## State Variables
-### PERMIT_TYPEHASH
-*Value is equal to keccak256("Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)");*
-
-
-```solidity
-bytes32 constant PERMIT_TYPEHASH = 0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad;
-```
-
-
-### PERMIT_FOR_ALL_TYPEHASH
-*Value is equal to keccak256("PermitForAll(address operator,bool approved,uint256 nonce,uint256 deadline)");*
-
-
-```solidity
-bytes32 constant PERMIT_FOR_ALL_TYPEHASH = 0x6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f76;
-```
-
-
-## Functions
-### hashPermit
-
-Hashes the data that will be signed for IERC721Permit_v4.permit()
-
-
-```solidity
-function hashPermit(address spender, uint256 tokenId, uint256 nonce, uint256 deadline)
- internal
- pure
- returns (bytes32 digest);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`spender`|`address`|The address which may spend the tokenId|
-|`tokenId`|`uint256`|The tokenId of the owner, which may be spent by spender|
-|`nonce`|`uint256`|A unique non-ordered value for each signature to prevent replay attacks|
-|`deadline`|`uint256`|The time at which the signature expires|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`digest`|`bytes32`|The hash of the data to be signed; the equivalent to keccak256(abi.encode(PERMIT_TYPEHASH, spender, tokenId, nonce, deadline));|
-
-
-### hashPermitForAll
-
-Hashes the data that will be signed for IERC721Permit_v4.permit()
-
-
-```solidity
-function hashPermitForAll(address operator, bool approved, uint256 nonce, uint256 deadline)
- internal
- pure
- returns (bytes32 digest);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`operator`|`address`|The address which may spend any of the owner's tokenIds|
-|`approved`|`bool`|true if the operator is to have full permission over the owner's tokenIds; false otherwise|
-|`nonce`|`uint256`|A unique non-ordered value for each signature to prevent replay attacks|
-|`deadline`|`uint256`|The time at which the signature expires|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`digest`|`bytes32`|The hash of the data to be signed; the equivalent to keccak256(abi.encode(PERMIT_FOR_ALL_TYPEHASH, operator, approved, nonce, deadline));|
-
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/HexStrings.md b/docs/contracts/v4/reference/periphery/libraries/HexStrings.md
deleted file mode 100644
index e27d914ae..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/HexStrings.md
+++ /dev/null
@@ -1,39 +0,0 @@
-# HexStrings
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/HexStrings.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Provides function for converting numbers to hexadecimal strings
-
-*Reference: https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/HexStrings.sol*
-
-
-## State Variables
-### ALPHABET
-
-```solidity
-bytes16 internal constant ALPHABET = "0123456789abcdef";
-```
-
-
-## Functions
-### toHexStringNoPrefix
-
-Convert a number to a hex string without the '0x' prefix with a fixed length
-
-
-```solidity
-function toHexStringNoPrefix(uint256 value, uint256 length) internal pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`value`|`uint256`|The number to convert|
-|`length`|`uint256`|The length of the output string, starting from the last character of the string|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The hex string|
-
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/Locker.md b/docs/contracts/v4/reference/periphery/libraries/Locker.md
deleted file mode 100644
index 7bd349240..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/Locker.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Locker
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/Locker.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-This is a temporary library that allows us to use transient storage (tstore/tload)
-TODO: This library can be deleted when we have the transient keyword support in solidity.
-
-
-## State Variables
-### LOCKED_BY_SLOT
-
-```solidity
-bytes32 constant LOCKED_BY_SLOT = 0x0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a;
-```
-
-
-## Functions
-### set
-
-
-```solidity
-function set(address locker) internal;
-```
-
-### get
-
-
-```solidity
-function get() internal view returns (address locker);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/PathKey.md b/docs/contracts/v4/reference/periphery/libraries/PathKey.md
deleted file mode 100644
index bc6cc572e..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/PathKey.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# PathKey
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/PathKey.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-```solidity
-struct PathKey {
- Currency intermediateCurrency;
- uint24 fee;
- int24 tickSpacing;
- IHooks hooks;
- bytes hookData;
-}
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/PositionConfig.md b/docs/contracts/v4/reference/periphery/libraries/PositionConfig.md
deleted file mode 100644
index aad00a0e5..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/PositionConfig.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# PositionConfig
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/PositionConfig.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-```solidity
-struct PositionConfig {
- PoolKey poolKey;
- int24 tickLower;
- int24 tickUpper;
-}
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/PositionConfigId.md b/docs/contracts/v4/reference/periphery/libraries/PositionConfigId.md
deleted file mode 100644
index 5ab31e8f1..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/PositionConfigId.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# PositionConfigIdLibrary
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/PositionConfigId.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## State Variables
-### MASK_UPPER_BIT
-
-```solidity
-bytes32 constant MASK_UPPER_BIT = 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
-```
-
-
-### DIRTY_UPPER_BIT
-
-```solidity
-bytes32 constant DIRTY_UPPER_BIT = 0x8000000000000000000000000000000000000000000000000000000000000000;
-```
-
-
-## Functions
-### getConfigId
-
-returns the truncated hash of the PositionConfig for a given tokenId
-
-
-```solidity
-function getConfigId(PositionConfigId storage _configId) internal view returns (bytes32 configId);
-```
-
-### setConfigId
-
-*We only set the config on mint, guaranteeing that the most significant bit is unset, so we can just assign the entire 32 bytes to the id.*
-
-
-```solidity
-function setConfigId(PositionConfigId storage _configId, bytes32 configId) internal;
-```
-
-### setSubscribe
-
-
-```solidity
-function setSubscribe(PositionConfigId storage configId) internal;
-```
-
-### setUnsubscribe
-
-
-```solidity
-function setUnsubscribe(PositionConfigId storage configId) internal;
-```
-
-### hasSubscriber
-
-
-```solidity
-function hasSubscriber(PositionConfigId storage configId) internal view returns (bool subscribed);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/PositionInfoLibrary.md b/docs/contracts/v4/reference/periphery/libraries/PositionInfoLibrary.md
deleted file mode 100644
index 7fb825589..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/PositionInfoLibrary.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# PositionInfo
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/PositionInfoLibrary.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-*PositionInfo is a packed version of solidity structure.
-Using the packaged version saves gas and memory by not storing the structure fields in memory slots.
-Layout:
-200 bits poolId | 24 bits tickUpper | 24 bits tickLower | 8 bits hasSubscriber
-Fields in the direction from the least significant bit:
-A flag to know if the tokenId is subscribed to an address
-uint8 hasSubscriber;
-The tickUpper of the position
-int24 tickUpper;
-The tickLower of the position
-int24 tickLower;
-The truncated poolId. Truncates a bytes32 value so the most signifcant (highest) 200 bits are used.
-bytes25 poolId;
-Note: If more bits are needed, hasSubscriber can be a single bit.*
-
-
-```solidity
-type PositionInfo is uint256;
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/QuoterRevert.md b/docs/contracts/v4/reference/periphery/libraries/QuoterRevert.md
deleted file mode 100644
index 07c67fdc0..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/QuoterRevert.md
+++ /dev/null
@@ -1,56 +0,0 @@
-# QuoterRevert
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/QuoterRevert.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-
-## Functions
-### revertQuote
-
-reverts, where the revert data is the provided bytes
-
-*called when quoting, to record the quote amount in an error*
-
-*QuoteSwap is used to differentiate this error from other errors thrown when simulating the swap*
-
-
-```solidity
-function revertQuote(uint256 quoteAmount) internal pure;
-```
-
-### bubbleReason
-
-reverts using the revertData as the reason
-
-*to bubble up both the valid QuoteSwap(amount) error, or an alternative error thrown during simulation*
-
-
-```solidity
-function bubbleReason(bytes memory revertData) internal pure;
-```
-
-### parseQuoteAmount
-
-validates whether a revert reason is a valid swap quote or not
-if valid, it decodes the quote to return. Otherwise it reverts.
-
-
-```solidity
-function parseQuoteAmount(bytes memory reason) internal pure returns (uint256 quoteAmount);
-```
-
-## Errors
-### UnexpectedRevertBytes
-error thrown when invalid revert bytes are thrown by the quote
-
-
-```solidity
-error UnexpectedRevertBytes(bytes revertData);
-```
-
-### QuoteSwap
-error thrown containing the quote as the data, to be caught and parsed later
-
-
-```solidity
-error QuoteSwap(uint256 amount);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/SVG.md b/docs/contracts/v4/reference/periphery/libraries/SVG.md
deleted file mode 100644
index b5279c26d..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/SVG.md
+++ /dev/null
@@ -1,377 +0,0 @@
-# SVG
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/SVG.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-Provides a function for generating an SVG associated with a t1 NFT
-
-*Reference: https://github.com/Uniswap/v3-periphery/blob/main/contracts/libraries/NFTSVG.sol*
-
-
-## State Variables
-### curve1
-
-```solidity
-string constant curve1 = "M1 1C41 41 105 105 145 145";
-```
-
-
-### curve2
-
-```solidity
-string constant curve2 = "M1 1C33 49 97 113 145 145";
-```
-
-
-### curve3
-
-```solidity
-string constant curve3 = "M1 1C33 57 89 113 145 145";
-```
-
-
-### curve4
-
-```solidity
-string constant curve4 = "M1 1C25 65 81 121 145 145";
-```
-
-
-### curve5
-
-```solidity
-string constant curve5 = "M1 1C17 73 73 129 145 145";
-```
-
-
-### curve6
-
-```solidity
-string constant curve6 = "M1 1C9 81 65 137 145 145";
-```
-
-
-### curve7
-
-```solidity
-string constant curve7 = "M1 1C1 89 57.5 145 145 145";
-```
-
-
-### curve8
-
-```solidity
-string constant curve8 = "M1 1C1 97 49 145 145 145";
-```
-
-
-## Functions
-### generateSVG
-
-Generate the SVG associated with a t1 v4 NFT
-
-
-```solidity
-function generateSVG(SVGParams memory params) internal pure returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`SVGParams`|The SVGParams struct containing the parameters for the SVG|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG string associated with the NFT|
-
-
-### generateSVGDefs
-
-Generate the SVG defs that create the color scheme for the SVG
-
-
-```solidity
-function generateSVGDefs(SVGParams memory params) private pure returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`params`|`SVGParams`|The SVGParams struct containing the parameters to generate the SVG defs|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG defs string|
-
-
-### generateSVGBorderText
-
-Generate the SVG for the moving border text displaying the quote and base currency addresses with their symbols
-
-
-```solidity
-function generateSVGBorderText(
- string memory quoteCurrency,
- string memory baseCurrency,
- string memory quoteCurrencySymbol,
- string memory baseCurrencySymbol
-) private pure returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`quoteCurrency`|`string`|The quote currency|
-|`baseCurrency`|`string`|The base currency|
-|`quoteCurrencySymbol`|`string`|The quote currency symbol|
-|`baseCurrencySymbol`|`string`|The base currency symbol|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG for the border NFT's border text|
-
-
-### generateSVGCardMantle
-
-Generate the SVG for the card mantle displaying the quote and base currency symbols and fee tier
-
-
-```solidity
-function generateSVGCardMantle(
- string memory quoteCurrencySymbol,
- string memory baseCurrencySymbol,
- string memory feeTier
-) private pure returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`quoteCurrencySymbol`|`string`|The quote currency symbol|
-|`baseCurrencySymbol`|`string`|The base currency symbol|
-|`feeTier`|`string`|The fee tier|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG for the card mantle|
-
-
-### generageSvgCurve
-
-Generate the SVG for the curve that represents the position. Fade up (top is faded) if current price is above your position range, fade down (bottom is faded) if current price is below your position range
-Circles are generated at the ends of the curve if the position is in range, or at one end of the curve it is on if not in range
-
-
-```solidity
-function generageSvgCurve(int24 tickLower, int24 tickUpper, int24 tickSpacing, int8 overRange)
- private
- pure
- returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickLower`|`int24`|The lower tick|
-|`tickUpper`|`int24`|The upper tick|
-|`tickSpacing`|`int24`|The tick spacing|
-|`overRange`|`int8`|Whether the current tick is in range, over range, or under range|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG for the curve|
-
-
-### getCurve
-
-Get the curve based on the tick range
-The smaller the tick range, the smaller/more linear the curve
-
-
-```solidity
-function getCurve(int24 tickLower, int24 tickUpper, int24 tickSpacing) internal pure returns (string memory curve);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickLower`|`int24`|The lower tick|
-|`tickUpper`|`int24`|The upper tick|
-|`tickSpacing`|`int24`|The tick spacing|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`curve`|`string`|The curve path|
-
-
-### generateSVGCurveCircle
-
-Generate the SVG for the circles on the curve
-
-
-```solidity
-function generateSVGCurveCircle(int8 overRange) internal pure returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`overRange`|`int8`|0 if the current tick is in range, 1 if the current tick is over range, -1 if the current tick is under range|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG for the circles|
-
-
-### generateSVGPositionDataAndLocationCurve
-
-If the position is over or under range, generate one circle at the end of the curve on the side of the range it is on with a larger circle around it
-If the position is in range, generate two circles at the ends of the curve
-
-Generate the SVG for the position data (token ID, hooks address, min tick, max tick) and the location curve (where your position falls on the curve)
-
-
-```solidity
-function generateSVGPositionDataAndLocationCurve(string memory tokenId, address hook, int24 tickLower, int24 tickUpper)
- private
- pure
- returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`string`|The token ID|
-|`hook`|`address`|The hooks address|
-|`tickLower`|`int24`|The lower tick|
-|`tickUpper`|`int24`|The upper tick|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG for the position data and location curve|
-
-
-### substring
-
-
-```solidity
-function substring(string memory str, uint256 startIndex, uint256 endIndex) internal pure returns (string memory);
-```
-
-### tickToString
-
-
-```solidity
-function tickToString(int24 tick) private pure returns (string memory);
-```
-
-### rangeLocation
-
-Get the location of where your position falls on the curve
-
-
-```solidity
-function rangeLocation(int24 tickLower, int24 tickUpper) internal pure returns (string memory, string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tickLower`|`int24`|The lower tick|
-|`tickUpper`|`int24`|The upper tick|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|The x and y coordinates of the location of the liquidity|
-|``|`string`||
-
-
-### generateSVGRareSparkle
-
-Generates the SVG for a rare sparkle if the NFT is rare. Else, returns an empty string
-
-
-```solidity
-function generateSVGRareSparkle(uint256 tokenId, address hooks) private pure returns (string memory svg);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|The token ID|
-|`hooks`|`address`|The hooks address|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`svg`|`string`|The SVG for the rare sparkle|
-
-
-### isRare
-
-Determines if an NFT is rare based on the token ID and hooks address
-
-
-```solidity
-function isRare(uint256 tokenId, address hooks) internal pure returns (bool);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`tokenId`|`uint256`|The token ID|
-|`hooks`|`address`|The hooks address|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`bool`|Whether the NFT is rare or not|
-
-
-## Structs
-### SVGParams
-
-```solidity
-struct SVGParams {
- string quoteCurrency;
- string baseCurrency;
- address hooks;
- string quoteCurrencySymbol;
- string baseCurrencySymbol;
- string feeTier;
- int24 tickLower;
- int24 tickUpper;
- int24 tickSpacing;
- int8 overRange;
- uint256 tokenId;
- string color0;
- string color1;
- string color2;
- string color3;
- string x1;
- string y1;
- string x2;
- string y2;
- string x3;
- string y3;
-}
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/SafeCurrencyMetadata.md b/docs/contracts/v4/reference/periphery/libraries/SafeCurrencyMetadata.md
deleted file mode 100644
index 7defdd5f1..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/SafeCurrencyMetadata.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# SafeCurrencyMetadata
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/SafeCurrencyMetadata.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-can produce symbols and decimals from inconsistent or absent ERC20 implementations
-
-*Reference: https://github.com/Uniswap/solidity-lib/blob/master/contracts/libraries/SafeERC20Namer.sol*
-
-
-## State Variables
-### MAX_SYMBOL_LENGTH
-
-```solidity
-uint8 constant MAX_SYMBOL_LENGTH = 12;
-```
-
-
-## Functions
-### currencySymbol
-
-attempts to extract the currency symbol. if it does not implement symbol, returns a symbol derived from the address
-
-
-```solidity
-function currencySymbol(address currency, string memory nativeLabel) internal view returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`address`|The currency address|
-|`nativeLabel`|`string`|The native label|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|the currency symbol|
-
-
-### currencyDecimals
-
-attempts to extract the token decimals, returns 0 if not implemented or not a uint8
-
-
-```solidity
-function currencyDecimals(address currency) internal view returns (uint8);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currency`|`address`|The currency address|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`uint8`|the currency decimals|
-
-
-### bytes32ToString
-
-
-```solidity
-function bytes32ToString(bytes32 x) private pure returns (string memory);
-```
-
-### addressToSymbol
-
-produces a symbol from the address - the first 6 hex of the address string in upper case
-
-
-```solidity
-function addressToSymbol(address currencyAddress) private pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currencyAddress`|`address`|the address of the currency|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|the symbol|
-
-
-### callAndParseStringReturn
-
-calls an external view contract method that returns a symbol, and parses the output into a string
-
-
-```solidity
-function callAndParseStringReturn(address currencyAddress, bytes4 selector) private view returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`currencyAddress`|`address`|the address of the currency|
-|`selector`|`bytes4`|the selector of the symbol method|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|the symbol|
-
-
-### truncateSymbol
-
-truncates the symbol to the MAX_SYMBOL_LENGTH
-
-*assumes the string is already longer than MAX_SYMBOL_LENGTH (or the same)*
-
-
-```solidity
-function truncateSymbol(string memory str) internal pure returns (string memory);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`str`|`string`|the symbol|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|``|`string`|the truncated symbol|
-
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/SlippageCheck.md b/docs/contracts/v4/reference/periphery/libraries/SlippageCheck.md
deleted file mode 100644
index 8ee35bfe7..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/SlippageCheck.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# SlippageCheck
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/SlippageCheck.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-a library for checking if a delta exceeds a maximum ceiling or fails to meet a minimum floor
-
-
-## Functions
-### validateMinOut
-
-Revert if one or both deltas does not meet a minimum output
-
-*This should be called when removing liquidity (burn or decrease)*
-
-
-```solidity
-function validateMinOut(BalanceDelta delta, uint128 amount0Min, uint128 amount1Min) internal pure;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`delta`|`BalanceDelta`|The principal amount of tokens to be removed, does not include any fees accrued|
-|`amount0Min`|`uint128`|The minimum amount of token0 to receive|
-|`amount1Min`|`uint128`|The minimum amount of token1 to receive|
-
-
-### validateMaxIn
-
-Revert if one or both deltas exceeds a maximum input
-
-*This should be called when adding liquidity (mint or increase)*
-
-
-```solidity
-function validateMaxIn(BalanceDelta delta, uint128 amount0Max, uint128 amount1Max) internal pure;
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`delta`|`BalanceDelta`|The principal amount of tokens to be added, does not include any fees accrued (which is possible on increase)|
-|`amount0Max`|`uint128`|The maximum amount of token0 to spend|
-|`amount1Max`|`uint128`|The maximum amount of token1 to spend|
-
-
-## Errors
-### MaximumAmountExceeded
-
-```solidity
-error MaximumAmountExceeded(uint128 maximumAmount, uint128 amountRequested);
-```
-
-### MinimumAmountInsufficient
-
-```solidity
-error MinimumAmountInsufficient(uint128 minimumAmount, uint128 amountReceived);
-```
-
diff --git a/docs/contracts/v4/reference/periphery/libraries/VanityAddressLib.md b/docs/contracts/v4/reference/periphery/libraries/VanityAddressLib.md
deleted file mode 100644
index ed2e5f813..000000000
--- a/docs/contracts/v4/reference/periphery/libraries/VanityAddressLib.md
+++ /dev/null
@@ -1,94 +0,0 @@
-# VanityAddressLib
-[Git Source](https://github.com/uniswap/v4-periphery/blob/3f295d8435e4f776ea2daeb96ce1bc6d63f33fc7/src/libraries/VanityAddressLib.sol) - Generated with [forge doc](https://book.getfoundry.sh/reference/forge/forge-doc)
-
-A library to score addresses based on their vanity
-
-
-## Functions
-### betterThan
-
-Compares two addresses and returns true if the first address has a better vanity score
-
-
-```solidity
-function betterThan(address first, address second) internal pure returns (bool better);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`first`|`address`|The first address to compare|
-|`second`|`address`|The second address to compare|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`better`|`bool`|True if the first address has a better vanity score|
-
-
-### score
-
-Scores an address based on its vanity
-
-*Scoring rules:
-Requirement: The first nonzero nibble must be 4
-10 points for every leading 0 nibble
-40 points if the first 4 is followed by 3 more 4s
-20 points if the first nibble after the 4 4s is NOT a 4
-20 points if the last 4 nibbles are 4s
-1 point for every 4*
-
-
-```solidity
-function score(address addr) internal pure returns (uint256 calculatedScore);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`addr`|`address`|The address to score|
-
-**Returns**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`calculatedScore`|`uint256`|The vanity score of the address|
-
-
-### getLeadingNibbleCount
-
-Returns the number of leading nibbles in an address that match a given value
-
-
-```solidity
-function getLeadingNibbleCount(bytes20 addrBytes, uint256 startIndex, uint8 comparison)
- internal
- pure
- returns (uint256 count);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`addrBytes`|`bytes20`|The address to count the leading zero nibbles in|
-|`startIndex`|`uint256`||
-|`comparison`|`uint8`||
-
-
-### getNibble
-
-Returns the nibble at a given index in an address
-
-
-```solidity
-function getNibble(bytes20 input, uint256 nibbleIndex) internal pure returns (uint8 currentNibble);
-```
-**Parameters**
-
-|Name|Type|Description|
-|----|----|-----------|
-|`input`|`bytes20`|The address to get the nibble from|
-|`nibbleIndex`|`uint256`|The index of the nibble to get|
-
-
diff --git a/docs/integration/Cross-chain Reads/frontend.md b/docs/integration/7683/frontend.md
similarity index 98%
rename from docs/integration/Cross-chain Reads/frontend.md
rename to docs/integration/7683/frontend.md
index c6d6bec1b..3667cb3e4 100644
--- a/docs/integration/Cross-chain Reads/frontend.md
+++ b/docs/integration/7683/frontend.md
@@ -1,11 +1,11 @@
---
-id: frontend
+id: frontend-integration
title: Frontend Integration
sidebar_label: Frontend Integration
-sidebar_position: 3
+sidebar_position: 2
---
-# Frontend Integration for Cross-chain reads (ERC 7683) Intent Bridging
+# Frontend Integration for ERC 7683 Intent Bridging
This guide explains how to integrate the 7683 intent bridging mechanism into your frontend application. It covers encoding the order data, estimating gas, and executing the bridge transaction.
diff --git a/docs/integration/Cross-chain Reads/solver-integration.md b/docs/integration/7683/solver-integration.md
similarity index 87%
rename from docs/integration/Cross-chain Reads/solver-integration.md
rename to docs/integration/7683/solver-integration.md
index e26950296..8cdb6d39c 100644
--- a/docs/integration/Cross-chain Reads/solver-integration.md
+++ b/docs/integration/7683/solver-integration.md
@@ -1,17 +1,16 @@
---
-id: 7683-solver
-title: Solver integration
-sidebar_label: Solver integration
+id: solver-integration
+title: Solver Integration
+sidebar_label: Solver Integration
sidebar_position: 1
---
-# t1 intents protocol: solver integration
+# t1 Intents Protocol: Solver Integration
Our intent protocol implements the ERC 7683 specification.
The workflow is the same for intents opening, filling and settlement.
-
There is only a difference in the process for settlement of solvers on origin chain.
Solvers need to require a so called Proof of Read, and then use a merkle proof to get repaid.
@@ -106,20 +105,20 @@ The HTTP call will return the following structure as a response :
```typescript
interface ReadProofsResponse {
- results: Result[];
- page: number;
- page_size: number;
- total: number;
+ results: Result[]
+ page: number
+ page_size: number
+ total: number
}
interface Result {
- source_tx_hash: string;
- message_type: number;
- block_number: number;
- message_hash: string;
- tx_sender: string;
- direction: Direction;
- claim_info: ClaimInfo;
+ source_tx_hash: string
+ message_type: number
+ block_number: number
+ message_hash: string
+ tx_sender: string
+ direction: Direction
+ claim_info: ClaimInfo
}
enum Direction {
@@ -128,20 +127,19 @@ enum Direction {
}
interface ClaimInfo {
- from: string;
- to: string;
- value: string;
- nonce: string;
- message: string;
- x_chain_read_result: string;
- request_id: string;
- handle_read_result_with_proof_calldata: string;
+ from: string
+ to: string
+ value: string
+ nonce: string
+ message: string
+ x_chain_read_result: string
+ request_id: string
+ handle_read_result_with_proof_calldata: string
proof: {
- batch_index: string;
- merkle_proof: string;
- };
+ batch_index: string
+ merkle_proof: string
+ }
}
-
```
Solver will then iterate on the `results` array and find the one that matches its request.
diff --git a/docs/sdk/core/_category_.json b/docs/sdk/core/_category_.json
deleted file mode 100644
index fed323cc6..000000000
--- a/docs/sdk/core/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Core SDK",
- "position": 4,
- "collapsed": true
-}
diff --git a/docs/sdk/core/overview.md b/docs/sdk/core/overview.md
deleted file mode 100644
index 40141a48d..000000000
--- a/docs/sdk/core/overview.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-id: overview
-sidebar_position: 1
-title: Overview
----
-# The t1 Core SDK
-
-> **Welcome to the V3 Core SDK!**
-
-The t1 Core SDK provides abstractions for other SDKs to use in a Typescript/Javascript environment. It is used throughout the t1 SDKs, such as the [V3 SDK](../v3/overview.md).
-
-This SDK is not expected to be used in isolation, but only as part of other SDKs.
-
-We recommend taking a look at the [**Technical Reference**](./reference/overview).
-
-
-# Resources
-
-- [**SDK Core Github Repo**](https://github.com/Uniswap/sdk-core)
-- [**Core SDK NPM Package**](https://www.npmjs.com/package/@uniswap/sdk-core)
-
-[](https://github.com/Uniswap/uniswap-sdk-core/actions?query=workflow%3A%22Unit+Tests%22)
-[](https://github.com/Uniswap/uniswap-sdk-core/actions?query=workflow%3ALint)
-[](https://www.npmjs.com/package/@uniswap/sdk-core/v/latest)
-[](https://bundlephobia.com/result?p=@uniswap/sdk-core@latest)
-[](https://discord.com/channels/597638925346930701/607978109089611786)
-
-
diff --git a/docs/sdk/core/reference/_category_.json b/docs/sdk/core/reference/_category_.json
deleted file mode 100644
index 6c377fbe6..000000000
--- a/docs/sdk/core/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 1,
- "collapsed": true
-}
diff --git a/docs/sdk/core/reference/classes/CurrencyAmount.md b/docs/sdk/core/reference/classes/CurrencyAmount.md
deleted file mode 100644
index 56ab62c65..000000000
--- a/docs/sdk/core/reference/classes/CurrencyAmount.md
+++ /dev/null
@@ -1,514 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / CurrencyAmount
-
-# Class: CurrencyAmount
-
-## Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `T` | extends [`Currency`](../modules.md#currency) |
-
-## Hierarchy
-
-- [`Fraction`](Fraction.md)
-
- ↳ **`CurrencyAmount`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](CurrencyAmount.md#constructor)
-
-### Properties
-
-- [currency](CurrencyAmount.md#currency)
-- [decimalScale](CurrencyAmount.md#decimalscale)
-- [denominator](CurrencyAmount.md#denominator)
-- [numerator](CurrencyAmount.md#numerator)
-
-### Accessors
-
-- [asFraction](CurrencyAmount.md#asfraction)
-- [quotient](CurrencyAmount.md#quotient)
-- [remainder](CurrencyAmount.md#remainder)
-- [wrapped](CurrencyAmount.md#wrapped)
-
-### Methods
-
-- [add](CurrencyAmount.md#add)
-- [divide](CurrencyAmount.md#divide)
-- [equalTo](CurrencyAmount.md#equalto)
-- [greaterThan](CurrencyAmount.md#greaterthan)
-- [invert](CurrencyAmount.md#invert)
-- [lessThan](CurrencyAmount.md#lessthan)
-- [multiply](CurrencyAmount.md#multiply)
-- [subtract](CurrencyAmount.md#subtract)
-- [toExact](CurrencyAmount.md#toexact)
-- [toFixed](CurrencyAmount.md#tofixed)
-- [toSignificant](CurrencyAmount.md#tosignificant)
-- [fromFractionalAmount](CurrencyAmount.md#fromfractionalamount)
-- [fromRawAmount](CurrencyAmount.md#fromrawamount)
-
-## Constructors
-
-### constructor
-
-• `Protected` **new CurrencyAmount**<`T`\>(`currency`, `numerator`, `denominator?`)
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `T` | extends [`Currency`](../modules.md#currency) |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `currency` | `T` |
-| `numerator` | [`BigintIsh`](../modules.md#bigintish) |
-| `denominator?` | [`BigintIsh`](../modules.md#bigintish) |
-
-#### Overrides
-
-[Fraction](Fraction.md).[constructor](Fraction.md#constructor)
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:40](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L40)
-
-## Properties
-
-### currency
-
-• `Readonly` **currency**: `T`
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:14](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L14)
-
-___
-
-### decimalScale
-
-• `Readonly` **decimalScale**: `default`
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:15](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L15)
-
-___
-
-### denominator
-
-• `Readonly` **denominator**: `default`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[denominator](Fraction.md#denominator)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:26](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L26)
-
-___
-
-### numerator
-
-• `Readonly` **numerator**: `default`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[numerator](Fraction.md#numerator)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:25](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L25)
-
-## Accessors
-
-### asFraction
-
-• `get` **asFraction**(): [`Fraction`](Fraction.md)
-
-Helper method for converting any super class back to a fraction
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-Fraction.asFraction
-
-#### Defined in
-
-[entities/fractions/fraction.ts:154](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L154)
-
-___
-
-### quotient
-
-• `get` **quotient**(): `default`
-
-#### Returns
-
-`default`
-
-#### Inherited from
-
-Fraction.quotient
-
-#### Defined in
-
-[entities/fractions/fraction.ts:42](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L42)
-
-___
-
-### remainder
-
-• `get` **remainder**(): [`Fraction`](Fraction.md)
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-Fraction.remainder
-
-#### Defined in
-
-[entities/fractions/fraction.ts:47](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L47)
-
-___
-
-### wrapped
-
-• `get` **wrapped**(): [`CurrencyAmount`](CurrencyAmount.md)<[`Token`](Token.md)\>
-
-#### Returns
-
-[`CurrencyAmount`](CurrencyAmount.md)<[`Token`](Token.md)\>
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:91](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L91)
-
-## Methods
-
-### add
-
-▸ **add**(`other`): [`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`CurrencyAmount`](CurrencyAmount.md)<`T`\> |
-
-#### Returns
-
-[`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Overrides
-
-[Fraction](Fraction.md).[add](Fraction.md#add)
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:47](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L47)
-
-___
-
-### divide
-
-▸ **divide**(`other`): [`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Overrides
-
-[Fraction](Fraction.md).[divide](Fraction.md#divide)
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:64](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L64)
-
-___
-
-### equalTo
-
-▸ **equalTo**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[equalTo](Fraction.md#equalto)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:91](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L91)
-
-___
-
-### greaterThan
-
-▸ **greaterThan**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[greaterThan](Fraction.md#greaterthan)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:99](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L99)
-
-___
-
-### invert
-
-▸ **invert**(): [`Fraction`](Fraction.md)
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-[Fraction](Fraction.md).[invert](Fraction.md#invert)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:51](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L51)
-
-___
-
-### lessThan
-
-▸ **lessThan**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[lessThan](Fraction.md#lessthan)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:83](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L83)
-
-___
-
-### multiply
-
-▸ **multiply**(`other`): [`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Overrides
-
-[Fraction](Fraction.md).[multiply](Fraction.md#multiply)
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:59](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L59)
-
-___
-
-### subtract
-
-▸ **subtract**(`other`): [`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`CurrencyAmount`](CurrencyAmount.md)<`T`\> |
-
-#### Returns
-
-[`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Overrides
-
-[Fraction](Fraction.md).[subtract](Fraction.md#subtract)
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:53](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L53)
-
-___
-
-### toExact
-
-▸ **toExact**(`format?`): `string`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `format` | `object` |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:86](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L86)
-
-___
-
-### toFixed
-
-▸ **toFixed**(`decimalPlaces?`, `format?`, `rounding?`): `string`
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `decimalPlaces` | `number` | `undefined` |
-| `format?` | `object` | `undefined` |
-| `rounding` | [`Rounding`](../enums/Rounding.md) | `Rounding.ROUND_DOWN` |
-
-#### Returns
-
-`string`
-
-#### Overrides
-
-[Fraction](Fraction.md).[toFixed](Fraction.md#tofixed)
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:77](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L77)
-
-___
-
-### toSignificant
-
-▸ **toSignificant**(`significantDigits?`, `format?`, `rounding?`): `string`
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `significantDigits` | `number` | `6` |
-| `format?` | `object` | `undefined` |
-| `rounding` | [`Rounding`](../enums/Rounding.md) | `Rounding.ROUND_DOWN` |
-
-#### Returns
-
-`string`
-
-#### Overrides
-
-[Fraction](Fraction.md).[toSignificant](Fraction.md#tosignificant)
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:69](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L69)
-
-___
-
-### fromFractionalAmount
-
-▸ `Static` **fromFractionalAmount**<`T`\>(`currency`, `numerator`, `denominator`): [`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-Construct a currency amount with a denominator that is not equal to 1
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `T` | extends [`Currency`](../modules.md#currency) |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `currency` | `T` | the currency |
-| `numerator` | [`BigintIsh`](../modules.md#bigintish) | the numerator of the fractional token amount |
-| `denominator` | [`BigintIsh`](../modules.md#bigintish) | the denominator of the fractional token amount |
-
-#### Returns
-
-[`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:32](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L32)
-
-___
-
-### fromRawAmount
-
-▸ `Static` **fromRawAmount**<`T`\>(`currency`, `rawAmount`): [`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-Returns a new currency amount instance from the unitless amount of token, i.e. the raw amount
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `T` | extends [`Currency`](../modules.md#currency) |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `currency` | `T` | the currency in the amount |
-| `rawAmount` | [`BigintIsh`](../modules.md#bigintish) | the raw token or ether amount |
-
-#### Returns
-
-[`CurrencyAmount`](CurrencyAmount.md)<`T`\>
-
-#### Defined in
-
-[entities/fractions/currencyAmount.ts:22](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/currencyAmount.ts#L22)
diff --git a/docs/sdk/core/reference/classes/Ether.md b/docs/sdk/core/reference/classes/Ether.md
deleted file mode 100644
index f2e4f9360..000000000
--- a/docs/sdk/core/reference/classes/Ether.md
+++ /dev/null
@@ -1,229 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / Ether
-
-# Class: Ether
-
-Ether is the main usage of a 'native' currency, i.e. for Ethereum mainnet and all testnets
-
-## Hierarchy
-
-- [`NativeCurrency`](NativeCurrency.md)
-
- ↳ **`Ether`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Ether.md#constructor)
-
-### Properties
-
-- [chainId](Ether.md#chainid)
-- [decimals](Ether.md#decimals)
-- [isNative](Ether.md#isnative)
-- [isToken](Ether.md#istoken)
-- [name](Ether.md#name)
-- [symbol](Ether.md#symbol)
-- [\_etherCache](Ether.md#_ethercache)
-
-### Accessors
-
-- [wrapped](Ether.md#wrapped)
-
-### Methods
-
-- [equals](Ether.md#equals)
-- [onChain](Ether.md#onchain)
-
-## Constructors
-
-### constructor
-
-• `Protected` **new Ether**(`chainId`)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `chainId` | `number` |
-
-#### Overrides
-
-[NativeCurrency](NativeCurrency.md).[constructor](NativeCurrency.md#constructor)
-
-#### Defined in
-
-[entities/ether.ts:11](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/ether.ts#L11)
-
-## Properties
-
-### chainId
-
-• `Readonly` **chainId**: `number`
-
-The chain ID on which this currency resides
-
-#### Inherited from
-
-[NativeCurrency](NativeCurrency.md).[chainId](NativeCurrency.md#chainid)
-
-#### Defined in
-
-[entities/baseCurrency.ts:21](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L21)
-
-___
-
-### decimals
-
-• `Readonly` **decimals**: `number`
-
-The decimals used in representing currency amounts
-
-#### Inherited from
-
-[NativeCurrency](NativeCurrency.md).[decimals](NativeCurrency.md#decimals)
-
-#### Defined in
-
-[entities/baseCurrency.ts:25](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L25)
-
-___
-
-### isNative
-
-• `Readonly` **isNative**: ``true``
-
-#### Inherited from
-
-[NativeCurrency](NativeCurrency.md).[isNative](NativeCurrency.md#isnative)
-
-#### Defined in
-
-[entities/nativeCurrency.ts:7](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/nativeCurrency.ts#L7)
-
-___
-
-### isToken
-
-• `Readonly` **isToken**: ``false``
-
-#### Inherited from
-
-[NativeCurrency](NativeCurrency.md).[isToken](NativeCurrency.md#istoken)
-
-#### Defined in
-
-[entities/nativeCurrency.ts:8](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/nativeCurrency.ts#L8)
-
-___
-
-### name
-
-• `Optional` `Readonly` **name**: `string`
-
-The name of the currency, i.e. a descriptive textual non-unique identifier
-
-#### Inherited from
-
-[NativeCurrency](NativeCurrency.md).[name](NativeCurrency.md#name)
-
-#### Defined in
-
-[entities/baseCurrency.ts:33](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L33)
-
-___
-
-### symbol
-
-• `Optional` `Readonly` **symbol**: `string`
-
-The symbol of the currency, i.e. a short textual non-unique identifier
-
-#### Inherited from
-
-[NativeCurrency](NativeCurrency.md).[symbol](NativeCurrency.md#symbol)
-
-#### Defined in
-
-[entities/baseCurrency.ts:29](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L29)
-
-___
-
-### \_etherCache
-
-▪ `Static` `Private` **\_etherCache**: `Object` = `{}`
-
-#### Index signature
-
-▪ [chainId: `number`]: [`Ether`](Ether.md)
-
-#### Defined in
-
-[entities/ether.ts:21](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/ether.ts#L21)
-
-## Accessors
-
-### wrapped
-
-• `get` **wrapped**(): [`Token`](Token.md)
-
-Return the wrapped version of this currency that can be used with the t1 contracts. Currencies must
-implement this to be used in t1
-
-#### Returns
-
-[`Token`](Token.md)
-
-#### Overrides
-
-NativeCurrency.wrapped
-
-#### Defined in
-
-[entities/ether.ts:15](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/ether.ts#L15)
-
-## Methods
-
-### equals
-
-▸ **equals**(`other`): `boolean`
-
-Returns whether this currency is functionally equivalent to the other currency
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `other` | [`Currency`](../modules.md#currency) | the other currency |
-
-#### Returns
-
-`boolean`
-
-#### Overrides
-
-[NativeCurrency](NativeCurrency.md).[equals](NativeCurrency.md#equals)
-
-#### Defined in
-
-[entities/ether.ts:27](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/ether.ts#L27)
-
-___
-
-### onChain
-
-▸ `Static` **onChain**(`chainId`): [`Ether`](Ether.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `chainId` | `number` |
-
-#### Returns
-
-[`Ether`](Ether.md)
-
-#### Defined in
-
-[entities/ether.ts:23](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/ether.ts#L23)
diff --git a/docs/sdk/core/reference/classes/Fraction.md b/docs/sdk/core/reference/classes/Fraction.md
deleted file mode 100644
index 3ff1f0cb2..000000000
--- a/docs/sdk/core/reference/classes/Fraction.md
+++ /dev/null
@@ -1,343 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / Fraction
-
-# Class: Fraction
-
-## Hierarchy
-
-- **`Fraction`**
-
- ↳ [`CurrencyAmount`](CurrencyAmount.md)
-
- ↳ [`Percent`](Percent.md)
-
- ↳ [`Price`](Price.md)
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Fraction.md#constructor)
-
-### Properties
-
-- [denominator](Fraction.md#denominator)
-- [numerator](Fraction.md#numerator)
-
-### Accessors
-
-- [asFraction](Fraction.md#asfraction)
-- [quotient](Fraction.md#quotient)
-- [remainder](Fraction.md#remainder)
-
-### Methods
-
-- [add](Fraction.md#add)
-- [divide](Fraction.md#divide)
-- [equalTo](Fraction.md#equalto)
-- [greaterThan](Fraction.md#greaterthan)
-- [invert](Fraction.md#invert)
-- [lessThan](Fraction.md#lessthan)
-- [multiply](Fraction.md#multiply)
-- [subtract](Fraction.md#subtract)
-- [toFixed](Fraction.md#tofixed)
-- [toSignificant](Fraction.md#tosignificant)
-- [tryParseFraction](Fraction.md#tryparsefraction)
-
-## Constructors
-
-### constructor
-
-• **new Fraction**(`numerator`, `denominator?`)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `numerator` | [`BigintIsh`](../modules.md#bigintish) |
-| `denominator` | [`BigintIsh`](../modules.md#bigintish) |
-
-#### Defined in
-
-[entities/fractions/fraction.ts:28](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L28)
-
-## Properties
-
-### denominator
-
-• `Readonly` **denominator**: `default`
-
-#### Defined in
-
-[entities/fractions/fraction.ts:26](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L26)
-
-___
-
-### numerator
-
-• `Readonly` **numerator**: `default`
-
-#### Defined in
-
-[entities/fractions/fraction.ts:25](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L25)
-
-## Accessors
-
-### asFraction
-
-• `get` **asFraction**(): [`Fraction`](Fraction.md)
-
-Helper method for converting any super class back to a fraction
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:154](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L154)
-
-___
-
-### quotient
-
-• `get` **quotient**(): `default`
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[entities/fractions/fraction.ts:42](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L42)
-
-___
-
-### remainder
-
-• `get` **remainder**(): [`Fraction`](Fraction.md)
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:47](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L47)
-
-## Methods
-
-### add
-
-▸ **add**(`other`): [`Fraction`](Fraction.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:55](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L55)
-
-___
-
-### divide
-
-▸ **divide**(`other`): [`Fraction`](Fraction.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:115](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L115)
-
-___
-
-### equalTo
-
-▸ **equalTo**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Defined in
-
-[entities/fractions/fraction.ts:91](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L91)
-
-___
-
-### greaterThan
-
-▸ **greaterThan**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Defined in
-
-[entities/fractions/fraction.ts:99](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L99)
-
-___
-
-### invert
-
-▸ **invert**(): [`Fraction`](Fraction.md)
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:51](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L51)
-
-___
-
-### lessThan
-
-▸ **lessThan**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Defined in
-
-[entities/fractions/fraction.ts:83](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L83)
-
-___
-
-### multiply
-
-▸ **multiply**(`other`): [`Fraction`](Fraction.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:107](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L107)
-
-___
-
-### subtract
-
-▸ **subtract**(`other`): [`Fraction`](Fraction.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:69](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L69)
-
-___
-
-### toFixed
-
-▸ **toFixed**(`decimalPlaces`, `format?`, `rounding?`): `string`
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `decimalPlaces` | `number` | `undefined` |
-| `format` | `object` | `undefined` |
-| `rounding` | [`Rounding`](../enums/Rounding.md) | `Rounding.ROUND_HALF_UP` |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[entities/fractions/fraction.ts:138](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L138)
-
-___
-
-### toSignificant
-
-▸ **toSignificant**(`significantDigits`, `format?`, `rounding?`): `string`
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `significantDigits` | `number` | `undefined` |
-| `format` | `object` | `undefined` |
-| `rounding` | [`Rounding`](../enums/Rounding.md) | `Rounding.ROUND_HALF_UP` |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[entities/fractions/fraction.ts:123](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L123)
-
-___
-
-### tryParseFraction
-
-▸ `Static` `Private` **tryParseFraction**(`fractionish`): [`Fraction`](Fraction.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `fractionish` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:33](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L33)
diff --git a/docs/sdk/core/reference/classes/NativeCurrency.md b/docs/sdk/core/reference/classes/NativeCurrency.md
deleted file mode 100644
index 961f3aa66..000000000
--- a/docs/sdk/core/reference/classes/NativeCurrency.md
+++ /dev/null
@@ -1,200 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / NativeCurrency
-
-# Class: NativeCurrency
-
-Represents the native currency of the chain on which it resides, e.g.
-
-## Hierarchy
-
-- `BaseCurrency`
-
- ↳ **`NativeCurrency`**
-
- ↳↳ [`Ether`](Ether.md)
-
-## Table of contents
-
-### Constructors
-
-- [constructor](NativeCurrency.md#constructor)
-
-### Properties
-
-- [chainId](NativeCurrency.md#chainid)
-- [decimals](NativeCurrency.md#decimals)
-- [isNative](NativeCurrency.md#isnative)
-- [isToken](NativeCurrency.md#istoken)
-- [name](NativeCurrency.md#name)
-- [symbol](NativeCurrency.md#symbol)
-
-### Accessors
-
-- [wrapped](NativeCurrency.md#wrapped)
-
-### Methods
-
-- [equals](NativeCurrency.md#equals)
-
-## Constructors
-
-### constructor
-
-• `Protected` **new NativeCurrency**(`chainId`, `decimals`, `symbol?`, `name?`)
-
-Constructs an instance of the base class `BaseCurrency`.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `chainId` | `number` | the chain ID on which this currency resides |
-| `decimals` | `number` | decimals of the currency |
-| `symbol?` | `string` | symbol of the currency |
-| `name?` | `string` | of the currency |
-
-#### Inherited from
-
-BaseCurrency.constructor
-
-#### Defined in
-
-[entities/baseCurrency.ts:42](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L42)
-
-## Properties
-
-### chainId
-
-• `Readonly` **chainId**: `number`
-
-The chain ID on which this currency resides
-
-#### Inherited from
-
-BaseCurrency.chainId
-
-#### Defined in
-
-[entities/baseCurrency.ts:21](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L21)
-
-___
-
-### decimals
-
-• `Readonly` **decimals**: `number`
-
-The decimals used in representing currency amounts
-
-#### Inherited from
-
-BaseCurrency.decimals
-
-#### Defined in
-
-[entities/baseCurrency.ts:25](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L25)
-
-___
-
-### isNative
-
-• `Readonly` **isNative**: ``true``
-
-#### Overrides
-
-BaseCurrency.isNative
-
-#### Defined in
-
-[entities/nativeCurrency.ts:7](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/nativeCurrency.ts#L7)
-
-___
-
-### isToken
-
-• `Readonly` **isToken**: ``false``
-
-#### Overrides
-
-BaseCurrency.isToken
-
-#### Defined in
-
-[entities/nativeCurrency.ts:8](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/nativeCurrency.ts#L8)
-
-___
-
-### name
-
-• `Optional` `Readonly` **name**: `string`
-
-The name of the currency, i.e. a descriptive textual non-unique identifier
-
-#### Inherited from
-
-BaseCurrency.name
-
-#### Defined in
-
-[entities/baseCurrency.ts:33](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L33)
-
-___
-
-### symbol
-
-• `Optional` `Readonly` **symbol**: `string`
-
-The symbol of the currency, i.e. a short textual non-unique identifier
-
-#### Inherited from
-
-BaseCurrency.symbol
-
-#### Defined in
-
-[entities/baseCurrency.ts:29](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L29)
-
-## Accessors
-
-### wrapped
-
-• `Abstract` `get` **wrapped**(): [`Token`](Token.md)
-
-Return the wrapped version of this currency that can be used with the t1 contracts. Currencies must
-implement this to be used in t1
-
-#### Returns
-
-[`Token`](Token.md)
-
-#### Inherited from
-
-BaseCurrency.wrapped
-
-#### Defined in
-
-[entities/baseCurrency.ts:62](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L62)
-
-## Methods
-
-### equals
-
-▸ `Abstract` **equals**(`other`): `boolean`
-
-Returns whether this currency is functionally equivalent to the other currency
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `other` | [`Currency`](../modules.md#currency) | the other currency |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-BaseCurrency.equals
-
-#### Defined in
-
-[entities/baseCurrency.ts:56](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L56)
diff --git a/docs/sdk/core/reference/classes/Percent.md b/docs/sdk/core/reference/classes/Percent.md
deleted file mode 100644
index 75b89babd..000000000
--- a/docs/sdk/core/reference/classes/Percent.md
+++ /dev/null
@@ -1,395 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / Percent
-
-# Class: Percent
-
-## Hierarchy
-
-- [`Fraction`](Fraction.md)
-
- ↳ **`Percent`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Percent.md#constructor)
-
-### Properties
-
-- [denominator](Percent.md#denominator)
-- [isPercent](Percent.md#ispercent)
-- [numerator](Percent.md#numerator)
-
-### Accessors
-
-- [asFraction](Percent.md#asfraction)
-- [quotient](Percent.md#quotient)
-- [remainder](Percent.md#remainder)
-
-### Methods
-
-- [add](Percent.md#add)
-- [divide](Percent.md#divide)
-- [equalTo](Percent.md#equalto)
-- [greaterThan](Percent.md#greaterthan)
-- [invert](Percent.md#invert)
-- [lessThan](Percent.md#lessthan)
-- [multiply](Percent.md#multiply)
-- [subtract](Percent.md#subtract)
-- [toFixed](Percent.md#tofixed)
-- [toSignificant](Percent.md#tosignificant)
-
-## Constructors
-
-### constructor
-
-• **new Percent**(`numerator`, `denominator?`)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `numerator` | [`BigintIsh`](../modules.md#bigintish) |
-| `denominator` | [`BigintIsh`](../modules.md#bigintish) |
-
-#### Inherited from
-
-[Fraction](Fraction.md).[constructor](Fraction.md#constructor)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:28](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L28)
-
-## Properties
-
-### denominator
-
-• `Readonly` **denominator**: `default`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[denominator](Fraction.md#denominator)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:26](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L26)
-
-___
-
-### isPercent
-
-• `Readonly` **isPercent**: ``true``
-
-This boolean prevents a fraction from being interpreted as a Percent
-
-#### Defined in
-
-[entities/fractions/percent.ts:19](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/percent.ts#L19)
-
-___
-
-### numerator
-
-• `Readonly` **numerator**: `default`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[numerator](Fraction.md#numerator)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:25](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L25)
-
-## Accessors
-
-### asFraction
-
-• `get` **asFraction**(): [`Fraction`](Fraction.md)
-
-Helper method for converting any super class back to a fraction
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-Fraction.asFraction
-
-#### Defined in
-
-[entities/fractions/fraction.ts:154](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L154)
-
-___
-
-### quotient
-
-• `get` **quotient**(): `default`
-
-#### Returns
-
-`default`
-
-#### Inherited from
-
-Fraction.quotient
-
-#### Defined in
-
-[entities/fractions/fraction.ts:42](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L42)
-
-___
-
-### remainder
-
-• `get` **remainder**(): [`Fraction`](Fraction.md)
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-Fraction.remainder
-
-#### Defined in
-
-[entities/fractions/fraction.ts:47](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L47)
-
-## Methods
-
-### add
-
-▸ **add**(`other`): [`Percent`](Percent.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Percent`](Percent.md)
-
-#### Overrides
-
-[Fraction](Fraction.md).[add](Fraction.md#add)
-
-#### Defined in
-
-[entities/fractions/percent.ts:21](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/percent.ts#L21)
-
-___
-
-### divide
-
-▸ **divide**(`other`): [`Percent`](Percent.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Percent`](Percent.md)
-
-#### Overrides
-
-[Fraction](Fraction.md).[divide](Fraction.md#divide)
-
-#### Defined in
-
-[entities/fractions/percent.ts:33](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/percent.ts#L33)
-
-___
-
-### equalTo
-
-▸ **equalTo**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[equalTo](Fraction.md#equalto)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:91](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L91)
-
-___
-
-### greaterThan
-
-▸ **greaterThan**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[greaterThan](Fraction.md#greaterthan)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:99](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L99)
-
-___
-
-### invert
-
-▸ **invert**(): [`Fraction`](Fraction.md)
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-[Fraction](Fraction.md).[invert](Fraction.md#invert)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:51](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L51)
-
-___
-
-### lessThan
-
-▸ **lessThan**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[lessThan](Fraction.md#lessthan)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:83](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L83)
-
-___
-
-### multiply
-
-▸ **multiply**(`other`): [`Percent`](Percent.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Percent`](Percent.md)
-
-#### Overrides
-
-[Fraction](Fraction.md).[multiply](Fraction.md#multiply)
-
-#### Defined in
-
-[entities/fractions/percent.ts:29](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/percent.ts#L29)
-
-___
-
-### subtract
-
-▸ **subtract**(`other`): [`Percent`](Percent.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Percent`](Percent.md)
-
-#### Overrides
-
-[Fraction](Fraction.md).[subtract](Fraction.md#subtract)
-
-#### Defined in
-
-[entities/fractions/percent.ts:25](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/percent.ts#L25)
-
-___
-
-### toFixed
-
-▸ **toFixed**(`decimalPlaces?`, `format?`, `rounding?`): `string`
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `decimalPlaces` | `number` | `2` |
-| `format?` | `object` | `undefined` |
-| `rounding?` | [`Rounding`](../enums/Rounding.md) | `undefined` |
-
-#### Returns
-
-`string`
-
-#### Overrides
-
-[Fraction](Fraction.md).[toFixed](Fraction.md#tofixed)
-
-#### Defined in
-
-[entities/fractions/percent.ts:41](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/percent.ts#L41)
-
-___
-
-### toSignificant
-
-▸ **toSignificant**(`significantDigits?`, `format?`, `rounding?`): `string`
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `significantDigits` | `number` | `5` |
-| `format?` | `object` | `undefined` |
-| `rounding?` | [`Rounding`](../enums/Rounding.md) | `undefined` |
-
-#### Returns
-
-`string`
-
-#### Overrides
-
-[Fraction](Fraction.md).[toSignificant](Fraction.md#tosignificant)
-
-#### Defined in
-
-[entities/fractions/percent.ts:37](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/percent.ts#L37)
diff --git a/docs/sdk/core/reference/classes/Price.md b/docs/sdk/core/reference/classes/Price.md
deleted file mode 100644
index 0e3df987d..000000000
--- a/docs/sdk/core/reference/classes/Price.md
+++ /dev/null
@@ -1,480 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / Price
-
-# Class: Price
-
-## Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TBase` | extends [`Currency`](../modules.md#currency) |
-| `TQuote` | extends [`Currency`](../modules.md#currency) |
-
-## Hierarchy
-
-- [`Fraction`](Fraction.md)
-
- ↳ **`Price`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Price.md#constructor)
-
-### Properties
-
-- [baseCurrency](Price.md#basecurrency)
-- [denominator](Price.md#denominator)
-- [numerator](Price.md#numerator)
-- [quoteCurrency](Price.md#quotecurrency)
-- [scalar](Price.md#scalar)
-
-### Accessors
-
-- [adjustedForDecimals](Price.md#adjustedfordecimals)
-- [asFraction](Price.md#asfraction)
-- [quotient](Price.md#quotient)
-- [remainder](Price.md#remainder)
-
-### Methods
-
-- [add](Price.md#add)
-- [divide](Price.md#divide)
-- [equalTo](Price.md#equalto)
-- [greaterThan](Price.md#greaterthan)
-- [invert](Price.md#invert)
-- [lessThan](Price.md#lessthan)
-- [multiply](Price.md#multiply)
-- [quote](Price.md#quote)
-- [subtract](Price.md#subtract)
-- [toFixed](Price.md#tofixed)
-- [toSignificant](Price.md#tosignificant)
-
-## Constructors
-
-### constructor
-
-• **new Price**<`TBase`, `TQuote`\>(...`args`)
-
-Construct a price, either with the base and quote currency amount, or the
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TBase` | extends [`Currency`](../modules.md#currency) |
-| `TQuote` | extends [`Currency`](../modules.md#currency) |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `...args` | [`TBase`, `TQuote`, [`BigintIsh`](../modules.md#bigintish), [`BigintIsh`](../modules.md#bigintish)] \| [{ `baseAmount`: [`CurrencyAmount`](CurrencyAmount.md)<`TBase`\> ; `quoteAmount`: [`CurrencyAmount`](CurrencyAmount.md)<`TQuote`\> }] |
-
-#### Overrides
-
-[Fraction](Fraction.md).[constructor](Fraction.md#constructor)
-
-#### Defined in
-
-[entities/fractions/price.ts:18](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L18)
-
-## Properties
-
-### baseCurrency
-
-• `Readonly` **baseCurrency**: `TBase`
-
-#### Defined in
-
-[entities/fractions/price.ts:10](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L10)
-
-___
-
-### denominator
-
-• `Readonly` **denominator**: `default`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[denominator](Fraction.md#denominator)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:26](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L26)
-
-___
-
-### numerator
-
-• `Readonly` **numerator**: `default`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[numerator](Fraction.md#numerator)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:25](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L25)
-
-___
-
-### quoteCurrency
-
-• `Readonly` **quoteCurrency**: `TQuote`
-
-#### Defined in
-
-[entities/fractions/price.ts:11](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L11)
-
-___
-
-### scalar
-
-• `Readonly` **scalar**: [`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/price.ts:12](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L12)
-
-## Accessors
-
-### adjustedForDecimals
-
-• `Private` `get` **adjustedForDecimals**(): [`Fraction`](Fraction.md)
-
-Get the value scaled by decimals for formatting
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Defined in
-
-[entities/fractions/price.ts:77](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L77)
-
-___
-
-### asFraction
-
-• `get` **asFraction**(): [`Fraction`](Fraction.md)
-
-Helper method for converting any super class back to a fraction
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-Fraction.asFraction
-
-#### Defined in
-
-[entities/fractions/fraction.ts:154](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L154)
-
-___
-
-### quotient
-
-• `get` **quotient**(): `default`
-
-#### Returns
-
-`default`
-
-#### Inherited from
-
-Fraction.quotient
-
-#### Defined in
-
-[entities/fractions/fraction.ts:42](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L42)
-
-___
-
-### remainder
-
-• `get` **remainder**(): [`Fraction`](Fraction.md)
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-Fraction.remainder
-
-#### Defined in
-
-[entities/fractions/fraction.ts:47](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L47)
-
-## Methods
-
-### add
-
-▸ **add**(`other`): [`Fraction`](Fraction.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-[Fraction](Fraction.md).[add](Fraction.md#add)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:55](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L55)
-
-___
-
-### divide
-
-▸ **divide**(`other`): [`Fraction`](Fraction.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-[Fraction](Fraction.md).[divide](Fraction.md#divide)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:115](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L115)
-
-___
-
-### equalTo
-
-▸ **equalTo**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[equalTo](Fraction.md#equalto)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:91](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L91)
-
-___
-
-### greaterThan
-
-▸ **greaterThan**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[greaterThan](Fraction.md#greaterthan)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:99](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L99)
-
-___
-
-### invert
-
-▸ **invert**(): [`Price`](Price.md)<`TQuote`, `TBase`\>
-
-Flip the price, switching the base and quote currency
-
-#### Returns
-
-[`Price`](Price.md)<`TQuote`, `TBase`\>
-
-#### Overrides
-
-[Fraction](Fraction.md).[invert](Fraction.md#invert)
-
-#### Defined in
-
-[entities/fractions/price.ts:49](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L49)
-
-___
-
-### lessThan
-
-▸ **lessThan**(`other`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-`boolean`
-
-#### Inherited from
-
-[Fraction](Fraction.md).[lessThan](Fraction.md#lessthan)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:83](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L83)
-
-___
-
-### multiply
-
-▸ **multiply**<`TOtherQuote`\>(`other`): [`Price`](Price.md)<`TBase`, `TOtherQuote`\>
-
-Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TOtherQuote` | extends [`Currency`](../modules.md#currency) |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `other` | [`Price`](Price.md)<`TQuote`, `TOtherQuote`\> | the other price |
-
-#### Returns
-
-[`Price`](Price.md)<`TBase`, `TOtherQuote`\>
-
-#### Overrides
-
-[Fraction](Fraction.md).[multiply](Fraction.md#multiply)
-
-#### Defined in
-
-[entities/fractions/price.ts:57](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L57)
-
-___
-
-### quote
-
-▸ **quote**(`currencyAmount`): [`CurrencyAmount`](CurrencyAmount.md)<`TQuote`\>
-
-Return the amount of quote currency corresponding to a given amount of the base currency
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `currencyAmount` | [`CurrencyAmount`](CurrencyAmount.md)<`TBase`\> | the amount of base currency to quote against the price |
-
-#### Returns
-
-[`CurrencyAmount`](CurrencyAmount.md)<`TQuote`\>
-
-#### Defined in
-
-[entities/fractions/price.ts:67](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L67)
-
-___
-
-### subtract
-
-▸ **subtract**(`other`): [`Fraction`](Fraction.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `other` | [`BigintIsh`](../modules.md#bigintish) \| [`Fraction`](Fraction.md) |
-
-#### Returns
-
-[`Fraction`](Fraction.md)
-
-#### Inherited from
-
-[Fraction](Fraction.md).[subtract](Fraction.md#subtract)
-
-#### Defined in
-
-[entities/fractions/fraction.ts:69](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/fraction.ts#L69)
-
-___
-
-### toFixed
-
-▸ **toFixed**(`decimalPlaces?`, `format?`, `rounding?`): `string`
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `decimalPlaces` | `number` | `4` |
-| `format?` | `object` | `undefined` |
-| `rounding?` | [`Rounding`](../enums/Rounding.md) | `undefined` |
-
-#### Returns
-
-`string`
-
-#### Overrides
-
-[Fraction](Fraction.md).[toFixed](Fraction.md#tofixed)
-
-#### Defined in
-
-[entities/fractions/price.ts:85](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L85)
-
-___
-
-### toSignificant
-
-▸ **toSignificant**(`significantDigits?`, `format?`, `rounding?`): `string`
-
-#### Parameters
-
-| Name | Type | Default value |
-| :------ | :------ | :------ |
-| `significantDigits` | `number` | `6` |
-| `format?` | `object` | `undefined` |
-| `rounding?` | [`Rounding`](../enums/Rounding.md) | `undefined` |
-
-#### Returns
-
-`string`
-
-#### Overrides
-
-[Fraction](Fraction.md).[toSignificant](Fraction.md#tosignificant)
-
-#### Defined in
-
-[entities/fractions/price.ts:81](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/fractions/price.ts#L81)
diff --git a/docs/sdk/core/reference/classes/Token.md b/docs/sdk/core/reference/classes/Token.md
deleted file mode 100644
index 2f5f25fcf..000000000
--- a/docs/sdk/core/reference/classes/Token.md
+++ /dev/null
@@ -1,241 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / Token
-
-# Class: Token
-
-Represents an ERC20 token with a unique address and some metadata.
-
-## Hierarchy
-
-- `BaseCurrency`
-
- ↳ **`Token`**
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Token.md#constructor)
-
-### Properties
-
-- [address](Token.md#address)
-- [chainId](Token.md#chainid)
-- [decimals](Token.md#decimals)
-- [isNative](Token.md#isnative)
-- [isToken](Token.md#istoken)
-- [name](Token.md#name)
-- [symbol](Token.md#symbol)
-
-### Accessors
-
-- [wrapped](Token.md#wrapped)
-
-### Methods
-
-- [equals](Token.md#equals)
-- [sortsBefore](Token.md#sortsbefore)
-
-## Constructors
-
-### constructor
-
-• **new Token**(`chainId`, `address`, `decimals`, `symbol?`, `name?`, `bypassChecksum?`)
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `chainId` | `number` | BaseCurrency#chainId |
-| `address` | `string` | The contract address on the chain on which this token lives |
-| `decimals` | `number` | BaseCurrency#decimals |
-| `symbol?` | `string` | BaseCurrency#symbol |
-| `name?` | `string` | BaseCurrency#name |
-| `bypassChecksum?` | `boolean` | If true it only checks for length === 42, startsWith 0x and contains only hex characters |
-
-#### Overrides
-
-BaseCurrency.constructor
-
-#### Defined in
-
-[entities/token.ts:27](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/token.ts#L27)
-
-## Properties
-
-### address
-
-• `Readonly` **address**: `string`
-
-The contract address on the chain on which this token lives
-
-#### Defined in
-
-[entities/token.ts:16](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/token.ts#L16)
-
-___
-
-### chainId
-
-• `Readonly` **chainId**: `number`
-
-The chain ID on which this currency resides
-
-#### Inherited from
-
-BaseCurrency.chainId
-
-#### Defined in
-
-[entities/baseCurrency.ts:21](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L21)
-
-___
-
-### decimals
-
-• `Readonly` **decimals**: `number`
-
-The decimals used in representing currency amounts
-
-#### Inherited from
-
-BaseCurrency.decimals
-
-#### Defined in
-
-[entities/baseCurrency.ts:25](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L25)
-
-___
-
-### isNative
-
-• `Readonly` **isNative**: ``false``
-
-#### Overrides
-
-BaseCurrency.isNative
-
-#### Defined in
-
-[entities/token.ts:10](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/token.ts#L10)
-
-___
-
-### isToken
-
-• `Readonly` **isToken**: ``true``
-
-#### Overrides
-
-BaseCurrency.isToken
-
-#### Defined in
-
-[entities/token.ts:11](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/token.ts#L11)
-
-___
-
-### name
-
-• `Optional` `Readonly` **name**: `string`
-
-The name of the currency, i.e. a descriptive textual non-unique identifier
-
-#### Inherited from
-
-BaseCurrency.name
-
-#### Defined in
-
-[entities/baseCurrency.ts:33](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L33)
-
-___
-
-### symbol
-
-• `Optional` `Readonly` **symbol**: `string`
-
-The symbol of the currency, i.e. a short textual non-unique identifier
-
-#### Inherited from
-
-BaseCurrency.symbol
-
-#### Defined in
-
-[entities/baseCurrency.ts:29](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/baseCurrency.ts#L29)
-
-## Accessors
-
-### wrapped
-
-• `get` **wrapped**(): [`Token`](Token.md)
-
-Return this token, which does not need to be wrapped
-
-#### Returns
-
-[`Token`](Token.md)
-
-#### Overrides
-
-BaseCurrency.wrapped
-
-#### Defined in
-
-[entities/token.ts:66](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/token.ts#L66)
-
-## Methods
-
-### equals
-
-▸ **equals**(`other`): `boolean`
-
-Returns true if the two tokens are equivalent, i.e. have the same chainId and address.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `other` | [`Currency`](../modules.md#currency) | other token to compare |
-
-#### Returns
-
-`boolean`
-
-#### Overrides
-
-BaseCurrency.equals
-
-#### Defined in
-
-[entities/token.ts:47](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/token.ts#L47)
-
-___
-
-### sortsBefore
-
-▸ **sortsBefore**(`other`): `boolean`
-
-Returns true if the address of this token sorts before the address of the other token
-
-**`Throws`**
-
-if the tokens have the same address
-
-**`Throws`**
-
-if the tokens are on different chains
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `other` | [`Token`](Token.md) | other token to compare |
-
-#### Returns
-
-`boolean`
-
-#### Defined in
-
-[entities/token.ts:57](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/token.ts#L57)
diff --git a/docs/sdk/core/reference/enums/ChainId.md b/docs/sdk/core/reference/enums/ChainId.md
deleted file mode 100644
index 2d0d8716a..000000000
--- a/docs/sdk/core/reference/enums/ChainId.md
+++ /dev/null
@@ -1,173 +0,0 @@
-[@uniswap/sdk-core](../README.md) / Exports / ChainId
-
-# Enumeration: ChainId
-
-## Table of contents
-
-### Enumeration Members
-
-- [ARBITRUM\_ONE](ChainId.md#arbitrum_one)
-- [ARBITRUM\_GOERLI](ChainId.md#arbitrum_goerli)
-- [CELO](ChainId.md#celo)
-- [CELO\_ALFAJORES](ChainId.md#celo_alfajores)
-- [GOERLI](ChainId.md#goerli)
-- [MAINNET](ChainId.md#mainnet)
-- [OPTIMISM](ChainId.md#optimism)
-- [OPTIMISM\_GOERLI](ChainId.md#optimism_goerli)
-- [POLYGON](ChainId.md#polygon)
-- [POLYGON\_MUMBAI](ChainId.md#polygon_mumbai)
-- [SEPOLIA](ChainId.md#sepolia)
-- [GNOSIS](ChainId.md#gnosis)
-- [MOONBEAM](ChainId.md#moonbeam)
-- [BNB](ChainId.md#bnb)
-- [AVALANCHE](ChainId.md#avalanche)
-
-## Enumeration Members
-
-### ARBITRUM\_ONE
-
-• **ARBITRUM\_ONE** = ``42161``
-
-#### Defined in
-
-[chains.ts:7](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L7)
-
-___
-
-### ARBITRUM\_GOERLI
-
-• **ARBITRUM\_GOERLI** = ``421613``
-
-#### Defined in
-
-[chains.ts:8](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L8)
-
-___
-
-### CELO
-
-• **CELO** = ``42220``
-
-#### Defined in
-
-[chains.ts:11](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L11)
-
-___
-
-### CELO\_ALFAJORES
-
-• **CELO\_ALFAJORES** = ``44787``
-
-#### Defined in
-
-[chains.ts:12](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L12)
-
-___
-
-### GOERLI
-
-• **GOERLI** = ``5``
-
-#### Defined in
-
-[chains.ts:3](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L3)
-
-___
-
-### MAINNET
-
-• **MAINNET** = ``1``
-
-#### Defined in
-
-[chains.ts:2](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L2)
-
-___
-
-### OPTIMISM
-
-• **OPTIMISM** = ``10``
-
-#### Defined in
-
-[chains.ts:5](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L5)
-
-___
-
-### OPTIMISM\_GOERLI
-
-• **OPTIMISM\_GOERLI** = ``420``
-
-#### Defined in
-
-[chains.ts:6](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L6)
-
-___
-
-### POLYGON
-
-• **POLYGON** = ``137``
-
-#### Defined in
-
-[chains.ts:9](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L9)
-
-___
-
-### POLYGON\_MUMBAI
-
-• **POLYGON\_MUMBAI** = ``80001``
-
-#### Defined in
-
-[chains.ts:10](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L10)
-
-___
-
-### SEPOLIA
-
-• **SEPOLIA** = ``11155111``
-
-#### Defined in
-
-[chains.ts:4](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L4)
-
-___
-
-### GNOSIS
-
-• **GNOSIS** = ``100``
-
-#### Defined in
-
-[chains.ts:13](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L13)
-
-___
-
-### MOONBEAM
-
-• **MOONBEAM** = ``1284``
-
-#### Defined in
-
-[chains.ts:14](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L14)
-
-___
-
-### BNB
-
-• **BNB** = ``56``
-
-#### Defined in
-
-[chains.ts:15](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L15)
-
-___
-
-### AVALANCHE
-
-• **AVALANCHE** = ``43114``
-
-#### Defined in
-
-[chains.ts:16](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L16)
diff --git a/docs/sdk/core/reference/enums/NativeCurrencyName.md b/docs/sdk/core/reference/enums/NativeCurrencyName.md
deleted file mode 100644
index c0c6cb50a..000000000
--- a/docs/sdk/core/reference/enums/NativeCurrencyName.md
+++ /dev/null
@@ -1,83 +0,0 @@
-[@uniswap/sdk-core](../README.md) / Exports / NativeCurrencyName
-
-# Enumeration: NativeCurrencyName
-
-## Table of Contents
-
-### Enumeration Members
-
-- [ETHER](NativeCurrencyName.md#ether)
-- [MATIC](NativeCurrencyName.md#matic)
-- [CELO](NativeCurrencyName.md#celo)
-- [GNOSIS](NativeCurrencyName.md#gnosis)
-- [MOONBEAM](NativeCurrencyName.md#moonbeam)
-- [BNB](NativeCurrencyName.md#bnb)
-- [AVAX](NativeCurrencyName.md#avax)
-
-### ETHER
-
-• **ETHER** = ``ETH``
-
-#### Defined in
-
-[chains.ts:38](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L38)
-
-___
-
-### MATIC
-
-• **MATIC** = ``MATIC``
-
-#### Defined in
-
-[chains.ts:39](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L39)
-
-___
-
-### CELO
-
-• **CELO** = ``CELO``
-
-#### Defined in
-
-[chains.ts:40](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L40)
-
-___
-
-### GNOSIS
-
-• **GNOSIS** = ``XDAI``
-
-#### Defined in
-
-[chains.ts:41](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L41)
-
-___
-
-### MOONBEAM
-
-• **MOONBEAM** = ``GLMR``
-
-#### Defined in
-
-[chains.ts:42](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L42)
-
-___
-
-### BNB
-
-• **BNB** = ``BNB``
-
-#### Defined in
-
-[chains.ts:43](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L43)
-
-___
-
-### AVAX
-
-• **AVAX** = ``AVAX``
-
-#### Defined in
-
-[chains.ts:44](https://github.com/Uniswap/sdk-core/blob/main/src/chains.ts#L44)
diff --git a/docs/sdk/core/reference/enums/Rounding.md b/docs/sdk/core/reference/enums/Rounding.md
deleted file mode 100644
index 33c26dee0..000000000
--- a/docs/sdk/core/reference/enums/Rounding.md
+++ /dev/null
@@ -1,41 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / Rounding
-
-# Enumeration: Rounding
-
-## Table of contents
-
-### Enumeration Members
-
-- [ROUND\_DOWN](Rounding.md#round_down)
-- [ROUND\_HALF\_UP](Rounding.md#round_half_up)
-- [ROUND\_UP](Rounding.md#round_up)
-
-## Enumeration Members
-
-### ROUND\_DOWN
-
-• **ROUND\_DOWN** = ``0``
-
-#### Defined in
-
-[constants.ts:32](https://github.com/Uniswap/sdk-core/blob/9997e88/src/constants.ts#L32)
-
-___
-
-### ROUND\_HALF\_UP
-
-• **ROUND\_HALF\_UP** = ``1``
-
-#### Defined in
-
-[constants.ts:33](https://github.com/Uniswap/sdk-core/blob/9997e88/src/constants.ts#L33)
-
-___
-
-### ROUND\_UP
-
-• **ROUND\_UP** = ``2``
-
-#### Defined in
-
-[constants.ts:34](https://github.com/Uniswap/sdk-core/blob/9997e88/src/constants.ts#L34)
diff --git a/docs/sdk/core/reference/enums/TradeType.md b/docs/sdk/core/reference/enums/TradeType.md
deleted file mode 100644
index 92d8adb68..000000000
--- a/docs/sdk/core/reference/enums/TradeType.md
+++ /dev/null
@@ -1,30 +0,0 @@
-[@uniswap/sdk-core](../README.md) / [Exports](../modules.md) / TradeType
-
-# Enumeration: TradeType
-
-## Table of contents
-
-### Enumeration Members
-
-- [EXACT\_INPUT](TradeType.md#exact_input)
-- [EXACT\_OUTPUT](TradeType.md#exact_output)
-
-## Enumeration Members
-
-### EXACT\_INPUT
-
-• **EXACT\_INPUT** = ``0``
-
-#### Defined in
-
-[constants.ts:27](https://github.com/Uniswap/sdk-core/blob/9997e88/src/constants.ts#L27)
-
-___
-
-### EXACT\_OUTPUT
-
-• **EXACT\_OUTPUT** = ``1``
-
-#### Defined in
-
-[constants.ts:28](https://github.com/Uniswap/sdk-core/blob/9997e88/src/constants.ts#L28)
diff --git a/docs/sdk/core/reference/overview.md b/docs/sdk/core/reference/overview.md
deleted file mode 100644
index 4599eca30..000000000
--- a/docs/sdk/core/reference/overview.md
+++ /dev/null
@@ -1,191 +0,0 @@
----
-id: overview
-sidebar_position: 1
-title: Overview
----
-
-## Table of contents
-
-### Enumerations
-
-- [Rounding](enums/Rounding.md)
-- [ChainId](enums/ChainId.md)
-- [NativeCurrencyName](enums/NativeCurrencyName.md)
-- [TradeType](enums/TradeType.md)
-
-### Classes
-
-- [CurrencyAmount](classes/CurrencyAmount.md)
-- [Ether](classes/Ether.md)
-- [Fraction](classes/Fraction.md)
-- [NativeCurrency](classes/NativeCurrency.md)
-- [Percent](classes/Percent.md)
-- [Price](classes/Price.md)
-- [Token](classes/Token.md)
-
-### Type Aliases
-
-- [BigintIsh](modules.md#bigintish)
-- [Currency](modules.md#currency)
-
-### Variables
-
-- [MaxUint256](modules.md#maxuint256)
-- [WETH9](modules.md#weth9)
-
-### Functions
-
-- [computePriceImpact](modules.md#computepriceimpact)
-- [sortedInsert](modules.md#sortedinsert)
-- [sqrt](modules.md#sqrt)
-- [validateAndParseAddress](modules.md#validateandparseaddress)
-
-## Type Aliases
-
-### BigintIsh
-
-Ƭ **BigintIsh**: `JSBI` \| `string` \| `number`
-
-#### Defined in
-
-[constants.ts:24](https://github.com/Uniswap/sdk-core/blob/9997e88/src/constants.ts#L24)
-
-___
-
-### Currency
-
-Ƭ **Currency**: [`NativeCurrency`](classes/NativeCurrency.md) \| [`Token`](classes/Token.md)
-
-#### Defined in
-
-[entities/currency.ts:4](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/currency.ts#L4)
-
-## Variables
-
-### MaxUint256
-
-• `Const` **MaxUint256**: `default`
-
-#### Defined in
-
-[constants.ts:37](https://github.com/Uniswap/sdk-core/blob/9997e88/src/constants.ts#L37)
-
-___
-
-### WETH9
-
-• `Const` **WETH9**: `Object`
-
-Known WETH9 implementation addresses, used in our implementation of Ether#wrapped
-
-#### Index signature
-
-▪ [chainId: `number`]: [`Token`](classes/Token.md)
-
-#### Defined in
-
-[entities/weth9.ts:6](https://github.com/Uniswap/sdk-core/blob/9997e88/src/entities/weth9.ts#L6)
-
-## Functions
-
-### computePriceImpact
-
-▸ **computePriceImpact**<`TBase`, `TQuote`\>(`midPrice`, `inputAmount`, `outputAmount`): [`Percent`](classes/Percent.md)
-
-Returns the percent difference between the mid price and the execution price, i.e. price impact.
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TBase` | extends [`Currency`](modules.md#currency) |
-| `TQuote` | extends [`Currency`](modules.md#currency) |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `midPrice` | [`Price`](classes/Price.md)<`TBase`, `TQuote`\> | mid price before the trade |
-| `inputAmount` | [`CurrencyAmount`](classes/CurrencyAmount.md)<`TBase`\> | the input amount of the trade |
-| `outputAmount` | [`CurrencyAmount`](classes/CurrencyAmount.md)<`TQuote`\> | the output amount of the trade |
-
-#### Returns
-
-[`Percent`](classes/Percent.md)
-
-#### Defined in
-
-[utils/computePriceImpact.ts:9](https://github.com/Uniswap/sdk-core/blob/9997e88/src/utils/computePriceImpact.ts#L9)
-
-___
-
-### sortedInsert
-
-▸ **sortedInsert**<`T`\>(`items`, `add`, `maxSize`, `comparator`): `T` \| ``null``
-
-#### Type parameters
-
-| Name |
-| :------ |
-| `T` |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `items` | `T`[] |
-| `add` | `T` |
-| `maxSize` | `number` |
-| `comparator` | (`a`: `T`, `b`: `T`) => `number` |
-
-#### Returns
-
-`T` \| ``null``
-
-#### Defined in
-
-[utils/sortedInsert.ts:5](https://github.com/Uniswap/sdk-core/blob/9997e88/src/utils/sortedInsert.ts#L5)
-
-___
-
-### sqrt
-
-▸ **sqrt**(`value`): `JSBI`
-
-Computes floor(sqrt(value))
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `value` | `default` | the value for which to compute the square root, rounded down |
-
-#### Returns
-
-`JSBI`
-
-#### Defined in
-
-[utils/sqrt.ts:14](https://github.com/Uniswap/sdk-core/blob/9997e88/src/utils/sqrt.ts#L14)
-
-___
-
-### validateAndParseAddress
-
-▸ **validateAndParseAddress**(`address`): `string`
-
-Validates an address and returns the parsed (checksummed) version of that address
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `address` | `string` | the unchecksummed hex address |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[utils/validateAndParseAddress.ts:7](https://github.com/Uniswap/sdk-core/blob/9997e88/src/utils/validateAndParseAddress.ts#L7)
diff --git a/docs/sdk/swap-widget/_category_.json b/docs/sdk/swap-widget/_category_.json
deleted file mode 100644
index 93e0d0195..000000000
--- a/docs/sdk/swap-widget/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Swap Widget",
- "position": 2,
- "collapsed": true
-}
diff --git a/docs/sdk/swap-widget/guides/_category_.json b/docs/sdk/swap-widget/guides/_category_.json
deleted file mode 100644
index 4b2d3e3ba..000000000
--- a/docs/sdk/swap-widget/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 2,
- "collapsed": true
-}
diff --git a/docs/sdk/swap-widget/guides/swap-widget-examples.mdx b/docs/sdk/swap-widget/guides/swap-widget-examples.mdx
deleted file mode 100644
index 617102e08..000000000
--- a/docs/sdk/swap-widget/guides/swap-widget-examples.mdx
+++ /dev/null
@@ -1,209 +0,0 @@
----
-id: examples
-title: Swap Widget Example Themes
-sidebar_label: Example Themes
-sidebar_position: 2
----
-
-import useBaseUrl from '@docusaurus/useBaseUrl';
-
-# Swap Widget Example Themes
-
-The [Getting Started guide](/sdk/swap-widget/guides/getting-started) showed how to embed the swap widget and let your users trade tokens on the Uniswap Protocol without leaving your dApp.
-
-Below you’ll find a few examples showing how you can [customize the widget theme](/sdk/swap-widget/guides/examples#customizing-theme) to match the look and feel of your dApp. All of them can be integrated using the following code snippet where you can set your `theme`:
-
-```tsx
-import { Theme, SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/dist/fonts.css'
-
-const theme: Theme = {
- // Check out the theme examples below
-}
-
-function App() {
-
-
-
-}
-```
-
-## Theme Examples
-
-Copy any of the `theme` object below to start making your own custom appearance for the swap widget. You might also need the right CSS import for any custom fonts.
-
-
-
-:::note Questions?
-Join the [Discord channel](https://discord.com/channels/597638925346930701/941447445844463676) to ask questions and get support from the Uniswap community.
-:::
diff --git a/docs/sdk/swap-widget/guides/swap-widget.mdx b/docs/sdk/swap-widget/guides/swap-widget.mdx
deleted file mode 100644
index 6c04c46b4..000000000
--- a/docs/sdk/swap-widget/guides/swap-widget.mdx
+++ /dev/null
@@ -1,418 +0,0 @@
----
-id: getting-started
-title: Getting Started with the Swap Widget
-sidebar_label: Getting Started
-sidebar_position: 1
----
-
-import ThemedImage from '@theme/ThemedImage'
-import useBaseUrl from '@docusaurus/useBaseUrl'
-
-# Getting Started with the Swap Widget
-
-This guide walks you through the steps to embed the swap widget in your website in 2 minutes — whether your site is already a decentralized application (dApp) or not. With the swap widget, your users can trade ERC-20 tokens on the Uniswap Protocol without leaving your site!
-
-Here’s a live preview of the swap widget.
-
-
-
-Example use cases include:
-
-- Building a custom frontend for the Uniswap Protocol
-- Swapping assets in a DeFi application
-- Acquiring a token to participate in your web3 community (e.g. FWB or a gaming token)
-- Converting to the required currency for an NFT purchase (e.g. WETH)
-
-You can make the widget feel like a native part of your app by customizing the colors, font, and token list to match your app theme. This guide will teach you how.
-
-## Installing the Widgets Library {#installing-library}
-
-To get started, install the widgets library using npm or Yarn. If you don’t already use it, you’ll need to install `react-redux` as well.
-
-```bash npm2yarn
-npm install --save @uniswap/widgets react-redux
-```
-
-## Adding the Swap Widget to Your App {#adding-the-widget}
-
-Next, embed the React component in your application.
-
-```jsx
-import { SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-function App() {
-
-
-
-}
-```
-
-That’s it! You should now see a fully functional swap widget on your site. The widget is self-contained and gracefully handles all interactions with the Uniswap Protocol. It leverages the [Auto Router](/sdk/v3/guides/swaps/routing) to compute the best price across all Uniswap v2 and v3 pools.
-
-See a full implementation of the swap widget in the `/cra` and `/nextjs` branches of the [widgets-demo](https://github.com/Uniswap/widgets-demo) repo.
-
-:::note Create React App V4
-All code snippets will work seamlessly if you use [Next.js](https://nextjs.org/) or [Create React App](https://create-react-app.dev/) V5. However, if you’re using Create React App V4, you’ll need to use the following `import` statements instead:
-
-```jsx
-import { SwapWidget } from '@uniswap/widgets/dist/index.js'
-import '@uniswap/widgets/dist/fonts.css'
-```
-
-:::
-
-# Recommended Parameters {#recommended-parameters}
-
-The swap widget is a React component that can be easily imported into any React project. It's designed to work out-of-the-box, with no required parameters or web3 integration necessary. Trading is supported on all networks where the Uniswap Protocol is deployed.
-
-Although the widget will work out-of-the-box with no parameters, we highly recommend integrators provide [JSON-RPC endpoints](#json-rpc-endpoint), like from [Chainnodes](https://www.chainnodes.org), Infura or Alchemy. Existing dApps can also provide their existing [web3 provider](#web3-provider) to integrate the widget seamlessly into their dApp.
-
-Additional [optional parameters](/sdk/swap-widget/reference/v2#optional-parameters) are available to customize the appearance and performance of the swap widget to fit your unique use case.
-
-## Web3 Provider {#web3-provider}
-
-The swap widget uses a web3 `provider` prop to allow users to connect their wallets, fetch balances, and submit transactions through the user’s connected wallet.
-
-If your app does not maintain its own web3 provider, you can omit the `provider` prop. The widget will use built-in wallet connection functionality (for [WalletConnect](https://walletconnect.com/) and [MetaMask](https://metamask.io/)), making it easy for you to integrate web3 in your app!
-
-If you already have a web3 provider, you can pass your provider object directly into the `provider` prop. Both [ethers](https://docs.ethers.io/v5/api/providers/provider/) and [web3.js](https://web3js.readthedocs.io/en/v1.5.2/index.html) provider objects are compatible with the widget, as is any [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) provider.
-You can directly use the providers returned from [web3-react](https://github.com/Uniswap/web3-react) or [wagmi](https://wagmi.sh/) (both are [ethers](https://docs.ethers.io/v5/api/providers/provider/) providers). If it is not connected to a wallet, it will still be used to read data from the chain, but the widget will still prompt the user to "Connect wallet".
-
-:::note Be sure to use the wallet-connected provider
-When using [wagmi@v0.11](https://wagmi.sh/), `useProvider()` will return the fallback provider, *not* the wallet-connected provider. You should instead pass `useSigner().data?.provider` to reflect the user's connected wallet.
-:::
-
-If you maintain a web3 provider on your app, you should also consider intercepting the swap widget's wallet connection flow. Do so by passing a handler returning `false` to the [`onConnectWalletClick`](/sdk/swap-widget/reference/v2#onConnectWalletClick) prop, which is triggered when the widget's "Connect wallet" button is clicked. Check out libraries such as [web3-react](https://github.com/Uniswap/web3-react), BlockNative’s [Onboard](https://www.blocknative.com/onboard), or Aragon’s [useWallet()](https://github.com/aragon/use-wallet) to build your own flow. To hide the swap widget's wallet connection flow entirely, pass `true` to the `hideConnectionUI` prop.
-
-The widget will match the network currently selected by the passed provider. If the user switches networks in your app or in their connected wallet, that change will propagate to the widget as well. If the user connects to a network that is not supported by the swap widget, the widget will gracefully disable itself.
-
-```tsx
-import { SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-// We recommend you pass a web3 provider.
-import { provider } from './your/provider'
-
-// We recommend you pass your own JSON-RPC endpoints.
-const jsonRpcUrlMap = {
- 1: ['https://mainnet.infura.io/v3/'],
- 3: ['https://ropsten.infura.io/v3/']
-}
-
-function App() {
-
-
-
-}
-```
-
-## JSON-RPC Endpoints {#json-rpc-endpoint}
-
-JSON-RPC endpoints are used to read data when no `provider` is connected. We strongly recommend you pass either a Web3 Provider to the `provider` prop, or JSON-RPC endpoint URLs to the `jsonRpcUrlMap` prop.
-
-The widget will use these endpoints to fetch on-chain data and submit transactions for signature. If the user connects a MetaMask wallet, the widget will use the JSON-RPC provided by MetaMask when possible. [(See a list of all chains supported on widget.)](https://github.com/Uniswap/widgets/blob/main/src/constants/chains.ts#L4)
-
-If you don’t yet have JSON-RPC endpoints, you can easily create them with services like [Chainnodes](https://www.chainnodes.org), [Infura](https://infura.io/product/ethereum) or [Alchemy](https://www.alchemy.com/supernode).
-
-If you choose not to provide a `jsonRpcUrlMap` prop or are missing endpoints for some chains, the widget uses free public JSON-RPC endpoints to still allow users to interact with the widget and fetch price quotes. However, these public endpoints are NOT recommended for production environment usage, are severely rate-limited, and aren't necessarily as reliable. When possible, we'd recommend providing your own endpoints!
-
-# Customizing the Swap Widget {#customizing-widget}
-
-You can set [optional parameters](/sdk/swap-widget/reference/v2#optional-parameters) to tailor the appearance and functionality of the swap widget to fit your dApp.
-
-## Customizing the Width {#customizing-width}
-
-The swap widget has a fixed height of 360px and a default width of 360px. You cannot modify the height of the widget. You can modify the width up to a minimum width of 300px.
-
-You can customize the width by passing a number (of pixels) or a valid CSS width to the `width` prop of the widget.
-
-```tsx
-import { SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-function App() {
-
-
-
-}
-```
-
-For example:
-
-- `width={360}` sets the width to 360 pixels
-- `width="100%"` sets the width to dynamically fill 100% of the parent container
-- `width="20em"` sets the width to 20 * 16 = 320 pixels because 16px is the base font-size of the widget
-
-The recommended and default width is 360 pixels.
-
-## Customizing the Theme {#customizing-theme}
-
-You can customize the colors, font, and border radius of the swap widget to match the look and feel of your dApp. You can also toggle between light and dark modes. This section explains how to customize each attribute of the widget with your own `theme`.
-
-All attributes below are color codes, except `fontFamily` (string), `borderRadius` (number between 0 and 1), and `tokenColorExtraction`(boolean). The next two sections show code examples using these attributes.
-
-Check out [examples](/sdk/swap-widget/guides/examples) of the swap widget, and the [Figma file](https://www.figma.com/file/m0pVMlgAgSoaIrXlM3VRUG/Widgets-(External)?node-id=4302%3A18261) if you want to mock it up first!
-
-
-
-
-
-### Overriding Attributes {#overriding-attributes}
-
-You can override specific attributes of the widget by creating a `Theme` object and defining the properties you wish to override. Any properties left undefined will fallback to the default theme. For example, here is a simple `Theme` that removes the border radius and sets a custom font family.
-
-```tsx
-import { Theme, SwapWidget } from '@uniswap/widgets'
-
-// Define a custom theme to override default attributes
-const theme: Theme = {
- borderRadius: 0,
- fontFamily: '"Helvetica"',
-}
-
-function App() {
-
-
-
-}
-```
-
-Please note that the `borderRadius` attribute is a multiplier from 0 to 1 of how much radius to apply. Since the widget uses different values of border radius (e.g. internal edges have tighter radii than external edges), `borderRadius` will apply your multiplier value on all instances so that the border radii still look proportionally correct.
-
-:::note Importing Fonts
-The swap widget fonts must be imported explicitly with `import '@uniswap/widgets/fonts.css'`. However, if you’re overriding the swap widget fonts with your own, or with a default font such as Helvetica in the example above, you can remove this `import` statement.
-:::
-
-### Enabling Token Color Extraction {#enabling-color-extraction}
-
-By default, the background color of the output module will be set by the `module` attribute. You can optionally enable color extraction to flood the output module with the color of the selected output token. In the above example, DAI is the output token so the output module is flooded with DAI yellow.
-
-To enable color extraction, set the `tokenColorExtraction` property to `true` in your `Theme` object.
-
-```tsx
-import { Theme, SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-const enableColorExtractionTheme: Theme = {
- tokenColorExtraction: true, // Enable color extraction of the output token
-}
-
-function App() {
-
-
-
-}
-```
-
-### Toggling Light and Dark Mode {#toggling-light-dark-mode}
-
-The swap widget provides a default light theme and dark theme as a starting point. You can import each one and extend it to create your own theme. If your app can toggle between light and dark mode, you can propagate that state down to the widget by following the example below.
-
-```tsx
-import { darkTheme, lightTheme, Theme, SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-let darkMode = true // Dynamically toggle dark mode on and off
-function App() {
-
-
-
-}
-```
-
-### Matching System Preference for Light and Dark Mode {#matching-system-light-dark-mode}
-
-You can match the user’s system preference for light/dark mode by using the `useSystemTheme` hook. This will return the default widget light or dark theme according to the user’s system configuration. You can extend this base theme with further customizations, as you will see in the next section.
-
-```tsx
-import { SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-function useSystemTheme() {
- // Access
-}
-
-function App() {
- const theme = useSystemTheme() // Get a theme that matches the user system preference
-
-
-
-}
-```
-
-### Extending Themes {#extending-themes}
-
-You can extend any theme with custom attributes. The below example extends the base light and dark themes with custom colors.
-
-```tsx
-import { darkTheme, lightTheme, Theme, SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-const myLightTheme: Theme = {
- ...lightTheme, // Extend the lightTheme
- accent: '#FF007A',
- primary: '#000000',
- secondary: '#565A69',
-}
-
-const myDarkTheme: Theme = {
- ...darkTheme, // Extend the darkTheme
- accent: '#2172E5',
- primary: '#FFFFFF',
- secondary: '#888D9B',
-}
-
-let darkMode = true
-function App() {
-
-
-
-}
-```
-
-## Customizing the Token Lists {#customizing-token-lists}
-
-By default, the widget will use the [Uniswap Labs default token list](https://tokenlists.org/token-list?url=https://gateway.ipfs.io/ipns/tokens.uniswap.org) in the selector.
-
-### Customizing the Default Token List {#customizing-default-token-list}
-
-If you want to offer a different set of tokens in the widget, you can provide a custom `tokenList` parameter. You can [browse popular token lists](https://tokenlists.org/) to find one that suits your needs and then pass the URL as a parameter.
-
-```jsx
-import { SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-const CMC_TOKEN_LIST = 'https://api.coinmarketcap.com/data-api/v3/uniswap/all.json'
-
-function App() {
-
-
-
-}
-```
-
-Alternatively, you can create your own token list. There are two ways to provide your own token list for the widget.
-
-The first option is to [create a full token list](https://github.com/Uniswap/token-lists#authoring-token-lists), host it at your own URI, and pass the URI as a parameter as in the above example. This option is recommended if you want to use the same token list in multiple places throughout your application or community.
-
-The second and easiest option is to construct a custom token list inline as an array of tokens. The schema is equivalent to the `tokens` array from the [tokenlist JSON schema](https://github.com/Uniswap/token-lists/blob/main/src/tokenlist.schema.json). This option lets you skip deployment, hosting, and versioning of a full URI token list. Here is an example of an inline token list containing only the DAI, USDT, and USDC tokens (in addition to ETH which is always available, regardless of token list).
-
-```jsx
-import { SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-// You can also pass a token list as JSON, as long as it matches the schema
-const MY_TOKEN_LIST = [
- {
- "name": "Dai Stablecoin",
- "address": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
- "symbol": "DAI",
- "decimals": 18,
- "chainId": 1,
- "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x6B175474E89094C44Da98b954EedeAC495271d0F/logo.png"
- },
- {
- "name": "Tether USD",
- "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
- "symbol": "USDT",
- "decimals": 6,
- "chainId": 1,
- "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png"
- },
- {
- "name": "USD Coin",
- "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
- "symbol": "USDC",
- "decimals": 6,
- "chainId": 1,
- "logoURI": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
- },
-]
-
-function App() {
-
-
-
-}
-```
-
-Please note that the swap widget only enforces metadata validation on remotely hosted token lists, not on token list data passed as a literal value to the widget like in this example.
-
-If you want to add Layer 2 tokens to the token list, you can add an extension field. See this [GitHub issue](https://github.com/Uniswap/token-lists/issues/51#issuecomment-952268629) for details.
-
-## Customizing the Default Input and Output Tokens {#customizing-default-input-output-tokens}
-
-You can set the `defaultInputTokenAddress`, `defaultInputAmount`, `defaultOutputTokenAddress`, and `defaultOutputAmount` to pre-populate the input and output token fields respectively. This is useful when the widget appears in a context where you know which tokens the user is evaluating to trade. For example, if the widget appears on a page that displays the WBTC price chart, it would be helpful to pre-select WBTC as the output token in the widget.
-
-If your page does not need any particular defaults, then the recommended default input token is the native asset of the active network (e.g. ETH) and no default output token is recommended. Since ETH does not have an address, you can pass `'NATIVE'` as the parameter to set it as the default input or output token.
-
-The following example sets the default input to 2 ETH and the default output token to WBTC.
-
-```tsx
-import { SwapWidget } from '@uniswap/widgets'
-import '@uniswap/widgets/fonts.css'
-
-// Default token list from Uniswap
-const UNISWAP_TOKEN_LIST = 'https://gateway.ipfs.io/ipns/tokens.uniswap.org'
-
-// Use the native token of the connected chain as the default input token
-const NATIVE = 'NATIVE' // Special address for native token
-
-// WBTC as the default output token
-const WBTC = '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599'
-
-function App() {
-
-
-
-}
-```
-
-## Understanding the Swap Widget States {#understanding-widget-states}
-
-The widget has two main connectivity states depending on if the user has connected a wallet.
-
-
-
-1. **Before wallet connection**, the widget will use the JSON-RPC endpoint to fetch token price data and provide trade quotes, but submitting transactions will be disabled.
-2. **After wallet connection**, the widget will be fully functional. The user will be able to fetch trade quotes and submit swap transactions using the JSON-RPC endpoint and web3 provider from their connected wallet.
-
-:::note Questions?
-Join the [Discord channel](https://discord.com/channels/597638925346930701/941447445844463676) to ask questions and get support from the Uniswap community.
-:::
diff --git a/docs/sdk/swap-widget/overview.md b/docs/sdk/swap-widget/overview.md
deleted file mode 100644
index 742ec6175..000000000
--- a/docs/sdk/swap-widget/overview.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-id: overview
-sidebar_position: 1
-title: Overview
----
-
-# The t1 Swap Widget
-
-Welcome to the t1 Swap Widget. To begin, we recommend looking at the [**Guides**](./guides/swap-widget.mdx) and for deeper reference see the [**Swap Widget Github**](https://github.com/Uniswap/widgets) repo.
-
-# Alpha software
-
-The latest version of the Swap Widget is in production in the t1 Interface,
-but it is considered Alpha software and may contain bugs or change significantly between patch versions.
-If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of our Discord.
-Pull requests are welcome!
-
-# t1 Swap Widget
-
-- [**Swap Widget Github Repo**](https://github.com/Uniswap/widgets)
-- [**Swap Widget NPM Package**](https://www.npmjs.com/package/@uniswap/widgets)
-
-[](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3A%22Unit+Tests%22)
-[](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3ALint)
-[](https://www.npmjs.com/package/@uniswap/v3-sdk/v/latest)
-[](https://bundlephobia.com/result?p=@uniswap/v3-sdk@latest)
diff --git a/docs/sdk/swap-widget/reference/_category_.json b/docs/sdk/swap-widget/reference/_category_.json
deleted file mode 100644
index 19b021994..000000000
--- a/docs/sdk/swap-widget/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 3,
- "collapsed": true
-}
diff --git a/docs/sdk/swap-widget/reference/v1.md b/docs/sdk/swap-widget/reference/v1.md
deleted file mode 100644
index 140bd3546..000000000
--- a/docs/sdk/swap-widget/reference/v1.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-id: v1
-title: API V1 Reference (Deprecated)
-sidebar_position: 2
----
-
-# Swap Widget API V1 Reference (Deprecated)
-
-
-
-## Required Parameters {#required-parameters}
-
-| Prop Name | Prop Type | Default Value | Description |
-| ----------------- | --------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `jsonRpcEndpoint` | `string` | `undefined` | URI of your JSON-RPC endpoint. Strongly recommended in order to provide trade quotes prior to the user connecting a wallet. If none is provided, the widget will be completely disabled until the user connects a wallet. Once a wallet is connected, the widget will use the wallet’s JSON-RPC. See [Understanding the Swap Widget States](/sdk/swap-widget/guides/getting-started#understanding-widget-states). |
-| `provider` | `any` | `undefined` | An [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) provider. This is required to swap. |
-
-## Optional Parameters {#optional-parameters}
-
-| Prop Name | Prop Type | Default Value | Description |
-| --------------------------- | ----------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `convenienceFee` | `number` | `undefined` | Optionally, you may charge a convenience fee on top of swaps executed through your web app. The allowed range is 1 to 100 basis points (inclusive of 100) consistent with the t1 v3 Periphery contract. |
-| `convenienceFeeRecipient` | `{[chainId: number]: string}` | `undefined` | The address to receive the convenience fee on each network. Required if `convenienceFee` is provided. |
-| `defaultInputTokenAddress` | `{[chainId: number]: string}` | `string` or `'NATIVE'` | Address of the token to be selected by default in the input field (e.g. USDC) for each network chain ID. If left empty the widget will use the native token of the connected chain as default. This can be explicitly defined by the special string `'NATIVE'`. For convenience you may pass a single string instead of a `chainId` mapping. In this case, the widget will assume that string corresponds to an L1 Ethereum address with `chaindId=1`. Any addresses provided in this parameter must be included in the `tokenList`. |
-| `defaultInputAmount` | `number` | `0` | Default amount for the input field (e.g. 1 ETH). This value will respect the decimals of the `defaultInputTokenAddress`. This parameter is valid only if `defaultInputTokenAddress` is also set. This parameter is mutually exclusive with `defaultOutputAmount`, so you may set only one of `defaultInputAmount` and `defaultOutputAmount`. |
-| `defaultOutputTokenAddress` | `{[chainId: number]: string}` | `string` or `undefined` | Address of the token to be selected by default in the input field (e.g. USDC) for each network chain ID. None if left empty. Any addresses provided in this parameter must be included in the `tokenList`. |
-| `defaultOutputAmount` | `number` | `0` | Default amount for the input field (e.g. 100 USDC). This value will respect the decimals of the `defaultOutputTokenAddress`. This parameter is mutually exclusive with `defaultInputAmount`, so you may set only one of `defaultInputAmount` and `defaultOutputAmount`. |
-| `locale` | `SupportedLocale` | `en-US` | Specifies an explicit locale to use for the widget interface. This can be set to one of the values exported by the library in [`SUPPORTED_LOCALES`](https://github.com/Uniswap/widgets/blob/main/src/constants/locales.ts). |
-| `onConnectWallet` | `() => void` | `undefined` | If passed, the “Connect your wallet” message will be clickable, and clicking it will trigger this handler function. This can be used to trigger your own wallet connection flow from the widget. |
-| `onError` | `ErrorHandler` | `undefined` | An error handler which receives any errors that occur in the widget. This can be used for collecting error metrics. |
-| `theme` | `Theme` | `lightTheme` | Specifies a custom theme (colors, font, and border radii). See [Customizing the Theme](/sdk/swap-widget/guides/getting-started#customizing-theme). |
-| `tokenList` | `string` | `TokenInfo[]` | Specifies the set of tokens that appear by default in the token selector list. Accepts either a URI of a token list as defined by the Token Lists standard, or an inline array of tokens. If none is provided, the t1 Labs default token list will be used. See [Customizing the Default Token List](/sdk/swap-widget/guides/getting-started#customizing-default-token-list). |
-| `width` | `number` or `string` | `360` | Specifies the width of the widget. If specified as a number, this is in pixels; otherwise, it is interpreted as a CSS `` data type. Recommended width is 360px. Minimum width is 270px. See [Customizing the Width](/sdk/swap-widget/guides/getting-started#customizing-width). |
-
-## Subscribing to Events
-
-During the lifecycle of the swap widget, most of the events you will need are available on the web3 provider. For example, the below snippet shows how to listen for events when the wallet account changes or a new wallet connects. You can see more event examples in the [MetaMask](https://docs.metamask.io/guide/ethereum-provider.html) docs.
-
-```js
-// Subscribe to messages
-interface ProviderMessage {
- type: string;
- data: unknown;
-}
-
-ethereum.on(
- 'message',
- handler: (message: ProviderMessage) => void
-);
-```
-
-
-
-:::note Questions?
-Join the [Discord channel](https://discord.com/channels/597638925346930701/941447445844463676) to ask questions and get support from the t1 community.
-:::
diff --git a/docs/sdk/swap-widget/reference/v2.md b/docs/sdk/swap-widget/reference/v2.md
deleted file mode 100644
index 90fab824b..000000000
--- a/docs/sdk/swap-widget/reference/v2.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-id: v2
-title: API V2 Reference
-sidebar_position: 1
----
-
-# Swap Widget API V2 Reference
-
-
-
-## Recommended Parameters {#recommended-parameters}
-
-| Prop Name | Prop Type | Default Value | Description |
-| --------------- | -------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `provider` | `JsonRpcProvider` or `Eip1193Provider` | `undefined` | An [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) provider. See [Web3 provider](../guides/swap-widget.mdx#web3-provider). |
-| `jsonRpcUrlMap` | `{ [chainId: number]: string[] }` | `JSON_RPC_FALLBACK_ENDPOINTS` | Mapping of your JSON-RPC endpoint URLs indexed by chainId, used to provide trade quotes prior to the user connecting a wallet. If none are provided for a chain, the widget will fallback to public JSON-RPC endpoints, which are unreliable and rate-limited. See [JSON-RPC Endpoints](../guides/swap-widget.mdx#json-rpc-endpoint). |
-
-## Optional Parameters {#optional-parameters}
-
-| Prop Name | Prop Type | Default Value | Description |
-| --------------------------- | -------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| `convenienceFee` | `number` | `undefined` | Optionally, you may charge a convenience fee on top of swaps executed through your web app. The allowed range is 1 to 100 basis points paid in the output token of a swap, consistent with the t1 v3 Periphery contract. |
-| `convenienceFeeRecipient` | `{[chainId: number]: string}` | `undefined` | The address to receive the convenience fee on each network. Required if `convenienceFee` is provided. |
-| `defaultChainId` | `number` | `1` | You may specify which chainId you want to prompt a user to connect their wallet to. [See a list of all chains supported on widget.](https://github.com/Uniswap/widgets/blob/main/src/constants/chains.ts#L4) |
-| `defaultInputTokenAddress` | `{[chainId: number]: string}` | `string` or `'NATIVE'` | Address of the token to be selected by default in the input field (e.g. USDC) for each network chain ID. If left empty the widget will use the native token of the connected chain as default. This can be explicitly defined by the special string `'NATIVE'`. For convenience you may pass a single string instead of a `chainId` mapping. In this case, the widget will assume that string corresponds to an L1 Ethereum address with `chaindId=1`. Any addresses provided in this parameter must be included in the `tokenList`. |
-| `defaultInputAmount` | `number` | `0` | Default amount for the input field (e.g. 1 ETH). This value will respect the decimals of the `defaultInputTokenAddress`. This parameter is valid only if `defaultInputTokenAddress` is also set. This parameter is mutually exclusive with `defaultOutputTokenAmount`, so you may set only one of `defaultInputTokenAmount` and `defaultOutputTokenAmount`. |
-| `defaultOutputTokenAddress` | `{[chainId: number]: string}` | `string` or `undefined` | Address of the token to be selected by default in the input field (e.g. USDC) for each network chain ID. None if left empty. Any addresses provided in this parameter must be included in the `tokenList`. |
-| `defaultOutputAmount` | `number` | `0` | Default amount for the input field (e.g. 100 USDC). This value will respect the decimals of the `defaultOutputTokenAddress`. This parameter is mutually exclusive with `defaultInputTokenAmount`, so you may set only one `of defaultInputTokenAmount and` `defaultOutputTokenAmount`. |
-| `hideConnectionUI` | `boolean` | `false` | Hide the widget's built-in wallet connection UI, including the connected account chip & 'Connect wallet to swap' button. |
-| `locale` | `SupportedLocale` | `en-US` | Specifies an explicit locale to use for the widget interface. This can be set to one of the values exported by the library in [`SUPPORTED_LOCALES`](https://github.com/Uniswap/widgets/blob/main/src/constants/locales.ts). |
-| `onConnectWalletClick` | `() => void` or `() => Promise` | `undefined` | If passed, allows you to add custom behavior when the user clicks on the 'Connect your wallet to swap' button. To manage displaying the widget's built-in wallet connection modal, return a resolved promise with `resolve(true/false)`. |
-| `onSwitchChain` | `(addChainParameter: AddEthereumChainParameter) => void` or `Promise` | `undefined` | An integration hook called when the user tries to switch chains. If the hook returns a Promise, it is assumed the integrator is attempting to switch the chain, and no further attempts will be made. If that Promise rejects, the error will be ignored so as not to crash the widget. |
-| `onError` | `ErrorHandler` | `undefined` | An error handler which receives any Javascript errors that occur in the widget. This can be used for collecting error metrics. |
-| `onReviewSwapClick` | `() => void` or `() => Promise` | `undefined` | If passed, allows you to add custom behavior when the user clicks on the 'review swap' button. To manage progression to the review screen (i.e. to add a pre-swap warning speedbump), return a resolved promise with `resolve(true/false)`. |
-| `onTokenSelectorClick` | `(f: Field) => void \| (f: Field) => Promise` | `undefined` | A click handler fired with the selected `Field` (`'INPUT'\|'OUTPUT'`) when the user clicks on a token selector dropdown. To manage progression to the native token selector view (i.e. to utilize your own external token selector UI), return a resolved promise with resolve(true/false). |
-| `onTxFail` | `(error: Error, data: any) => void` | `undefined` | An error handler which receives error data for on-chain transaction failures. Does not include when user cancels a transaction or if a transaction isn't able to be submitted. |
-| `onTxSubmit` | `(txHash: string, data: any) => void` | `undefined` | A handler that receives the transaction hash and related data when a user submits a transaction. |
-| `onTxSuccess` | `(txHash: string, data: any) => void` | `undefined` | A handler that receives the transaction hash and related data when a transaction succeeds on-chain. |
-| `routerUrl` | `string` | `undefined` | Optionally provide a base URL to your own hosted instance of the t1 Router API. If none is provided, the optimal trade route is computed by running the @uniswap/smart-order-router package locally in the browser; this can take a few seconds to load & is slower. You also may be able to find more optimal routes using the Router API! See more about [deploying the Router API](https://github.com/Uniswap/routing-api#deploying-the-api). |
-| `theme` | `Theme` | `lightTheme` | Specifies a custom theme (colors, font, and border radii). See [Customizing the Theme](../guides/swap-widget.mdx#customizing-theme). |
-| `tokenList` | `string` | `TokenInfo[]` | Specifies the set of tokens that appear by default in the token selector list. Accepts either a URI of a token list as defined by the Token Lists standard, or an inline array of tokens. If none is provided, the t1 Labs default token list will be used. See [Customizing the Default Token List](../guides/swap-widget.mdx#customizing-default-token-list). |
-| `width` | `number` or `string` | `360` | Specifies the width of the widget. If specified as a number, this is in pixels; otherwise, it is interpreted as a CSS `` data type. Recommended width is 360px. Minimum width is 300px. See [Customizing the Width](../guides/swap-widget.mdx#customizing-width). |
-| `brandedFooter` | `boolean` | `true` | Enables the "Powered by t1" footer at the bottom of the widget. |
-| `dialog` | `HTMLDivElement` | `undefined` | Specifies the element to portal widget dialogs (e.g. Summary, Transaction dialogs) into. |
-| `dialogOptions` | `DialogOptions` | `undefined` | Specifies more custom dialog behavior, like transition animations. |
-
-
-## Subscribing to Events
-
-During the lifecycle of the swap widget, most of the events you will need are available on the web3 provider. For example, the below snippet shows how to listen for events when the wallet account changes or a new wallet connects. You can see more event examples in the [MetaMask](https://docs.metamask.io/guide/ethereum-provider.html) docs.
-
-```js
-// Subscribe to messages
-interface ProviderMessage {
- type: string;
- data: unknown;
-}
-
-ethereum.on(
- 'message',
- handler: (message: ProviderMessage) => void
-);
-```
-
-
-
-:::note Questions?
-Join the [Discord channel](https://discord.com/channels/597638925346930701/941447445844463676) to ask questions and get support from the t1 community.
-:::
diff --git a/docs/sdk/v1/_category_.json b/docs/sdk/v1/_category_.json
deleted file mode 100644
index 754ace793..000000000
--- a/docs/sdk/v1/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "V1 SDK",
- "position": 6,
- "collapsed": true
-}
diff --git a/docs/sdk/v1/guides/_category_.json b/docs/sdk/v1/guides/_category_.json
deleted file mode 100644
index c694eb5b2..000000000
--- a/docs/sdk/v1/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 2,
- "collapsed": false
-}
diff --git a/docs/sdk/v1/guides/getting-started.md b/docs/sdk/v1/guides/getting-started.md
deleted file mode 100644
index a49761680..000000000
--- a/docs/sdk/v1/guides/getting-started.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-id: getting-started
-title: Getting Started
-sidebar_position: 1
----
-
-The [Uniswap SDK](https://github.com/Uniswap/uniswap-sdk/tree/v1) is meant to simplify every aspect of integrating t1 into your project. It's written in [TypeScript](https://www.typescriptlang.org), has a [robust test suite](https://github.com/Uniswap/uniswap-sdk/tree/v1/src/__tests__), uses [bignumber.js](https://github.com/MikeMcl/bignumber.js) for math, and includes an optional data-fetching module which relies on [ethers.js](https://github.com/ethers-io/ethers.js/).
-
-The SDK was built to be extremely easy to use, but also feature-rich. It offers various levels of abstraction that make it suitable for use nearly anywhere, from hackathon projects to production applications.
-
-# Overview
-
-The SDK is divided into several modular components that perform tightly scoped tasks:
-
-- [Data](/sdk/1.0.0/reference/data) - Fetches t1 data from the blockchain
-- [Computation](/sdk/1.0.0/reference/computation) - Computes market- and trade-specific statistics using blockchain data
-- [Format](/sdk/1.0.0/reference/format) - Formats data for display
-- [Orchestration](/sdk/1.0.0/reference/orchestration) - Offers named abstraction functions that seamlessly combine lower-level data- and computation-related functions
-- [Transact](/sdk/1.0.0/reference/transact) - Prepares computed trades for execution against t1 smart contracts
-- [Constants](/sdk/1.0.0/reference/constants) - Exports various helpful constants for use throughout the SDK
-
-Additionally, it exports a number of custom types:
-
-- [Types](/sdk/1.0.0/reference/types) - Exports all types used by the SDK
-
-# Installation
-
-To start using the SDK, simply install it into your project...
-
-```bash
-yarn add @uniswap/sdk
-```
-
-...import some functions...
-
-```javascript
-import { ... } from '@uniswap/sdk'
-```
-
-...and dive into the rest of the documentation to learn more!
diff --git a/docs/sdk/v1/overview.md b/docs/sdk/v1/overview.md
deleted file mode 100644
index fbb3ef863..000000000
--- a/docs/sdk/v1/overview.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-id: overview
-sidebar_position: 1
-title: Overview
----
-
-# The t1 V1 SDK
-
-This is the original documentation for the t1 V1 SDK, released in 2019.
-The t1 V1 SDK is no longer under development, for the most recent implementation of the SDK, see the [V3 SDK](../v3/overview.md).
\ No newline at end of file
diff --git a/docs/sdk/v1/reference/02-data.md b/docs/sdk/v1/reference/02-data.md
deleted file mode 100644
index 5f70e9158..000000000
--- a/docs/sdk/v1/reference/02-data.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-id: data
-title: Data
----
-
-# getTokenReserves
-
-This function fetches t1 reserve data for a given token address on a given network.
-
-- If only a chain id is specified, the Ethereum node used to fulfill data requests is determined by [`ethers.getDefaultProvider`](https://docs.ethers.io/ethers.js/html/api-providers.html#connecting-to-ethereum), else it is the one specified by the passed provider.
-- This function throws an error if the provided tokenAddress is not a token with a t1 exchange.
-
-## Function Signature
-
-```typescript
-export async function getTokenReserves(
- tokenAddress: string,
- chainIdOrProvider: ChainIdOrProvider = 1
-): Promise
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :---------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| tokenAddress | `string` | The checksummed address of a token with a t1 exchange. |
-| chainIdOrProvider | `ChainIdOrProvider` | A supported chain id \(`1`, `3`, `4`, or `42`\), or an [underlying web3 provider](https://docs.ethers.io/ethers.js/html/api-providers.html#web3provider-inherits-from-jsonrpcprovider) connected to a chain with a supported chain id. |
-
-## Example Usage
-
-```typescript
-const tokenAddress = '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359' // DAI Mainnet
-const chainIdOrProvider: ChainIdOrProvider = 1 // could be e.g. window.ethereum instead
-
-const tokenReserves: TokenReservesNormalized = await getTokenReserves(tokenAddress, chainIdOrProvider)
-
-/*
-{
- // details for the passed token
- token: {
- chainId: 1,
- address: '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359',
- decimals: 18
- },
-
- // details for the t1 exchange of the passed token
- exchange: {
- chainId: 1,
- address: '0x09cabEC1eAd1c0Ba254B09efb3EE13841712bE14',
- decimals: 18
- },
-
- // details for the ETH portion of the reserves of the passed token
- ethReserve: {
- token: {
- chainId: 1,
- address: 'ETH',
- decimals: 18
- },
- amount:
- },
-
- // details for the token portion of the reserves of the passed token
- tokenReserve: {
- token: {
- chainId: 1,
- address: '0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359',
- decimals: 18
- },
- amount:
- }
-}
-*/
-```
diff --git a/docs/sdk/v1/reference/03-computation.md b/docs/sdk/v1/reference/03-computation.md
deleted file mode 100644
index 009076785..000000000
--- a/docs/sdk/v1/reference/03-computation.md
+++ /dev/null
@@ -1,133 +0,0 @@
----
-id: computation
-title: Computation
----
-
-# getMarketDetails
-
-This function computes market details for the passed reserves data. Markets are defined as ETH<>ERC20, ERC20<>ETH, or ERC20<>ERC20 pairs, where the first currency is the input and the second is the output. Reserves must be specified for both the input and output currency.
-
-- In the case of ETH, `undefined` should be passed as the reserves data. [`getTokenReserves`](/sdk/1.0.0/reference/data/#getttokenreserves) formatted ERC20 reserves, or the requisite data can be fetched manually and passed in.
-
-- Rates are calculated to 18 decimal places of precision.
-
-## Function Signature
-
-```typescript
-export function getMarketDetails(
- optionalReservesInput: OptionalReserves,
- optionalReservesOutput: OptionalReserves
-): MarketDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :--------------------- | :----------------- | :------------------------------------- |
-| optionalReservesInput | `OptionalReserves` | Reserves data for the input currency. |
-| optionalReservesOutput | `OptionalReserves` | Reserves data for the output currency. |
-
-## Example Usage
-
-```typescript
-const reserves: ChainIdOrProvider = await getTokenReserves(tokenAddress)
-
-const marketDetails: MarketDetails = getMarketDetails(undefined, reserves) // ETH<>ERC20
-
-/*
-{
- // market type
- tradeType: 'ETH_TO_TOKEN',
-
- // dummy ETH reserves
- inputReserves: {
- token: {
- chainId: 1,
- address: 'ETH',
- decimals: 18
- }
- },
-
- // normalized token reserves
- outputReserves: ,
-
- // market rate calculated to 18 decimals of precision
- marketRate: {
- rate: , // x output / 1 input
- rateInverted: // x input / 1 output
- }
-}
-*/
-```
-
-# getTradeDetails
-
-This function computes trade details for the passed market data.
-
--This function throws an error if the passed \_tradeAmount is greater than the amount of ETH/tokens in the relevant t1 exchange.
-
-- Trade amounts must be passed in non-decimal form \(where e.g. 1 ETH is represented as 1000000000000000000 wei\).
-
-## Function Signature
-
-```typescript
-export function getTradeDetails(
- tradeExact: TRADE_EXACT,
- _tradeAmount: BigNumberish,
- marketDetails: MarketDetails
-): TradeDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :------------ | :-------------- | :------------------------------------------------------------------------------- |
-| tradeExact | `TRADE_EXACT` | Whether either the input or the output currency is the exact amount. |
-| \_tradeAmount | `BigNumberish` | The amount to buy/sell \(of the output/input currency, depending on tradeExact\) |
-| marketDetails | `MarketDetails` | Market details. |
-
-## Example Usage
-
-```typescript
-const _purchaseAmount: BigNumber = new BigNumber('2.5')
-const _decimals: number = 18
-const tradeAmount: BigNumber = _purchaseAmount.multipliedBy(10 ** _decimals)
-const marketDetails: MarketDetails = getMarketDetails(undefined, reserves) // ETH<>ERC20
-
-// buy exactly 2.5 of an 18 decimal ERC20 with ETH
-const tradeDetails: TradeDetails = getTradeDetails(TRADE_EXACT.OUTPUT, tradeAmount, marketDetails)
-
-/*
-{
- marketDetailsPre: ,
-
- marketDetailsPost: ,
-
- tradeType: 'ETH_TO_TOKEN',
-
- tradeExact: 'OUTPUT',
-
- inputAmount: {
- token: ,
- amount:
- },
-
- outputAmount: {
- token: ,
- amount:
- },
-
- // execution rate calculated to 18 decimals of precision
- executionRate: {
- rate: // x output / 1 input
- rateInverted: // x input / 1 output
- },
-
- // slippage between the pre- and post-trade market rates, in basis points, calculated to 18 decimals of precision
- marketRateSlippage: ,
-
- // slippage between the execution and pre-trade market rate, in basis points, calculated to 18 decimals of precision
- executionRateSlippage:
-}
-*/
-```
diff --git a/docs/sdk/v1/reference/04-format.md b/docs/sdk/v1/reference/04-format.md
deleted file mode 100644
index 3a40ea31a..000000000
--- a/docs/sdk/v1/reference/04-format.md
+++ /dev/null
@@ -1,106 +0,0 @@
----
-id: format
-title: Format
----
-
-# formatSignificant
-
-This function formats values to a specified number of significant digits.
-
-## Function Signature
-
-```typescript
-export function formatSignificant(bigNumberish: BigNumberish, options?: FormatSignificantOptions): string
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------- | :------------------------- | :------------------------- |
-| bigNumberish | `BigNumberish` | The value to be formatted. |
-| options? | `FormatSignificantOptions` | Formatting options. |
-
-## Example Usage
-
-```typescript
-const formatted: string = formatSignificant('123456', { significantDigits: 3 }) // 1.23
-```
-
-# formatSignificantDecimals
-
-This function formats token and ethereum values to a specified number of significant digits.
-
-## Function Signature
-
-```typescript
-export function formatSignificantDecimals(
- bigNumberish: BigNumberish,
- decimals: number,
- options?: FormatSignificantOptions
-): string
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------- | :------------------------- | :-------------------------------- |
-| bigNumberish | `BigNumberish` | The value to be formatted. |
-| decimals | `number` | The decimals of the passed value. |
-| options? | `FormatSignificantOptions` | Formatting options. |
-
-## Example Usage
-
-```typescript
-const formatted: string = formatSignificantDecimals('1234560000000000000', 18, {
- significantDigits: 3,
-}) // 1.23
-```
-
-# formatFixed
-
-This function formats values to a specified number of decimal places.
-
-## Function Signature
-
-```typescript
-export function formatFixed(bigNumberish: BigNumberish, options?: FormatFixedOptions): string
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------- | :------------------- | :------------------------- |
-| bigNumberish | `BigNumberish` | The value to be formatted. |
-| options? | `FormatFixedOptions` | Formatting options. |
-
-## Example Usage
-
-```typescript
-const formatted: string = formatFixed('1.2345', { decimalPlaces: 2 }) // 1.23
-```
-
-# formatFixedDecimals
-
-This function formats token and ethereum values to a specified number of decimal places.
-
-## Function Signature
-
-```typescript
-export function formatFixedDecimals(bigNumberish: BigNumberish, decimals: number, options?: FormatFixedOptions): string
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------- | :------------------- | :-------------------------------- |
-| bigNumberish | `BigNumberish` | The value to be formatted. |
-| decimals | `number` | The decimals of the passed value. |
-| options? | `FormatFixedOptions` | Formatting options. |
-
-## Example Usage
-
-```typescript
-const formatted: string = formatFixedDecimals('1234560000000000000', 18, {
- decimalPlaces: 2,
-}) // 1.23
-```
diff --git a/docs/sdk/v1/reference/05-orchestration.md b/docs/sdk/v1/reference/05-orchestration.md
deleted file mode 100644
index af1f21754..000000000
--- a/docs/sdk/v1/reference/05-orchestration.md
+++ /dev/null
@@ -1,344 +0,0 @@
----
-id: orchestration
-title: Orchestration
----
-
-Orchestration functions are plain-english wrappers for the function defined in [/sdk/1.0.0/reference/data](Data) and [Computation](/sdk/1.0.0/reference/computation).
-
-Functions suffixed with `WithData` are synchronous, and require token reserves to be passed in as arguments. Functions without the suffix are asychronous, and require token addresses to be passed in as arguments.
-
-# tradeExactEthForTokensWithData
-
-The function facilitates trading an exact amount of ETH for a specified token.
-
-## Function Signature
-
-```typescript
-export function tradeExactEthForTokensWithData(reserves: OptionalReserves, ethAmount: BigNumberish): TradeDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :-------- | :----------------- | :---------------------------------- |
-| reserves | `OptionalReserves` | Reserves data for the output token. |
-| ethAmount | `BigNumberish` | The input amount of ETH. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = tradeExactEthForTokensWithData(reserves, '1000000000000000000')
-```
-
-# tradeExactEthForTokens
-
-The function facilitates trading an exact amount of ETH for a specified token.
-
-## Function Signature
-
-```typescript
-export async function tradeExactEthForTokens(
- tokenAddress: string,
- ethAmount: BigNumberish,
- chainIdOrProvider?: ChainIdOrProvider
-): Promise
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| tokenAddress | `string` | Address of output token. |
-| ethAmount | `BigNumberish` | The input amount of ETH. |
-| chainIdOrProvider? | `ChainIdOrProvider` | A supported chain id \(`1`, `3`, `4`, or `42`\), or an [underlying web3 provider](https://docs.ethers.io/ethers.js/html/api-providers.html#web3provider-inherits-from-jsonrpcprovider) connected to a chain with a supported chain id. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = await tradeExactEthForTokens(tokenAddress, '1000000000000000000')
-```
-
-# tradeEthForExactTokensWithData
-
-The function facilitates trading ETH for an exact amount of a specified token.
-
-## Function Signature
-
-```typescript
-export function tradeEthForExactTokensWithData(reserves: OptionalReserves, tokenAmount: BigNumberish): TradeDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :---------- | :----------------- | :---------------------------------- |
-| reserves | `OptionalReserves` | Reserves data for the output token. |
-| tokenAmount | `BigNumberish` | The output amount of tokens. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = tradeEthForExactTokensWithData(reserves, '1000000000000000000')
-```
-
-# tradeEthForExactTokens
-
-The function facilitates trading ETH for an exact amount of a specified token.
-
-## Function Signature
-
-```typescript
-export async function tradeEthForExactTokens(
- tokenAddress: string,
- tokenAmount: BigNumberish,
- chainIdOrProvider?: ChainIdOrProvider
-): Promise
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| tokenAddress | `string` | Address of output token. |
-| tokenAmount | `BigNumberish` | The output amount of tokens. |
-| chainIdOrProvider? | `ChainIdOrProvider` | A supported chain id \(`1`, `3`, `4`, or `42`\), or an [underlying web3 provider](https://docs.ethers.io/ethers.js/html/api-providers.html#web3provider-inherits-from-jsonrpcprovider) connected to a chain with a supported chain id. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = await tradeEthForExactTokens(tokenAddress, '1000000000000000000')
-```
-
-# tradeExactTokensForEthWithData
-
-The function facilitates trading an exact amount of a specified token for ETH.
-
-## Function Signature
-
-```typescript
-export function tradeExactTokensForEthWithData(reserves: OptionalReserves, tokenAmount: BigNumberish): TradeDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :---------- | :----------------- | :--------------------------------- |
-| reserves | `OptionalReserves` | Reserves data for the input token. |
-| tokenAmount | `BigNumberish` | The input amount of tokens. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = tradeExactTokensForEthWithData(reserves, '1000000000000000000')
-```
-
-# tradeExactTokensForEth
-
-The function facilitates trading an exact amount of a specified token for ETH.
-
-## Function Signature
-
-```typescript
-export async function tradeExactTokensForEth(
- tokenAddress: string,
- tokenAmount: BigNumberish,
- chainIdOrProvider?: ChainIdOrProvider
-): Promise
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| tokenAddress | `string` | Address of input token. |
-| tokenAmount | `BigNumberish` | The input amount of tokens. |
-| chainIdOrProvider? | `ChainIdOrProvider` | A supported chain id \(`1`, `3`, `4`, or `42`\), or an [underlying web3 provider](https://docs.ethers.io/ethers.js/html/api-providers.html#web3provider-inherits-from-jsonrpcprovider) connected to a chain with a supported chain id. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = await tradeExactTokensForEth(tokenAddress, '1000000000000000000')
-```
-
-# tradeTokensForExactEthWithData
-
-The function facilitates trading a specified token for an exact amount of ETH.
-
-## Function Signature
-
-```typescript
-export function tradeTokensForExactEthWithData(reserves: OptionalReserves, ethAmount: BigNumberish): TradeDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :-------- | :----------------- | :--------------------------------- |
-| reserves | `OptionalReserves` | Reserves data for the input token. |
-| ethAmount | `BigNumberish` | The outpute amount of ETH. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = tradeTokensForExactEthWithData(reserves, '1000000000000000000')
-```
-
-# tradeTokensForExactEth
-
-The function facilitates trading a specified token for an exact amount of ETH.
-
-## Function Signature
-
-```typescript
-export async function tradeTokensForExactEth(
- tokenAddress: string,
- ethAmount: BigNumberish,
- chainIdOrProvider?: ChainIdOrProvider
-): Promise
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| tokenAddress | `string` | Address of input token. |
-| ethAmount | `BigNumberish` | The output amount of ETH. |
-| chainIdOrProvider? | `ChainIdOrProvider` | A supported chain id \(`1`, `3`, `4`, or `42`\), or an [underlying web3 provider](https://docs.ethers.io/ethers.js/html/api-providers.html#web3provider-inherits-from-jsonrpcprovider) connected to a chain with a supported chain id. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = await tradeTokensForExactEth(tokenAddress, '1000000000000000000')
-```
-
-# tradeExactTokensForTokensWithData
-
-The function facilitates trading an exact amount of a specified token for another token.
-
-## Function Signature
-
-```typescript
-export function tradeExactTokensForTokensWithData(
- reservesInput: OptionalReserves,
- reservesOutput: OptionalReserves,
- tokenAmount: BigNumberish
-): TradeDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :------------- | :----------------- | :---------------------------------- |
-| reservesInput | `OptionalReserves` | Reserves data for the input token. |
-| reservesOutput | `OptionalReserves` | Reserves data for the output token. |
-| tokenAmount | `BigNumberish` | The input amount of tokens. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = tradeExactTokensForTokensWithData(
- reservesInput,
- reservesOutput,
- '1000000000000000000'
-)
-```
-
-# tradeExactTokensForTokens
-
-The function facilitates trading an exact amount of a specified token for another token.
-
-## Function Signature
-
-```typescript
-export async function tradeExactTokensForTokens(
- tokenAddressInput: string,
- tokenAddressOutput: string,
- tokenAmount: BigNumberish,
- chainIdOrProvider?: ChainIdOrProvider
-): Promise
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| tokenAddressInput | `string` | Address of input token. |
-| tokenAddressOutput | `string` | Address of output token. |
-| tokenAmount | `BigNumberish` | The input amount of tokens. |
-| chainIdOrProvider? | `ChainIdOrProvider` | A supported chain id \(`1`, `3`, `4`, or `42`\), or an [underlying web3 provider](https://docs.ethers.io/ethers.js/html/api-providers.html#web3provider-inherits-from-jsonrpcprovider) connected to a chain with a supported chain id. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = await tradeExactTokensForTokens(
- tokenAddressInput,
- tokenAddressOutput,
- '1000000000000000000'
-)
-```
-
-# tradeTokensForExactTokensWithData
-
-The function facilitates trading a specified token for an exact amount of another token.
-
-## Function Signature
-
-```typescript
-export function tradeTokensForExactTokensWithData(
- reservesInput: OptionalReserves,
- reservesOutput: OptionalReserves,
- tokenAmount: BigNumberish
-): TradeDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :------------- | :----------------- | :---------------------------------- |
-| reservesInput | `OptionalReserves` | Reserves data for the input token. |
-| reservesOutput | `OptionalReserves` | Reserves data for the output token. |
-| tokenAmount | `BigNumberish` | The output amount of tokens. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = tradeTokensForExactTokensWithData(
- reservesInput,
- reservesOutput,
- '1000000000000000000'
-)
-```
-
-# tradeTokensForExactTokens
-
-The function facilitates trading an exact amount of a specified token for another token.
-
-## Function Signature
-
-```typescript
-export async function tradeTokensForExactTokens(
- tokenAddressInput: string,
- tokenAddressOutput: string,
- tokenAmount: BigNumberish,
- chainIdOrProvider?: ChainIdOrProvider
-): Promise
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------------- | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| tokenAddressInput | `string` | Address of input token. |
-| tokenAddressOutput | `string` | Address of output token. |
-| tokenAmount | `BigNumberish` | The output amount of tokens. |
-| chainIdOrProvider? | `ChainIdOrProvider` | A supported chain id \(`1`, `3`, `4`, or `42`\), or an [underlying web3 provider](https://docs.ethers.io/ethers.js/html/api-providers.html#web3provider-inherits-from-jsonrpcprovider) connected to a chain with a supported chain id. |
-
-## Example Usage
-
-```typescript
-const tradeDetails: TradeDetails = await tradeTokensForExactTokens(
- tokenAddressInput,
- tokenAddressOutput,
- '1000000000000000000'
-)
-```
diff --git a/docs/sdk/v1/reference/06-transact.md b/docs/sdk/v1/reference/06-transact.md
deleted file mode 100644
index b7750b2f2..000000000
--- a/docs/sdk/v1/reference/06-transact.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-id: transact
-title: Transact
----
-
-# getExecutionDetails
-
-The function formats trade data for execution against the relevant t1 exchange.
-
-## Function Signature
-
-```typescript
-export function getExecutionDetails(
- trade: TradeDetails,
- maxSlippage?: number,
- deadline?: number,
- recipient?: string
-): ExecutionDetails
-```
-
-## Input Parameters
-
-| Parameter | Type | Description |
-| :----------- | :------------- | :---------------------------------------------------------------------- |
-| trade | `TradeDetails` | The trade to execute. |
-| maxSlippage? | `number` | The maximum slippage to allow, in basis points. Defaults to 200 \(2%\). |
-| deadline? | `number` | When the transaction will expire. Defaults to 10 minutes in the future. |
-| recipient? | `number` | An optional recipient address. Defaults to the `msg.sender` |
-
-## Example Usage
-
-Method arguments are returned as one of: `BigNumber`, `number`, or `string`. `BigNumber`s are large number objects, `numbers` are small numbers in base 10, and `string`s are addresses.
-
-```typescript
-const tradeDetails: TradeDetails = tradeExactEthForTokensWithData(reserves, '1000000000000000000')
-
-const executionDetails: ExecutionDetails = await getExecutionDetails(tradeDetails)
-
-/*
-{
- // the address of the relevant exchange
- exchangeAddress: 0x09cabEC1eAd1c0Ba254B09efb3EE13841712bE14,
-
- // the name of the method that must be called
- methodName: "ethToTokenSwapInput",
-
- // the id of the method name
- methodId: "0xf39b5b9b",
-
- // the ether value that must be sent with the transaction
- value: ,
-
- // method arguments as an array
- methodArguments: MethodArgument[]
-}
-*/
-```
diff --git a/docs/sdk/v1/reference/07-constants.md b/docs/sdk/v1/reference/07-constants.md
deleted file mode 100644
index 7e74eb35e..000000000
--- a/docs/sdk/v1/reference/07-constants.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-id: constants
-title: Constants
----
-
-Below is an exhaustive list of all external constants used in the SDK.
-
-```typescript
-import BigNumber from 'bignumber.js'
-
-import ERC20 from './abis/ERC20.json'
-import FACTORY from './abis/FACTORY.json'
-import EXCHANGE from './abis/EXCHANGE.json'
-
-export const ETH = 'ETH'
-
-export enum SUPPORTED_CHAIN_ID {
- Mainnet = 1,
- Ropsten = 3,
- Rinkeby = 4,
- Kovan = 42,
-}
-
-export const FACTORY_ADDRESS: { [key: number]: string } = {}
-
-export const FACTORY_ABI: string = JSON.stringify(FACTORY)
-export const EXCHANGE_ABI: string = JSON.stringify(EXCHANGE)
-
-export enum TRADE_TYPE {
- ETH_TO_TOKEN = 'ETH_TO_TOKEN',
- TOKEN_TO_ETH = 'TOKEN_TO_ETH',
- TOKEN_TO_TOKEN = 'TOKEN_TO_TOKEN',
-}
-
-export enum TRADE_EXACT {
- INPUT = 'INPUT',
- OUTPUT = 'OUTPUT',
-}
-
-export enum TRADE_METHODS {
- ethToTokenSwapInput = 'ethToTokenSwapInput',
- ethToTokenTransferInput = 'ethToTokenTransferInput',
- ethToTokenSwapOutput = 'ethToTokenSwapOutput',
- ethToTokenTransferOutput = 'ethToTokenTransferOutput',
- tokenToEthSwapInput = 'tokenToEthSwapInput',
- tokenToEthTransferInput = 'tokenToEthTransferInput',
- tokenToEthSwapOutput = 'tokenToEthSwapOutput',
- tokenToEthTransferOutput = 'tokenToEthTransferOutput',
- tokenToTokenSwapInput = 'tokenToTokenSwapInput',
- tokenToTokenTransferInput = 'tokenToTokenTransferInput',
- tokenToTokenSwapOutput = 'tokenToTokenSwapOutput',
- tokenToTokenTransferOutput = 'tokenToTokenTransferOutput',
-}
-
-export const TRADE_METHOD_IDS: { [key: string]: string } = {}
-
-export enum FIXED_UNDERFLOW_BEHAVIOR {
- ZERO = 'ZERO',
- LESS_THAN = 'LESS_THAN',
- ONE_DIGIT = 'ONE_DIGIT',
-}
-```
diff --git a/docs/sdk/v1/reference/08-types.md b/docs/sdk/v1/reference/08-types.md
deleted file mode 100644
index 15af25d9e..000000000
--- a/docs/sdk/v1/reference/08-types.md
+++ /dev/null
@@ -1,156 +0,0 @@
----
-id: types
-title: Types
----
-
-Below is an exhaustive list of all the external types used in the SDK.
-
-```typescript
-import BigNumber from 'bignumber.js'
-import { ethers } from 'ethers'
-
-import { SUPPORTED_CHAIN_ID, TRADE_TYPE, TRADE_EXACT, FIXED_UNDERFLOW_BEHAVIOR } from './constants'
-
-export type BigNumberish = BigNumber | ethers.utils.BigNumber | string | number
-
-//// types for on-chain, submitted, and normalized data
-export type ChainIdOrProvider = SUPPORTED_CHAIN_ID | ethers.providers.AsyncSendable | ethers.providers.Provider
-
-// type guard for ChainIdOrProvider
-export function isChainId(chainIdOrProvider: ChainIdOrProvider): chainIdOrProvider is SUPPORTED_CHAIN_ID {
- const chainId: SUPPORTED_CHAIN_ID = chainIdOrProvider as SUPPORTED_CHAIN_ID
- return typeof chainId === 'number'
-}
-
-// type guard for ChainIdOrProvider
-export function isLowLevelProvider(
- chainIdOrProvider: ChainIdOrProvider
-): chainIdOrProvider is ethers.providers.AsyncSendable {
- if (isChainId(chainIdOrProvider)) {
- return false
- } else {
- const provider: ethers.providers.AsyncSendable = chainIdOrProvider as ethers.providers.AsyncSendable
- return 'send' in provider || 'sendAsync' in provider
- }
-}
-
-export interface Token {
- chainId?: SUPPORTED_CHAIN_ID
- address?: string
- decimals: number
-}
-
-export interface TokenAmount {
- token: Token
- amount: BigNumberish
-}
-
-export interface TokenAmountNormalized {
- token: Token
- amount: BigNumber
-}
-
-export interface TokenReserves {
- token: Token
- exchange?: Token
- ethReserve: TokenAmount
- tokenReserve: TokenAmount
-}
-
-export interface TokenReservesNormalized {
- token: Token
- exchange?: Token
- ethReserve: TokenAmountNormalized
- tokenReserve: TokenAmountNormalized
-}
-
-export interface EthReserves {
- token: Token
-}
-
-// type for input data
-export type OptionalReserves = TokenReserves | EthReserves | undefined
-
-// type guard for OptionalReserves
-export function areTokenReserves(reserves: OptionalReserves): reserves is TokenReserves {
- const tokenReserves: TokenReserves = reserves as TokenReserves
- return (
- tokenReserves !== undefined && tokenReserves.ethReserve !== undefined && tokenReserves.tokenReserve !== undefined
- )
-}
-
-// type guard for OptionalReserves
-export function areETHReserves(reserves: OptionalReserves): reserves is EthReserves {
- const tokenReserves: TokenReserves = reserves as TokenReserves
- return (
- tokenReserves !== undefined && tokenReserves.ethReserve === undefined && tokenReserves.tokenReserve === undefined
- )
-}
-
-// type for output data
-export type NormalizedReserves = TokenReservesNormalized | EthReserves
-
-// type guard for NormalizedReserves
-export function areTokenReservesNormalized(reserves: NormalizedReserves): reserves is TokenReservesNormalized {
- const tokenReservesNormalized: TokenReservesNormalized = reserves as TokenReservesNormalized
- return tokenReservesNormalized.ethReserve !== undefined && tokenReservesNormalized.tokenReserve !== undefined
-}
-
-//// types for computed data
-export interface Rate {
- rate: BigNumber
- rateInverted: BigNumber
-}
-export interface MarketDetails {
- tradeType: TRADE_TYPE
- inputReserves: NormalizedReserves
- outputReserves: NormalizedReserves
- marketRate: Rate
-}
-
-export interface TradeDetails {
- marketDetailsPre: MarketDetails
- marketDetailsPost: MarketDetails
- tradeType: TRADE_TYPE
- tradeExact: TRADE_EXACT
- inputAmount: TokenAmountNormalized
- outputAmount: TokenAmountNormalized
- executionRate: Rate
- marketRateSlippage: BigNumber
- executionRateSlippage: BigNumber
-}
-
-export type MethodArgument = BigNumber | number | string
-
-export interface ExecutionDetails {
- exchangeAddress: string
- methodName: string
- methodId: string
- value: BigNumber
- methodArguments: MethodArgument[]
-}
-
-//// types for formatting data
-export type FlexibleFormat = BigNumber.Format | boolean
-
-// type guard for FlexibleFormat
-export function isFormat(flexibleFormat: FlexibleFormat): flexibleFormat is BigNumber.Format {
- const format: BigNumber.Format = flexibleFormat as BigNumber.Format
- return typeof format !== 'boolean'
-}
-
-export interface FormatSignificantOptions {
- significantDigits: number
- roundingMode: BigNumber.RoundingMode
- forceIntegerSignificance: boolean
- format: FlexibleFormat
-}
-
-export interface FormatFixedOptions {
- decimalPlaces: number
- roundingMode: BigNumber.RoundingMode
- dropTrailingZeros: boolean
- underflowBehavior: FIXED_UNDERFLOW_BEHAVIOR
- format: FlexibleFormat
-}
-```
diff --git a/docs/sdk/v1/reference/_category_.json b/docs/sdk/v1/reference/_category_.json
deleted file mode 100644
index f98f581c3..000000000
--- a/docs/sdk/v1/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 2,
- "collapsed": false
-}
diff --git a/docs/sdk/v2/_category_.json b/docs/sdk/v2/_category_.json
deleted file mode 100644
index 3d94bdc77..000000000
--- a/docs/sdk/v2/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "V2 SDK",
- "position": 5,
- "collapsed": true
-}
diff --git a/docs/sdk/v2/guides/01-quick-start.md b/docs/sdk/v2/guides/01-quick-start.md
deleted file mode 100644
index a7ac66b85..000000000
--- a/docs/sdk/v2/guides/01-quick-start.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-id: quick-start
-title: SDK Quick start
----
-
-The t1 SDK exists to help developers build on top of t1. It's designed to run in any environment that can execute JavaScript (think websites, node scripts, etc.). While simple enough to use in a hackathon project, it's also robust enough to power production applications.
-
-# Installation
-
-The easiest way to consume the SDK is via [npm](https://github.com/Uniswap/uniswap-v2-sdk). To install it in your project, simply run `yarn add @uniswap/v2-sdk` (or `npm install @uniswap/v2-sdk`). This also installs the sdk-core package that is used by both the V2 and V3 SDK and ethers as dependencies.
-
-# Usage
-
-To run code from the SDK in your application, use an `import` or `require` statement, depending on which your environment supports. Note that the guides following this page will use ES6 syntax.
-
-## ES6 (import)
-
-```typescript
-import { ChainId } from '@uniswap/sdk-core'
-import {Pair} from '@uniswap/v2-sdk'
-console.log(`The chainId of mainnet is ${ChainId.MAINNET}.`)
-```
-
-## CommonJS (require)
-
-```typescript
-const CORE = require('@uniswap/sdk-core')
-const V2_SDK = require('@uniswap/v2-sdk')
-console.log(`The chainId of mainnet is ${CORE.ChainId.MAINNET}.`)
-```
-
-# Reference
-
-Comprehensive reference material for the SDK is publicly available on the [Uniswap Labs Github](https://github.com/Uniswap).
diff --git a/docs/sdk/v2/guides/02-fetching-data.md b/docs/sdk/v2/guides/02-fetching-data.md
deleted file mode 100644
index c5eb3c58e..000000000
--- a/docs/sdk/v2/guides/02-fetching-data.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-id: fetching-data
-title: Fetching Data
----
-
-> Looking for a [quickstart](quick-start)?
-
-While the SDK is fully self-contained, there are two cases where it needs _on-chain data_ to function.
-This guide will detail both of these cases, and offer a sample that you can use to fetch this data.
-
-# Case 1: Tokens
-
-Unsurprisingly, the SDK needs some notion of an ERC-20 token to be able to function. This immediately raises the question of _where data about tokens comes from_.
-
-As an example, let's try to represent DAI in a format the SDK can work with. To do so, we need at least 3 pieces of data: a **chainId**, a **token address**, and how many **decimals** the token has. We also may be interested in the **symbol** and/or **name** of the token.
-
-## Identifying Data
-
-The first two pieces of data — **chainId** and **token address** — must be provided by us. Thinking about it, this makes sense, as there's really no other way to unambiguously identify a token.
-
-So, in the case of DAI, we know that the **chainId** is `1` (we're on mainnet), and the **token address** is `0x6B175474E89094C44Da98b954EedeAC495271d0F`. Note that it's very important to externally verify token addresses. Don't use addresses from sources you don't trust!
-
-## Required Data
-
-The next piece of data we need is **decimals**.
-
-### Provided by the User
-
-One option here is to simply pass in the correct value, which we may know is `18`. At this point, we're ready to represent DAI as a [Token](../../core/reference/classes/Token.md):
-
-```typescript
-import { ChainId, Token } from '@uniswap/sdk-core'
-
-const chainId = ChainId.MAINNET
-const tokenAddress = '0x6B175474E89094C44Da98b954EedeAC495271d0F' // must be checksummed
-const decimals = 18
-
-const DAI = new Token(chainId, tokenAddress, decimals)
-```
-
-If we don't know or don't want to hardcode the value, we could look it up ourselves via any method of retrieving on-chain data in a function that looks something like:
-
-```typescript
-import { ChainId } from '@uniswap/sdk-core'
-
-async function getDecimals(chainId: ChainId, tokenAddress: string): Promise {
- // Setup provider, import necessary ABI ...
- const tokenContract = new ethers.Contract(tokenAddress, erc20abi, provider)
- return tokenContract["decimals"]()
-}
-```
-
-## Optional Data
-
-Finally, we can talk about **symbol** and **name**. Because these fields aren't used anywhere in the SDK itself, they're optional, and can be provided if you want to use them in your application. However, the SDK will not fetch them for you, so you'll have to provide them:
-
-```typescript
-import { ChainId, Token } from '@uniswap/sdk-core'
-
-const DAI = new Token(ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18, 'DAI', 'Dai Stablecoin')
-```
-
-# Case 2: Pairs
-
-Now that we've explored how to define a token, let's talk about pairs. To read more about what t1 pairs are, see [Pair](../../../contracts/v2/reference/smart-contracts/pair)
-
-As an example, let's try to represent the DAI-WETH pair.
-
-## Identifying Data
-
-Each pair consists of two tokens (see previous section). Note that WETH used by the router is [exported by the SDK Core as WETH9](../../core/reference/overview.md).
-
-## Required Data
-
-The data we need is the _reserves_ of the pair. To read more about reserves, see [getReserves](../../../contracts/v2/reference/smart-contracts/pair#getreserves).
-
-### Provided by the User
-
-One option here is to simply pass in values which we've fetched ourselves to create a [Pair](../reference/pair). In this example we use ethers to fetch the data directly from the blockchain:
-
-```typescript
-import { ChainId, Token, WETH9, CurrencyAmount } from '@uniswap/sdk-core'
-import { Pair } from '@uniswap/v2-sdk'
-
-const DAI = new Token(ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18)
-
-async function createPair(): Promise {
- const pairAddress = Pair.getAddress(DAI, WETH9[DAI.chainId])
-
- // Setup provider, import necessary ABI ...
- const pairContract = new ethers.Contract(pairAddress, uniswapV2poolABI, provider)
- const reserves = await pairContract["getReserves"]()
- const [reserve0, reserve1] = reserves
-
- const tokens = [DAI, WETH9[DAI.chainId]]
- const [token0, token1] = tokens[0].sortsBefore(tokens[1]) ? tokens : [tokens[1], tokens[0]]
-
- const pair = new Pair(CurrencyAmount.fromRawAmount(token0, reserve0), CurrencyAmount.fromRawAmount(token1, reserve1))
- return pair
-}
-```
-
-Note that these values can change as frequently as every block, and should be kept up-to-date.
diff --git a/docs/sdk/v2/guides/03-pricing.md b/docs/sdk/v2/guides/03-pricing.md
deleted file mode 100644
index bec115028..000000000
--- a/docs/sdk/v2/guides/03-pricing.md
+++ /dev/null
@@ -1,84 +0,0 @@
----
-id: pricing
-title: Pricing
----
-
-> Looking for a [quickstart](quick-start)?
-
-Let's talk pricing. This guide will focus on the two most important t1 prices: the **mid price** and the **execution price**.
-
-# Mid Price
-
-The mid price, in the context of t1, is the price that reflects the _ratio of reserves in one or more pairs_. There are three ways we can think about this price. Perhaps most simply, it defines the relative value of one token in terms of the other. It also represents the price at which you could theoretically trade an infinitesimal amount (ε) of one token for the other. Finally, it can be interpreted as the current _market-clearing or fair value price_ of the assets.
-
-Let's consider the mid price for DAI-WETH (that is, the amount of DAI per 1 WETH).
-
-## Direct
-
-The simplest way to get the DAI-WETH mid price is to observe the pair directly:
-
-```typescript
-import { ChainId, Token, WETH9 } from '@uniswap/sdk-core'
-import { Route } from '@uniswap/v2-sdk'
-
-const DAI = new Token(ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18)
-
-// To learn how to get Pair data, refer to the previous guide.
-const pair = await createPair(DAI, WETH9[ChainId.MAINNET])
-
-const route = new Route([pair], WETH9[DAI.chainId], DAI)
-
-console.log(route.midPrice.toSignificant(6)) // 1901.08
-console.log(route.midPrice.invert().toSignificant(6)) // 0.000526017
-```
-
-You may be wondering why we have to construct a _route_ to get the mid price, as opposed to simply getting it from the pair (which, after all, includes all the necessary data). The reason is simple: a route forces us to be opinionated about the _direction_ of trading. Routes consist of one or more pairs, an input token and an output token (which fully defines a trading path). In this case, we passed WETH as the input token and DAI as the output token, meaning we're interested in a WETH -> DAI trade.
-
-Now we understand that the mid price is going to be defined in terms of DAI/WETH. Not to worry though, if we need the WETH/DAI price, we can easily invert.
-
-Finally, you may have noticed that we're formatting the price to 6 significant digits. This is because internally, prices are stored as exact-precision fractions, which can be converted to other representations on demand. For a full list of options, see [Price](../../core/reference/classes/Price.md).
-
-## Indirect
-
-For the sake of example, let's imagine a direct pair between DAI and WETH _doesn't exist_. In order to get a DAI-WETH mid price we'll need to pick a valid route. Imagine both DAI and WETH have pairs with a third token, USDC. In that case, we can calculate an indirect mid price through the USDC pairs:
-
-```typescript
-import { ChainId, Token, WETH9} from '@uniswap/sdk-core'
-import { Route, Pair } from '@uniswap/v2-sdk'
-
-const USDC = new Token(ChainId.MAINNET, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 6)
-const DAI = new Token(ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18)
-
-// To learn how to get Pair data, refer to the previous guide.
-const USDCWETHPair = await createPair(USDC, WETH9[ChainId.MAINNET])
-const DAIUSDCPair = await createPair(DAI, USDC)
-
-const route = new Route([USDCWETHPair, DAIUSDCPair], WETH9[ChainId.MAINNET], DAI)
-
-console.log(route.midPrice.toSignificant(6)) // 1896.34
-console.log(route.midPrice.invert().toSignificant(6)) // 0.000527331
-```
-
-# Execution Price
-
-Mid prices are great representations of the _current_ state of a route, but what about trades? It turns out that it makes sense to define another price, the _execution_ price of a trade, as the ratio of assets sent/received.
-
-Imagine we're interested in trading 1 WETH for DAI:
-
-```typescript
-import { ChainId, Token, WETH9, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
-import { Route, Pair, Trade } from '@uniswap/v2-sdk'
-
-const DAI = new Token(ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18)
-
-// To learn how to get Pair data, refer to the previous guide.
-const pair = await createPair(DAI, WETH9[DAI.chainId])
-
-const route = new Route([pair], WETH9[DAI.chainId], DAI)
-
-const trade = new Trade(route, CurrencyAmount.fromRawAmount(WETH9[DAI.chainId], '1000000000000000000'), TradeType.EXACT_INPUT)
-
-console.log(trade.executionPrice.toSignificant(6)) // 1894.91
-```
-
-Notice that we're constructing a trade of 1 WETH for as much DAI as possible, _given the current reserves of the direct pair_. The execution price represents the average DAI/WETH price for this trade. Of course, the reserves of any pair can change every block, which would affect the execution price.
diff --git a/docs/sdk/v2/guides/04-trading.md b/docs/sdk/v2/guides/04-trading.md
deleted file mode 100644
index 014cfb32c..000000000
--- a/docs/sdk/v2/guides/04-trading.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-id: trading
-title: Trading
----
-
-> Looking for a [quickstart](quick-start)?
-
-The SDK _cannot execute trades or send transactions on your behalf_. Rather, it offers utility classes and functions which make it easy to calculate the data required to safely interact with t1. Nearly everything you need to safely transact with t1 is provided by the [Trade](../reference/trade) entity. However, it is your responsibility to use this data to send transactions in whatever context makes sense for your application.
-
-This guide will focus exclusively on sending a transaction to the [latest t1 V2 router](../../../contracts/v2/reference/smart-contracts/router-02)
-
-# Sending a Transaction to the Router
-
-Let's say we want to trade 1 WETH for as much DAI as possible:
-
-```typescript
-import { ChainId, Token, WETH9, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
-import {Trade, Route} from '@uniswap/v2-sdk'
-
-const DAI = new Token(ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18)
-
-// See the Fetching Data guide to learn how to get Pair data
-const pair = await createPair(DAI, WETH9[DAI.chainId])
-
-const route = new Route([pair], WETH9[DAI.chainId], DAI)
-
-const amountIn = '1000000000000000000' // 1 WETH
-
-const trade = new Trade(route, CurrencyAmount.fromRawAmount(WETH9[DAI.chainId], amountIn), TradeType.EXACT_INPUT)
-```
-
-So, we've constructed a trade entity, but how do we use it to actually send a transaction? There are still a few pieces we need to put in place.
-
-Before going on, we should explore how ETH works in the context of trading. Internally, the SDK uses WETH, as all t1 V2 pairs use WETH under the hood. However, it's perfectly possible for you as an end user to use ETH, and rely on the router to handle converting to/from WETH. So, let's use ETH.
-
-The first step is selecting the appropriate router function. The names of router functions are intended to be self-explanatory; in this case we want [swapExactETHForTokens](../../../contracts/v2/reference/smart-contracts/router-02#swapexactethfortokens), because we're swapping an exact amount of ETH for tokens.
-
-That Solidity interface for this function is:
-
-```solidity
-function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
- external
- payable
- returns (uint[] memory amounts);
-```
-
-Jumping back to our trading code, we can construct all the necessary parameters:
-
-```typescript
-import {Percent} from '@uniswap/sdk-core'
-
-const slippageTolerance = new Percent('50', '10000') // 50 bips, or 0.50%
-
-const amountOutMin = trade.minimumAmountOut(slippageTolerance).toExact() // needs to be converted to e.g. decimal string
-const path = [WETH9[DAI.chainId].address, DAI.address]
-const to = '' // should be a checksummed recipient address
-const deadline = Math.floor(Date.now() / 1000) + 60 * 20 // 20 minutes from the current Unix time
-const value = trade.inputAmount.toExact() // // needs to be converted to e.g. decimal string
-```
-
-The slippage tolerance encodes _how large of a price movement we're willing to tolerate before our trade will fail to execute_. Since Ethereum transactions are broadcast and confirmed in an adversarial environment, this tolerance is the best we can do to protect ourselves against price movements. We use this slippage tolerance to calculate the _minumum_ amount of DAI we must receive before our trade reverts, thanks to [minimumAmountOut](../reference/trade#minimumamountout-since-204). Note that this code calculates this worst-case outcome _assuming that the current price, i.e the route's mid price,_ is fair (usually a good assumption because of arbitrage).
-
-The path is simply the ordered list of token addresses we're trading through, in our case WETH and DAI (note that we use the WETH address, even though we're using ETH).
-
-The to address is the address that will receive the DAI.
-
-The deadline is the Unix timestamp after which the transaction will fail, to protect us in the case that our transaction takes a long time to confirm and we wish to rescind our trade.
-
-The value is the amount of ETH that must be included as the `msg.value` in our transaction.
diff --git a/docs/sdk/v2/guides/05-getting-pair-addresses.md b/docs/sdk/v2/guides/05-getting-pair-addresses.md
deleted file mode 100644
index 89cf73269..000000000
--- a/docs/sdk/v2/guides/05-getting-pair-addresses.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-id: getting-pair-addresses
-title: Pair Addresses
----
-
-# getPair
-
-The most obvious way to get the address for a pair is to call [getPair](../../../contracts/v2/reference/smart-contracts/factory#getpair) on the factory. If the pair exists, this function will return its address, else `address(0)` (`0x0000000000000000000000000000000000000000`).
-
-- The "canonical" way to determine whether or not a pair exists.
-- Requires an on-chain lookup.
-
-# CREATE2
-
-Thanks to some [fancy footwork in the factory](https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2Factory.sol#L32), we can also compute pair addresses _without any on-chain lookups_ because of [CREATE2](https://eips.ethereum.org/EIPS/eip-1014). The following values are required for this technique:
-
-| | |
-| :--------------------- | :----------------------------------------------------------------------------- |
-| `address` | The [factory address](../../../contracts/v2/reference/smart-contracts/factory) |
-| `salt` | `keccak256(abi.encodePacked(token0, token1))` |
-| `keccak256(init_code)` | `0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f` |
-
-- `token0` must be strictly less than `token1` by sort order.
-
-* Can be computed offline.
-* Requires the ability to perform `keccak256`.
-
-## Examples
-
-### TypeScript
-
-This example makes use of the [Uniswap V2 SDK](../reference/getting-started). In reality, the SDK computes pair addresses behind the scenes, obviating the need to compute them manually like this.
-
-```typescript
-import { FACTORY_ADDRESS, INIT_CODE_HASH } from '@uniswap/v2-sdk'
-import { pack, keccak256 } from '@ethersproject/solidity'
-import { getCreate2Address } from '@ethersproject/address'
-
-const token0 = '0xCAFE000000000000000000000000000000000000' // change me!
-const token1 = '0xF00D000000000000000000000000000000000000' // change me!
-
-const pair = getCreate2Address(
- FACTORY_ADDRESS,
- keccak256(['bytes'], [pack(['address', 'address'], [token0, token1])]),
- INIT_CODE_HASH
-)
-```
diff --git a/docs/sdk/v2/guides/_category_.json b/docs/sdk/v2/guides/_category_.json
deleted file mode 100644
index c694eb5b2..000000000
--- a/docs/sdk/v2/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 2,
- "collapsed": false
-}
diff --git a/docs/sdk/v2/overview.md b/docs/sdk/v2/overview.md
deleted file mode 100644
index 01f0dee92..000000000
--- a/docs/sdk/v2/overview.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-id: overview
-sidebar_position: 1
-title: Overview
----
-
-# The t1 V2 SDK
-
-Welcome to the t1 Protocol V2 SDK. To begin, we recommend looking at the [**Guides**](./guides/01-quick-start.md) and for deeper reference see the [**V2 SDK Github**](https://github.com/Uniswap/v2-sdk) repo.
-
-
-# t1 V2 SDK
-
-- [**V2 SDK Github**](https://github.com/Uniswap/v2-sdk)
-- [**SDK Core Github**](https://github.com/Uniswap/sdk-core)
-- [**SDK NPM Package**](https://www.npmjs.com/package/@uniswap/v2-sdk)
-
-[](https://github.com/Uniswap/v2-sdk/actions?query=workflow%3A%22Unit+Tests%22)
-[](https://github.com/Uniswap/v2-sdk/actions?query=workflow%3ALint)
-[](https://www.npmjs.com/package/@uniswap/v2-sdk/v/latest)
-[](https://bundlephobia.com/result?p=@uniswap/v2-sdk@latest)
\ No newline at end of file
diff --git a/docs/sdk/v2/reference/01-getting-started.md b/docs/sdk/v2/reference/01-getting-started.md
deleted file mode 100644
index ec51ae923..000000000
--- a/docs/sdk/v2/reference/01-getting-started.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-id: getting-started
-title: Getting Started
----
-
-The pages that follow contain technical reference information on the t1 SDK.
-Looking for a [quick start](../guides/quick-start) instead?
-You may also want to jump into a [guide](../guides/fetching-data),
-which offers a friendlier introduction to the SDK!
-
-The SDK is written in TypeScript, has a robust test suite, performs arbitrary precision arithmetic,
-and supports rounding to significant digits or fixed decimal places.
-The principal exports of the SDK are _entities_: classes that contain initialization and validation checks,
-necessary data fields, and helper functions.
-
-An important concept in the SDK is _fractions_. Because Solidity performs integer math, care must be taken in
-non-EVM environments to faithfully replicate the actual computation carried out on-chain.
-The first concern here is to ensure that an overflow-safe integer implementation is used.
-Ideally, the SDK would be able to use native [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt)s.
-However, until support becomes more widespread, [JSBI](https://github.com/GoogleChromeLabs/jsbi) objects are used instead,
-with the idea that once BigInts proliferate, this dependency can be compiled away.
-The second concern is precision loss due to, for example, chained price ratio calculations.
-To address this issue, all math operations are performed as fraction operations, ensuring arbitrary precision up
-until the point that values are rounded for display purposes, or truncated to fit inside a fixed bit width.
-
-The Fractions class, among others that the V2 SDK depends on, are exported from the SDK Core to allow interoperability with the V3 SDK.
-Refer to the [Core SDK section of the docs](../../core/overview.md) to learn more about these classes.
-
-The SDK works for all chains on which the [factory](../../../contracts/v2/reference/smart-contracts/factory#address) is deployed.
-
-## Code
-
-The [source code is available on GitHub](https://github.com/Uniswap/uniswap-sdk).
-
-## Dependencies
-
-The SDK installs a small number of dependencies(https://github.com/Uniswap/v2-sdk/blob/main/package.json#L24).
-The most important dependency of the V2 SDK is the SDK core, which was previously part of the V2 SDK itself, but later released as its own package to avoid duplicate code between the V2 and V3 SDK.
diff --git a/docs/sdk/v2/reference/02-pair.md b/docs/sdk/v2/reference/02-pair.md
deleted file mode 100644
index bdf093842..000000000
--- a/docs/sdk/v2/reference/02-pair.md
+++ /dev/null
@@ -1,129 +0,0 @@
----
-id: pair
-title: Pair
----
-
-```typescript
-constructor(tokenAmountA: CurrencyAmount, tokenAmountB: CurrencyAmount)
-```
-
-The Pair entity represents a t1 pair with a balance of each of its pair tokens.
-
-# Example
-
-```typescript
-import { Pair } from '@uniswap/sdk-core'
-import {ChainId, Token, CurrencyAmount } from '@uniswap/v2-sdk'
-
-const HOT = new Token(ChainId.MAINNET, '0xc0FFee0000000000000000000000000000000000', 18, 'HOT', 'Caffeine')
-const NOT = new Token(ChainId.MAINNET, '0xDeCAf00000000000000000000000000000000000', 18, 'NOT', 'Caffeine')
-
-const pair = new Pair(CurrencyAmount.fromRawAmount(HOT, '2000000000000000000'), CurrencyAmount.fromRawAmount(NOT, '1000000000000000000'))
-```
-
-# Static Methods
-
-## getAddress
-
-```typescript
-getAddress(tokenA: Token, tokenB: Token): string
-```
-
-Computes the pair address for the passed [Tokens](token). See [Pair Addresses](../../../contracts/v2/guides/smart-contract-integration/getting-pair-addresses).
-
-# Properties
-
-## liquidityToken
-
-```typescript
-liquidityToken: Token
-```
-
-A Token representing the liquidity token for the pair. See [Pair (ERC-20)](../../../contracts/v2/reference/smart-contracts/pair-erc-20).
-
-## token0
-
-```typescript
-token0: Token
-```
-
-See [Token0](../../../contracts/v2/reference/smart-contracts/pair#token0).
-
-## token1
-
-```typescript
-token1: Token
-```
-
-See [Token1](../../../contracts/v2/reference/smart-contracts/pair#token1).
-
-## reserve0
-
-```typescript
-reserve0: CurrencyAmount
-```
-
-The reserve of token0.
-
-## reserve1
-
-```typescript
-reserve1: CurrencyAmount
-```
-
-The reserve of token1.
-
-# Methods
-
-## reserveOf
-
-```typescript
-reserveOf(token: Token): CurrencyAmount
-```
-
-Returns reserve0 or reserve1, depending on whether token0 or token1 is passed in.
-
-## getOutputAmount
-
-```typescript
-getOutputAmount(inputAmount: CurrencyAmount): [CurrencyAmount, Pair]
-```
-
-Pricing function for exact input amounts. Returns maximum output amount based on current reserves and the new Pair that would exist if the trade were executed.
-
-## getInputAmount
-
-```typescript
-getInputAmount(outputAmount: CurrencyAmount): [CurrencyAmount, Pair]
-```
-
-Pricing function for exact output amounts. Returns minimum input amount based on current reserves and the new Pair that would exist if the trade were executed.
-
-## getLiquidityMinted
-
-```typescript
-getLiquidityMinted(totalSupply: CurrencyAmount, tokenAmountA: CurrencyAmount, tokenAmountB: CurrencyAmount): CurrencyAmount
-```
-
-Calculates the exact amount of liquidity tokens minted from a given amount of token0 and token1.
-
-- totalSupply must be looked up on-chain.
-- The value returned from this function _cannot_ be used as an input to getLiquidityValue.
-
-## getLiquidityValue
-
-```typescript
-getLiquidityValue(
- token: Token,
- totalSupply: CurrencyAmount,
- liquidity: CurrencyAmount,
- feeOn: boolean = false,
- kLast?: BigintIsh
-): CurrencyAmount
-```
-
-Calculates the exact amount of token0 or token1 that the given amount of liquidity tokens represent.
-
-- totalSupply must be looked up on-chain.
-- If the protocol charge is on, feeOn must be set to true, and kLast must be provided from an on-chain lookup.
-- Values returned from this function _cannot_ be used as inputs to getLiquidityMinted.
diff --git a/docs/sdk/v2/reference/03-route.md b/docs/sdk/v2/reference/03-route.md
deleted file mode 100644
index 8b989f012..000000000
--- a/docs/sdk/v2/reference/03-route.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-id: route
-title: Route
----
-
-```typescript
-constructor(pairs: Pair[], input: Token, output: Token)
-```
-
-The Route entity represents one or more ordered t1 pairs with a fully specified path from input token to output token.
-
-# Example
-
-```typescript
-import { ChainId, Token, CurrencyAmount } from '@uniswap/sdk-core'
-import { Pair, Route } from '@uniswap/v2-sdk'
-
-const HOT = new Token(ChainId.MAINNET, '0xc0FFee0000000000000000000000000000000000', 18, 'HOT', 'Caffeine')
-const NOT = new Token(ChainId.MAINNET, '0xDeCAf00000000000000000000000000000000000', 18, 'NOT', 'Caffeine')
-const HOT_NOT = new Pair(CurrencyAmount.fromRawAmount(HOT, '2000000000000000000'), CurrencyAmount.fromRawAmount(NOT, '1000000000000000000'))
-
-const route = new Route([HOT_NOT], NOT, HOT)
-```
-
-# Properties
-
-## pairs
-
-```typescript
-pairs: Pair[]
-```
-
-The ordered pairs that the route is comprised of.
-
-## path
-
-```typescript
-path: Token[]
-```
-
-The full path from input token to output token.
-
-## input
-
-```typescript
-input: Token
-```
-
-The input token.
-
-## output
-
-```typescript
-output: Token
-```
-
-The output token.
-
-## midPrice
-
-```typescript
-midPrice: Price
-```
-
-Returns the current mid price along the route.
diff --git a/docs/sdk/v2/reference/04-trade.md b/docs/sdk/v2/reference/04-trade.md
deleted file mode 100644
index bf59be2fd..000000000
--- a/docs/sdk/v2/reference/04-trade.md
+++ /dev/null
@@ -1,159 +0,0 @@
----
-id: trade
-title: Trade
----
-
-```typescript
-constructor(route: Route, amount: CurrencyAmount, tradeType: TradeType)
-```
-
-The Trade entity represents a fully specified trade along a route. This entity supplies all the information necessary to craft a router transaction.
-
-# Example
-
-```typescript
-import { ChainId, Token, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
-import { Pair, Trade, Route }
-
-const HOT = new Token(ChainId.MAINNET, '0xc0FFee0000000000000000000000000000000000', 18, 'HOT', 'Caffeine')
-const NOT = new Token(ChainId.MAINNET, '0xDeCAf00000000000000000000000000000000000', 18, 'NOT', 'Caffeine')
-const HOT_NOT = new Pair(CurrencyAmount.fromRawAmount(HOT, '2000000000000000000'), CurrencyAmount.fromRawAmount(NOT, '1000000000000000000'))
-const NOT_TO_HOT = new Route([HOT_NOT], NOT, HOT)
-
-const trade = new Trade(NOT_TO_HOT, CurrencyAmount.fromRawAmount(NOT, '1000000000000000'), TradeType.EXACT_INPUT)
-```
-
-# Properties
-
-## route
-
-```typescript
-route: Route
-```
-
-The [path](route#path) property of the route should be passed as the path parameter to router functions.
-
-## tradeType
-
-```typescript
-tradeType: TradeType
-```
-
-`TradeType.EXACT_INPUT` corresponds to `swapExact*For*` router functions. `TradeType.EXACT_OUTPUT` corresponds to `swap*ForExact*` router functions.
-
-## inputAmount
-
-```typescript
-inputAmount: CurrencyAmount
-```
-
-For exact input trades, this value should be passed as amountIn to router functions. For exact output trades, this value should be multiplied by a factor >1, representing slippage tolerance, and passed as amountInMax to router functions.
-
-## outputAmount
-
-```typescript
-outputAmount: CurrencyAmount
-```
-
-For exact output trades, this value should be passed as amountOut to router functions. For exact input trades, this value should be multiplied by a factor <1, representing slippage tolerance, and passed as amountOutMin to router functions.
-
-## executionPrice
-
-```typescript
-executionPrice: Price
-```
-
-The average price that the trade would execute at.
-
-## priceImpact
-
-```typescript
-priceImpact: Percent
-```
-
-The percent difference between the mid price before the trade and the trade execution price.
-
-# Methods
-
-In the context of the following two methods, slippage refers to the percent difference between the actual price and the trade `executionPrice`.
-
-## minimumAmountOut (since 2.0.4)
-
-```typescript
-minimumAmountOut(slippageTolerance: Percent): CurrencyAmount
-```
-
-Returns the minimum amount of the output token that should be received from a trade, given the slippage tolerance.
-
-Useful when constructing a transaction for a trade of type `EXACT_INPUT`.
-
-## maximumAmountIn (since 2.0.4)
-
-```typescript
-maximumAmountIn(slippageTolerance: Percent): CurrencyAmount
-```
-
-Returns the maximum amount of the input token that should be spent on the trade, given the slippage tolerance.
-
-Useful when constructing a transaction for a trade of type `EXACT_OUTPUT`.
-
-## worstExecutionPrice
-
-Return the execution price after accounting for slippage tolerance
-
-```typescript
-worstExecutionPrice(slippageTolerance: Percent): Price
-```
-
-# Static methods
-
-These static methods provide ways to construct ideal trades from lists of pairs.
-Note these methods do not perform any aggregation across routes, as routes are linear.
-It's possible that a better price can be had by combining multiple trades across
-different routes.
-
-## exactIn
-
-Constructs an exact in trade with the given amount in and route.
-
-```typescript
-Trade.exactIn(route: Route, amountIn: CurrencyAmount): Trade
-```
-
-## exactOut
-
-Constructs an exact out trade with the given amount out and route
-
-```typescript
-Trade.exactOut(route: Route, amountOut: CurrencyAmount): Trade
-```
-
-## bestTradeExactIn
-
-Given a list of pairs, and a fixed amount in, returns the top `maxNumResults` trades that go from an input token
-amount to an output token, making at most `maxHops` hops.
-Note this does not consider aggregation, as routes are linear. It's possible a better route exists by splitting
-the amount in among multiple routes.
-
-```typescript
-Trade.bestTradeExactIn(
- pairs: Pair[],
- nextAmountIn: CurrencyAmount,
- currencyOut: Token,
- { maxNumResults = 3, maxHops = 3 }: BestTradeOptions = {}): Trade[]
-```
-
-## bestTradeExactOut
-
-Similar to the above method but instead targets a fixed output amount given a list of pairs,
-and a fixed amount out, returns the top `maxNumResults` trades that go from an input token to an output token amount,
-making at most `maxHops` hops. Note this does not consider aggregation, as routes are linear.
-It is possible a better route exists by splitting the amountIn among multiple routes.
-
-```typescript
-Trade.bestTradeExactOut(
- pairs: Pair[],
- currencyIn: Token,
- nextAmountOut: CurrencyAmount,
- { maxNumResults = 3, maxHops = 3 }: BestTradeOptions = {}): Trade[]
-```
diff --git a/docs/sdk/v2/reference/05-other-exports.md b/docs/sdk/v2/reference/05-other-exports.md
deleted file mode 100644
index 65391dcb5..000000000
--- a/docs/sdk/v2/reference/05-other-exports.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-id: other-exports
-title: Other Exports
----
-
-A enum denominating supported rounding options.
-
-# FACTORY_ADDRESS
-
-```typescript
-import { FACTORY_ADDRESS } from '@uniswap/v2-sdk'
-```
-
-The [factory address](../../../contracts/v2/reference/smart-contracts/factory#address).
-
-# INIT_CODE_HASH
-
-```typescript
-import { INIT_CODE_HASH } from '@uniswap/v2-sdk'
-```
-
-See [pair addresses](../../../contracts/v2/guides/smart-contract-integration/getting-pair-addresses).
-
-# MINIMUM_LIQUIDITY
-
-```typescript
-import { MINIMUM_LIQUIDITY } from '@uniswap/v2-sdk'
-```
-
-See [minimum liquidity](../../../contracts/v2/reference/smart-contracts/pair#minimum-liquidity).
-
-# InsufficientReservesError
-
-```typescript
-import { InsufficientReservesError } from '@uniswap/v2-sdk'
-```
-
-# InsufficientInputAmountError
-
-```typescript
-import { InsufficientInputAmountError } from '@uniswap/v2-sdk'
-```
diff --git a/docs/sdk/v2/reference/_category_.json b/docs/sdk/v2/reference/_category_.json
deleted file mode 100644
index 0e72ac2e5..000000000
--- a/docs/sdk/v2/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 3,
- "collapsed": false
-}
diff --git a/docs/sdk/v3/_category_.json b/docs/sdk/v3/_category_.json
deleted file mode 100644
index cf72316e0..000000000
--- a/docs/sdk/v3/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "V3 SDK",
- "position": 1,
- "collapsed": false
-}
diff --git a/docs/sdk/v3/guides/01-background.md b/docs/sdk/v3/guides/01-background.md
deleted file mode 100644
index 08dc4ade9..000000000
--- a/docs/sdk/v3/guides/01-background.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-id: background
-title: Background
-position: 1
----
-
-Before integrating with t1, it may be helpful for newcomers to review the following background information on some important developer web3 concepts, the structure of our examples, and SDK concepts.
-
-:::info
-Already familiar with web3 development and/or the basics of our SDK and want to get right to the code? Start with our first guide, [Getting a Quote](./swaps/01-quoting.md)!
-:::
-
-## Providers
-
-Communication with the blockchain is typically done through a provider and local models of smart contracts and their [ABIs](./01-background.md#abis).
-
-To achieve this, our examples use the [ethers.js](https://docs.ethers.io/v5/) library. To instantiate a provider you will need a data source. Our examples offer two options:
-
-- **JSON RPC URL**: If you are working directly with the Ethereum mainnet or a local fork, products such as [Infura](https://infura.io/) offer JSON RPC URLs for a wide variety of chains and testnets. For our examples, we'll only be using the Ethereum mainnet.
-
-- **Wallet Extension**: If you are connecting to a wallet browser extension, these wallets embed a source directly into the Javascript window object as `window.ethereum`. This object surfaces information about the user's wallets and provides the ability to communicate with the connected chain. Importantly for our examples, it can be used with `ethers.js` to construct a provider.
-
-## t1's Runnable Examples
-
-Each guide is accompanied and driven by [runnable examples](https://github.com/Uniswap/examples/tree/main/v3-sdk) using React to provide a basic UI for interacting with the example. Each examples provides relevant options such as running against a local blockchain or connecting to the Ethereum mainnet directly. You also have the option of using a wallet extension which can be connected to either environment.
-
-Inputs and environment settings are configured in each example's `config.ts` and allows for simple setup and configuration.
-
-### Developing and Testing
-
-To test your code, we recommend utilizing a local fork of the Ethereum mainnet. To help facilitate easy testing, each example includes a quickstart for running the local chain with a test wallet. To further test, we also recommend using a wallet extension and connecting to the local chain. Finally, each example can be run against the Ethereum mainnet if desired. Full development instructs can be found in the `README.md` of each code example.
-
-### Utility Libraries
-
-Each example is concentrated into a single file within the `libs/` folder of the example, with the entry points noted in each guide and README.
-
-To allow the guides to focus on the SDK's core functionality, additional basic building blocks can be found in each example's `libs` folder. The exported functionality from these files is intended to be the minimum needed for each example and not a complete library for production usage. These also include storing core constants such as definitions for tokens, ABI's, and blockchain addresses that can distract from the core concepts. Below are summaries of the helping libraries you will encounter.
-
-#### Provider Utilities
-
-`provider.ts` wraps the basics of `ethers.js` and connecting to wallet extensions into an abstracted view of a provider, a wallet address, and the ability to send transactions. It also helps abstract the configured environment you wish to run against in your example without making code changes outside of your configuration.
-
-#### Wallet Utilities
-
-`wallet.ts` offers the ability to query a wallet (whether connected via an extension or defined in code/config) for its balances and other essential information.
-
-#### Pool Information
-
-`pool.ts` contains the basic querying of pool information when not essential / core to the relevant guide
-
-#### Display Utilities
-
-`conversion.ts` provides display and light math wrappers to help show human readable prices when dealing with currency amounts (typically stored as raw numbers and the decimal placement separate for precision reasons) in the form of two functions: `fromReadableAmount` and `toReadableAmount`
-
-## Notable SDK Structures and Concepts
-
-When working with the SDK it can be helpful to understand some of the design choices and why they are needed. Below you can find a few important concepts.
-
-### ABI's
-
-To allow others to interact with a smart contract, each contract exposes an ABI (Application Binary Interface). As these are defined on the blockchain, we must ensure the correct definitions are provided to our Javascript functions. ABI's are provided from various SDK's and imported in as needed. Some examples will define an ABI directly as needed.
-
-### CurrencyAmount and JSBI
-
-Cryptocurrency applications often work with very small fractions of tokens. As a result, high precision is very important. To ensure precision is upheld, the `CurrencyAmount` class helps store exact values as fractions and utilizes [JSBI](https://github.com/GoogleChromeLabs/jsbi) for compatibility across the web. To display these amounts nicely to users, additional work is sometimes required.
-
-### Currency
-
-The `Currency` class can represent both native currency (ETH) and an ERC20 `Token`. Currencies vary in their relative value, so the `Token` class allows your application to define the number of decimals needed for each currency along with the currency's address, symbol, and name.
diff --git a/docs/sdk/v3/guides/02-local-development.md b/docs/sdk/v3/guides/02-local-development.md
deleted file mode 100644
index 62b54f91b..000000000
--- a/docs/sdk/v3/guides/02-local-development.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-id: local-development
-title: Local Development
-position: 2
----
-
-## Introduction
-
-Developing your dApps or smart contracts requires some tinkering to get a proper setup that is both a good simulation of how Mainnet will behave,
-but also customizable enough to suit the needs of a development environment.
-
-One very common approach is to create your own custom chain offline and develop on top of it.
-The issue with this approach is that if you are integrating with protocols like t1 or others that are on Mainnet, it's
-difficult to simulate on your local chain as the smart contracts from Mainnet are not there.
-
-Another approach is to use a testnet like Ethereum Goerli. While most protocols (including t1) have versions of their smart contracts
-deployed on common testnets, there are certain behavioural differences. Not all pools that are on Mainnet are on Goerli for example.
-Also, it's difficult to get enough testnet ETH to account for real testing. And without lots of testnet ETH it's even more difficult
-to swap to other coins on t1, if that's what you need to do in your development environment.
-
-This guide focuses on yet another approach to local development: Mainnet Forks.
-
-A Mainnet Fork is a local chain that copies the state of Ethereum Mainnet at a given block number. It then gives you access to cheat codes
-like wallets with thousands of ETH and RPC URLs that you can use as drop-in replacements of real Mainnet RPCs.
-
-This approach combines the best of all other approaches. You have a local chain that you can manipulate to your liking
-and you have real deployments of all the protocols you need to test and develop your dApp or smart contracts.
-
-:::info
-This guide focuses on Ethereum Mainnet. But you can easily fork any other chain by simply replacing the RPC URL with
-one of the network you want to use.
-:::
-
-For this guide, the following packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-- [`ethers@5`](https://www.npmjs.com/package/ethers)
-
-Please note that we use ethers version 5, as this is still the most commonly used version of ethers.js.
-If you use version 6, you will need to slightly change the syntax in the examples below.
-
-:::info
-Forking a chain requires archival data and trace calls. Infura and normal geth instances are by default not archival.
-You can get a free archival RPC that you can use to follow this guide and fork Mainnet you can visit [Chainnodes](https://www.chainnodes.org/).
-:::
-
-## Using Foundry and Anvil
-
-There are several developer tools to fork Mainnet.
-[Anvil](https://github.com/foundry-rs/foundry/blob/master/anvil/README.md) by foundry is a newcomer that's fast and easy to setup.
-This guide focuses on Anvil.
-
-As a first step, follow the [installation guide](https://book.getfoundry.sh/getting-started/installation) in the foundry book.
-
-Once you have done that, you will be able to fork Mainnet straight away. Run the below command in your terminal:
-
-Make sure that you:
-
-- Replace your API Key (get one by heading to [Chainnodes](https://app.chainnodes.org/))
-- Replace the block number with a recent one, check [Etherscan](https://etherscan.io/) for that
-- If you fork a non-Ethereum Mainnet chain, check [Chainlist](https://chainlist.org/) for the correct chain id and replace both occurrences in the command below
-
-```bash
-anvil --fork-url https://mainnet.chainnodes.org/api_key --fork-block-number 17480237 --fork-chain-id 1 --chain-id 1
-```
-
-Run `anvil --help` to see all available options.
-
-Once you have done that, you should see something like the below:
-
-
-
-Your local fork of Mainnet is now running!
-
-And as you can see on the screenshot above, anvil prints a bunch of private keys that are loaded with 10k ETH each.
-We will use them going forward to send transactions, including swaps on t1 pools.
-
-:::warning
-Security consideration: This is a fork of Mainnet and the same chain id is used. You have no replay protection to Ethereum Mainnet. So you need to 1: Never use the anvil private keys on a real chain or send funds to it
-(they are leaked everywhere) and 2: Not send any transactions to your local fork chain with accounts that you use on Ethereum Mainnet or other real chains.
-:::
-
-If you scroll down in your terminal, near the bottom of the anvil logs you will find your RPC URL.
-If you haven't changed any configs, it should be `127.0.0.1:8545`.
-This is the RPC URL that you can now use as a drop-in replacement everywhere in your development environment, and interact with it
-as if it was real Ethereum Mainnet. You can use the http provider `http://127.0.0.1:8545` as well as the Websocket provider `ws://127.0.0.1:8545`.
-
-You can now make a sample RPC request to your http provider using [Postman](https://www.postman.com/) using the below:
-
-POST `http://127.0.0.1:8545`
-
-Body:
-
-```JSON
-{
- "jsonrpc": "2.0",
- "method": "eth_chainId",
- "params": [],
- "id": 1
-}
-```
-
-The result should look like the below (see image below as well):
-
-```JSON
-{
- "jsonrpc": "2.0",
- "id": 1,
- "result": "0x1"
-}
-```
-
-
-
-As you can see, the chain id is `1`, just like on Mainnet!
-
-You can find the above example and more in [this Postman workspace](https://www.postman.com/chainnodes/workspace/uniswap-examples) under "Local Development".
-
-## Using your Mainnet Fork
-
-Now that you have a running Mainnet Fork, you will be able to use it everywhere in your development setup.
-Using one of the private keys provided by anvil, you have access to enough ETH to do endless swaps and smart contract calls.
-
-If you need any other token, you now have the flexibility of swapping your ETH to any token that has a pool deployed on Mainnet.
-You basically take your fake ETH and swap it to the token you need.
-
-Check out one of the [guides about swapping](./swaps/02-trading.md) and replace the RPC URL with your local anvil HTTP link as above.
-
-## Next Steps
-
-Using the above you are fully equipped to continue following the guides about how to use t1 while testing everything locally before
-going on Mainnet. You will also be able to reuse what you have learned when you develop your own protocols or dApps.
-
-You can also continue tapping into other developer tools that make smart contract development easier like [forge](https://github.com/foundry-rs/foundry/tree/master/forge) from foundry.
-To read more about foundry and their developer tooling, visit their [Github](https://github.com/foundry-rs/foundry) or the [foundry book](https://book.getfoundry.sh/).
diff --git a/docs/sdk/v3/guides/03-web3-development-basics.md b/docs/sdk/v3/guides/03-web3-development-basics.md
deleted file mode 100644
index d2dbe0ab7..000000000
--- a/docs/sdk/v3/guides/03-web3-development-basics.md
+++ /dev/null
@@ -1,192 +0,0 @@
----
-id: web3-development-basics
-title: Web3 Development Basics
-position: 3
----
-
-## Introduction
-
-Developing dApps and interacting with Smart Contracts is quite different from Web2, and at times challenging due to little information
-on this topic compared to other areas of software development.
-
-This developer guide is a quick overview of the space, including references to libraries and guides that are great starting points.
-Reading this guide should help you identify areas that you might need to learn a bit more about and prepare you for the following t1-specific guides.
-
-It is assumed that you know the basics about Ethereum and the blockchain, including some terminology.
-If you already know how to build dApps and interact with ethersJS etc. you can safely skip this guide.
-
-## RPCs
-
-The access point to the blockchain are RPC nodes. They are the [standardized interface](https://ethereum.org/en/developers/docs/apis/json-rpc/)
-to read data from smart contracts, send transactions and interact with on-chain protocols.
-
-RPCs are either [full or archival nodes](https://ethereum.org/en/developers/docs/nodes-and-clients/archive-nodes/)
-with a ([JSON-RPC](https://www.jsonrpc.org/)) interface.
-
-To support Ethereum's decentralization, one can host a node themselves, for example by using one of the implementations listed below:
-
-* [geth](https://github.com/ethereum/go-ethereum) - The original (reference) implementation of the Ethereum protocol
-* [erigon](https://github.com/ledgerwatch/erigon) - A very efficient archival node implementation
-* [Nethermind](https://github.com/NethermindEth/nethermind) - An Ethereum implementation focused on stability
-
-As achieving high availability and making sure your node is synced all the time turns out to be quite challenging,
-there are nodes as a service (RPC) providers that you can use, especially in production environments.
-When choosing an RPC provider, we suggest you look for an RPC service that supports websockets as they provide far superior performance than HTTP connections.
-To ensure interoperability, you should also ensure that your RPC provider adheres strictly to the JSON-RPC standard and doesn't require custom requests.
-
-[Chainnodes](https://www.chainnodes.org/) is a robust RPC provider with generous free tier that you can use in both development and production environments.
-For testing purposes you could also use a free public RPC endpoint, for example from [Chainlist](https://chainlist.org/).
-
-### JSON-RPC Standard
-
-RPCs communicate over the [JSON-RPC](https://www.jsonrpc.org/) standard. To send requests, you take the RPC URL and
-make a POST request with a JSON body. See the below example:
-
-`POST https://mainnet.chainnodes.org/API_KEY`
-
-Body:
-
-```json
-{
- "jsonrpc": "2.0",
- "method": "eth_blockNumber",
- "params": [],
- "id": 1
-}
-```
-
-At the time of writing, this request would respond with the following:
-
-```json
-{
- "id": 1,
- "result": "0x11527c0",
- "jsonrpc": "2.0"
-}
-```
-
-Examining the result, we see that the result is an encoded hex string.
-After decoding it, we see it returns the current blocknumber of our network, `18163648`.
-
-You can find the above examples, including more, in [this Postman collection](https://www.postman.com/chainnodes/workspace/uniswap-examples).
-
-To check out all possible RPC requests, head over to the [Chainnodes Docs](https://www.chainnodes.org/docs).
-
-### Client implementations
-
-As communicating over HTTP with POST requests directly can be quite difficult, especially if you want to properly
-encode and decode responses and handle failures and exponential backoffs, there are client implementations that
-can do the heavy lifting for you. These SDKs have developer friendly APIs and internally handle
-creating the proper RPC requests, sending them to the endpoint you choose and decoding the response for you.
-
-Some of the major implementations are listed below:
-
-* [ethers.js](https://github.com/ethers-io/ethers.js) - Javascript/Typescript SDK for NodeJS and the Browser. Used throughout the t1 Docs.
-* [wagmi](https://github.com/wagmi-dev/wagmi) and [viem](https://github.com/wagmi-dev/viem) - Javascript/Typescript, great duo for modern Web3 development in the Browser.
-* [web3js](https://github.com/web3/web3.js) - Javascript/Typescript SDK for NodeJS and the Browser by ChainSafe.
-
-Web3 development is not limited to JS. Web3 libraries for various languages include:
-
-* [Web3.swift](https://github.com/Boilertalk/Web3.swift) - Swift SDK for iOS apps and Backends.
-* [KEthereum](https://github.com/komputing/KEthereum) - Kotlin SDK for Android development.
-* [ethers-rs](https://github.com/gakonst/ethers-rs) - Rust SDK.
-* [ethclient](https://github.com/ethereum/go-ethereum/tree/master/ethclient) - Go SDK, part of geth, the reference Ethereum node implementation.
-
-At the moment, t1 only offers Typescript sdks.
-
-As you can see there are lots of SDKs to make it easier to communicate via RPC with the blockchain.
-
-### Local Development
-
-To simulate RPCs and transactions locally, you can check [this guide](./02-local-development).
-
-## Indexers
-
-As RPCs are only a slim abstraction of the data stored in the blockchain, there are certain things that are hard
-or expensive to access with regular RPC requests.
-
-A common example are transactions of a specific Wallet address. Imagine you want to get a list of all transactions that originated from (or to) a
-specific Wallet. One could think there should be an RPC method called `eth_getTransactionsForWallet` or something similar.
-But due to the nature of how the data is stored, this RPC method is not feasible, and hence not implemented.
-
-Now, instead of accessing those kind of things by iterating through every block in the blockchain, you can use Indexers, that are
-designed to index data like that on the go and provide easy access to it.
-
-### TheGraph
-
-A well-known, standardized implementation of indexers is [TheGraph](https://thegraph.com/). It is used by most major protocols,
-including t1, to index data and make it accessible to users and dashboards.
-
-Using TheGraph, you can either access open [subgraphs](https://thegraph.com/explorer) via the GraphQL querying language, or [create your own](https://thegraph.com/docs/en/developing/creating-a-subgraph/) and deploy it.
-
-Throughout the docs you will see how to interact with the t1 subgraph to fetch tick data and more without ever touching RPCs.
-
-An important note about Indexers though:
-
-While they can be helpful, you need to be aware that the ultimate source of truth comes from the RPCs. As reorgs happen and
-certain issues on indexers arise, there might be certain datapoints that are either not fully up-to-date or even
-completely wrong on Indexers. If you have a use-case that requires perfectly correct data all the time, use RPCs directly.
-If you are just doing data visualization or dashboards, use Indexers if they fit your use-case.
-
-Some popular subgraphs that you can try to fetch data from the blockchain easily (click on playground to give it a try):
-
-* [Uniswap Messari subgraph](https://thegraph.com/explorer/subgraphs/ELUcwgpm14LKPLrBRuVvPvNKHQ9HvwmtKgKSH6123cr7?view=Overview&chain=mainnet)
-* [Snapshot Subgraph](https://thegraph.com/explorer/subgraphs/3Q4vnuSqemXnSNHoiLD7wdBbGCXszUYnUbTz191kDMNn?view=Overview&chain=mainnet)
-* [Aave V3 Messari subgraph](https://thegraph.com/explorer/subgraphs/HB1Z2EAw4rtPRYVb2Nz8QGFLHCpym6ByBX6vbCViuE9F?view=Overview&chain=mainnet)
-
-## Smart Contract Development
-
-Smart contracts are typically developed using the [Solidity language](https://soliditylang.org/).
-
-There are VSCode plugins that make the development with Solidity easier. One of them is Juan Blanco's "Solidity" that you can find
-over [here](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity).
-
-You would typically also go for a developer suite with testing, compilation and deployment capabilities:
-
-* [Foundry](https://github.com/foundry-rs/foundry) - Fast and modern developer tools for smart contract engineers.
-* [Hardhat](https://github.com/NomicFoundation/hardhat) - Scriptable, easy and battle-tested JS developer suite for smart contracts.
-
-To read data from smart contracts, or interact with them, use the [client SDKs](#client-implementations) mentioned above.
-They help you generate the necessary RPC calls to fetch data from / send transactions to the blockchain and interact with your
-smart contracts.
-You can read more about it in the [ethers.js docs](https://docs.ethers.org/v5/api/contract/contract/).
-
-## Blockchain Explorers
-
-Manually gathering information and inspecting data stored in a blockchain is a tedious task.
-Almost all chains have at least one accompanying block explorer to help visualize addresses, transactions, contracts and more.
-
-For Ethereum mainnet, we suggest using [Etherscan](https://etherscan.io/).
-You can use Etherscan to inspect [contracts](https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45#code), transactions, blocks, and much more.
-
-If you are looking to debug a transaction, [Tenderly](https://dashboard.tenderly.co/tx/mainnet/0xa4affe1abfaf28d1763d6c3ccda33e717462a928abca89415fc6e661dd7e0c55) can also be a very helpful tool.
-In this example of a failed transaction on the t1 V2 Router you can easily see why the execution failed and where.
-
-## The t1 development suite
-
-Uniswap offers several SDKs that work together and enable you to easily interact with the t1 protocol
-The most important SDKs are:
-
-* [sdk-core](https://github.com/Uniswap/sdk-core): The core of the t1 SDKs, defines classes and types shared across all the SDKs
-* [v2-sdk](https://github.com/Uniswap/v2-sdk): An SDK to interact with the t1 V2 protocol.
-* [v3-sdk](https://github.com/Uniswap/v3-sdk): An SDK to interact with the t1 V3 protocol.
-* [router-sdk](https://github.com/Uniswap/router-sdk): Provides abstractions to interact with the (older) SwapRouter contracts.
-* [universal-router-sdk](https://github.com/Uniswap/universal-router-sdk): Abstracts interactions with the Universal Router.
-* [smart-order-router](https://github.com/Uniswap/smart-order-router): Searches for the most efficient routes for a trade.
-* [permit2-sdk](https://github.com/Uniswap/permit2-sdk): Simplifies interactions with Permit2 in JS.
-* [uniswapx-sdk](https://github.com/Uniswap/uniswapx-sdk): SDK for the t1X protocol.
-
-As you know already, all interactions with the blockchain happens through RPCs. So the t1 SDKs, as you will see throughout the guides,
-requires you to have access to an RPC endpoint like [Chainnodes](https://www.chainnodes.org).
-When reading data, the data is read from the given RPC endpoint. When actually swapping, you will need to sign a transaction
-using a private key.
-
-We are continuously working on improving the t1 development suite, so stay tuned for more updates.
-
-## Next Steps
-
-Go through the basic guides first and try to fetch some data and interact with the t1 ecosystem a little bit. You can even
-[send your first swap transaction](./swaps/02-trading) on a local fork!
-
-While some concepts in Web3 require thinking outside of the box, this guide should give you a good overview on where to start.
-You should now be fully equipped to follow our other guides.
diff --git a/docs/sdk/v3/guides/_category_.json b/docs/sdk/v3/guides/_category_.json
deleted file mode 100644
index c694eb5b2..000000000
--- a/docs/sdk/v3/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 2,
- "collapsed": false
-}
diff --git a/docs/sdk/v3/guides/advanced/01-introduction.md b/docs/sdk/v3/guides/advanced/01-introduction.md
deleted file mode 100644
index ee84a5a70..000000000
--- a/docs/sdk/v3/guides/advanced/01-introduction.md
+++ /dev/null
@@ -1,105 +0,0 @@
----
-id: introduction
-title: Introduction
----
-
-For some more advanced use cases, it is necessary to use multiple tools in the t1 toolchain.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](../01-background.md) page!
-:::
-
-The following examples use **ethersJS** and the **Uniswap V3 subgraph** hosted on The Graph's hosted service. To learn more about t1's subgraphs, visit the [API](../../../../api/subgraph/overview.md) section.
-
-We will take a deep dive into the t1 V3 protocol and use practical examples to understand the data stored by the t1 smart contracts.
-We will explore how we can compute the available liquidity in a specific price range, visualize **liquidity density** in pools, use t1 as a **price oracle** and swap by creating **Range Orders**.
-
-These guides are a bit longer than the previous ones and provide more theoretical background.
-
-## Theoretical background
-
-Some of the guides presented here require a bit of theoretical and mathematical background.
-To get the most out of the advanced guides, we encourage you to take a step back and read a bit about the math and theories behind the t1 protocol.
-
-The most complete source of information on the t1 protocol is the [Uniswap V3 book](https://uniswapv3book.com/).
-
-Besides the [concepts](../../../../concepts/uniswap-protocol.md) section of the Docs, the [Uniswap V3 whitepaper](https://uniswap.org/whitepaper-v3.pdf) is a great introduction to the protocol.
-If you haven't checked it out yet, it is probably more concise and easier to understand than you would expect.
-
-### Datatypes in Solidity
-
-Uniswap V3 pools make use of a number of Datatypes Solidity offers to efficiently store their state.
-If you are not familiar with Solidity data types yet, it can help to take a look at the [Solidity language reference](https://docs.soliditylang.org/en/v0.8.7/types.html#).
-For the following guides, it is beneficial to take a look at two of them, which we will outline here.
-
-Ticks are stored as a [mapping(int24 => Tick.Info)](https://github.com/Uniswap/v3-core/blob/main/contracts/UniswapV3Pool.sol#L93).
-Solidity [mappings](https://docs.soliditylang.org/en/v0.8.7/types.html#mapping-types) are very similar to hash maps, such that we can access any Value with their key with just one read operation.
-The [`Tick.Info`](https://github.com/Uniswap/v3-core/blob/main/contracts/libraries/Tick.sol#L17) stores the values of the Tick that we need to work with the Pool:
-
-```solidity
-struct Info {
- // the total position liquidity that references this tick
- uint128 liquidityGross;
- // amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left),
- int128 liquidityNet;
- // fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)
- // only has relative meaning, not absolute — the value depends on when the tick is initialized
- uint256 feeGrowthOutside0X128;
- uint256 feeGrowthOutside1X128;
- // the cumulative tick value on the other side of the tick
- int56 tickCumulativeOutside;
- // the seconds per unit of liquidity on the _other_ side of this tick (relative to the current tick)
- // only has relative meaning, not absolute — the value depends on when the tick is initialized
- uint160 secondsPerLiquidityOutsideX128;
- // the seconds spent on the other side of the tick (relative to the current tick)
- // only has relative meaning, not absolute — the value depends on when the tick is initialized
- uint32 secondsOutside;
- // true iff the tick is initialized, i.e. the value is exactly equivalent to the expression liquidityGross != 0
- // these 8 bits are set to prevent fresh sstores when crossing newly initialized ticks
- bool initialized;
- }
-```
-
-We will use most of these values in the following guides.
-
-In our case, we can access any `Tick.Info` value stored in the pool by its `int24` key.
-The key of the Tick is usually called its *index*.
-Mappings are not iterable, so if we are trying to fetch all the Ticks stored in a Pool, we can't just iterate over the mapping.
-Instead, we have to know the keys (indices) of the mapping, we will explore how to do that in the [Pool data guide](./02-pool-data.md).
-
-The second Solidity datatype we need to understand are normal unsigned [Integers](https://docs.soliditylang.org/en/v0.8.7/types.html#integers).
-Solidity supports unsigned integer sizes between `uint8` and `uint256`, which are 8 and 256 bits long respectively.
-
-Let's take a look at the `tickBitmap` function of a V3 Pool:
-
-```solidity
- function tickBitmap(
- int16 wordPosition
- ) external view returns (uint256)
-```
-
-Similar to the tick mapping, the tickBitmap is a mapping of type [mapping(int16 => uint256)](https://github.com/Uniswap/v3-core/blob/main/contracts/UniswapV3Pool.sol#L95).
-
-Let's look at the WETH/USDC pool with LOW fee on [Etherscan](https://etherscan.io/address/0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640#readContract).
-If we call the `tickBitmap` function with the input `0` we get the following response (at the time of writing):
-
-
-
-The `uint256` return value is interpreted as the representation of a decimal number by Etherscan.
-The actual raw return value are 256 bits, that look something like this:
-
-```raw
-0x0000 ... lots of zeros and ones ... 000000110000000000
-```
-
-We interpret this string of zeros and ones not as the representation of a number, but rather as 256 booleans.
-
-If the value of a position in the value is 1, the Tick at this position is **initialized**, meaning it holds a value.
-
-With this trick, V3 Pools allow us to fetch the status of **256 ticks** with one call.
-We will go into more details on how to calculate the tick indices from the tickBitmaps we fetch in the following guides.
-
-## History of t1
-
-To get a better understanding of the V3 protocol, it can also be beneficial to understand the **history of decentralized exchanges** and the t1 protocol since it was founded in 2018.
-You can read more about the older versions of t1 in the [V1](https://hackmd.io/@HaydenAdams/HJ9jLsfTz?type=view#Swaps-vs-Transfers) and [V2](https://uniswap.org/whitepaper.pdf) whitepapers, as well as the [V1](../../../../contracts/v1/overview.md) and [V2](../../../../contracts/v2/overview.md) section in the contract section.
diff --git a/docs/sdk/v3/guides/advanced/02-pool-data.md b/docs/sdk/v3/guides/advanced/02-pool-data.md
deleted file mode 100644
index 95d2deb26..000000000
--- a/docs/sdk/v3/guides/advanced/02-pool-data.md
+++ /dev/null
@@ -1,369 +0,0 @@
----
-id: pool-data
-title: Fetching Pool Data
----
-
-## Introduction
-
-This guide will cover how to initialize a Pool with full tick data to allow offchain calculations. It is based on the [Fetching Pool data example](https://github.com/Uniswap/examples/tree/main/v3-sdk/pool-data), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the guide's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/pool-data/README.md) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](./01-background.md) page!
-:::
-
-In this example we will use **ethers JS** and **ethers-multicall** to construct a `Pool` object that we can use in the following guides.
-
-This guide will **cover**:
-
-1. Computing the Pool's address
-2. Referencing the Pool contract and fetching metadata
-3. Fetching the positions of all initialized Ticks with multicall
-4. Fetching all ticks by their indices with a multicall
-5. Constructing the Pool object
-
-At the end of the guide, we will have created a `Pool` Object that accurately represents the state of a V3 pool at the time we fetched it.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-
-We will also use the `ethers-multicall` npm package:
-
-- [`ethers-multicall`](https://www.npmjs.com/package/ethers-multicall)
-
-The core code of this guide can be found in [`fetcher.ts`](https://github.com/Uniswap/examples/tree/main/v3-sdk/multicall/src/libs/fetcher.ts)
-
-## Configuration
-
-The example accompanying this guide can be configured in the [`config.ts`](https://github.com/Uniswap/examples/tree/main/v3-sdk/multicall/src/config.ts) file.
-The default configuration defines the rpc endpoint and the pool that is used for this guide:
-
-```typescript
-export const CurrentConfig: ExampleConfig = {
- env: Environment.MAINNET,
- rpc: {
- local: 'http://localhost:8545',
- mainnet: 'https://mainnet.infura.io/v3/0ac57a06f2994538829c14745750d721',
- },
- ...
- pool: {
- token0: USDC_TOKEN,
- token1: WETH_TOKEN,
- fee: FeeAmount.MEDIUM,
- },
-}
-```
-
-FeeAmount.MEDIUM means that the pool has a swap fee of **0.3%**.
-The `USDC_TOKEN` and `WETH_TOKEN` are defined in the [`constants.ts`](https://github.com/Uniswap/examples/tree/main/v3-sdk/multicall/src/libs/constants.ts) file:
-
-```typescript
-export const WETH_TOKEN = new Token(
- SupportedChainId.MAINNET,
- '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
- 18,
- 'WETH',
- 'Wrapped Ether'
-)
-
-export const USDC_TOKEN = new Token(
- SupportedChainId.MAINNET,
- '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
- 6,
- 'USDC',
- 'USD//C'
-)
-```
-
-## Computing the Pool's deployment address
-
-In this example, we will construct the **USDC - WETH** Pool with **MEDIUM** fees. The SDK provides a method to compute the address:
-
-```typescript
-import { Pool } from '@uniswap/v3-sdk'
-import { CurrentConfig } from '../config.ts'
-
-const poolAddress = Pool.getAddress(
- CurrentConfig.pool.token0,
- CurrentConfig.pool.token1,
- CurrentConfig.pool.fee
- )
-```
-
-Uniswap V3 allows 4 different Fee tiers when deploying a pool, so multiple pools can exist for each pair of tokens.
-
-## Creating a Pool Contract instance and fetching metadata
-
-Now that we have the address of a **USDC - ETH** Pool, we can construct an instance of an **ethers** `Contract` to interact with it.
-To construct the Contract we need to provide the address of the contract, its ABI and a provider connected to an [RPC endpoint](https://www.chainnodes.org/docs). We get access to the contract's ABI through the `@uniswap/v3-core` package, which holds the core smart contracts of the t1 V3 protocol:
-
-```typescript
-import { ethers } from 'ethers
-import IUniswapV3PoolABI from '@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json'
-
-const provider = getProvider()
-const poolContract = new ethers.Contract(
- poolAddress,
- IUniswapV3PoolABI.abi,
- provider
-)
-```
-
-The `getProvider()` function returns an `ethers.providers.JsonRpcProvider` with either the local or mainnet rpc url that we defined, depending on the Environment that we set in `config.ts`.
-
-Once we have set up our reference to the contract, we can proceed to access its methods. To construct our offchain representation of the Pool Contract, we need to fetch its liquidity, sqrtPrice, currently active tick and the full Tick data.
-We get the **liquidity**, **sqrtPrice** and **tick** directly from the blockchain by calling `liquidity()`and `slot0()` on the Pool contract:
-
-```typescript
-const [liquidity, slot0] =
- await Promise.all([
- poolContract.liquidity(),
- poolContract.slot0(),
- ])
-```
-
-The [slot0 function](../../../../contracts/v3/reference/core/interfaces/pool/IUniswapV3PoolState.md#slot0) represents the first (0th) storage slot of the pool and exposes multiple useful values in a single function:
-
-```solidity
- function slot0(
- ) external view returns (
- uint160 sqrtPriceX96,
- int24 tick,
- uint16 observationIndex,
- uint16 observationCardinality,
- uint16 observationCardinalityNext,
- uint8 feeProtocol,
- bool unlocked
- )
-```
-
-For our use case, we only need the `sqrtPriceX96` and the currently active `tick`.
-
-## Fetching all Ticks
-
-V3 pools use ticks to [concentrate liquidity](../../../../concepts/protocol/concentrated-liquidity.md) in price ranges and allow for better pricing of trades.
-Even though most Pools only have a couple of **initialized ticks**, it is possible that a pools liquidity is defined by thousands of **initialized ticks**.
-In that case, it can be very expensive or slow to get all of them with normal RPC calls.
-
-If you are not familiar with the concept of ticks, check out the [`introduction`](./01-introduction.md).
-
-To access tick data, we will use the `ticks` function of the V3 Pool contract:
-
-```solidity
- function ticks(
- int24 tick
- ) external view returns (
- uint128 liquidityGross,
- int128 liquidityNet,
- uint256 feeGrowthOutside0X128,
- uint256 feeGrowthOutside1X128,
- int56 tickCumulativeOutside,
- uint160 secondsPerLiquidityOutsideX128,
- uint32 secondsOutside,
- bool initialized
- )
-```
-
-The `tick` parameter that we provide the function with is the **index** (memory position) of the Tick we are trying to fetch.
-To get the indices of all initialized Ticks of the Pool, we can calculate them from the **tickBitmaps**.
-To fetch a `tickBitmap` function of the V3 Pool:
-
-```solidity
- function tickBitmap(
- int16 wordPosition
- ) external view returns (uint256)
-```
-
-A pool stores lots of bitmaps, each of which contain the status of 256 Ticks.
-The parameter `int16 wordPosition` the function accepts is the position of the bitMap we want to fetch.
-We can calculate all the position of bitMaps (or words as they are sometimes called) from the `tickSpacing` of the Pool, which is in turn dependant on the Fee tier.
-
-So to summarise we need 4 steps to fetch all initialized ticks:
-
-1. Calculate all bitMap positions from the tickSpacing of the Pool.
-2. Fetch all bitMaps using their positions.
-3. Calculate the memory positions of all Ticks from the bitMaps.
-4. Fetch all Ticks by their memory position.
-
-We will use multicalls for the fetch calls.
-
-## Multicall
-
-Multicall contracts **aggregate results** from multiple contract calls and therefore allow sending multiple contract calls in **one RPC request**.
-This can improve the **speed** of fetching large amounts of data significantly and ensures that the data fetched is all from the **same block**.
-
-We will use the Multicall2 contract by MakerDAO.
-We use the `ethers-muticall` npm package to easily interact with the Contract.
-
-## Calculating all bitMap positions
-
-As mentioned, t1 V3 Pools store **bitmaps**, also called *words*, that represent the state of **256 initializable ticks** at a time.
-The value at a bit of a word is 1 if the tick at this index is initialized and 0 if it isn't.
-We can calculate the positions of initialized ticks from the **words** of the Pool.
-
-All ticks of t1 V3 pools are between the indices `-887272` and `887272`.
-We can calculate the minimum and maximum word from these indices and the Pool's tickSpacing:
-
-```typescript
-function tickToWord(tick: number): number {
- let compressed = Math.floor(tick / tickSpacing)
- if (tick < 0 && tick % tickSpacing !== 0) {
- compressed -= 1
- }
- return tick >> 8
-}
-
-const minWord = tickToWord(-887272)
-const maxWord = tickToWord(887272)
-```
-
-Ticks can only be initialized at indices that are **divisible by the tickSpacing**.
-One word contains 256 ticks, so we can compress the ticks by right shifting 8 bit.
-
-## Fetching bitMaps from their position
-
-Knowing the positions of words in the Pool contract, we can now fetch them from the Pool using multicall and the `tickBitmap` read call.
-
-First we initialize our multicall providers and Pool Contract:
-
-```typescript
-import { ethers } from 'ethers'
-import { Contract, Provider } from 'ethers-multicall'
-
-const ethersProvider = new ethers.providers.JsonRpcProvider("...rpcUrl")
-const multicallProvider = new Provider(ethersProvider)
-await multicallProvider.init()
-
-const poolContract = new Contract(poolAddress, IUniswapV3PoolABI.abi)
-```
-
-The `multicallProvider` creates the multicall request and sends it via the ethers Provider.
-
-Next we loop through all possible word positions and add a `tickBitmap` call for each:
-
-```typescript
-let calls: any[] = []
-let wordPosIndices: number[] = []
-for (let i = minWord; i <= maxWord; i++) {
- wordPosIndices.push(i)
- calls.push(poolContract.tickBitmap(i))
-}
-```
-
-We also keep track of the word position indices to be able to loop through them in the same order we added the calls to the array.
-
-We use the `multicallProvider.all()` function to send a multicall and map the results:
-
-```typescript
-const results: bigint[] = (await multicallProvider.all(calls)).map(
- (ethersResponse) => {
- return BigInt(ethersResponse.toString())
- }
- )
-```
-
-A great visualization of what the bitMaps look like can be found in the [Uniswap V3 development book](https://uniswapv3book.com/docs/milestone_2/tick-bitmap-index/):
-
-
-
-We encourage anyone trying to get a deeper understanding of the t1 protocol to read the t1 V3 Book.
-
-## Calculating the memory positions of all Ticks
-
-Now that we fetched all **bitMaps**, we check which ticks are initialized and calculate the **tick position** from the **word index** and the **tickSpacing** of the pool.
-
-We check if a tick is **initialized** inside the word by shifting a bit by the index we are looking at and performing a bitwise AND operation:
-
-```typescript
-const bit = 1n
-const initialized = (bitmap & (bit << BigInt(i))) !== 0n
-```
-
-If the tick is **initialized**, we revert the compression from tick to word we made earlier by multiplying the word index with 256, which is the same as left shifting by 8 bit, adding the position we are currently at, and multiplying with the tickSpacing:
-
-```typescript
-const tickIndex = (ind * 256 + i) * tickSpacing
-```
-
-The whole loop looks like this:
-
-```typescript
-const tickIndices: number[] = []
-
- for (let j = 0; j < wordPosIndices.length; j++) {
- const ind = wordPosIndices[j]
- const bitmap = results[j]
-
- if (bitmap !== 0n) {
- for (let i = 0; i < 256; i++) {
- const bit = 1n
- const initialized = (bitmap & (bit << BigInt(i))) !== 0n
- if (initialized) {
- const tickIndex = (ind * 256 + i) * tickSpacing
- tickIndices.push(tickIndex)
- }
- }
- }
- }
-```
-
-We now have an array containing the indices of all initialized Ticks.
-
-## Fetching all Ticks by their indices
-
-We use the multicallProvider again to execute an aggregated read call for all tick indices.
-We create an array of call Promises again and use `.all()` to make our multicall:
-
-```typescript
-const calls: any[] = []
-
-for (const index of tickIndices) {
- calls.push(poolContract.ticks(index))
-}
-
-const results = await multicallProvider.all(calls)
-```
-
-Again, the order of the results array is the same as the elements in **tickIndices**.
-
-We are able to combine the **tickIndices** and **results** array to create an array of `Tick` objects:
-
-```typescript
-const allTicks: Tick[] = []
-
- for (let i = 0; i < tickIndices.length; i++) {
- const index = tickIndices[i]
- const ethersResponse = results[i]
- const tick = new Tick({
- index,
- liquidityGross: JSBI.BigInt(ethersResponse.liquidityGross.toString()),
- liquidityNet: JSBI.BigInt(ethersResponse.liquidityNet.toString()),
- })
- allTicks.push(tick)
- }
-```
-
-We need to parse the response from our RPC provider to JSBI values that the v3-sdk can work with.
-
-## Constructing the Pool
-
-We have everything to construct our `Pool` now:
-
-```typescript
-const usdcWethPool = new Pool(
- USDC,
- WETH,
- feeAmount,
- slot0.sqrtPriceX96,
- liquidity,
- slot0.tick,
- allTicks
-)
-```
-
-With this fully initialized Pool, we can make accurate offchain calculations.
-
-## Next Steps
-
-Now that you are familiar with fetching Pool data, continue your journey with the [next example](./03-active-liquidity.md) on visualizing the Liquidity density of a pool.
diff --git a/docs/sdk/v3/guides/advanced/03-active-liquidity.md b/docs/sdk/v3/guides/advanced/03-active-liquidity.md
deleted file mode 100644
index 089431288..000000000
--- a/docs/sdk/v3/guides/advanced/03-active-liquidity.md
+++ /dev/null
@@ -1,307 +0,0 @@
----
-id: active-liquidity
-title: Active Liquidity
----
-
-## Introduction
-
-This guide will cover how to fetch and compute the active liquidity in the specific Tick ranges of a pool. It is based on the [Liquidity Density example](https://github.com/Uniswap/examples/tree/main/v3-sdk/liquidity-density) and can be seen used in production, albeit in a more sophisticated way, in the [Uniswap Analytics](https://info.uniswap.org/#/pools) website.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](./01-background.md) page!
-:::
-
-In this guide, we will use the V3 subgraph to fetch all ticks from **theGraph** and compute the active liquidity our Pool can use at each Tick. We then use `recharts` to draw a chart that visualizes our Pool's liqudity density.
-
-This guide will cover:
-
-1. Getting the tickSpacing and currently active Tick from the Pool
-2. Calculating active liquidity from net liquidity
-3. Drawing a chart from the Tick data
-
-This guide will not cover:
-
-- Specifics of working with the recharts library. You can read more about that [here](https://recharts.org/en-US/).
-
-At the end of the guide, we should be able to visualize the liquidity of any V3 Pool.
-
-## Understanding Active Liquidity
-
-To visualize the distribution of active liquidity in our Pool, we want to draw our Chart around the currently active Tick. For that we have to first understand:
-
-- What is an initialized Tick?
-- What is the current Tick?
-
-### Initialized Ticks
-
-When providing liquidity for a pool, the LP decides the **price range** in which the liquidity should be provided, and the amount of liquidity to be provided.
-The pool understands the position as **liquidity between the lower and upper Tick**. The Tick Index in this context is a representation of the price between the Pool's assets.
-
-Looking at this [visualization](https://www.desmos.com/calculator/oduetjzfp4) of multiple positions in a V3 Pool, we can see that the liquidity available for a swap does not change inside a position, but when crossing into the next position.
-This is what the **Initialized Ticks** of a Pool represent - they are a representation of the start or end of one or more positions.
-
-
-
-When entering or leaving a position, its liquidity is added or removed from the **active liquidity available** for a Swap.
-The initialized Ticks store this **change in available liquidity** in the `liquidityNet` field.
-The change is always stored in relation to the currently active Tick - the current price.
-When the price crosses an initialized Tick, it gets updated and liqudity that was previously added when crossing the Tick would now be removed and vice versa.
-
-The `liquidityGross` value represents the gross value of liquidity referencing the tick.
-This is important for the edge case that one position ends at a Tick and a second position with exactly the same liquidity value would start at the Tick.
-In this case `liquidityNet` would be **0** but `liquidityGross` would still have a value, which ensures that the Tick is not deleted from the Pool.
-
-To visualize liquidity in a graph, we will only need to consider the changes, so it's sufficient to fetch the Ticks with `liquidityNet` not 0.
-
-### Fetching initialized Ticks
-
-To fetch all ticks of our Pool, we will use the [Uniswap V3 graph](../../../../api/subgraph/overview.md).
-To visualize active liquidity, we need the **tickIdx**, the **liquidityGross** and the **liquidityNet**.
-
-We define our GraphQL query and [send a POST request](https://axios-http.com/docs/post_example) to the V3 subgraph API endpoint:
-
-```typescript
-axios.post(
- "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3",
- {"query": `{ ticks(
- where: {poolAddress: "${poolAddress.toLowerCase()}", liquidityNet_not: "0"}
- first: 1000,
- skip: ${skip},
- orderBy: tickIdx,
- orderDirection: asc
- ) {
- tickIdx
- liquidityGross
- liquidityNet
- }
- }`
- },
- {
- headers: {
- "Content-Type": "application/json"
- }
- }
- )
-```
-
-We only fetch the ticks that **have liquidity**, and we convert the poolAddress to **lower case** for the subgraph to work with. To make sure the Ticks are ordered correctly, we also define the **order direction** in the query.
-
-:::note
-GraphQL is only able to fetch 1000 records at a time. If a pool has more than 1000 initialized ticks, multiple calls are necessary to get all of them.
-:::
-
-The ticks we got from **theGraph** have this format:
-
-```typescript
-interface GraphTick {
- tickIdx: string
- liquidityGross: string
- liquidityNet: string
-}
-```
-
-### Current Tick
-
-The current Tick of the Pool represents the **current Price** after the last swap.
-Considering that the initialized Ticks only represent positions, we see that it is not necessarily one of the initialized Ticks but can be at any point in between them.
-The active liqudity at the current Price is also stored in the smart contract - we already fetched it with the `liquidity` function in the [previous guide](./02-pool-data.md).
-
-### Tickspacing
-
-Only the Ticks with indices that are divisible with 0 remainder by the tickspacing of a Pool are initializable.
-This is a convention defined by the protocol to save gas.
-The Tickspacing of the Pool is dependent on the Fee Tier.
-Pools with lower fees are meant to be used for more stable Token Pairs and allow for more granularity in where LPs position their liquidity.
-
-We can get the `tickSpacing` from the `TICK_SPACINGS` enum exposed by the `v3-sdk`:
-
-```typescript
-import { TICK_SPACINGS }
-
-const tickSpacing = TICK_SPACINGS[fee]
-```
-
-Alternatively, if we have already constructed a `Pool` object, we could just call `Pool.tickSpacing()`.
-
-### Putting it all together
-
-For the purpose of visualizing the liquidity density of the Pool, it rarely makes sense to display the full Tick Range of the Pool, as the vast majority of liquidity will be focused in a narrow price range.
-
-Instead, we will display a sensible number of Ticks around the current price.
-
-## Calculating active liquidity
-
-We know the spacing between Ticks and the Initialized Ticks where active liquidity changes.
-All we have to do is start calculating from the current Tick and iterate outwards.
-
-The code mentioned in the following snippets can be found in [`active-liquidity.ts`](https://github.com/Uniswap/examples/tree/main/v3-sdk/pool-data/src/libs/active-liquidity.ts).
-
-To draw our chart we want a data structure that looks something like this:
-
-```typescript
-interface TickProcessed {
- tickIdx: number,
- liquidityActive: JSBI,
- liquidityNet: JSBI,
- price0: string,
- price1: string,
- isCurrent: boolean
-}
-```
-
-To access the initialized Ticks directly from their Tick Index, we store them in a [Record](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type):
-
-```typescript
-const tickIdxToTickDictionary: Record = Object.fromEntries(
- ticks.map((graphTick) => [graphTick.tickIdx, graphTick])
- )
-```
-
-The `ticks` variable in this code snippet is the result we got from the V3 Subgraph earlier.
-
-We want to mark the Tick closest to the current Price and we want to be able to display the prices at a Tick to the user.
-We calculate the **initializable Tick** closest to the current price and create the active Tick that we start from:
-
-```typescript
-import { tickToPrice } from '@uniswap/v3-sdk'
-
-const activeTickIdx = Math.floor(pool.tickCurrent / tickSpacing) * tickSpacing
-
-const activeTickProcessed: TickProcessed = {
- tickIdx: activeTickIdx,
- liquidityActive: pool.liquidity,
- liquidityNet: JSBI.BigInt(0),
- price0: tickToPrice(tokenA, tokenB, activeTickIdx).toFixed(6),
- price1: tickToPrice(tokenB, tokenA, activeTickIdx).toFixed(6),
- isCurrent: true
-}
-```
-
-Here we also calculate the price of the tokens from the tickIdx, the `v3-sdk` exports a handy utility function for that, `tickToPrice`.
-We store the Price as a string as we won't make any further calculations in this example. We will instead use it to display prices in the tooltip of our chart.
-Notice how the `price0` is the Price of tokenA in terms of tokenB and the `price1` is the Price of tokenB in terms of tokenA **at the specified Tick**.
-
-If the **current Tick is initialized**, we also need to set the **liquidityNet** to correctly handle moving out of the position:
-
-```typescript
-const currentTickInitialized = tickIdxToTickDictionary[activeTickIdx]
-if (currentTickInitialized !== undefined) {
- activeTickProcessed.liquidityNet = JSBI.BigInt(currentTickInitialized.liquidityNet)
-}
-```
-
-We now start iterating outwards from the active Tick and compute the active liquidity for each Tick we want to display. The processed Tick is then saved in an Array of `TickProcessed`.
-We choose an arbitrary number of Ticks we want to display, for this example we calculate 100 Ticks in each direction.
-
-```typescript
-import { TickMath, tickToPrice } from '@uniswap/v3-sdk'
-
-let previousTickProcessed = {
- ...activeTickProcessed
-}
-
-processedTicks: TickProcessed[] = []
-
-for (let i = 0; i < 100; i++) {
- const currentTickIdx = previousTickProcessed.tickIdx + tickSpacing
-
- if (currentTickIdx > TickMath.MAX_TICK) {
- break
- }
-
- const currentTickProcessed = {
- liquidityActive: previousTickProcessed.liquidityActive,
- tickIdx: currentTickIdx,
- liquidityNet: JSBI.BigInt(0),
- price0: tickToPrice(token0, token1, currentTickIdx),
- price1: tickToPrice(token1, token0, currentTickIdx),
- isActive: false
- }
-
- ...
-}
-```
-
-We calculate one Tick at a time, and we need to make sure our Tick stays inside the possible price range by checking against `TickMath.MAX_TICK`.
-Again, we check if our current Tick is initialized and if so, recalculate the active liquidity:
-
-```typescript
-for (let i = 0; i < 100; i++) {
-
- ...
-
- const currentTickInitialized = tickIdxToTickDictionary[currentTickIdx]
-
- if (currentTickInitialized !== undefined) {
- currentTickProcessed.liquidityNet = JSBI.BigInt(currentTickInitialized.liquidityNet)
- currentTickProcessed.liquidityActive = JSBI.add(
- previousTickProcessed.liquidityActive,
- JSBI.BigInt(currentTickInitialized.liquidityNet)
- )
- }
-
- processedTicks.push(currentTickProcessed)
- previousTickProcessed = currentTickProcessed
-}
-```
-
-After we are done calculating the next 100 Ticks after the current Tick, we iterate in the opposite direction for the previous Ticks. Iterating downwards, we need to subtract the net liquidity where we added it when iterating upwards.
-You can find a full code example in the [Uniswap Example repository](https://github.com/Uniswap/examples/tree/main/v3-sdk/active-liquidity).
-
-We are finally able to combine the previous, active and subsequent Ticks:
-
-```typescript
-const allProcessedTicks = previousTicks.concat(activeTickProcessed).concat(subsequentTicks)
-```
-
-## Drawing the Chart
-
-We are done with our calculations and move on to displaying the data. **Recharts** is not able to handle JSBI, so we need to convert the Array we created to a format it can handle:
-
-```typescript
-const chartTicks: TicksChart[] = allProcessedTicks.map((tickProcessed) => {
- return {...processedTick, liquidityActiveChart: parseFloat(tickProcessed.liquidityActive.toString())}
-})
-```
-
-The loss of precision will not be visually noticeable in the chart and we are still able to display the exact number in a Tooltip if we wish to.
-Liquidity is stored in a `uint128` format onchain, so the maximum loss of precision will be far smaller than the number of decimals of almost any ERC20 Token.
-
-Finally, we draw the Chart:
-
-```jsx
-
-
-
-
-
- {chartTicks.map((entry, index) => {
- return (
-
- )
- })}
-
-
-
-```
-
-In a real application, you will probably want to format the chart properly and display additional information for users.
-Check out the full [code example](https://github.com/Uniswap/examples/tree/main/v3-sdk/active-liquidity) to this guide and the official recharts [documentation](https://recharts.org/).
-
-You can also take a look at the [Uniswap Info](https://github.com/Uniswap/v3-info) repository to see a similar chart used in production.
-
-## Locked Liquidity
-
-If you run the example, you will notice that the chart also displays a custom tooltip with additional information that we didn't touch on in this example.
-The total locked liqudity in the tooltip represents the sum of positions in the currency locked at the selected Tick.
-It is calculated as the maximum token output of a swap when crossing to the next Tick.
-The V3 pool here is initialized with only the liquidity of the current Tick.
-
-Depending on your use case, it may make sense to display this value. You can find the full code in the [code example](https://github.com/Uniswap/examples/tree/main/v3-sdk/active-liquidity).
-
-## Next Steps
-
-Now that you are familiar with liquidity data, consider checking out our [next guide](./04-price-oracle.md) on using t1 as a Price Oracle.
diff --git a/docs/sdk/v3/guides/advanced/04-price-oracle.md b/docs/sdk/v3/guides/advanced/04-price-oracle.md
deleted file mode 100644
index 8471e1997..000000000
--- a/docs/sdk/v3/guides/advanced/04-price-oracle.md
+++ /dev/null
@@ -1,287 +0,0 @@
----
-id: price-oracle
-title: t1 as a Price Oracle
----
-
-## Introduction
-
-This guide will cover how to fetch price observations from a V3 pool to get onchain asset prices.
-It is based on the [Price Oracle example](https://github.com/Uniswap/examples/tree/main/v3-sdk/oracle), found in the t1 code examples [repository](https://github.com/Uniswap/example).
-To run this example, check out the guide's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/oracle/README.md) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](./01-background.md) page!
-:::
-
-In this example we will use **ethers JS** to observe the development of a Pool's current tick over several blocks.
-We will then calculate the time weighted average price - **TWAP**, and time weighted average liquidity - **TWAL** over the observed time interval.
-
-This guide will **cover**:
-
-1. Understanding observations
-2. Fetching observations
-3. Computing TWAP
-4. Computing TWAL
-5. Why prefer observe over observations
-
-Before diving into this guide, consider reading the theory behind using t1 V3 as an [Onchain Oracle](../../../../concepts/protocol/oracle.md).
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-
-The core code of this guide can be found in [`oracle.ts`](https://github.com/Uniswap/examples/tree/main/v3-sdk/oracle/src/libs/oracle.ts)
-
-## Understanding Observations
-
-First, we need to create a Pool contract to fetch data from the blockchain. Check out the [Pool data guide](./02-pool-data.md) to learn how to compute the address and create an **ethers Contract** to interact with.
-
-```typescript
-const poolContract = new ethers.Contract(
- poolAddress,
- IUniswapV3PoolABI.abi,
- provider
-)
-```
-
-All V3 pools store observations of the current tick and the block timestamp.
-To minimize pool deployment costs, only one Observation is stored in the contract when the Pool is created.
-Anyone who is willing to pay the gas costs can [increase](../../../../contracts/v3/reference/core/UniswapV3Pool.md#increaseobservationcardinalitynext) the number of stored observations to up to `65535`.
-If the Pool cannot store an additional Observation, it overwrites the oldest one.
-
-We create an interface to map our data to:
-
-```typescript
-interface Observation {
- secondsAgo: number
- tickCumulative: bigint
- secondsPerLiquidityCumulativeX128: bigint
-}
-```
-
-To fetch the `Observations` from our pool contract, we will use the [`observe`](../../../../contracts/v3/reference/core/UniswapV3Pool.md#observe) function:
-
-```solidity
-function observe(
- uint32[] secondsAgos
-) external view override noDelegateCall returns (
- int56[] tickCumulatives,
- uint160[] secondsPerLiquidityCumulativeX128s
-)
-```
-
-We first check how many observations are stored in the Pool by calling the `slot0` function.
-
-```typescript
-const slot0 = await poolContract.slot0()
-
-const observationCount = slot0.observationCardinality
-const maxObservationCount = slot0.observationCardinalityNext
-```
-
-The `observationCardinalityNext` is the maximum number of Observations the Pool **can store** at the moment.
-The `observationCardinality` is the actual number of Observations the Pool **has currently stored**.
-
-Observations are only stored when the `swap()` function is called on the Pool or when a **Position is modified**, so it can take some time to write the Observations after the `observationCardinalityNext` was increased.
-If the number of Observations on the Pool is not sufficient, we need to call the `increaseObservationCardinalityNext()` function and set it to the value we desire.
-
-This is a write function as the contract needs to store more data on the blockchain.
-We will need a **wallet** or **signer** to pay the corresponding gas fee.
-
-In this example, we want to fetch 10 observations.
-
-```typescript
-import { ethers } from 'ethers'
-
-let provider = new ethers.providers.WebSocketProvider('rpcUrl...')
-let wallet = new ethers.Wallet('private_key', provider)
-
-const poolContract = new ethers.Contract(
- poolAddress,
- IUniswapV3PoolABI.abi,
- wallet
-)
-
-const txRes = await poolContract.increaseObservationCardinalityNext(10)
-```
-
-The Pool will now fill the open Observation Slots.
-As someone has to pay for the gas to write the observations, writing to the array of observations is part of the `swap()` and the `modifyPosition()` function of the Pool.
-
-:::note
-Saving an Observation is a write operation on the blockchain and therefore costs gas.
-This means that the pool will only be able to save observations for blocks where write calls are executed on the Pool contract.
-If no Observation is stored for a block, it is calculated as the time weighted arithmetic mean between the two closest Observations.
-Because of this, we can be sure the oldest Observation is **at least** 10 blocks old.
-It is very likely that the number of blocks covered is bigger than 10.
-:::
-
-## Fetching Observations
-
-We are now sure that at least 10 observations exist, and can safely fetch observations for the last 10 blocks.
-We call the `observe` function with an array of numbers, representing the timestamps of the Observations in seconds ago from now.
-
-In this example, we calculate averages over the last ten blocks so we fetch 2 observations with 9 times the blocktime in between.
-Fetching an Observation `0s` ago will return the **most recent Observation** interpolated to the current timestamp as observations are written at most once a block.
-
-```typescript
-const timestamps = [
- 0, 108
-]
-
-const [tickCumulatives, secondsPerLiquidityCumulatives] = await poolContract.observe(timestamps)
-
-const observations: Observation[] = timestamps.map((time, i) => {
- return {
- secondsAgo: time
- tickCumulative: BigInt(tickCumulatives[i])
- secondsPerLiquidityCumulativeX128: BigInt(secondsPerLiquidityCumulatives[i])
- }
-})
-```
-
-We map the response from the RPC provider to match our Observations interface.
-
-## Calculating the average Price
-
-To calculate the time weighted average price (TWAP) in the period we fetched, we first need to understand what the values we fetched mean.
-
-The `tickCumulative` value is a snapshot of the `tick accumulator` at the timestamp we fetched. The Tick Accumulator stores the sum of all current ticks at every second since the Pool was initialised. Its value is therefore increasing with every second.
-
-We cannot directly use the value of a single Observation for anything meaningful. Instead we need to compare the **difference** between two Observations and calculate the **time weighted arithmetic mean**.
-
-```typescript
-const diffTickCumulative = observations[0].tickCumulative - observations[1].tickCumulative
-const secondsBetween = 108
-
-const averageTick = diffTickCumulative / secondsBetween
-```
-
-Now that we know the average active Tick over the last 10 blocks, we can calculate the price with the `tickToPrice` function, which returns a [`Price`](../../../core/reference/classes/Price.md) Object. Check out the [Pool data](./02-pool-data.md) guide to understand how to construct a Pool Object and access its properties. We don't need the full Tick Data for this guide.
-
-```typescript
-import { tickToPrice, Pool } from '@uniswap/v3-sdk'
-
-const pool = new Pool(...)
-
-const TWAP = tickToPrice(pool.token0, pool.token1, averageTick)
-```
-
-We have now calculated the **time weighted average price** over the last 108 seconds.
-
-Let's continue with the average liquidity.
-
-## Calculating the average Liquidity
-
-To understand the term **active Liquidity**, check out the [previous guide](./03-active-liquidity.md).
-Similar to the `tick accumulator`, the `liquidity accumulator` stores a sum of values for every second since the Pool was initialized and increases with every second.
-Because of the size of the active liquidity value, it is impractical to just add up the active liquidity. Instead the **seconds per liquidity** are summed up.
-
-The `secondsPerLiquidityX128` value is calculated by shifting the seconds since the last Observation by 128 bits and dividing that value by the active liquidity. It is then added to the accumulator.
-
-```solidity
-uint32 delta = blockTimestamp - last.blockTimestamp;
-
-uint128 secondsPerLiquidityX128 = (uint160(delta) << 128) / liquidity
-uint160 secondsPerLiquidityCumulativeX128 = last.secondsPerLiquidityCumulativeX128 + secondsPerLiquidityX128
-```
-
-`last` is the most recent Observation in this illustrative code snippet. Consider taking a look at the [Solidity Oracle library](https://github.com/Uniswap/v3-core/blob/main/contracts/libraries/Oracle.sol) to see the actual implementation.
-
-Let's invert this calculation and find the average active liquidity over our observed time period.
-
-```typescript
-const diffSecondsPerLiquidityX128 = observations[0].secondsPerLiquidityCumulativeX128 -
- observations[1].secondsPerLiquidityCumulativeX128
-const secondsBetweenX128 = BigInt(108) << 128
-
-const TWAL = secondsBetweenX128 / diffSecondsPerLiquidityX128
-```
-
-This **time weighted average liquidity** is the harmonic mean over the time period observed.
-
-:::note
-The costs associated with manipulating/ changing the liquidity of a Pool are **orders of magnitude smaller** than with manipulating the price of the assets, as **prices** will be arbitraged for assets **with more than one market**.
-Adding massive amounts of liquidity to a Pool and withdrawing them after a block has passed more or less only costs gas fees.
-
-Use the **TWAP** with care and consider handling outliers.
-:::
-
-## Why prefer observe over observations?
-
-As touched on previously, the `observe` function calculates Observations for the timestamps requested from the nearest observations stored in the Pool.
-It is also possible to directly fetch the stored observations by calling the `observations` function with the index of the Observation that we are interested in.
-
-Let's fetch all observations stored in our Pool. We already made sure the observationCardinality is 10.
-The solidity struct `Observation` looks like this:
-
-```solidity
-struct Observation {
- // the block timestamp of the observation
- uint32 blockTimestamp;
- // the tick accumulator, i.e. tick * time elapsed since the pool was first initialized
- int56 tickCumulative;
- // the seconds per liquidity, i.e. seconds elapsed / max(1, liquidity) since the pool was first initialized
- uint160 secondsPerLiquidityCumulativeX128;
- // whether or not the observation is initialized
- bool initialized;
-}
-```
-
-It is possible to request any Observation up to (excluding) index `65535`, but indices equal to or greater than the `observationCardinality` will return uninitialized Observations.
-
-The full code to the following code snippets can be found in [`oracle.ts`](https://github.com/uniswap/examples/blob/main/v3-sdk/oracle/src/libs/oracle.ts)
-
-```typescript
-let requests = []
-for (let i = 0; i < 10; i++) {
- requests.push(poolContract.observations(i))
-}
-
-const results = await Promise.all(requests)
-```
-
-We can only request one Observation at a time, so we create an Array of Promises to get an Array of Observations.
-
-We already see one difference, to using the `observe` function here.
-While `observe` creates an array onchain in the smart contract and returns it, calling `observations` requires us to make multiple RPC calls.
-
-:::note
-Depending on our setup and the Node we are using, either option can be faster, but making multiple RPC calls always has the danger of the blockchain state changing between our calls.
-While it is extremely unlikely, it is still possible that our Node updates with a new block and new Observation in between our calls.
-Because we access indices of an array, this would give us an unexpected result that we need to handle as an edge case in our implementation.
-:::
-
-One way to handle this behaviour is deploying or [using](https://github.com/mds1/multicall) a Contract with a [multicall](https://solidity-by-example.org/app/multi-call/) functionality to get all observations with one request.
-You can also find an example of a JS multicall in the [Pool data guide](./02-pool-data.md).
-
-We map the RPC result to the Typescript interface that we created:
-
-```typescript
-const utcNow = Math.floor(Date.now() / 1000)
-const observations = results.map((result) => {
- const secondsAgo = utcNow - Number(result.blockTimeStamp)
- return {
- secondsAgo,
- tickCumulative: BigInt(result.tickCumulative),
- secondsPerLiquidityCumulativeX128: BigInt(result.secondsPerLiquidityCumulativeX128)
- }
-}).sort((a, b) => a.secondsAgo - b.secondsAgo)
-```
-
-We now have an Array of observations in the same format that we are used to.
-
-:::note
-Because Observations are stored in a **fixed size array** with always the oldest Observation overwritten if a new one is stored, they are **not sorted**.
-We need to sort the result by the timestamp.
-:::
-
-The timestamps of the Observations we got are correspondent to blocks where **Swaps or Position changes** happened on the Pool.
-Because of this, we would need to calculate Observations for specific intervals manually from the **surrounding Observations**.
-
-In conclusion, it is much harder to work with `observations` than with `observe`, and we need to consider multiple edge cases.
-For this reason, it is recommended to use the `observe` function.
-
-## Next Steps
-
-Now that you are familiar with the Oracle feature of t1, consider checking out the [next guide](./05-range-orders.md) on **Range Orders**.
diff --git a/docs/sdk/v3/guides/advanced/05-range-orders.md b/docs/sdk/v3/guides/advanced/05-range-orders.md
deleted file mode 100644
index 1beaea832..000000000
--- a/docs/sdk/v3/guides/advanced/05-range-orders.md
+++ /dev/null
@@ -1,430 +0,0 @@
----
-id: range-orders
-title: Range Orders
----
-
-## Introduction
-
-This guide will cover how single-side liquidity provisioning can be used to execute **Limit Orders** on t1 V3 Pools.
-An example to showcase this concept can be found in the [Range Order example](https://github.com/Uniswap/examples/tree/main/v3-sdk/range-order), in the t1 code examples [repository](https://github.com/Uniswap/example).
-To run this example, check out the guide's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/price-oracle/README.md) and follow the setup instructions.
-
-:::info
-This guide builds on top of the [Pooling Liquidity guides](../liquidity/01-position-data.md).
-We recommend going through this section of the docs before imnplementing Range Orders.
-:::
-
-In this example we will create a single-side liquidity position with the [NonfungiblePositionManager](../../../../contracts/v3/reference/periphery/NonfungiblePositionManager.md) contract.
-We will then use **ethers JS** to observe the price of the Pool on new blocks and withdraw the liquidity when our target is reached.
-
-This guide will **cover**:
-
-1. Understanding Range Orders
-2. Calculating our Tick Range
-3. Creating a single-side liquidity position
-4. Observing the price of the Pool
-5. Closing the Limit Order
-
-Before working through this guide, consider checking out the Range Orders [concept page](../../../../concepts/protocol/range-orders.md) to understand how Limit orders can be executed with t1 V3.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-
-The core code of this guide can be found in [`range-order.ts`](https://github.com/Uniswap/examples/tree/main/v3-sdk/range-order/src/libs/range-order.ts).
-
-## Understanding Range Orders
-
-If you have read the [Range Order Concept page](../../../../concepts/protocol/range-orders.md), you can skip this section.
-
-Positions on a V3 Pool are always created with a Tick range in which their liquidity is accessible to swaps on the Pool.
-Lets look at the return value of the NonfungiblePositionManager contract when calling the `positions` function with a Position `tokenId`.
-
-```solidity
-function positions(
- uint256 tokenId
- ) external view returns (
- uint96 nonce,
- address operator,
- address token0,
- address token1,
- uint24 fee,
- int24 tickLower, // Lower Boundary of Position
- int24 tickUpper, // Upper Boundary of Position
- uint128 liquidity, // Liquidity
- uint256 feeGrowthInside0LastX128,
- uint256 feeGrowthInside1LastX128,
- uint128 tokensOwed0,
- uint128 tokensOwed1
- )
-```
-
-We see that a position only stores a single `liquidity` value, and a `tickLower` and `tickUpper` value that define the range in which the liquidity of the Position can be utilised for Swaps.
-The actual **amount** of `token0` and `token1` that a Pool owes the Position owner is calculated from the parts of the liquidity position that are to the left and right of the current Tick.
-Liquidity left of the current Tick is denominated in `token0` and liquidity right of the current Tick is denominated in `token1`.
-
-If a new Position is created and the Tick Range of the position does not include the current Tick of the Pool, only one of the two Tokens in the Pool can be provided.
-
-We will call this a **Single Side Liquidity Position**.
-
-
-
-When the current Tick of the Pool moves across the Position, the ratio of `token0` and `token1` will change, and ultimately inverse if the current Tick moves out of the position on the other side.
-
-We will utilise this behaviour to provide liquidity with `token1` and withdraw the position when it has been converted to `token0`.
-
-## Calculating the Tick Range
-
-Our goal for this guide is to create a [Take Profit Order](../../../../concepts/protocol/range-orders.md#take-profit-orders) that trades `token0` for `token1` when the Price of `token0` increases by 5%.
-To create our Position, we need to first decide the Tick Range that we want to provide liquidity in.
-
-### Upper Tick
-
-We [create a Pool](./02-pool-data.md) that represents the V3 Pool we are interacting with and get the `token0Price`.
-We won't need full tick data in this example.
-
-```typescript
-import { Pool } from '@uniswap/v3-sdk'
-
-...
-const pool = new Pool(token0, token1, fee, sqrtPriceX96, liquidity, tickCurrent)
-
-const currentPrice = pool.token0Price
-```
-
-Next we increase the `Price` by 5%. We create a new Price with a numerator 5% higher than our current Price:
-
-```typescript
-import { Price, Fraction } from '@uniswap/sdk-core'
-
-const targetFraction = Price.asFraction.multiply(new Fraction(100 + 5, 100))
-
-const targetPrice = new Price(
- currentPrice.baseCurrency,
- currentPrice.quoteCurrency,
- targetFraction.denominator,
- targetFraction.numerator
-)
-```
-
-Be aware that the `numerator` and `denominator` parameters are ordered differently in the `Fraction` and `Price` constructor.
-
-We have calculated our target Price but we still need to find the **nearest usable tick** to create our Position.
-
-:::info
-As Positions can only start and end at initializable Ticks of the Pool, so we can only create a Range Order to a Price that exactly matches an initializable Tick.
-:::
-
-We use the `priceToClosestTick` function to find the closest tick to our targetPrice.
-We then use the `nearestUsableTick` function to find the closest initializable Tick for the `tickSpacing` of the `Pool`.
-
-```typescript
-import {priceToClosestTick, nearestUsableTick} from '@uniswap/v3-sdk'
-
-let targetTick = nearestUsableTick(
- priceToClosestTick(targetPrice),
- pool.tickSpacing
-)
-```
-
-This nearest Tick will most likely not **exactly** match our Price target.
-
-Depending on our personal preferences we can either err on the higher or lower side of our target by adding or subtracting the `tickSpacing` if the initializable Tick is lower or higher than the theoretically closest Tick.
-
-### Lower Tick
-
-We now find the lower Tick by subtracting the tickSpacing from the upper Tick:
-
-```typescript
-let lowerTick = targetTick - pool.tickSpacing
-```
-
-If the price difference is too low, the lower tick may be left of the current Tick of the Pool.
-In that case we would not be able to provide single side liquidity.
-We can either throw an Error or increase our Position by one Tick.
-
-```typescript
-if (tickLower <= pool.tickCurrent) {
- tickLower += pool.tickSpacing
- targetTick += pool.tickSpacing
-}
-```
-
-We now have a lower and upper Tick for our Position, next we need to construct and mint it.
-
-## Creating the Single Side Liquidity Position
-
-We will use the `NonfungiblePositionManager` and `Position` classes from the `v3-sdk` to construct our position. We then use an **etherJS** wallet to mint our Position on-chain.
-
-If you are not familiar with liquidity Positions, check out the [liquidity position guides](../liquidity/01-position-data.md).
-
-### Minting the Position
-
-We create a `Position` object with our ticks and the amount of tokens we want to deposit:
-
-```typescript
-import { Position } from '@uniswap/v3-sdk'
-
-const position = Position.fromAmount0({
- pool: pool,
- tickLower: tickLower,
- tickUpper: targetTick,
- amount0: amount,
- useFullPrecision: true
-})
-```
-
-Before we mint our position, we need to give the `NonfungiblePositionManager` Contract an approval to transfer our tokens.
-We can find the Contract address on the official [Uniswap Github](https://github.com/Uniswap/v3-periphery/blob/main/deploys.md).
-For local development, the contract address is the same as the network we are forking from.
-So if we are using a local fork of mainnet like described in the [Local development guide](../02-local-development.md), the contract address would be the same as on mainnet.
-
-```typescript
-import ethers from 'ethers'
-
-const provider = new ethers.providers.JsonRpcProvider(rpcUrl)
-const wallet = new ethers.Wallet(privateKey, provider)
-
-const tokenContract = new ethers.Contract(
- pool.token0.address,
- ERC20_ABI,
- wallet
-)
-
-await tokenContract['approve'](
- NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- ethers.BigNumber.from(amount)
- )
-```
-
-Once we have our approval, we create the calldata for the **Mint** call using the `NonfungiblePositionManager`:
-
-```typescript
-import {MintOptions, NonfungiblePositionManager}
-import { Percent } from '@uniswap/sdk-core'
-
-const mintOptions: MintOptions = {
- recipient: wallet.address,
- deadline: Math.floor(Date.now() / 1000) + 60 * 20,
- slippageTolerance: new Percent(50, 10_000),
-}
-
-const { calldata, value } = NonfungiblePositionManager.addCallParameters(
- order.position,
- mintOptions
-)
-```
-
-We can populate our mint transaction and send it with our wallet:
-
-```typescript
- const transaction = {
- data: calldata,
- to: NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- value: ethers.BigNumber.from(value),
- from: address,
- maxFeePerGas: MAX_FEE_PER_GAS,
- maxPriorityFeePerGas: MAX_PRIORITY_FEE_PER_GAS,
- }
-
-const txRes = await wallet.sendTransaction(transaction)
-```
-
-You can find full code examples for these code snippets in [`range-order.ts`](https://github.com/uniswap/examples/blob/main/v3-sdk/range-order/src/libs/range-order.ts).
-
-### Getting the tokenId
-
-We want to read the response to our `Mint` function call to get **the position id**.
-We will need the positionId to fetch the Position Info from the NFTPositionManager contract.
-We wait for the transaction receipt and fetch the result using `trace_transaction`:
-
-```typescript
-let receipt = null
-let mintCallOutput
-
-while (receipt === null) {
- try {
- receipt = await provider.getTransactionReceipt(txRes.hash)
-
- if (receipt === null) {
- continue
- } else {
- const callTraces = await provider.send('trace_transaction', [
- txRes.hash
- ])
- mintCallOutput = callTraces[0].result.output
- }
- } catch (e) {
- break
- }
-}
-```
-
-Your Node provider may not support this call. In that case you can also call the NonfungiblePositionManager Contract with the wallet address and identify the Range Order Position manually:
-
-```typescript
-const mintCallOutput = await wallet.call(transaction)
-```
-
-We get a raw byte string as a return value from this function and have to parse it ourselves.
-We decode the result with the **ethers AbiCoder**. The solidity function has this signature:
-
-```solidity
-function mint(
- struct INonfungiblePositionManager.MintParams params
-) external returns (uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1)
-```
-
-So we need the first parameter to get the `tokenId`:
-
-```typescript
-const decodedOutput = ethers.utils.defaultAbiCoder.decode(
- ['tuple(uint256, uint128, uint256, uint256)'],
- mintCallOutput
- )[0]
-
-const tokenId = decodedOutput.toString()
-```
-
-Ethers handles the string decoding of the byte string we got and parses it to its internal datatypes.
-The decodedOutput we get from the AbiCoder is a `ethers.Bignumber` so we need to cast it to a string to use it with the SDK.
-
-We have created our Range Order Position, now we need to monitor it.
-
-In the [code example](https://github.com/uniswap/examples/blob/main/v3-sdk/range-order/src/libs/range-order.ts#L180) we use `wallet.call` to get the position id.
-`call` and `trace_call` both simulate a transaction on the connected node and return the expected output, `trace_call` gives us a much more detailed output though.
-Depending on the use case, either can be the better choice.
-In a production environment you would prefer to wait for the `transactionReceipt` like described earlier to ensure the transaction was actaully included in the blockchain.
-
-## Observing the Price
-
-We need to observe the price of the Pool and withdraw our Position once the `tickCurrent` has moved across our Position.
-
-We use **ethers JS** to watch for new blocks and fetch the latest Pool data:
-
-```typescript
-
-provider.on('block', refreshPool())
-
-function refreshPool() {
-
- ... // construct Pool contract
-
- const slot0 = await poolContract.slot0()
- const tickCurrent = slot0.tick
-}
-```
-
-It is not necessary to calculate the Price from the tick we fetched, as executing the limit order is dependent on the tick range we defined and not the Price from which we calculated it.
-
-```typescript
-
-if (tickCurrent > targetTick) {
- // Withdraw position
-}
-```
-
-We check if the tick has crossed our position, and if so we withdraw the Position.
-
-## Closing the Limit Order
-
-We call the NonfungiblePositionManager Contract with the `tokenId` to get all info of our position as we may have gotten fees from trades on the Pool:
-
-```typescript
-import INON_FUNGIBLE_POSITION_MANAGER from '@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json'
-
-const positionManagerContract = new ethers.Contract(
- NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- INONFUNGIBLE_POSITION_MANAGER.abi,
- provider
-)
-
-const positionInfo = await positionManagerContract.positions(tokenId)
-```
-
-We use the `NonfungiblePositionManager`, the `pool`, `positionInfo` and `tokenId` to create call parameter for a `decreaseLiquidity` call.
-
-We start with creating `CollectOptions`:
-
-```typescript
-import { Percent, CurrencyAmount } from '@uniswap/sdk-core'
-import { CollectOptions, RemoveLiquidityOptions } from '@uniswap/v3-sdk'
-import JSBI from 'jsbi'
-
-const collectOptions: Omit = {
- expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(
- pool.token0,
- JSBI.BigInt(positionInfo.tokensOwed0.toString())
- ),
- expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(
- pool.token1,
- JSBI.BigInt(positionInfo.tokensOwed1.toString())
- ),
- recipient: wallet.address,
-}
-```
-
-Next we create `RemoveLiquidityOptions`. We remove all our liquidity so we set liquidityPercentage to `1`:
-
-```typescript
-const removeLiquidityOptions: RemoveLiquidityOptions = {
- deadline: Math.floor(Date.now() / 1000) + 60 * 20,
- slippageTolerance: new Percent(50, 10_000),
- tokenId,
- // percentage of liquidity to remove
- liquidityPercentage: new Percent(1),
- collectOptions,
- }
-```
-
-We create a new `Position` object from the updated `positionInfo` info we fetched:
-
-```typescript
-
-const updatedPosition = new Position{
- pool,
- liquidity: JSBI.BigInt(currentPositionInfo.liquidity.toString()),
- tickLower: currentPositionInfo.tickLower,
- tickUpper: currentPositionInfo.tickUpper,
-}
-```
-
-We have everything to create our calldata now and are ready to make our Contract call:
-
-```typescript
-
-const { calldata, value } = NonfungiblePositionManager.removeCallParameters(
- updatedPosition,
- removeLiquidityOptions
- )
-const transaction = {
- data: calldata,
- to: NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- value: value,
- from: address,
- maxFeePerGas: MAX_FEE_PER_GAS,
- maxPriorityFeePerGas: MAX_PRIORITY_FEE_PER_GAS,
-}
-
-const result = await wallet.sendTransaction(transaction)
-```
-
-Our liquidity position is removed and we receive `token1` at the Price we have specified.
-We have successfully executed a range order.
-
-## Caveats
-
-Executing a range order has certain limitations that may have become obvious during the course of this guide.
-
-- If the price of the Pool drops below `tickUpper` while we already decided to withdraw our liquidity our order may fail and we either receive `token0`, `token0` and `token1` or our transaction fails depending on our exact implementation.
-- Range Orders can only be created between initializable ticks and may not exactly represent our limit order Price-Target.
-- Depending on the price ratio of the tokens in the Pool the minimum price difference to the current price may be significant.
-- The tokens received are the average between the Price of `tickUpper` and `tickLower` of the Range order. This can be a significant difference for Pools with a tickCurrent far from 0, for example tokens with different decimals (WETH/ USDT, WETH/USDC). The example showcases this behaviour well with the default configuration.
-
-## Next Steps
-
-This guide showcases everything you need to implement Range Orders on your own, but only demonstrates creating a Take Profit order in `token0` to `token1` direction.
-Consider implementing Buy Limit orders as described in the [Range Orders concept page](../../../../concepts/protocol/range-orders.md#buy-limit-orders).
-
-This is currently the last guide in the `v3-sdk` series. Consider joining the [Uniswap Discord](https://discord.com/invite/uniswap) or checkout the official [Github](https://github.com/Uniswap) to learn more about the t1 Protocol.
diff --git a/docs/sdk/v3/guides/advanced/_category_.json b/docs/sdk/v3/guides/advanced/_category_.json
deleted file mode 100644
index 65c1e3161..000000000
--- a/docs/sdk/v3/guides/advanced/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Advanced",
- "position": 6,
- "collapsed": true
-}
diff --git a/docs/sdk/v3/guides/advanced/images/liquidityNetComparison.png b/docs/sdk/v3/guides/advanced/images/liquidityNetComparison.png
deleted file mode 100644
index 1c480ffda..000000000
Binary files a/docs/sdk/v3/guides/advanced/images/liquidityNetComparison.png and /dev/null differ
diff --git a/docs/sdk/v3/guides/advanced/images/range-order.png b/docs/sdk/v3/guides/advanced/images/range-order.png
deleted file mode 100644
index 9e2091d48..000000000
Binary files a/docs/sdk/v3/guides/advanced/images/range-order.png and /dev/null differ
diff --git a/docs/sdk/v3/guides/advanced/images/tickBitmap-etherscan.png b/docs/sdk/v3/guides/advanced/images/tickBitmap-etherscan.png
deleted file mode 100644
index 208d2db12..000000000
Binary files a/docs/sdk/v3/guides/advanced/images/tickBitmap-etherscan.png and /dev/null differ
diff --git a/docs/sdk/v3/guides/advanced/images/tickBitmap_cut.png b/docs/sdk/v3/guides/advanced/images/tickBitmap_cut.png
deleted file mode 100644
index 1729004e4..000000000
Binary files a/docs/sdk/v3/guides/advanced/images/tickBitmap_cut.png and /dev/null differ
diff --git a/docs/sdk/v3/guides/images/anvil-result.png b/docs/sdk/v3/guides/images/anvil-result.png
deleted file mode 100644
index 669539bbd..000000000
Binary files a/docs/sdk/v3/guides/images/anvil-result.png and /dev/null differ
diff --git a/docs/sdk/v3/guides/images/postman-chainid-result.png b/docs/sdk/v3/guides/images/postman-chainid-result.png
deleted file mode 100644
index b0940f5f6..000000000
Binary files a/docs/sdk/v3/guides/images/postman-chainid-result.png and /dev/null differ
diff --git a/docs/sdk/v3/guides/liquidity/01-position-data.md b/docs/sdk/v3/guides/liquidity/01-position-data.md
deleted file mode 100644
index 478bb0632..000000000
--- a/docs/sdk/v3/guides/liquidity/01-position-data.md
+++ /dev/null
@@ -1,206 +0,0 @@
----
-id: position-data
-title: Liquidity Positions
----
-
-## Introduction
-
-This guide will introduce us to **liquidity positions** in t1 V3 and present the `v3-sdk` classes and Contracts used to interact with the protocol.
-The concepts and code snippets showcased here can be found across the **Pooling Liquidity** examples in the t1 code examples [repository](https://github.com/Uniswap/examples).
-
-In this guide, we will take a look at the [Position](../../reference/classes/Position.md) and [NonfungiblePositionManager](../../reference/classes/NonfungiblePositionManager.md) classes, as well as the [NonfungiblePositionManager Contract](../../../../contracts/v3/reference/periphery/NonfungiblePositionManager.md).
-
-At the end of the guide, we should be familiar with the most important classes used to interact with liquidity positions.
-We should also understand how to fetch positions from the **NonfungiblePositionManager Contract**.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-- [`@uniswap/v3-periphery`](https://www.npmjs.com/package/@uniswap/v3-periphery)
-
-The code mentioned in this guide can be found across the [minting Position](https://github.com/Uniswap/examples/blob/main/v3-sdk/minting-position/src), [collecting Fees](https://github.com/Uniswap/examples/blob/main/v3-sdk/collecting-fees/src), [modifying positions](https://github.com/Uniswap/examples/blob/d34a53412dbf905802da2249391788a225719bb8/v3-sdk/modifying-position/src) and [swap and add liquidity](https://github.com/Uniswap/examples/blob/main/v3-sdk/swap-and-add-liquidity/src) examples.
-
-## Prerequisites
-
-To understand what Positions are, we need to understand some underlying concepts of the t1 protocol.
-
-Consider checking out the [Concepts section](../../../../concepts/protocol/concentrated-liquidity.md) as well as the [Uniswap Book](https://uniswapv3book.com/docs/introduction/uniswap-v3/).
-
-### Concentrated liquidity
-
-Uniswap V3 Pools use concentrated liquidity to allow a denser concentration of liquidity at specific prices.
-Compared to the full range liquidity model t1 V2 uses, this allows traders to make larger trades with less price impact.
-Liquidity providers can choose a specific price range in which they want their liquidity to be used by trades.
-
-To achieve this, t1 V3 Pools discriminate the price range with **Ticks**.
-
-### Ticks
-
-Ticks are the boundaries between discrete price ranges.
-A change of 1 Tick always represents a price change of 0.01% from the current price.
-Uniswap V3 Pools can have different `tickSpacings`, a constant that describes which ticks can be used by the Pool.
-Only ticks at indices that are divisible by the tickSpacing can be initialized.
-This value is dependant on the fee of the Pool, Pools with higher fees have higher tickSpacing.
-
-For example, a Pool with **HIGH** fee (1%) has a tickSpacing of 200, meaning the price difference between initializable Ticks is:
-
-$$1.0001^{200} = 1.0202$$ or $$2.02$$%
-
-### Liquidity Positions
-
-When someone provides liquidity to a Pool, they create a **Liquidity Position**.
-This position is defined by the amount of liquidity provided and the start tick and the end tick, or price range, of the Position.
-
-Because V3 Pools allow users to choose any price range in which they want to provide liquidity, it is possible to create positions that do not contain the current Price of the Pool.
-In this case, the liquidity provider will pay only one type of Token into the Pool, creating a **single side liquidity position**.
-
-To learn more about how Ticks and Liquidity positions work, consider reading the [whitepaper](https://uniswap.org/whitepaper-v3.pdf) or the other resources mentioned above.
-
-Now that we have a rough understanding of liquidity positions in t1 V3, let's look at the correspondent classes the SDK offers us.
-
-## Position class
-
-The **sdk** provides a [`Position`](https://github.com/Uniswap/v3-sdk/blob/main/src/entities/position.ts) class used to create local representations of an onchain position.
-It is used to create the calldata for onchain calls to mint or modify an onchain position.
-
-There are four ways to construct a position.
-
-Directly with the [constructor](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L40):
-
-```typescript
-import { Pool, Position } from '@uniswap/v3-sdk'
-import JSBI from 'jsbi'
-
-const pool = new Pool(...)
-const tickLower: number = -100
-const tickUpper: number = 200
-const liquidity: JSBI = JSBI.BigInt('1000000000000000000')
-
-const position = new Position({
- pool,
- liquidity,
- tickLower,
- tickUpper
-})
-```
-
-Using the [`fromAmounts()`](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L312) function:
-
-```typescript
-import { BigIntish } from '@uniswap/sdk-core'
-
-const pool = new Pool(...)
-const tickLower: number = -100
-const tickUpper: number = 200
-const amount0: BigIntish = '1000000000000000000'
-const amount1: BigIntish = JSBI.BigInt('1000000000000000000')
-const useFullPrecision: boolean = true
-
-const position = Position.fromAmounts({
- pool,
- tickLower,
- tickUpper,
- amount0,
- amount1,
- useFullPrecision
-})
-```
-
-Or using the [`fromAmount0()`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/entities/position.ts#L354) or [`fromAmount1()`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/entities/position.ts#L378) functions:
-
-```typescript
-import { BigIntish } from '@uniswap/sdk-core'
-...
-
-const pool = new Pool(...)
-const tickLower: number = -200
-const tickUpper: number = 100
-const amount0: BigIntish = '1000000000000000000'
-const useFullPrecision: boolean = true
-
-const singleSidePositionToken0 = Position.fromAmount0({
- pool,
- tickLower,
- tickUpper,
- amount0,
- useFullPrecision
-})
-
-const amount1: BigIntish = 100000000
-
-const singleSidePositionToken1 = Position.fromAmount1({
- pool,
- tickLower,
- tickUpper,
- amount1,
- useFullPrecision
-})
-```
-
-These last two functions calculate a position at the given tick range given the amount of `token0` or `token1`. The amount of the second token is calculated from the ratio of the tokens inside the tick range and the amount of token one.
-
-A create transaction would then fail if the wallet doesn't hold enough `token1` or the Contract is not given the necessary **Transfer Approval**.
-
-All of these functions take an Object with **named values** as a call parameter. The amount and liquidity values are of type `BigIntish` which accepts `number`, `string` and `JSBI`.
-
-The values of `tickLower` and `tickUpper` must match **initializable ticks** of the Pool.
-
-## NonfungiblePositionManager
-
-The `NonfungiblePositionManager` class is mainly used to create calldata for functions on the **NonfungiblePositionManager Contract**.
-
-We will look at the **sdk** class and write functions on the Contract in this section.
-
-### Creating a Position
-
-To create a position on a Pool, the [`mint`](../../../../contracts/v3/reference/periphery/NonfungiblePositionManager.md#mint) function is called on the Contract.
-The **sdk** class provides the `addCallParameters` function to create the calldata for the transaction:
-
-```typescript
-import { MintOptions, NonfungiblePositionManager } from '@uniswap/v3-sdk'
-
-const mintOptions: MintOptions = {
- recipient: address,
- deadline: Math.floor(Date.now() / 1000) + 60 * 20,
- slippageTolerance: new Percent(50, 10_000),
-}
-
-// get calldata for minting a position
-const { calldata, value } = NonfungiblePositionManager.addCallParameters(
- positionToMint,
- mintOptions
-)
-```
-
-This call creates a position if it doesn't exist, but can also be used to increase an existing position.
-Take a look at the [Mint Position guide](./02-minting-position.md) and [Modify Position guide](./04-modifying-position.md) to learn more.
-
-### Decreasing and Increasing a Position
-
-To decrease or increase the liquidity of a Position, the `decreaseLiquidity` or `increaseLiquidity` functions are called on the Contract.
-To increase, `addCallParameters` is used as mentioned above, to decrease we use `removeCallParameters`:
-
-```typescript
-const { calldata, value } = NonfungiblePositionManager.removeCallParameters(
- currentPosition,
- removeLiquidityOptions
-)
-```
-
-Take a look at the [Modify Positions guide](04-modifying-position.md) to learn how to create the `currentPosition` and `removeLiquidityOptions` parameters.
-
-### Collecting Fees
-
-To collect fees accrued, the `collect` function is called on the Contract.
-The **sdk class** provides the `collectCallParameters` function to create the calldata for that:
-
-```typescript
-const { calldata, value } =
- NonfungiblePositionManager.collectCallParameters(collectOptions)
-```
-
-
-## Next steps
-
-Now that you are familiar with the most important classes and Contract to interact with Liquidity Positions, continue with the next guide on [Minting Positions](./02-minting-position.md).
diff --git a/docs/sdk/v3/guides/liquidity/02-minting-position.md b/docs/sdk/v3/guides/liquidity/02-minting-position.md
deleted file mode 100644
index de1ee573d..000000000
--- a/docs/sdk/v3/guides/liquidity/02-minting-position.md
+++ /dev/null
@@ -1,234 +0,0 @@
----
-id: minting
-title: Minting a Position
----
-
-## Introduction
-
-This guide will cover how to create (or mint) a liquidity position on the t1 V3 protocol.
-It is based on the [minting a position code example](https://github.com/Uniswap/examples/tree/main/v3-sdk/minting-position), found in the t1 code examples [repository](https://github.com/Uniswap/examples).
-To run this example, check out the examples's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/minting-position/README.md) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](../01-background.md) page!
-:::
-
-In the t1 V3 protocol, liquidity positions are represented using non-fungible tokens. In this guide we will use the `NonfungiblePositionManager` class to help us mint a liquidity position for the **USDC - DAI** pair. The inputs to our guide are the **two tokens** that we are pooling for, the **amount** of each token we are pooling for and the Pool **fee**.
-
-The guide will **cover**:
-
-1. Giving approval to transfer our tokens
-2. Creating an instance of a `Pool`
-3. Calculating our `Position` from our input tokens
-4. Configuring and executing our minting transaction
-
-At the end of the guide, given the inputs above, we should be able to mint a liquidity position with the press of a button and view the position on the UI of the web application.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-- [`@uniswap/smart-order-router`](https://www.npmjs.com/package/@uniswap/smart-order-router)
-
-The core code of this guide can be found in [`mintPosition()`](https://github.com/Uniswap/examples/blob/main/v3-sdk/minting-position/src/libs/positions.ts#L37)
-
-## Giving approval to transfer our tokens
-
-We want to use the `NonfungiblePositionManager` contract to create our liqudity position.
-In situations where a smart contract is transfering tokens on our behalf, we need to give it approval to do so.
-This is done by interacting with the Contract of the contract, considering ERC20 Tokens are smart contracts of their own.
-
-Considering this, the first step to create our position is to give approval to the protocol's `NonfungiblePositionManager` to transfer our tokens:
-
-```typescript
-const token0Approval = await getTokenTransferApproval(
- token0Address,
- amount0
-)
-const token1Approval = await getTokenTransferApproval(
- token1Address,
- amount1
-)
-```
-
-The logic to achieve that is wrapped in the `getTokenTransferApprovals` function. In short, since both **USDC** and **DAI** are ERC20 tokens, we setup a reference to their smart contracts and call the `approve` function:
-
-```typescript
-import { ethers, BigNumber } from 'ethers'
-
-async function getTokenTransferApproval(address: string, amount: BigNumber) {
- const provider = new ethers.providers.JsonRpcProvider(rpcUrl)
-
- const tokenContract = new ethers.Contract(
- token.address,
- ERC20_ABI,
- provider
- )
-
- return tokenContract.approve(
- NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- amount
- )
-}
-```
-
-We can get the Contract address for the NonfungiblePositionManager from [Github](https://github.com/Uniswap/v3-periphery/blob/main/deploys.md).
-For Ethereum mainnet or a local fork of mainnet, we see that the contract address is `0xC36442b4a4522E871399CD717aBDD847Ab11FE88`.
-In our example, this is defined in the [`constants.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/minting-position/src/libs/constants.ts) file.
-
-## Creating an instance of a `Pool`
-
-Having approved the transfer of our tokens, we now need to get data about the pool for which we will provide liquidity, in order to instantiate a Pool class.
-
-To start, we compute our Pool's address by using a helper function and passing in the unique identifiers of a Pool - the **two tokens** and the Pool **fee**.
-The **fee** input parameter represents the swap fee that is distributed to all in range liquidity at the time of the swap.
-
-```typescript
-import { computePoolAddress, FeeAmount } from '@uniswap/v3-sdk'
-import { Token } from '@uniswap/sdk-core'
-
-const token0: Token = ...
-const token1: Token = ...
-const fee: FeeAmount = ...
-const POOL_FACTORY_CONTRACT_ADDRESS: string = ...
-
-const currentPoolAddress = computePoolAddress({
- factoryAddress: POOL_FACTORY_CONTRACT_ADDRESS,
- tokenA: token0,
- tokenB: token1,
- fee: poolFee,
-})
-```
-
-Again, we can get the factory contract address from [Github](https://github.com/Uniswap/v3-periphery/blob/main/deploys.md).
-For Ethereum mainnet, or a local fork of mainnet, it is `0x1F98431c8aD98523631AE4a59f267346ea31F984`.
-In our example, it is defined in [`constants.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/minting-position/src/libs/constants.ts)
-
-Then, we get the Pool's data by creating a reference to the Pool's smart contract and accessing its methods, very similar to what we did in the [Quoting guide](../swaps/01-quoting.md#referencing-the-pool-contract-and-fetching-metadata):
-
-```typescript
-import IUniswapV3PoolABI from '@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json'
-
-const poolContract = new ethers.Contract(
- currentPoolAddress,
- IUniswapV3PoolABI.abi,
- provider
-)
-
-const [liquidity, slot0] =
- await Promise.all([
- poolContract.liquidity(),
- poolContract.slot0(),
- ])
-```
-
-Having collected the required data, we can now create an instance of the `Pool` class:
-
-```typescript
-import { Pool } from '@uniswap/v3-sdk'
-
-const configuredPool = new Pool(
- token0,
- token1,
- poolFee,
- slot0.sqrtPriceX96.toString(),
- liquidity.toString(),
- slot0.tick
-)
-```
-
-We need a Pool instance to create our Position as various parameters of liquidity positions depend on the state of the Pool where they are created.
-An example is the current price (named *sqrtPriceX96* after the way it is encoded) to know the ratio of the two Tokens we need to send to the Pool.
-
-Liquidity provided below the current Price will be provided in the first Token of the Pool, while liquidity provided above the current Price is made up by the second Token.
-
-## Calculating our `Position` from our input tokens
-
-Having created the instance of the `Pool` class, we can now use that to create an instance of a `Position` class, which represents the price range for a specific pool that LPs choose to provide in:
-
-```typescript
-import { Position } from '@uniswap/v3-sdk'
-import { BigIntish } from '@uniswap/sdk-core'
-
-// The maximum token amounts we want to provide. BigIntish accepts number, string or JSBI
-const amount0: BigIntish = ...
-const amount1: BigIntish = ...
-
-const position = Position.fromAmounts({
- pool: configuredPool,
- tickLower:
- nearestUsableTick(configuredPool.tickCurrent, configuredPool.tickSpacing) -
- configuredPool.tickSpacing * 2,
- tickUpper:
- nearestUsableTick(configuredPool.tick, configuredPool.tickSpacing) +
- configuredPool.tickSpacing * 2,
- amount0: amount0,
- amount1: amount1,
- useFullPrecision: true,
-})
-```
-
-We use the `fromAmounts` static function of the `Position` class to create an instance of it, which uses the following parameters:
-
-- The **tickLower** and **tickUpper** parameters specify the price range at which to provide liquidity. This example calls **nearestUsableTick** to get the current useable tick and adjust the lower parameter to be below it by two **tickSpacing** and the upper to be above it by two tickSpacing. This guarantees that the provided liquidity is "in range", meaning it will be earning fees upon minting this position
-- **amount0** and **amount1** define the maximum amount of currency the liquidity position can use. In this example, we supply these from our configuration parameters.
-
-Given those parameters, `fromAmounts` will attempt to calculate the maximum amount of liquidity we can supply.
-
-## Configuring and executing our minting transaction
-
-The Position instance is then passed as input to the `NonfungiblePositionManager`'s `addCallParameters` function. The function also requires an [`AddLiquidityOptions`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/nonfungiblePositionManager.ts#L77) object as its second parameter. This is either of type [`MintOptions`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/nonfungiblePositionManager.ts#L74) for minting a new position or [`IncreaseOptions`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/nonfungiblePositionManager.ts#L75) for adding liquidity to an existing position. For this example, we're using a `MintOptions` to create our position.
-
-```typescript
-import { MintOptions, NonfungiblePositionManager } from '@uniswap/v3-sdk'
-import { Percent } from '@uniswap/sdk-core'
-
-const mintOptions: MintOptions = {
- recipient: address,
- deadline: Math.floor(Date.now() / 1000) + 60 * 20,
- slippageTolerance: new Percent(50, 10_000),
-}
-
-// get calldata for minting a position
-const { calldata, value } = NonfungiblePositionManager.addCallParameters(
- position,
- mintOptions
-)
-```
-
-The `MintOptions` interface requires three keys:
-
-- `recipient` defines the address of the Position owner, so in our case the address of our wallet.
-- `deadline` defines the latest point in time at which we want our transaction to be included in the blockchain.
-- `slippageTolerance` defines the maximum amount of **change of the ratio** of the Tokens we provide. The ratio can change if for example **trades** that change the price of the Pool are included before our transaction.
-
-The `addCallParameters` function returns the calldata as well as the value required to execute the transaction:
-
-```typescript
-const transaction = {
- data: calldata,
- to: NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- value: value,
- from: address,
- maxFeePerGas: MAX_FEE_PER_GAS,
- maxPriorityFeePerGas: MAX_PRIORITY_FEE_PER_GAS,
-}
-```
-
-We use our wallet to send the transaction. As it is a write call, we need to sign the transaction with a valid private key.
-
-```typescript
-const wallet = new ethers.Wallet(privateKey, provider)
-
-const txRes = await wallet.sendTransaction(transaction)
-```
-
-Write calls do not return the result of the transaction. If we want to read the result we would need to use for example `trace_transaction`.
-You can find an example of that in the [Range Order guide](../advanced/05-range-orders.md).
-In this example, we don't need the result of the transaction.
-
-The effect of the transaction is to mint a new Position NFT. We should see a new position with liquidity in our list of positions.
-
-## Next Steps
-
-Once you have minted a position, our next guide [Adding and Removing Liquidity](./04-modifying-position.md) will demonstrate how you can add and remove liquidity from that minted position!
diff --git a/docs/sdk/v3/guides/liquidity/03-fetching-positions.md b/docs/sdk/v3/guides/liquidity/03-fetching-positions.md
deleted file mode 100644
index 6e087f5cb..000000000
--- a/docs/sdk/v3/guides/liquidity/03-fetching-positions.md
+++ /dev/null
@@ -1,141 +0,0 @@
----
-id: fetching-positions
-title: Fetching Positions
----
-
-## Introduction
-
-This guide will cover how to create (or mint) a liquidity position on the t1 V3 protocol.
-Like the [Liquidity Position guide](./01-position-data.md) it doesn't have an accompanying example, nevertheless the concepts and functions used here can be found among the various examples that interact with liquidity positions.
-
-:::info
-If you need an introduction to liquidity positions, check out the [Liquidity Position guide](./01-position-data.md)
-:::
-
-The [NonfungiblePositionManager Contract](../../../../contracts/v3/reference/periphery/NonfungiblePositionManager.md) can be used to create Positions, as well as get information on **existing Positions**.
-In this guide, we will fetch **all Positions** an address has and fetch the **detailed Position Data** for those positions.
-
-The guide will **cover**:
-
-1. Creating an ethersJS contract to interact with the NonfungiblePositionManager.
-2. Fetching all positions for an address.
-3. Fetching the position info for the positions.
-
-At the end of the guide, given the inputs above, we should be able to mint a liquidity position with the press of a button and view the position on the UI of the web application.
-
-For this guide, we do not need to use the t1 SDKs, we will only import the contract ABI for the NonfungiblePositionManager Contract from [`@uniswap/v3-periphery`](https://www.npmjs.com/package/@uniswap/v3-periphery).
-
-## Connecting to the NFTPositionManager Contract
-
-We use **ethersJS** to interact with the NonfungiblePositionManager Contract. Let's create an ethers Contract:
-
-```typescript
-import { ethers } from 'ethers'
-import INONFUNGIBLE_POSITION_MANAGER from '@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json'
-
-const provider = new ethers.providers.JsonRpcProvider(rpcUrl)
-
-const nfpmContract = new ethers.Contract(
- NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- INONFUNGIBLE_POSITION_MANAGER.abi,
- provider
-)
-```
-
-We get the Contract ABI from the 'v3-periphery` package and the contract address from [Github](https://github.com/Uniswap/v3-periphery/blob/main/deploys.md)
-
-## Fetching the Position Ids
-
-We want to fetch all Position Ids for our address. We first fetch the number of positions and then the ids by their indices.
-
-We fetch the number of positions using the `balanceOf` read call:
-
-```typescript
-
-const numPositions = await nfpmContract.balanceOf(address)
-```
-
-Next we iterate over the number of positions and fetch the ids:
-
-```typescript
-const calls = []
-
-for (let i = 0; i < numPositions; i++) {
- calls.push(
- nfpmContract.tokenOfOwnerByIndex(address, i)
- )
-}
-
-const positionIds = await Promise.all(calls)
-```
-
-## Fetching the Position Info
-
-Now that we have the ids of the Positions associated with our address, we can fetch the position info using the `positions` function.
-
-The solidity function returns a lot of values describing the Position:
-
-```solidity
-function positions(
- uint256 tokenId
- ) external view returns (
- uint96 nonce,
- address operator,
- address token0,
- address token1,
- uint24 fee,
- int24 tickLower,
- int24 tickUpper,
- uint128 liquidity,
- uint256 feeGrowthInside0LastX128,
- uint256 feeGrowthInside1LastX128,
- uint128 tokensOwed0,
- uint128 tokensOwed1
- )
-```
-
-In this example we only care about values needed to interact with positions, so we create an Interface `PositionInfo`:
-
-```typescript
-interface PositionInfo {
- tickLower: number
- tickUpper: number
- liquidity: JSBI
- feeGrowthInside0LastX128: JSBI
- feeGrowthInside1LastX128: JSBI
- tokensOwed0: JSBI
- tokensOwed1: JSBI
-}
-```
-
-We fetch the Position data with `positions`:
-
-```typescript
-const positionCalls = []
-
-for (let id of positionIds) {
- positionCalls.push(
- nfpmContract.positions(id)
- )
-}
-
-const callResponses = await Promise.all(positionCalls)
-```
-
-Finally, we map the RPC response to our interface:
-
-```typescript
-const positionInfos = callResponses.map((position) => {
- return {
- tickLower: position.tickLower,
- tickUpper: position.tickUpper,
- liquidity: JSBI.BigInt(position.liquidity),
- feeGrowthInside0LastX128: JSBI.BigInt(position.feeGrowthInside0LastX128),
- feeGrowthInside1LastX128: JSBI.BigInt(position.feeGrowthInside1LastX128),
- tokensOwed0: JSBI.BigInt(position.tokensOwed0),
- tokensOwed1: JSBI.BigInt(position.tokensOwed1),
- }
-})
-```
-
-We now have an array containing PositionInfo for all positions that our address holds.
diff --git a/docs/sdk/v3/guides/liquidity/04-modifying-position.md b/docs/sdk/v3/guides/liquidity/04-modifying-position.md
deleted file mode 100644
index 2ef1c2184..000000000
--- a/docs/sdk/v3/guides/liquidity/04-modifying-position.md
+++ /dev/null
@@ -1,269 +0,0 @@
----
-id: modifying-position
-title: Adding & Removing Liquidity
----
-
-## Introduction
-
-This guide will cover how to modify a liquidity position by adding or removing liquidity on the t1 V3 protocol. It is based on the [modifying a position code example](https://github.com/Uniswap/examples/tree/main/v3-sdk/modifying-position), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the examples's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/modifying-position/README.md) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](../01-background.md) page!
-:::
-
-In the t1 V3 protocol, liquidity positions are represented using non-fungible tokens. In this guide we will use the `NonfungiblePositionManager` class to help us mint a liquidity position and then modify the provided liquidity for the **USDC - DAI** pair. The inputs to our guide are the **two tokens** that we are pooling for, the **amount** of each token we are pooling for, the Pool **fee** and the **fraction** by which to **add and remove** from our position.
-
-The guide will **cover**:
-
-1. Adding liquidity to our position
-2. Removing liquidity from our position
-
-At the end of the guide, given the inputs above, we should be able to add or remove liquidity from a minted position with the press of a button and see the change reflected in our position and the balance of our tokens.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-
-The core code of this guide can be found in [`addLiquidity()`](https://github.com/Uniswap/examples/blob/d34a53412dbf905802da2249391788a225719bb8/v3-sdk/modifying-position/src/example/Example.tsx#L33) and [`removeLiquidity()`](https://github.com/Uniswap/examples/blob/733d586070afe2c8cceb35d557a77eac7a19a656/v3-sdk/modifying-position/src/example/Example.tsx#L83)
-
-:::note
-This guide assumes you are familiar with our [Minting a Position](./02-minting-position.md) guide. A minted position is required to add or remove liquidity from, so the buttons will be disabled until a position is minted.
-
-Also note that we do not need to give approval to the `NonfungiblePositionManager` to transfer our tokens as we will have already done that when minting our position.
-:::
-
-## Configuration and utils
-
-The example can be configured in the [`config.ts`](https://github.com/Uniswap/examples/blob/d34a53412dbf905802da2249391788a225719bb8/v3-sdk/modifying-position/src/config.ts) file.
-The `CurrentConfig` object has this structure:
-
-```typescript
-export const CurrentConfig: ExampleConfig = {
- env: Environment.LOCAL,
- rpc: {
- local: 'http://localhost:8545',
- mainnet: 'https://mainnet.infura.io/v3/0ac57a06f2994538829c14745750d721',
- },
- wallet: {
- address: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
- privateKey:
- '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
- },
- tokens: {
- token0: USDC_TOKEN,
- token0Amount: 1000,
- token1: DAI_TOKEN,
- token1Amount: 1000,
- poolFee: FeeAmount.LOW,
- fractionToRemove: 1,
- fractionToAdd: 0.5,
- },
-}
-```
-
-You should already be familiar with the `rpc`, `wallet` and token parameters, they are used in the same way as in the guides earlier in our v3-sdk series.
-The `fractionToAdd` variable is the multiplicator by which we will increase the Position. A fraction of **0.5** means we increase the liquidity by **50%**.
-The `fractionToRemove` variable is the fraction of the Position that we want to remove later in the guide. A fraction of **1** means we remove **100%** of the liquidity.
-
-## Adding liquidity to our position
-
-Assuming we have already minted a position, our first step is to construct the modified position using our original position to calculate the amount by which we want to increase our current position:
-
-```typescript
-const fractionToAdd: number = ...
-
-const amount0Increased: JSBI = fromReadableAmount(
- readableAmount0 * fractionToAdd,
- token0.decimals
-)
-const amount1Increase: JSBI = fromReadableAmount(
- readableAmount1 * fractionToAdd,
- token1.decimals
-)
-
-const positionToIncreaseBy = constructPosition(
- amount0Increased,
- amount1Increase
- )
-)
-```
-
-The `fromReadableAmount()` function calculates the amount of tokens in their smallest unit, so for example 1 ETH would be `1000000000000000000` Wei as ETH has 18 decimals.
-
-A better way to get the amounts might be to fetch them with the positionId directly from the blockchain.
-We demonstrated how to do that in the [first guide](./01-position-data.md#fetching-positions) of this series.
-
-```typescript
-import { Pool, Position } from '@uniswap/v3-sdk'
-import JSBI from 'jsbi'
-
-function constructPosition(
- amount0: JSBI,
- amount1: JSBI
-): Position {
- // create Pool same as in the previous guide
- const pool = new Pool(...)
-
- // create position using the maximum liquidity from input amounts
- return Position.fromAmounts({
- pool,
- tickLower:
- nearestUsableTick(pool.tickCurrent, pool.tickSpacing) -
- pool.tickSpacing * 2,
- tickUpper:
- nearestUsableTick(pool.tickCurrent, pool.tickSpacing) +
- pool.tickSpacing * 2,
- amount0,
- amount1,
- useFullPrecision: true,
- })
-}
-```
-
-The function receives two arguments, which are the amounts that are used to construct the Position instance. In this example, both of the arguments follow the same logic: we multiply the parameterized `tokenAmount` by the parameterized `fractionToAdd` since the new liquidity position will be added on top of the already minted liquidity position.
-
-We then need to construct an options object of type [`AddLiquidityOptions`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/nonfungiblePositionManager.ts#L77) similar to how we did in the minting case. In this case, we will use [`IncreaseOptions`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/nonfungiblePositionManager.ts#L75):
-
-```typescript
-import { AddLiquidityOptions } from '@uniswap/v3-sdk'
-
-const addLiquidityOptions: AddLiquidityOptions = {
- deadline: Math.floor(Date.now() / 1000) + 60 * 20,
- slippageTolerance: new Percent(50, 10_000),
- tokenId,
-}
-```
-
-Compared to minting, we have omitted the `recipient` parameter and instead passed in the `tokenId` of the position we previously minted.
-As the Position already exists, the recipient doesn't change, instead the NonfungiblePositionManager contract can modify the existing Position by accessing it with its id.
-
-The tokenId can be fetched with the tokenOfOwnerByIndex function of the NonfungiblePositionManager Contract as described [here](./01-position-data.md#fetching-positions).
-
-The newly created position along with the options object are then passed to the `NonfungiblePositionManager`'s `addCallParameters`:
-
-```typescript
-import { NonfungiblePositionManager } from '@uniswap/v3-sdk'
-
-const positionToIncreaseBy = constructPosition(CurrentConfig.tokens.amount0, CurrentConfig.tokens.amount1)
-
-const { calldata, value } = NonfungiblePositionManager.addCallParameters(
- positionToIncreaseBy,
- addLiquidityOptions
-)
-```
-
-The return values of `addCallParameters` are the calldata and value of the transaction we need to submit to increase our position's liquidity. We can now build and execute the transaction:
-
-```typescript
-import { ethers } from 'ethers'
-
-const transaction = {
- data: calldata,
- to: NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- value: value,
- from: address,
- maxFeePerGas: MAX_FEE_PER_GAS,
- maxPriorityFeePerGas: MAX_PRIORITY_FEE_PER_GAS,
-}
-
-const wallet = new ethers.Wallet(privateKey, provider)
-
-const txRes = await wallet.sendTransaction(transaction)
-```
-
-We can get the Contract address for the NonfungiblePositionManager from [Github](https://github.com/Uniswap/v3-periphery/blob/main/deploys.md).
-
-After pressing the button, note how the balance of USDC and DAI drops and our position's liquidity increases.
-
-## Removing liquidity from our position
-
-The `removeLiquidity` function is the mirror action of adding liquidity and will be somewhat similar as a result, requiring a position to already be minted.
-
-To start, we create a position identical to the one we minted:
-
-```typescript
-const amount0: JSBI = fromReadableAmount(
- readableAmount0 * fractionToAdd,
- token0.decimals
-)
-const amount1: JSBI = fromReadableAmount(
- readableAmount1 * fractionToAdd,
- token1.decimals
-)
-
-const currentPosition = constructPosition(
- amount0,
- amount1
-)
-```
-
-We then need to construct an options object of type [`RemoveLiquidityOptions`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/nonfungiblePositionManager.ts#L138):
-
-```typescript
-import { RemoveLiquidityOptions } from '@uniswap/v3-sdk'
-import { Percent } from '@uniswap/sdk-core'
-
-const removeLiquidityOptions: RemoveLiquidityOptions = {
- deadline: Math.floor(Date.now() / 1000) + 60 * 20,
- slippageTolerance: new Percent(50, 10_000),
- tokenId: positionId,
- // percentage of liquidity to remove
- liquidityPercentage: new Percent(0.5),
- collectOptions,
-}
-```
-
-Just as with adding liquidity, we have we have omitted the `recipient` parameter and instead passed in the `tokenId` of the position we previously minted.
-
-We have also provide two additional parameters:
-
-- `liquidityPercentage` determines how much liquidity is removed from our initial position (as a `Percentage`), and transfers the removed liquidity back to our address. We set this percentage from our guide configuration ranging from 0 (0%) to 1 (100%). In this example we would remove 50% of the liquidity.
-- [`collectOptions`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/nonfungiblePositionManager.ts#L105) gives us the option to collect the fees, if any, that we have accrued for this position. In this example, we won't collect any fees, so we provide zero values. If you'd like to see how to collect fees without modifying your position, check out our [collecting fees](./03-collecting-fees.md) guide!
-
-```typescript
-import { CurrencyAmount } from '@uniswap/sdk-core'
-import { CollectOptions } from '@uniswap/v3-sdk'
-
-const collectOptions: Omit = {
- expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(
- token0,
- 0
- ),
- expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(
- token1,
- 0
- ),
- recipient: address,
-}
-```
-
-The position object along with the options object is passed to the `NonfungiblePositionManager`'s `removeCallParameters`, similar to how we did in the adding liquidity case:
-
-```typescript
-const { calldata, value } = NonfungiblePositionManager.removeCallParameters(
- currentPosition,
- removeLiquidityOptions
-)
-```
-
-The return values `removeCallParameters` are the calldata and value that are needed to construct the transaction to remove liquidity from our position. We can build the transaction and send it for execution:
-
-```typescript
-const transaction = {
- data: calldata,
- to: NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- value: value,
- from: address,
- maxFeePerGas: MAX_FEE_PER_GAS,
- maxPriorityFeePerGas: MAX_PRIORITY_FEE_PER_GAS,
-}
-
-const txRes = await wallet.sendTransaction(transaction)
-```
-
-After pressing the button, note how the balance of USDC and DAI increases and our position's liquidity drops.
-
-## Next Steps
-
-Now that you can mint and modify a position, check out how to [collect fees](./04-collecting-fees.md) from the position!
diff --git a/docs/sdk/v3/guides/liquidity/05-collecting-fees.md b/docs/sdk/v3/guides/liquidity/05-collecting-fees.md
deleted file mode 100644
index e2ee6c2af..000000000
--- a/docs/sdk/v3/guides/liquidity/05-collecting-fees.md
+++ /dev/null
@@ -1,125 +0,0 @@
----
-id: liquidity-fees
-title: Collecting Fees
----
-
-## Introduction
-
-This guide will cover how to collect fees from a liquidity position on the t1 V3 protocol. It is based on the [collecting fees code example](https://github.com/Uniswap/examples/tree/main/v3-sdk/collecting-fees), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the examples's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/collecting-fees/README.md) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](../01-background.md) page!
-:::
-
-In the t1 V3 protocol, liquidity positions are represented using non-fungible tokens. In this guide we will use the `NonfungiblePositionManager` class to help us mint a liquidity position for the **USDC - DAI** pair. We will then attempt to collect any fees that the position has accrued from those trading against our provisioned liquidity. The inputs to our guide are the **two tokens** that we are pooling for, the **amount** of each token we are pooling for, the Pool **fee** and the **max amount of accrued fees** we want to collect for each token.
-
-The guide will **cover**:
-
-1. Setting up our fee collection
-2. Submitting our fee collection transaction
-
-At the end of the guide, given the inputs above, we should be able to collect the accrued fees (if any) of a minted position with the press of a button and see the change reflected in our position and the balance of our tokens.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-
-The core code of this guide can be found in [`collectFees()`](https://github.com/Uniswap/examples/blob/main/v3-sdk/collecting-fees/src/libs/liquidity.ts#L35).
-
-:::note
-This guide assumes you are familiar with our [Minting a Position](./01-minting-position.md) guide. A minted position is required to add or remove liquidity from, so the buttons will be disabled until a position is minted.
-
-Also note that we do not need to give approval to the `NonfungiblePositionManager` to transfer our tokens as we will have already done that when minting our position.
-:::
-
-## Setting up our fee collection
-
-All of the fee collecting logic can be found in the [`collectFees`](https://github.com/Uniswap/examples/blob/be67e7df220b0a270c9d18bbaab529e017213adf/v3-sdk/collecting-fees/src/example/Example.tsx#L24) function. Notice how the **Collect Fees** button is disabled until a position is minted. This happens because there will be no fees to collect unless there is a position whose liquidity has been traded against.
-
-To start, we fetch the position from the NonfungiblePositionManager Contract to get the fees we are owed:
-
-```typescript
-import { ethers } from 'ethers'
-import JSBI from 'jsbi'
-...
-
-const nfpmContract = new ethers.Contract(NONFUNGIBLE_POSITION_MANAGER_ADDRESS, provider)
-const position = nfpmContract.positions(positionId)
-```
-
-Next, we construct an options object of type [`CollectOptions`](https://github.com/Uniswap/v3-sdk/blob/08a7c050cba00377843497030f502c05982b1c43/src/nonfungiblePositionManager.ts#L105) that holds the data about the fees we want to collect:
-
-```typescript
-import { CurrencyAmount } from '@uniswap/sdk-core'
-
-const collectOptions: CollectOptions = {
- tokenId: positionId,
- expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(
- CurrentConfig.tokens.token0,
- JSBI.BigInt(position.tokensOwed0)
- ),
- expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(
- CurrentConfig.tokens.token1,
- JSBI.BigInt(position.tokensOwed1)
- ),
- recipient: address,
-}
-```
-
-Read more about fetching position info [here](./01-position-data.md#fetching-positions).
-
-Similar to the other functions exposed by the `NonfungiblePositionManager`, we pass the `tokenId` and the `recipient` of the fees, which in this case is our function's input position id and our wallet's address.
-
-The other two `CurrencyAmount` parameters (`expectedCurrencyOwed0` and `expectedCurrencyOwed1`) define the **maximum** amount of currency we expect to get collect through accrued fees of each token in the pool. We set these through our guide's configuration.
-
-In a real world scenario, we can fetch the amount of fees that are owed to the Position through the `positions()` function of the NonfungiblePositionManager Contract.
-We fetch the position info like in this code snippet taken from the [Fetching Positions guide](./03-fetching-positions.md):
-
-```typescript
-const positionInfos = callResponses.map((position) => {
- return {
- tickLower: position.tickLower,
- tickUpper: position.tickUpper,
- liquidity: JSBI.BigInt(position.liquidity),
- feeGrowthInside0LastX128: JSBI.BigInt(position.feeGrowthInside0LastX128),
- feeGrowthInside1LastX128: JSBI.BigInt(position.feeGrowthInside1LastX128),
- tokensOwed0: JSBI.BigInt(position.tokensOwed0),
- tokensOwed1: JSBI.BigInt(position.tokensOwed1),
- }
-})
-```
-
-The `tokensOwed0` and `tokensOwed1` values are the fees owed.
-
-In this example, we have the values hardcoded in the [`config.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/collecting-fees/src/config.ts) file.
-
-## Submitting our fee collection transaction
-
-Next, we get the call parameters for collecting our fees from our `NonfungiblePositionManager` using the constructed `CollectOptions`:
-
-```typescript
-const { calldata, value } =
- NonfungiblePositionManager.collectCallParameters(collectOptions)
-```
-
-The function above returns the calldata and value required to construct the transaction for collecting accrued fees. Now that we have both the calldata and value we needed for the transaction, we can build and execute the it:
-
-```typescript
-const transaction = {
- data: calldata,
- to: NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS,
- value: value,
- from: address,
- maxFeePerGas: MAX_FEE_PER_GAS,
- maxPriorityFeePerGas: MAX_PRIORITY_FEE_PER_GAS,
-}
-
-const txRes = await wallet.sendTransaction(transaction)
-```
-
-After pressing the button, if someone has traded against our position, we should be able to note how the balance of USDC and DAI increases as we collect fees.
-
-## Next Steps
-
-The previous guides detail all the atomic steps needed to create and manage positions. However, these approaches may not use all of your desired currency. To ensure you are using your full funds while minimizing gas prices, check out our guide on [Swapping and Adding Liquidity](./05-swap-and-add-liquidity.md) in a single transaction!
diff --git a/docs/sdk/v3/guides/liquidity/06-swap-and-add-liquidity.md b/docs/sdk/v3/guides/liquidity/06-swap-and-add-liquidity.md
deleted file mode 100644
index 9c53cf3f2..000000000
--- a/docs/sdk/v3/guides/liquidity/06-swap-and-add-liquidity.md
+++ /dev/null
@@ -1,200 +0,0 @@
----
-id: swap-and-add
-title: Swapping and Adding Liquidity
----
-
-## Introduction
-
-This guide will cover how to execute a swap-and-add operation in a single atomic transaction. It is based on the [swap-and-add example](https://github.com/Uniswap/examples/tree/main/v3-sdk/swap-and-add-liquidity), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the examples's [README](https://github.com/Uniswap/examples/tree/main/v3-sdk/swap-and-add-liquidity) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](../01-background.md) page!
-:::
-
-When adding liquidity to a t1 v3 pool, you must provide two assets in a particular ratio. In many cases, your contract or the user's wallet hold a different ratio of those two assets. In order to deposit 100% of your assets, you must first swap your assets to the optimal ratio and then add liquidity.
-
-However, the swap may shift the balance of the pool and thus change the optimal ratio. To avoid that, we can execute this swap-and-add liquidity operation in an atomic fashion, using a router. The inputs to our guide are the **two tokens** that we are pooling for, the **amount** of each token we are pooling for, the **amount** of each token to swap-and-add, and the Pool **fee**.
-
-The guide will **cover**:
-
-1. Setup a router instance
-2. Configuring our ratio calculation
-3. Calculating our currency ratio
-4. Constructing and executing our swap-and-add transaction
-
-At the end of the guide, given the inputs above, we should be able swap-and-add liquidity using 100% of the input assets with the press of a button and see the change reflected in our position and the balance of our tokens.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-- [`@uniswap/smart-order-router`](https://www.npmjs.com/package/@uniswap/smart-order-router)
-
-The core code of this guide can be found in [`swapAndAddLiquidity()`](https://github.com/Uniswap/examples/blob/main/v3-sdk/swap-and-add-liquidity/src/libs/liquidity.ts#L48).
-
-:::note
-This guide assumes you are familiar with our [Minting a Position](./01-minting-position.md) guide. A minted position is required to add or remove liquidity from, so the buttons will be disabled until a position is minted.
-
-Also note that we do not need to give approval to the `NonfungiblePositionManager` to transfer our tokens as we will have already done that when minting our position.
-:::
-
-## Setup a router instance
-
-The first step is to approve the `SwapRouter` smart contract to spend our tokens for us in order for us to add liquidity to our position:
-
-```typescript
-const tokenInApproval = await getTokenTransferApproval(
- token0,
- V3_SWAP_ROUTER_ADDRESS
-)
-
-const tokenOutApproval = await getTokenTransferApproval(
- token1,
- V3_SWAP_ROUTER_ADDRESS
-)
-```
-
-We described the `getTokenTransferApproval` function [here](./02-minting-position.md#giving-approval-to-transfer-our-tokens).
-
-Then we can setup our router, the [`AlphaRouter`](https://github.com/Uniswap/smart-order-router/blob/97c1bb7cb64b22ebf3509acda8de60c0445cf250/src/routers/alpha-router/alpha-router.ts#L333), which is part of the [smart-order-router package](https://www.npmjs.com/package/@uniswap/smart-order-router). The router requires a `chainId` and a `provider` to be initialized. Note that routing is not supported for local forks, so we will use a mainnet provider even when swapping on a local fork:
-
-```typescript
-import { ethers } from 'ethers'
-import { AlphaRouter } from '@uniswap/smart-order-router'
-
-const provider = new ethers.providers.JsonRpcProvider(rpcUrl)
-
-const router = new AlphaRouter({ chainId: 1, provider })
-```
-
-For a more detailed example, check out our [routing guide](../trading/03-routing.md).
-
-## Configuring our ratio calculation
-
-Having created the router, we now need to construct the parameters required to make a call to its `routeToRatio` function, which will ensure the ratio of currency used matches the pool's required ratio to add our total liquidity. This will require the following parameters:
-
-The first two parameters are the currency amounts we use as input to the `routeToRatio` algorithm:
-
-```typescript
-import { CurrencyAmount } from '@uniswap/sdk-core'
-
-const token0CurrencyAmount = CurrencyAmount.fromRawAmount(
- token0,
- fromReadableAmount(
- token0AmountToAdd,
- token0.decimals
- )
-)
-
-const token1CurrencyAmount = CurrencyAmount.fromRawAmount(
- token1,
- fromReadableAmount(
- token1AmountToAdd,
- token1.decimals
- )
-)
-```
-
-Next, we will create a placeholder position with a liquidity of `1` since liquidity is still unknown and will be set inside the call to `routeToRatio`:
-
-```typescript
-import { Pool, Position, nearestUsableTick } from '@uniswap/v3-sdk'
-
-const placeholderPosition = new Position{
- pool,
- liquidity: 1,
- tickLower:
- nearestUsableTick(pool.tickCurrent, pool.tickSpacing) -
- pool.tickSpacing * 2,
- tickUpper:
- nearestUsableTick(pool.tickCurrent, pool.tickSpacing) +
- poolInfo.tickSpacing * 2
-}
-```
-
-We then need to create an instance of `SwapAndAddConfig` which will set additional configuration parameters for the `routeToRatio` algorithm:
-
-- `ratioErrorTolerance` determines the margin of error the resulting ratio can have from the optimal ratio.
-- `maxIterations` determines the maximum times the algorithm will iterate to find a ratio within error tolerance. If max iterations is exceeded, an error is returned. The benefit of running the algorithm more times is that we have more chances to find a route, but more iterations will longer to execute. We've used a default of 6 in our example.
-
-```typescript
-import { Fraction } from '@uniswap/sdk-core'
-import { SwapAndAddConfig } from '@uniswap/smart-order-router'
-
-const swapAndAddConfig: SwapAndAddConfig = {
- ratioErrorTolerance: new Fraction(1, 100),
- maxIterations: 6,
-}
-```
-
-Finally, we will create an instance of `SwapAndAddOptions` to configure which position we are adding liquidity to and our defined swapping parameters in two different objects:
-
-- **`swapConfig`** configures the `recipient` of leftover dust from swap, `slippageTolerance` and a `deadline` for the swap.
-- **`addLiquidityOptions`** must contain a `tokenId` to add to an existing position
-
-```typescript
-import { SwapAndAddOptions } from '@uniswap/smart-order-router'
-
-const swapAndAddOptions: SwapAndAddOptions = {
- swapOptions: {
- type: SwapType.SWAP_ROUTER_02,
- recipient: address,
- slippageTolerance: new Percent(50, 10_000),
- deadline: Math.floor(Date.now() / 1000) + 60 * 20,
- },
- addLiquidityOptions: {
- tokenId: positionId,
- },
-}
-```
-
-## Calculating our currency ratio
-
-Having constructed all the parameters we need to call `routeToRatio`, we can now make the call to the function:
-
-```typescript
-import { SwapToRatioResponse } from '@uniswap/smart-order-router'
-
-const routeToRatioResponse: SwapToRatioResponse = await router.routeToRatio(
- token0CurrencyAmount,
- token1CurrencyAmount,
- currentPosition,
- swapAndAddConfig,
- swapAndAddOptions
-)
-```
-
-The return type of the function call is [SwapToRatioResponse](https://github.com/Uniswap/smart-order-router/blob/97c1bb7cb64b22ebf3509acda8de60c0445cf250/src/routers/router.ts#L121). If a route was found successfully, this object will have two fields: the status (success) and the `SwapToRatioRoute` object. We check to make sure that both of those conditions hold true before we construct and submit the transaction:
-
-```typescript
-import { SwapToRatioStatus } from '@uniswap/smart-order-router'
-
-if (
- !routeToRatioResponse ||
- routeToRatioResponse.status !== SwapToRatioStatus.SUCCESS
-) {
- // Handle Failed Transaction
-}
-```
-
-In case a route was not found, we return from the function a `Failed` state for the transaction.
-
-## Constructing and executing our swap-and-add transaction
-
-After making sure that a route was successfully found, we can now construct and send the transaction. The response (`SwapToRatioRoute`) will have the properties we need to construct our transaction object:
-
-```typescript
-import { SwapToRatioRoute } from '@uniswap/smart-order-router'
-
-const route: SwapToRatioRoute = routeToRatioResponse.result
-const transaction = {
- data: route.methodParameters?.calldata,
- to: V3_SWAP_ROUTER_ADDRESS,
- value: route.methodParameters?.value,
- from: address,
-}
-
-const txRes = await wallet.sendTransaction(transaction)
-```
-
-If the transaction was successful, our swap-and-add will be completed! We should see our input token balances decrease and our position balance should be increased accordingly.
diff --git a/docs/sdk/v3/guides/liquidity/_category_.json b/docs/sdk/v3/guides/liquidity/_category_.json
deleted file mode 100644
index 1a66cbbe2..000000000
--- a/docs/sdk/v3/guides/liquidity/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Pooling Liquidity",
- "position": 5,
- "collapsed": true
-}
diff --git a/docs/sdk/v3/guides/swaps/01-quoting.md b/docs/sdk/v3/guides/swaps/01-quoting.md
deleted file mode 100644
index f0e48b449..000000000
--- a/docs/sdk/v3/guides/swaps/01-quoting.md
+++ /dev/null
@@ -1,229 +0,0 @@
----
-id: quoting
-title: Getting a Quote
----
-
-## Introduction
-
-This guide will cover how to get the current quotes for any token pair on the t1 protocol. It is based on the [Quoting code example](https://github.com/Uniswap/examples/tree/main/v3-sdk/quoting), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the examples's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/quoting/README.md) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](../01-background.md) page!
-:::
-
-In this example we will use `quoteExactInputSingle` to get a quote for the pair **USDC - WETH**.
-The inputs are the **token in**, the **token out**, the **amount in** and the **fee**.
-
-The **fee** input parameters represents the swap fee that distributed to all in range liquidity at the time of the swap. It is one of the identifiers of a Pool, the others being **tokenIn** and **tokenOut**.
-
-The guide will **cover**:
-
-1. Computing the Pool's deployment address
-2. Referencing the Pool contract and fetching metadata
-3. Referencing the Quoter contract and getting a quote
-
-At the end of the guide, we should be able to fetch a quote for the given input token pair and the input token amount with the press of a button on the web application.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-
-The core code of this guide can be found in [`quote.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/quoting/src/libs/quote.ts)
-
-## Example configuration
-
-We will use the example configuration `CurrentConfig` in most code snippets of this guide. It has the format:
-
-```typescript
-import { Token } from '@uniswap/sdk-core'
-
-interface ExampleConfig {
- rpc: {
- local: string
- mainnet: string
- }
- tokens: {
- in: Token
- amountIn: number
- out: Token
- poolFee: number
- }
-}
-
-export const CurrentConfig: ExampleConfig = {...}
-```
-
-The default config of the example uses a local fork of mainnet. If you haven't already, check out our [local development guide](../02-local-development.md).
-To change the rpc endpoint or the Pool used, edit the [`Currentconfig`](https://github.com/Uniswap/examples/blob/main/v3-sdk/quoting/src/config.ts#L21).
-To connect to mainnet directly, set the `mainnet` field in the config:
-
-```typescript
-export const CurrentConfig: ExampleConfig = {
- rpc: {
- local: 'http://localhost:8545',
- mainnet: 'https://mainnet.infura.io/v3/0ac57a06f2994538829c14745750d721',
- },
- tokens: {
- in: USDC_TOKEN,
- amountIn: 1000,
- out: WETH_TOKEN,
- poolFee: FeeAmount.MEDIUM,
- },
-}
-```
-
-The pool used is defined by a pair of tokens in [`constants.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/quoting/src/libs/constants.ts#L14).
-You can also change these two tokens and the fee of the pool in the config, just make sure a Pool actually exists for your configuration.
-Check out the top pools on [Uniswap info](https://info.uniswap.org/#/pools).
-
-## Computing the Pool's deployment address
-
-To interact with the **USDC - WETH** Pool contract, we first need to compute its deployment address.
-If you haven't worked directly with smart contracts yet, check out this [guide](https://docs.alchemy.com/docs/smart-contract-basics) from Alchemy.
-The SDK provides a utility method for that:
-
-```typescript
-import { computePoolAddress } from '@uniswap/v3-sdk'
-
-const currentPoolAddress = computePoolAddress({
- factoryAddress: POOL_FACTORY_CONTRACT_ADDRESS,
- tokenA: CurrentConfig.tokens.in,
- tokenB: CurrentConfig.tokens.out,
- fee: CurrentConfig.tokens.poolFee,
-})
-```
-
-Since each *Uniswap V3 Pool* is uniquely identified by 3 characteristics (token in, token out, fee), we use those
-in combination with the address of the *PoolFactory* contract to compute the address of the **USDC - ETH** Pool.
-These parameters have already been defined in our [constants.ts](https://github.com/Uniswap/examples/blob/main/v3-sdk/quoting/src/libs/constants.ts#L14) file:
-
-```typescript
-const WETH_TOKEN = new Token(
- 1,
- '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
- 18,
- 'WETH',
- 'Wrapped Ether'
-)
-
-const USDC_TOKEN = new Token(
- 1,
- '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
- 6,
- 'USDC',
- 'USD//C'
-)
-```
-
-These constants are used in the `config.ts` file, as mentioned in the Introduction.
-
-We can find the Pool Factory Contract address for our chain [here](../../../../contracts/v3/reference/Deployments.md).
-
-## Referencing the Pool contract and fetching metadata
-
-Now that we have the deployment address of the **USDC - ETH** Pool, we can construct an instance of an **ethers** `Contract` to interact with it:
-
-```typescript
-import { ethers } from 'ethers'
-
-const provider = new ethers.providers.JsonRpcProvider(rpcUrl)
-const poolContract = new ethers.Contract(
- currentPoolAddress,
- IUniswapV3PoolABI.abi,
- provider
-)
-```
-
-To construct the *Contract* we need to provide the address of the contract, its ABI and the provider that will carry out the RPC call for us.
-We get access to the contract's ABI through the [@uniswap/v3-core](https://www.npmjs.com/package/@uniswap/v3-core) package, which holds the core smart contracts of the t1 V3 protocol:
-
-```typescript
-import IUniswapV3PoolABI from '@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json'
-```
-
-Having constructed our reference to the contract, we can now access its methods through our provider.
-We use a batch `Promise` call. This approach queries state data concurrently, rather than sequentially, to minimize the chance of fetching out of sync data that may be returned if sequential queries are executed over the span of two blocks:
-
-```typescript
-const [token0, token1, fee, liquidity, slot0] = await Promise.all([
- poolContract.token0(),
- poolContract.token1(),
- poolContract.fee(),
- poolContract.liquidity(),
- poolContract.slot0(),
-])
-```
-
-The return values of these methods will become inputs to the quote fetching function.
-The `token0` and `token1` variables are the addresses of the tokens in the Pool and should not be mistaken for `Token` objects from the sdk.
-For the full code, check out [`getPoolConstants()`](https://github.com/Uniswap/examples/blob/main/v3-sdk/quoting/src/libs/quote.ts#L35) in `quote.ts`.
-
-:::note
-In this example, the metadata we fetch is already present in our inputs. This guide fetches this information first in order to show how to fetch any metadata, which will be expanded on in future guides.
-:::
-
-## Referencing the Quoter contract and getting a quote
-
-To get quotes for trades, t1 has deployed a **Quoter Contract**. We will use this contract to fetch the output amount we can expect for our trade, without actually executing the trade.
-Check out the full code for the following snippets in [quote.ts](https://github.com/Uniswap/examples/blob/main/v3-sdk/quoting/src/libs/quote.ts)
-
-Like we did for the Pool contract, we need to construct an instance of an **ethers** `Contract` for our Quoter contract in order to interact with it:
-
-```typescript
-const quoterContract = new ethers.Contract(
- QUOTER_CONTRACT_ADDRESS,
- Quoter.abi,
- getProvider()
-)
-```
-
-We get access to the contract's ABI through the [@uniswap/v3-periphery](https://www.npmjs.com/package/@uniswap/v3-periphery) package, which holds the periphery smart contracts of the t1 V3 protocol:
-
-```typescript
-import Quoter from '@uniswap/v3-periphery/artifacts/contracts/lens/Quoter.sol/Quoter.json'
-```
-
-We get the QUOTE_CONTRACT_ADDRESS for our chain from [Github](https://github.com/Uniswap/v3-periphery/blob/main/deploys.md).
-
-We can now use our Quoter contract to obtain the quote.
-
-In an ideal world, the quoter functions would be `view` functions, which would make them very easy to query on-chain with minimal gas costs. However, the t1 V3 Quoter contracts rely on state-changing calls designed to be reverted to return the desired data. This means calling the quoter will be very expensive and should not be called on-chain.
-
-To get around this difficulty, we can use the `callStatic` method provided by the **ethers.js** `Contract` instances.
-This is a useful method that submits a state-changing transaction to an Ethereum node, but asks the node to simulate the state change, rather than to execute it. Our script can then return the result of the simulated state change:
-
-```typescript
-const quotedAmountOut = await quoterContract.callStatic.quoteExactInputSingle(
- token0,
- token1,
- fee,
- fromReadableAmount(
- CurrentConfig.tokens.amountIn,
- CurrentConfig.tokens.in.decimals
- ).toString(),
- 0
-)
-```
-
-The `fromReadableAmount()` function creates the amount of the smallest unit of a token from the full unit amount and the decimals.
-
-The result of the call is the number of output tokens you'd receive for the quoted swap.
-
-It should be noted that `quoteExactInputSingle` is only 1 of 4 different methods that the quoter offers:
-
-1. `quoteExactInputSingle` - given the amount you want to swap, produces a quote for the amount out for a swap of a single pool
-2. `quoteExactInput` - given the amount you want to swap, produces a quote for the amount out for a swap over multiple pools
-3. `quoteExactOutputSingle` - given the amount you want to get out, produces a quote for the amount in for a swap over a single pool
-4. `quoteExactOutput` - given the amount you want to get out, produces a quote for the amount in for a swap over multiple pools
-
-If we want to trade two tokens that do not share a pool with each other, we will need to make swaps over multiple pools.
-This is where the `quoteExactInput` and `quoteExactOutput` methods come in.
-We will dive deeper into routing in the [routing guide](03-routing.md).
-
-For the `exactOutput` and `exactOutputSingle` methods, we need to keep in mind that a pool can not give us more than the amount of Tokens it holds.
-If we try to get a quote on an output of 100 WETH from a Pool that only holds 50 WETH, the function call will fail.
-
-## Next Steps
-
-Now that you're able to make a quote, check out our next guide on [trading](./02-trading.md) using this quote!
diff --git a/docs/sdk/v3/guides/swaps/02-trading.md b/docs/sdk/v3/guides/swaps/02-trading.md
deleted file mode 100644
index f3a268197..000000000
--- a/docs/sdk/v3/guides/swaps/02-trading.md
+++ /dev/null
@@ -1,312 +0,0 @@
----
-id: trading
-title: Executing a Trade
----
-
-## Introduction
-
-This guide will build off our [quoting guide](./01-quoting.md) and show how to use a quote to construct and execute a trade on the t1 V3 protocol. It is based on the [Trading code example](https://github.com/Uniswap/examples/tree/main/v3-sdk/trading), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the guide's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/trading/README.md) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](../01-background.md) page!
-
-To get started with local development, also check out the [local development guide](../02-local-development.md).
-:::
-
-In this example we will trade between two ERC20 tokens: **WETH and USDC**. The tokens, amount of input token, and the fee level can be configured as inputs.
-
-The guide will **cover**:
-
-1. Constructing a route from pool information
-2. Constructing an unchecked trade
-3. Executing a trade
-
-At the end of the guide, we should be able to create and execute a trade between any two ERC20 tokens using the example's included UI.
-
-:::note
-Included in the example application is functionality to wrap/unwrap ETH as needed to fund the example `WETH` to `USDC` swap directly from an `ETH` balance.
-:::
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-
-The core code of this guide can be found in [`trading.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/trading/src/libs/trading.ts)
-
-## Using a wallet extension
-
-Like in the previous guide, our [example](https://github.com/Uniswap/examples/blob/main/v3-sdk/trading) uses a [config file ](https://github.com/Uniswap/examples/blob/main/v3-sdk/trading/src/config.ts) to configurate the inputs used.
-The strucuture is similar to the quoting config, but we also have the option to select an environment:
-
-```typescript
-export interface ExampleConfig {
- env: Environment
- rpc: {
- local: string
- mainnet: string
- }
- wallet: {
- address: string
- privateKey: string
- }
- tokens: {
- in: Token
- amountIn: number
- out: Token
- poolFee: number
- }
-}
-```
-
-Per default, the env field is set to `Environment.LOCAL`:
-
-```typescript
-export const CurrentConfig: ExampleConfig = {
- env: Environment.LOCAL,
- rpc: {
- local: 'http://localhost:8545',
- mainnet: '',
- },
- wallet: {
- address: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',
- privateKey:
- '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
- },
- tokens: {
- in: WETH_TOKEN,
- amountIn: 1,
- out: USDC_TOKEN,
- poolFee: FeeAmount.MEDIUM,
- },
-}
-```
-
-In this example, we have the option to use a Wallet Extension like Metamask to sign the transactions we are sending. To do so, let's change the Environment to `Environment.WALLET_EXTENSION`:
-
-```typescript
-export const CurrentConfig: ExampleConfig = {
- env: Environment.WALLET_EXTENSION,
- rpc: {
- local: 'http://localhost:8545',
- },
- wallet: {
- ...
- },
- tokens: {
- ...
- },
-}
-```
-
-Run the example and then add the local network to your wallet browser extension, if you are using Metamask for example, follow [this guide](https://support.metamask.io/hc/en-us/articles/360043227612-How-to-add-a-custom-network-RPC).
-You should also import a private key to use on your local network, for example `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80` from Foundry's example wallets.
-
-Consider checking out the [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/trading/README.md) of the example.
-
-If you cannot see the Tokens traded in your wallet, you possibly have to [import them](https://support.metamask.io/hc/en-us/articles/360015489031-How-to-display-tokens-in-MetaMask).
-
-## Constructing a route from pool information
-
-To construct our trade, we will first create an model instance of a `Pool`. We create an **ethers** contract like in the [previous guide](./01-quoting.md#referencing-the-pool-contract-and-fetching-metadata).
-We will first extract the needed metadata from the relevant pool contract. Metadata includes both constant information about the pool as well as information about its current state stored in its first slot:
-
-```typescript
-async function getPoolInfo() {
- const [token0, token1, fee, liquidity, slot0] =
- await Promise.all([
- poolContract.fee(),
- poolContract.liquidity(),
- poolContract.slot0(),
- ])
-
- return {
- fee,
- liquidity,
- sqrtPriceX96: slot0[0],
- tick: slot0[1],
- }
-}
-```
-
-Before continuing, let's talk about the values we fetched here and what they represent:
-
-- `fee` is the fee that is taken from every swap that is executed on the pool in 1 per million - if the `fee` value of a pool is 500, ```500/ 1000000``` (or 0.05%) of the trade amount is taken as a fee. This fee goes to the liquidity providers of the Pool.
-- `liquidity` is the amount of liquidity the Pool can use for trades at the current price.
-- `sqrtPriceX96` is the current Price of the pool, encoded as a ratio between `token0` and `token1`.
-- `tick` is the tick at the current price of the pool.
-
-Check out the [whitepaper](https://uniswap.org/whitepaper-v3.pdf) to learn more on how liquidity and ticks work in t1 V3.
-
-You can find the full code in [`pool.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/trading/src/libs/pool.ts).
-
-Using this metadata along with our inputs, we will then construct a `Pool`:
-
-```typescript
-const poolInfo = await getPoolInfo()
-
-const pool = new Pool(
- CurrentConfig.tokens.in,
- CurrentConfig.tokens.out,
- CurrentConfig.tokens.poolFee,
- poolInfo.sqrtPriceX96.toString(),
- poolInfo.liquidity.toString(),
- poolInfo.tick
-)
-```
-
-## Creating a Route
-
-With this `Pool`, we can now construct a route to use in our trade. Routes represent a route over one or more pools from one Token to another. Let's imagine we have three pools:
-
-```
-- PoolA: USDC/ WETH
-- PoolB: USDT/ WETH
-- PoolC: USDT/ DAI
-```
-
-We would like to trade from USDC to DAI, so we create a route through our 3 pools:
-
-```
-PoolA -> PoolB -> PoolC
-```
-
-The `Route` object can find this route from an array of given pools and an input and output Token.
-
-To keep it simple for this guide, we only swap over one Pool:
-
-```typescript
-import { Route } from '@uniswap/v3-sdk'
-
-const swapRoute = new Route(
- [pool],
- CurrentConfig.tokens.in,
- CurrentConfig.tokens.out
-)
-```
-
-Our `Route` understands that `CurrentConfig.tokens.in` should be traded for `CurrentConfig.tokens.out` over the Array of pools `[pool]`.
-
-
-## Constructing an unchecked trade
-
-Once we have constructed the route object, we now need to obtain a quote for the given `inputAmount` of the example:
-
-```typescript
-const amountOut = await getOutputQuote(swapRoute)
-```
-
-As shown below, the quote is obtained using the `v3-sdk`'s `SwapQuoter`, in contrast to the [previous quoting guide](./01-quoting.md), where we directly accessed the smart contact:
-
-```typescript
-import { SwapQuoter } from '@uniswap/v3-sdk'
-import { CurrencyAmount, TradeType } from '@uniswap/sdk-core'
-
-const { calldata } = await SwapQuoter.quoteCallParameters(
- swapRoute,
- CurrencyAmount.fromRawAmount(
- CurrentConfig.tokens.in,
- fromReadableAmount(
- CurrentConfig.tokens.amountIn,
- CurrentConfig.tokens.in.decimals
- )
- ),
- TradeType.EXACT_INPUT,
- {
- useQuoterV2: true,
- }
-)
-```
-
-The `SwapQuoter`'s `quoteCallParameters` function, gives us the calldata needed to make the call to the `Quoter`, and we then decode the returned quote:
-
-```typescript
-const quoteCallReturnData = await provider.call({
- to: QUOTER_CONTRACT_ADDRESS,
- data: calldata,
-})
-
-return ethers.utils.defaultAbiCoder.decode(['uint256'], quoteCallReturnData)
-```
-
-With the quote and the route, we can now construct a trade using the route in addition to the output amount from a quote based on our input.
-Because we already know the expected output of our Trade, we do not have to check it again. We can use the `uncheckedTrade` function to create our Trade:
-
-```typescript
-import { Trade } from 'uniswap/v3-sdk'
-import { CurrencyAmount, TradeType } from '@uniswap/sdk-core'
-import JSBI from 'jsbi'
-
-const uncheckedTrade = Trade.createUncheckedTrade({
- route: swapRoute,
- inputAmount: CurrencyAmount.fromRawAmount(
- CurrentConfig.tokens.in,
- fromReadableAmount(
- CurrentConfig.tokens.amountIn,
- CurrentConfig.tokens.in.decimals
- )
- ),
- outputAmount: CurrencyAmount.fromRawAmount(
- CurrentConfig.tokens.out,
- JSBI.BigInt(amountOut)
- ),
- tradeType: TradeType.EXACT_INPUT,
-})
-```
-
-This example uses an exact input trade, but we can also construct a trade using exact output assuming we adapt our quoting code accordingly.
-
-## Executing a trade
-
-Once we have created a trade, we can now execute this trade with our provider. First, we must give the `SwapRouter` approval to spend our tokens for us:
-
-```typescript
-const tokenApproval = await getTokenTransferApproval(CurrentConfig.tokens.in)
-```
-
-You can find the approval function [here](https://github.com/Uniswap/examples/blob/main/v3-sdk/trading/src/libs/trading.ts#L151).
-We will use this function or similar implementations in most guides.
-
-Then, we set our options that define how much time and slippage can occur in our execution as well as the address to use for our wallet:
-
-```typescript
-import { SwapOptions } from '@uniswap/v3-sdk'
-import { Percent } from '@uniswap/sdk-core'
-
-const options: SwapOptions = {
- slippageTolerance: new Percent(50, 10_000), // 50 bips, or 0.50%
- deadline: Math.floor(Date.now() / 1000) + 60 * 20, // 20 minutes from the current Unix time
- recipient: walletAddress,
-}
-```
-
-The slippage of our trade is the maximum decrease from our calculated output amount that we are willing to accept for this trade.
-The deadline is the latest point in time when we want the transaction to go through.
-If we set this value too high, the transaction could be left waiting for days and we would need to pay gas fees to cancel it.
-
-Next, we use the `SwapRouter` class, a representation of the t1 [SwapRouter Contract](https://github.com/Uniswap/v3-periphery/blob/v1.0.0/contracts/SwapRouter.sol), to get the associated call parameters for our trade and options:
-
-```typescript
-import { SwapRouter } from '@uniswap/v3-sdk'
-
-const methodParameters = SwapRouter.swapCallParameters([uncheckedTrade], options)
-```
-
-Finally, we can construct a transaction from the method parameters and send the transaction:
-
-```typescript
-const tx = {
- data: methodParameters.calldata,
- to: SWAP_ROUTER_ADDRESS,
- value: methodParameters.value,
- from: walletAddress,
- maxFeePerGas: MAX_FEE_PER_GAS,
- maxPriorityFeePerGas: MAX_PRIORITY_FEE_PER_GAS,
-}
-
-const res = await wallet.sendTransaction(tx)
-```
-
-## Next Steps
-
-The resulting example allows for trading between any two ERC20 tokens, but this can be suboptimal for the best pricing and fees. To achieve the best possible price, we use the t1 auto router to route through pools to get an optimal cost. Our [routing](./03-routing.md) guide will show you how to use this router and execute optimal swaps.
diff --git a/docs/sdk/v3/guides/swaps/03-routing.md b/docs/sdk/v3/guides/swaps/03-routing.md
deleted file mode 100644
index 41d6bef9b..000000000
--- a/docs/sdk/v3/guides/swaps/03-routing.md
+++ /dev/null
@@ -1,187 +0,0 @@
----
-id: routing
-title: Routing a Swap
----
-
-## Introduction
-
-This guide will cover how to use t1's smart order router to compute optimal routes and execute swaps. Rather than trading between a single pool, smart routing may use multiple hops (as many as needed) to ensure that the end result of the swap is the optimal price. It is based on the [routing code example](https://github.com/Uniswap/examples/tree/main/v3-sdk/routing), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the guide's [README](https://github.com/Uniswap/examples/blob/main/v3-sdk/routing/README.md) and follow the setup instructions.
-
-:::info
-If you need a briefer on the SDK and to learn more about how these guides connect to the examples repository, please visit our [background](./01-background.md) page!
-:::
-
-In this example we will trade between **WETH and USDC**, but you can configure your example to use any two currencies and amount of input currency.
-
-The guide will **cover**:
-
-1. Creating a router instance
-2. Creating a route
-3. Swapping using a route
-
-At the end of the guide, we should be able to create a route and and execute a swap between any two currencies tokens using the example's included UI.
-
-For this guide, the following t1 packages are used:
-
-- [`@uniswap/v3-sdk`](https://www.npmjs.com/package/@uniswap/v3-sdk)
-- [`@uniswap/sdk-core`](https://www.npmjs.com/package/@uniswap/sdk-core)
-- [`@uniswap/smart-order-router`](https://www.npmjs.com/package/@uniswap/smart-order-router)
-
-The core code of this guide can be found in [`routing.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/routing/src/libs/routing.ts)
-
-The config, which we will use in some code snippets in this guides has this structure:
-
-```typescript
-import { Token } from '@uniswap/sdk-core'
-
-interface ExampleConfig {
- env: Environment
- rpc: {
- local: string
- mainnet: string
- }
- wallet: {
- address: string
- privateKey: string
- }
- tokens: {
- in: Token
- amountIn: number
- out: Token
- }
-}
-
-export const CurrentConfig: ExampleConfig = {...}
-```
-
-## Creating a router instance
-
-To compute our route, we will use the `@uniswap/smart-order-router` package, specifically the `AlphaRouter` class which requires a `chainId` and a `provider`. Note that routing is not supported for local forks, so we will use a mainnet provider even when swapping on a local fork:
-
-```typescript
-import { AlphaRouter, ChainId } from '@uniswap/smart-order-router'
-
-const provider = new ethers.providers.JsonRpcProvider(rpcUrl)
-
-const router = new AlphaRouter({
- chainId: ChainId.MAINNET,
- provider,
-})
-```
-
-## Creating a route
-
-We will use the [SwapRouter02](https://github.com/Uniswap/v3-periphery/blob/v1.0.0/contracts/SwapRouter.sol) for our trade.
-The `smart-order-router` package provides us with a `SwapOptionsSwapRouter02` interface, defining the wallet to use, slippage tolerance, and deadline for the transaction that we need to interact with the contract:
-
-```typescript
-import { SwapOptionsSwapRouter02, SwapType } from '@uniswap/smart-order-router'
-import { Percent } from '@uniswap/sdk-core'
-
-const options: SwapOptionsSwapRouter02 = {
- recipient: CurrentConfig.wallet.address,
- slippageTolerance: new Percent(50, 10_000),
- deadline: Math.floor(Date.now() / 1000 + 1800),
- type: SwapType.SWAP_ROUTER_02,
-}
-```
-
-Like explained in the [previous guide](./02-trading.md#executing-a-trade), it is important to set the parameters to sensible values.
-
-Using these options, we can now create a trade (`TradeType.EXACT_INPUT` or `TradeType.EXACT_OUTPUT`) with the currency and the input amount to use to get a quote. For this example, we'll use an `EXACT_INPUT` trade to get a quote outputted in the quote currency.
-
-```typescript
-import { CurrencyAmount, TradeType } from '@uniswap/sdk-core'
-
-const rawTokenAmountIn: JSBI = fromReadableAmount(
- CurrentConfig.currencies.amountIn,
- CurrentConfig.currencies.in.decimals
- )
-
-const route = await router.route(
- CurrencyAmount.fromRawAmount(
- CurrentConfig.currencies.in,
- rawTokenAmountIn
- ),
- CurrentConfig.currencies.out,
- TradeType.EXACT_INPUT,
- options
-)
-```
-
-The `fromReadableAmount` function calculates the amount of tokens in the Token's smallest unit from the full unit and the Token's decimals:
-
-```typescript title="src/libs/conversion.ts"
-export function fromReadableAmount(amount: number, decimals: number): JSBI {
- const extraDigits = Math.pow(10, countDecimals(amount))
- const adjustedAmount = amount * extraDigits
- return JSBI.divide(
- JSBI.multiply(
- JSBI.BigInt(adjustedAmount),
- JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(decimals))
- ),
- JSBI.BigInt(extraDigits)
- )
-}
-```
-
-`route` and `route.methodParameters` are *optional* as the request can fail, for example if **no route exists** between the two Tokens or because of networking issues.
-We check if the call was succesful:
-
-```typescript
-if (!route || !route.methodParameters) {
- // Handle failed request
-}
-```
-
-Depending on our preferences and reason for the issue we could retry the request or throw an Error.
-
-## Swapping using a route
-
-First, we need to give approval to the `SwapRouter` smart contract to spend our tokens for us:
-
-```typescript
-import { ethers } from 'ethers'
-...
-
-const wallet = new ethers.Wallet(privateKey, provider)
-const tokenContract = new ethers.Contract(
- CurrentConfig.tokens.in.address,
- ERC20ABI,
- wallet
-)
-const tokenApproval = await tokenContract.approve(
- V3_SWAP_ROUTER_ADDRESS,
- ethers.BigNumber.from(rawTokenAmountIn.toString())
-)
-```
-
-To be able to spend the tokens of a wallet, a smart contract first needs to get an approval from that wallet.
-ERC20 tokens have an `approve` function that accepts the address of the smart contract that we want to allow spending our tokens and the amount the smart contract should be allowed to spend.
-
-We can get the **V3_SWAP_ROUTER_ADDRESS** for our chain from [Github](https://github.com/Uniswap/v3-periphery/blob/main/deploys.md).
-Keep in mind that different chains might have **different deployment addresses** for the same contracts.
-The deployment address for local forks of a network are the same as in the network you forked, so for a **fork of mainnet** it would be the address for **Mainnet**.
-
-We need to wait one block for the approval transaction to be included by the blockchain.
-
-Once the approval has been granted, we can now execute the trade using the route's computed calldata, values, and gas values:
-
-```typescript
-const txRes = await wallet.sendTransaction({
- data: route.methodParameters.calldata,
- to: V3_SWAP_ROUTER_ADDRESS,
- value: route.methodParameters.value,
- from: wallet.address,
- maxFeePerGas: MAX_FEE_PER_GAS,
- maxPriorityFeePerGas: MAX_PRIORITY_FEE_PER_GAS,
-})
-```
-
-After swapping, you should see the currency balances update in the UI shortly after the block is confirmed.
-
-You can find the full code in [`routing.ts`](https://github.com/Uniswap/examples/blob/main/v3-sdk/routing/src/libs/routing.ts).
-
-## Next Steps
-
-Now that you're familiar with trading, consider checking out our next guides on [pooling liquidity](../liquidity/01-position-data.md) to t1!
diff --git a/docs/sdk/v3/guides/swaps/_category_.json b/docs/sdk/v3/guides/swaps/_category_.json
deleted file mode 100644
index 145573eb1..000000000
--- a/docs/sdk/v3/guides/swaps/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Swaps",
- "position": 4,
- "collapsed": true
-}
diff --git a/docs/sdk/v3/overview.md b/docs/sdk/v3/overview.md
deleted file mode 100644
index 7ebb9a707..000000000
--- a/docs/sdk/v3/overview.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-id: overview
-sidebar_position: 1
-title: Overview
----
-# The t1 V3 SDK
-
-> **Welcome to the V3 t1 SDK!**
-
-The t1 V3 SDK provides abstractions to assist you with interacting with the t1 V3 smart contracts in a Typescript/Javascript environment (e.g. websites, node scripts). It makes uses of the [**Core SDK**](../core/overview.md) to gain access to abstractions that are common amongst the t1 SDKs. With the SDK, you can manipulate data that has been queried from the [EVM](https://ethereum.org/en/developers/docs/evm/) using libraries that assist with needs such as data modeling, protection from rounding errors, and compile time enforced typing.
-
-To begin, we recommend looking at our [**Guides**](./guides/01-background.md) which include [runnable examples](https://github.com/Uniswap/examples/tree/main/v3-sdk) and walkthroughs of core usages. These guides will help you better understand how to use the SDK and integrate it into your application.
-
-For complete documentation of the SDK's offerings, see the [**Technical Reference**](./reference/overview.md).
-
-## Installation
-
-To interact with the V3 SDK we recommend installing though npm:
-
-```bash
-npm i --save @uniswap/v3-sdk
-npm i --save @uniswap/sdk-core
-```
-
-## Developer Links
-
-- [**V3 SDK Github Repo**](https://github.com/Uniswap/v3-sdk)
-- [**Core SDK Github Repo**](https://github.com/Uniswap/sdk-core)
-- [**V3 SDK NPM Package**](https://www.npmjs.com/package/@uniswap/v3-sdk)
-
-[](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3A%22Unit+Tests%22)
-[](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3ALint)
-[](https://www.npmjs.com/package/@uniswap/v3-sdk/v/latest)
-[](https://bundlephobia.com/result?p=@uniswap/v3-sdk@latest)
-[](https://discord.com/channels/597638925346930701/607978109089611786)
diff --git a/docs/sdk/v3/reference/_category_.json b/docs/sdk/v3/reference/_category_.json
deleted file mode 100644
index 19b021994..000000000
--- a/docs/sdk/v3/reference/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Technical Reference",
- "position": 3,
- "collapsed": true
-}
diff --git a/docs/sdk/v3/reference/classes/FullMath.md b/docs/sdk/v3/reference/classes/FullMath.md
deleted file mode 100644
index 2d8adca90..000000000
--- a/docs/sdk/v3/reference/classes/FullMath.md
+++ /dev/null
@@ -1,47 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / FullMath
-
-# Class: FullMath
-
-## Table of contents
-
-### Constructors
-
-- [constructor](FullMath.md#constructor)
-
-### Methods
-
-- [mulDivRoundingUp](FullMath.md#muldivroundingup)
-
-## Constructors
-
-### constructor
-
-• `Private` **new FullMath**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[utils/fullMath.ts:8](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/fullMath.ts#L8)
-
-## Methods
-
-### mulDivRoundingUp
-
-▸ `Static` **mulDivRoundingUp**(`a`, `b`, `denominator`): `default`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `a` | `default` |
-| `b` | `default` |
-| `denominator` | `default` |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/fullMath.ts:10](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/fullMath.ts#L10)
diff --git a/docs/sdk/v3/reference/classes/LiquidityMath.md b/docs/sdk/v3/reference/classes/LiquidityMath.md
deleted file mode 100644
index 62e4ed5fa..000000000
--- a/docs/sdk/v3/reference/classes/LiquidityMath.md
+++ /dev/null
@@ -1,46 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / LiquidityMath
-
-# Class: LiquidityMath
-
-## Table of contents
-
-### Constructors
-
-- [constructor](LiquidityMath.md#constructor)
-
-### Methods
-
-- [addDelta](LiquidityMath.md#adddelta)
-
-## Constructors
-
-### constructor
-
-• `Private` **new LiquidityMath**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[utils/liquidityMath.ts:8](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/liquidityMath.ts#L8)
-
-## Methods
-
-### addDelta
-
-▸ `Static` **addDelta**(`x`, `y`): `default`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `x` | `default` |
-| `y` | `default` |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/liquidityMath.ts:10](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/liquidityMath.ts#L10)
diff --git a/docs/sdk/v3/reference/classes/Multicall.md b/docs/sdk/v3/reference/classes/Multicall.md
deleted file mode 100644
index 7c73e792d..000000000
--- a/docs/sdk/v3/reference/classes/Multicall.md
+++ /dev/null
@@ -1,59 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / Multicall
-
-# Class: Multicall
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Multicall.md#constructor)
-
-### Properties
-
-- [INTERFACE](Multicall.md#interface)
-
-### Methods
-
-- [encodeMulticall](Multicall.md#encodemulticall)
-
-## Constructors
-
-### constructor
-
-• `Private` **new Multicall**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[multicall.ts:10](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/multicall.ts#L10)
-
-## Properties
-
-### INTERFACE
-
-▪ `Static` **INTERFACE**: `Interface`
-
-#### Defined in
-
-[multicall.ts:5](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/multicall.ts#L5)
-
-## Methods
-
-### encodeMulticall
-
-▸ `Static` **encodeMulticall**(`calldatas`): `string`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `calldatas` | `string` \| `string`[] |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[multicall.ts:12](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/multicall.ts#L12)
diff --git a/docs/sdk/v3/reference/classes/NoTickDataProvider.md b/docs/sdk/v3/reference/classes/NoTickDataProvider.md
deleted file mode 100644
index 8e6a71bd7..000000000
--- a/docs/sdk/v3/reference/classes/NoTickDataProvider.md
+++ /dev/null
@@ -1,95 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / NoTickDataProvider
-
-# Class: NoTickDataProvider
-
-This tick data provider does not know how to fetch any tick data. It throws whenever it is required. Useful if you
-do not need to load tick data for your use case.
-
-## Implements
-
-- [`TickDataProvider`](../interfaces/TickDataProvider.md)
-
-## Table of contents
-
-### Constructors
-
-- [constructor](NoTickDataProvider.md#constructor)
-
-### Properties
-
-- [ERROR\_MESSAGE](NoTickDataProvider.md#error_message)
-
-### Methods
-
-- [getTick](NoTickDataProvider.md#gettick)
-- [nextInitializedTickWithinOneWord](NoTickDataProvider.md#nextinitializedtickwithinoneword)
-
-## Constructors
-
-### constructor
-
-• **new NoTickDataProvider**()
-
-## Properties
-
-### ERROR\_MESSAGE
-
-▪ `Static` `Private` **ERROR\_MESSAGE**: `string` = `'No tick data provider was given'`
-
-#### Defined in
-
-[entities/tickDataProvider.ts:27](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickDataProvider.ts#L27)
-
-## Methods
-
-### getTick
-
-▸ **getTick**(`_tick`): `Promise`<{ `liquidityNet`: `BigintIsh` }\>
-
-Return information corresponding to a specific tick
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `_tick` | `number` | the tick to load |
-
-#### Returns
-
-`Promise`<{ `liquidityNet`: `BigintIsh` }\>
-
-#### Implementation of
-
-[TickDataProvider](../interfaces/TickDataProvider.md).[getTick](../interfaces/TickDataProvider.md#gettick)
-
-#### Defined in
-
-[entities/tickDataProvider.ts:28](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickDataProvider.ts#L28)
-
-___
-
-### nextInitializedTickWithinOneWord
-
-▸ **nextInitializedTickWithinOneWord**(`_tick`, `_lte`, `_tickSpacing`): `Promise`<[`number`, `boolean`]\>
-
-Return the next tick that is initialized within a single word
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `_tick` | `number` | The current tick |
-| `_lte` | `boolean` | Whether the next tick should be lte the current tick |
-| `_tickSpacing` | `number` | The tick spacing of the pool |
-
-#### Returns
-
-`Promise`<[`number`, `boolean`]\>
-
-#### Implementation of
-
-[TickDataProvider](../interfaces/TickDataProvider.md).[nextInitializedTickWithinOneWord](../interfaces/TickDataProvider.md#nextinitializedtickwithinoneword)
-
-#### Defined in
-
-[entities/tickDataProvider.ts:32](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickDataProvider.ts#L32)
diff --git a/docs/sdk/v3/reference/classes/NonfungiblePositionManager.md b/docs/sdk/v3/reference/classes/NonfungiblePositionManager.md
deleted file mode 100644
index 98647689d..000000000
--- a/docs/sdk/v3/reference/classes/NonfungiblePositionManager.md
+++ /dev/null
@@ -1,191 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / NonfungiblePositionManager
-
-# Class: NonfungiblePositionManager
-
-## Table of contents
-
-### Constructors
-
-- [constructor](NonfungiblePositionManager.md#constructor)
-
-### Properties
-
-- [INTERFACE](NonfungiblePositionManager.md#interface)
-
-### Methods
-
-- [addCallParameters](NonfungiblePositionManager.md#addcallparameters)
-- [collectCallParameters](NonfungiblePositionManager.md#collectcallparameters)
-- [createCallParameters](NonfungiblePositionManager.md#createcallparameters)
-- [encodeCollect](NonfungiblePositionManager.md#encodecollect)
-- [encodeCreate](NonfungiblePositionManager.md#encodecreate)
-- [removeCallParameters](NonfungiblePositionManager.md#removecallparameters)
-- [safeTransferFromParameters](NonfungiblePositionManager.md#safetransferfromparameters)
-
-## Constructors
-
-### constructor
-
-• `Private` **new NonfungiblePositionManager**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:181](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L181)
-
-## Properties
-
-### INTERFACE
-
-▪ `Static` **INTERFACE**: `Interface`
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:176](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L176)
-
-## Methods
-
-### addCallParameters
-
-▸ `Static` **addCallParameters**(`position`, `options`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `position` | [`Position`](Position.md) |
-| `options` | [`AddLiquidityOptions`](../modules.md#addliquidityoptions) |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:199](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L199)
-
-___
-
-### collectCallParameters
-
-▸ `Static` **collectCallParameters**(`options`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | [`CollectOptions`](../interfaces/CollectOptions.md) |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:326](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L326)
-
-___
-
-### createCallParameters
-
-▸ `Static` **createCallParameters**(`pool`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `pool` | [`Pool`](Pool.md) |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:192](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L192)
-
-___
-
-### encodeCollect
-
-▸ `Static` `Private` **encodeCollect**(`options`): `string`[]
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | [`CollectOptions`](../interfaces/CollectOptions.md) |
-
-#### Returns
-
-`string`[]
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:286](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L286)
-
-___
-
-### encodeCreate
-
-▸ `Static` `Private` **encodeCreate**(`pool`): `string`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `pool` | [`Pool`](Pool.md) |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:183](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L183)
-
-___
-
-### removeCallParameters
-
-▸ `Static` **removeCallParameters**(`position`, `options`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-Produces the calldata for completely or partially exiting a position
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `position` | [`Position`](Position.md) | The position to exit |
-| `options` | [`RemoveLiquidityOptions`](../interfaces/RemoveLiquidityOptions.md) | Additional information necessary for generating the calldata |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-The call parameters
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:341](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L341)
-
-___
-
-### safeTransferFromParameters
-
-▸ `Static` **safeTransferFromParameters**(`options`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `options` | [`SafeTransferOptions`](../interfaces/SafeTransferOptions.md) |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:416](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L416)
diff --git a/docs/sdk/v3/reference/classes/Payments.md b/docs/sdk/v3/reference/classes/Payments.md
deleted file mode 100644
index b91ee96b6..000000000
--- a/docs/sdk/v3/reference/classes/Payments.md
+++ /dev/null
@@ -1,121 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / Payments
-
-# Class: Payments
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Payments.md#constructor)
-
-### Properties
-
-- [INTERFACE](Payments.md#interface)
-
-### Methods
-
-- [encodeFeeBips](Payments.md#encodefeebips)
-- [encodeRefundETH](Payments.md#encoderefundeth)
-- [encodeSweepToken](Payments.md#encodesweeptoken)
-- [encodeUnwrapWETH9](Payments.md#encodeunwrapweth9)
-
-## Constructors
-
-### constructor
-
-• `Private` **new Payments**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[payments.ts:25](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/payments.ts#L25)
-
-## Properties
-
-### INTERFACE
-
-▪ `Static` **INTERFACE**: `Interface`
-
-#### Defined in
-
-[payments.ts:20](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/payments.ts#L20)
-
-## Methods
-
-### encodeFeeBips
-
-▸ `Static` `Private` **encodeFeeBips**(`fee`): `string`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `fee` | `Percent` |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[payments.ts:27](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/payments.ts#L27)
-
-___
-
-### encodeRefundETH
-
-▸ `Static` **encodeRefundETH**(): `string`
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[payments.ts:73](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/payments.ts#L73)
-
-___
-
-### encodeSweepToken
-
-▸ `Static` **encodeSweepToken**(`token`, `amountMinimum`, `recipient`, `feeOptions?`): `string`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `token` | `Token` |
-| `amountMinimum` | `default` |
-| `recipient` | `string` |
-| `feeOptions?` | [`FeeOptions`](../interfaces/FeeOptions.md) |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[payments.ts:49](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/payments.ts#L49)
-
-___
-
-### encodeUnwrapWETH9
-
-▸ `Static` **encodeUnwrapWETH9**(`amountMinimum`, `recipient`, `feeOptions?`): `string`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `amountMinimum` | `default` |
-| `recipient` | `string` |
-| `feeOptions?` | [`FeeOptions`](../interfaces/FeeOptions.md) |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[payments.ts:31](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/payments.ts#L31)
diff --git a/docs/sdk/v3/reference/classes/Pool.md b/docs/sdk/v3/reference/classes/Pool.md
deleted file mode 100644
index f14b00d8a..000000000
--- a/docs/sdk/v3/reference/classes/Pool.md
+++ /dev/null
@@ -1,369 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / Pool
-
-# Class: Pool
-
-Represents a V3 pool
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Pool.md#constructor)
-
-### Properties
-
-- [\_token0Price](Pool.md#_token0price)
-- [\_token1Price](Pool.md#_token1price)
-- [fee](Pool.md#fee)
-- [liquidity](Pool.md#liquidity)
-- [sqrtRatioX96](Pool.md#sqrtratiox96)
-- [tickCurrent](Pool.md#tickcurrent)
-- [tickDataProvider](Pool.md#tickdataprovider)
-- [token0](Pool.md#token0)
-- [token1](Pool.md#token1)
-
-### Accessors
-
-- [chainId](Pool.md#chainid)
-- [tickSpacing](Pool.md#tickspacing)
-- [token0Price](Pool.md#token0price)
-- [token1Price](Pool.md#token1price)
-
-### Methods
-
-- [getInputAmount](Pool.md#getinputamount)
-- [getOutputAmount](Pool.md#getoutputamount)
-- [involvesToken](Pool.md#involvestoken)
-- [priceOf](Pool.md#priceof)
-- [swap](Pool.md#swap)
-- [getAddress](Pool.md#getaddress)
-
-## Constructors
-
-### constructor
-
-• **new Pool**(`tokenA`, `tokenB`, `fee`, `sqrtRatioX96`, `liquidity`, `tickCurrent`, `ticks?`)
-
-Construct a pool
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `tokenA` | `Token` | `undefined` | One of the tokens in the pool |
-| `tokenB` | `Token` | `undefined` | The other token in the pool |
-| `fee` | [`FeeAmount`](../enums/FeeAmount.md) | `undefined` | The fee in hundredths of a bips of the input amount of every swap that is collected by the pool |
-| `sqrtRatioX96` | `BigintIsh` | `undefined` | The sqrt of the current ratio of amounts of token1 to token0 |
-| `liquidity` | `BigintIsh` | `undefined` | The current value of in range liquidity |
-| `tickCurrent` | `number` | `undefined` | The current tick of the pool |
-| `ticks` | [`TickDataProvider`](../interfaces/TickDataProvider.md) \| ([`Tick`](Tick.md) \| [`TickConstructorArgs`](../interfaces/TickConstructorArgs.md))[] | `NO_TICK_DATA_PROVIDER_DEFAULT` | The current state of the pool ticks or a data provider that can return tick data |
-
-#### Defined in
-
-[entities/pool.ts:70](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L70)
-
-## Properties
-
-### \_token0Price
-
-• `Private` `Optional` **\_token0Price**: `Price`<`Token`, `Token`\>
-
-#### Defined in
-
-[entities/pool.ts:41](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L41)
-
-___
-
-### \_token1Price
-
-• `Private` `Optional` **\_token1Price**: `Price`<`Token`, `Token`\>
-
-#### Defined in
-
-[entities/pool.ts:42](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L42)
-
-___
-
-### fee
-
-• `Readonly` **fee**: [`FeeAmount`](../enums/FeeAmount.md)
-
-#### Defined in
-
-[entities/pool.ts:35](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L35)
-
-___
-
-### liquidity
-
-• `Readonly` **liquidity**: `default`
-
-#### Defined in
-
-[entities/pool.ts:37](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L37)
-
-___
-
-### sqrtRatioX96
-
-• `Readonly` **sqrtRatioX96**: `default`
-
-#### Defined in
-
-[entities/pool.ts:36](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L36)
-
-___
-
-### tickCurrent
-
-• `Readonly` **tickCurrent**: `number`
-
-#### Defined in
-
-[entities/pool.ts:38](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L38)
-
-___
-
-### tickDataProvider
-
-• `Readonly` **tickDataProvider**: [`TickDataProvider`](../interfaces/TickDataProvider.md)
-
-#### Defined in
-
-[entities/pool.ts:39](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L39)
-
-___
-
-### token0
-
-• `Readonly` **token0**: `Token`
-
-#### Defined in
-
-[entities/pool.ts:33](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L33)
-
-___
-
-### token1
-
-• `Readonly` **token1**: `Token`
-
-#### Defined in
-
-[entities/pool.ts:34](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L34)
-
-## Accessors
-
-### chainId
-
-• `get` **chainId**(): `number`
-
-Returns the chain ID of the tokens in the pool.
-
-#### Returns
-
-`number`
-
-#### Defined in
-
-[entities/pool.ts:149](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L149)
-
-___
-
-### tickSpacing
-
-• `get` **tickSpacing**(): `number`
-
-#### Returns
-
-`number`
-
-#### Defined in
-
-[entities/pool.ts:317](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L317)
-
-___
-
-### token0Price
-
-• `get` **token0Price**(): `Price`<`Token`, `Token`\>
-
-Returns the current mid price of the pool in terms of token0, i.e. the ratio of token1 over token0
-
-#### Returns
-
-`Price`<`Token`, `Token`\>
-
-#### Defined in
-
-[entities/pool.ts:109](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L109)
-
-___
-
-### token1Price
-
-• `get` **token1Price**(): `Price`<`Token`, `Token`\>
-
-Returns the current mid price of the pool in terms of token1, i.e. the ratio of token0 over token1
-
-#### Returns
-
-`Price`<`Token`, `Token`\>
-
-#### Defined in
-
-[entities/pool.ts:124](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L124)
-
-## Methods
-
-### getInputAmount
-
-▸ **getInputAmount**(`outputAmount`, `sqrtPriceLimitX96?`): `Promise`<[`CurrencyAmount`<`Token`\>, [`Pool`](Pool.md)]\>
-
-Given a desired output amount of a token, return the computed input amount and a pool with state updated after the trade
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `outputAmount` | `CurrencyAmount`<`Token`\> | the output amount for which to quote the input amount |
-| `sqrtPriceLimitX96?` | `default` | The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap |
-
-#### Returns
-
-`Promise`<[`CurrencyAmount`<`Token`\>, [`Pool`](Pool.md)]\>
-
-The input amount and the pool with updated state
-
-#### Defined in
-
-[entities/pool.ts:185](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L185)
-
-___
-
-### getOutputAmount
-
-▸ **getOutputAmount**(`inputAmount`, `sqrtPriceLimitX96?`): `Promise`<[`CurrencyAmount`<`Token`\>, [`Pool`](Pool.md)]\>
-
-Given an input amount of a token, return the computed output amount, and a pool with state updated after the trade
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `inputAmount` | `CurrencyAmount`<`Token`\> | The input amount for which to quote the output amount |
-| `sqrtPriceLimitX96?` | `default` | The Q64.96 sqrt price limit |
-
-#### Returns
-
-`Promise`<[`CurrencyAmount`<`Token`\>, [`Pool`](Pool.md)]\>
-
-The output amount and the pool with updated state
-
-#### Defined in
-
-[entities/pool.ts:159](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L159)
-
-___
-
-### involvesToken
-
-▸ **involvesToken**(`token`): `boolean`
-
-Returns true if the token is either token0 or token1
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `token` | `Token` | The token to check |
-
-#### Returns
-
-`boolean`
-
-True if token is either token0 or token
-
-#### Defined in
-
-[entities/pool.ts:102](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L102)
-
-___
-
-### priceOf
-
-▸ **priceOf**(`token`): `Price`<`Token`, `Token`\>
-
-Return the price of the given token in terms of the other token in the pool.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `token` | `Token` | The token to return price of |
-
-#### Returns
-
-`Price`<`Token`, `Token`\>
-
-The price of the given token, in terms of the other.
-
-#### Defined in
-
-[entities/pool.ts:141](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L141)
-
-___
-
-### swap
-
-▸ `Private` **swap**(`zeroForOne`, `amountSpecified`, `sqrtPriceLimitX96?`): `Promise`<{ `amountCalculated`: `default` ; `liquidity`: `default` ; `sqrtRatioX96`: `default` ; `tickCurrent`: `number` }\>
-
-Executes a swap
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `zeroForOne` | `boolean` | Whether the amount in is token0 or token1 |
-| `amountSpecified` | `default` | The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative) |
-| `sqrtPriceLimitX96?` | `default` | The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap |
-
-#### Returns
-
-`Promise`<{ `amountCalculated`: `default` ; `liquidity`: `default` ; `sqrtRatioX96`: `default` ; `tickCurrent`: `number` }\>
-
-amountCalculated
-
-sqrtRatioX96
-
-liquidity
-
-tickCurrent
-
-#### Defined in
-
-[entities/pool.ts:215](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L215)
-
-___
-
-### getAddress
-
-▸ `Static` **getAddress**(`tokenA`, `tokenB`, `fee`, `initCodeHashManualOverride?`, `factoryAddressOverride?`): `string`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `tokenA` | `Token` |
-| `tokenB` | `Token` |
-| `fee` | [`FeeAmount`](../enums/FeeAmount.md) |
-| `initCodeHashManualOverride?` | `string` |
-| `factoryAddressOverride?` | `string` |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[entities/pool.ts:44](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/pool.ts#L44)
diff --git a/docs/sdk/v3/reference/classes/Position.md b/docs/sdk/v3/reference/classes/Position.md
deleted file mode 100644
index b50c3c84f..000000000
--- a/docs/sdk/v3/reference/classes/Position.md
+++ /dev/null
@@ -1,374 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / Position
-
-# Class: Position
-
-Represents a position on a t1 V3 Pool
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Position.md#constructor)
-
-### Properties
-
-- [\_mintAmounts](Position.md#_mintamounts)
-- [\_token0Amount](Position.md#_token0amount)
-- [\_token1Amount](Position.md#_token1amount)
-- [liquidity](Position.md#liquidity)
-- [pool](Position.md#pool)
-- [tickLower](Position.md#ticklower)
-- [tickUpper](Position.md#tickupper)
-
-### Accessors
-
-- [amount0](Position.md#amount0)
-- [amount1](Position.md#amount1)
-- [mintAmounts](Position.md#mintamounts)
-- [token0PriceLower](Position.md#token0pricelower)
-- [token0PriceUpper](Position.md#token0priceupper)
-
-### Methods
-
-- [burnAmountsWithSlippage](Position.md#burnamountswithslippage)
-- [mintAmountsWithSlippage](Position.md#mintamountswithslippage)
-- [ratiosAfterSlippage](Position.md#ratiosafterslippage)
-- [fromAmount0](Position.md#fromamount0)
-- [fromAmount1](Position.md#fromamount1)
-- [fromAmounts](Position.md#fromamounts)
-
-## Constructors
-
-### constructor
-
-• **new Position**(`__namedParameters`)
-
-Constructs a position for a given pool with the given liquidity
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `__namedParameters` | `PositionConstructorArgs` |
-
-#### Defined in
-
-[entities/position.ts:40](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L40)
-
-## Properties
-
-### \_mintAmounts
-
-• `Private` **\_mintAmounts**: ``null`` \| `Readonly`<{ `amount0`: `default` ; `amount1`: `default` }\> = `null`
-
-#### Defined in
-
-[entities/position.ts:31](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L31)
-
-___
-
-### \_token0Amount
-
-• `Private` **\_token0Amount**: ``null`` \| `CurrencyAmount`<`Token`\> = `null`
-
-#### Defined in
-
-[entities/position.ts:29](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L29)
-
-___
-
-### \_token1Amount
-
-• `Private` **\_token1Amount**: ``null`` \| `CurrencyAmount`<`Token`\> = `null`
-
-#### Defined in
-
-[entities/position.ts:30](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L30)
-
-___
-
-### liquidity
-
-• `Readonly` **liquidity**: `default`
-
-#### Defined in
-
-[entities/position.ts:26](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L26)
-
-___
-
-### pool
-
-• `Readonly` **pool**: [`Pool`](Pool.md)
-
-#### Defined in
-
-[entities/position.ts:23](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L23)
-
-___
-
-### tickLower
-
-• `Readonly` **tickLower**: `number`
-
-#### Defined in
-
-[entities/position.ts:24](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L24)
-
-___
-
-### tickUpper
-
-• `Readonly` **tickUpper**: `number`
-
-#### Defined in
-
-[entities/position.ts:25](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L25)
-
-## Accessors
-
-### amount0
-
-• `get` **amount0**(): `CurrencyAmount`<`Token`\>
-
-Returns the amount of token0 that this position's liquidity could be burned for at the current pool price
-
-#### Returns
-
-`CurrencyAmount`<`Token`\>
-
-#### Defined in
-
-[entities/position.ts:68](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L68)
-
-___
-
-### amount1
-
-• `get` **amount1**(): `CurrencyAmount`<`Token`\>
-
-Returns the amount of token1 that this position's liquidity could be burned for at the current pool price
-
-#### Returns
-
-`CurrencyAmount`<`Token`\>
-
-#### Defined in
-
-[entities/position.ts:100](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L100)
-
-___
-
-### mintAmounts
-
-• `get` **mintAmounts**(): `Readonly`<{ `amount0`: `default` ; `amount1`: `default` }\>
-
-Returns the minimum amounts that must be sent in order to mint the amount of liquidity held by the position at
-the current price for the pool
-
-#### Returns
-
-`Readonly`<{ `amount0`: `default` ; `amount1`: `default` }\>
-
-#### Defined in
-
-[entities/position.ts:258](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L258)
-
-___
-
-### token0PriceLower
-
-• `get` **token0PriceLower**(): `Price`<`Token`, `Token`\>
-
-Returns the price of token0 at the lower tick
-
-#### Returns
-
-`Price`<`Token`, `Token`\>
-
-#### Defined in
-
-[entities/position.ts:54](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L54)
-
-___
-
-### token0PriceUpper
-
-• `get` **token0PriceUpper**(): `Price`<`Token`, `Token`\>
-
-Returns the price of token0 at the upper tick
-
-#### Returns
-
-`Price`<`Token`, `Token`\>
-
-#### Defined in
-
-[entities/position.ts:61](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L61)
-
-## Methods
-
-### burnAmountsWithSlippage
-
-▸ **burnAmountsWithSlippage**(`slippageTolerance`): `Readonly`<{ `amount0`: `default` ; `amount1`: `default` }\>
-
-Returns the minimum amounts that should be requested in order to safely burn the amount of liquidity held by the
-position with the given slippage tolerance
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `slippageTolerance` | `Percent` | tolerance of unfavorable slippage from the current price |
-
-#### Returns
-
-`Readonly`<{ `amount0`: `default` ; `amount1`: `default` }\>
-
-The amounts, with slippage
-
-#### Defined in
-
-[entities/position.ts:213](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L213)
-
-___
-
-### mintAmountsWithSlippage
-
-▸ **mintAmountsWithSlippage**(`slippageTolerance`): `Readonly`<{ `amount0`: `default` ; `amount1`: `default` }\>
-
-Returns the minimum amounts that must be sent in order to safely mint the amount of liquidity held by the position
-with the given slippage tolerance
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `slippageTolerance` | `Percent` | Tolerance of unfavorable slippage from the current price |
-
-#### Returns
-
-`Readonly`<{ `amount0`: `default` ; `amount1`: `default` }\>
-
-The amounts, with slippage
-
-#### Defined in
-
-[entities/position.ts:157](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L157)
-
-___
-
-### ratiosAfterSlippage
-
-▸ `Private` **ratiosAfterSlippage**(`slippageTolerance`): `Object`
-
-Returns the lower and upper sqrt ratios if the price 'slips' up to slippage tolerance percentage
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `slippageTolerance` | `Percent` | The amount by which the price can 'slip' before the transaction will revert |
-
-#### Returns
-
-`Object`
-
-The sqrt ratios after slippage
-
-| Name | Type |
-| :------ | :------ |
-| `sqrtRatioX96Lower` | `default` |
-| `sqrtRatioX96Upper` | `default` |
-
-#### Defined in
-
-[entities/position.ts:134](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L134)
-
-___
-
-### fromAmount0
-
-▸ `Static` **fromAmount0**(`__namedParameters`): [`Position`](Position.md)
-
-Computes a position with the maximum amount of liquidity received for a given amount of token0, assuming an unlimited amount of token1
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `__namedParameters` | `Object` |
-| `__namedParameters.amount0` | `BigintIsh` |
-| `__namedParameters.pool` | [`Pool`](Pool.md) |
-| `__namedParameters.tickLower` | `number` |
-| `__namedParameters.tickUpper` | `number` |
-| `__namedParameters.useFullPrecision` | `boolean` |
-
-#### Returns
-
-[`Position`](Position.md)
-
-The position
-
-#### Defined in
-
-[entities/position.ts:354](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L354)
-
-___
-
-### fromAmount1
-
-▸ `Static` **fromAmount1**(`__namedParameters`): [`Position`](Position.md)
-
-Computes a position with the maximum amount of liquidity received for a given amount of token1, assuming an unlimited amount of token0
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `__namedParameters` | `Object` |
-| `__namedParameters.amount1` | `BigintIsh` |
-| `__namedParameters.pool` | [`Pool`](Pool.md) |
-| `__namedParameters.tickLower` | `number` |
-| `__namedParameters.tickUpper` | `number` |
-
-#### Returns
-
-[`Position`](Position.md)
-
-The position
-
-#### Defined in
-
-[entities/position.ts:378](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L378)
-
-___
-
-### fromAmounts
-
-▸ `Static` **fromAmounts**(`__namedParameters`): [`Position`](Position.md)
-
-Computes the maximum amount of liquidity received for a given amount of token0, token1,
-and the prices at the tick boundaries.
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `__namedParameters` | `Object` |
-| `__namedParameters.amount0` | `BigintIsh` |
-| `__namedParameters.amount1` | `BigintIsh` |
-| `__namedParameters.pool` | [`Pool`](Pool.md) |
-| `__namedParameters.tickLower` | `number` |
-| `__namedParameters.tickUpper` | `number` |
-| `__namedParameters.useFullPrecision` | `boolean` |
-
-#### Returns
-
-[`Position`](Position.md)
-
-The amount of liquidity for the position
-
-#### Defined in
-
-[entities/position.ts:312](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/position.ts#L312)
diff --git a/docs/sdk/v3/reference/classes/PositionLibrary.md b/docs/sdk/v3/reference/classes/PositionLibrary.md
deleted file mode 100644
index 0bf2239e3..000000000
--- a/docs/sdk/v3/reference/classes/PositionLibrary.md
+++ /dev/null
@@ -1,49 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / PositionLibrary
-
-# Class: PositionLibrary
-
-## Table of contents
-
-### Constructors
-
-- [constructor](PositionLibrary.md#constructor)
-
-### Methods
-
-- [getTokensOwed](PositionLibrary.md#gettokensowed)
-
-## Constructors
-
-### constructor
-
-• `Private` **new PositionLibrary**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[utils/position.ts:10](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/position.ts#L10)
-
-## Methods
-
-### getTokensOwed
-
-▸ `Static` **getTokensOwed**(`feeGrowthInside0LastX128`, `feeGrowthInside1LastX128`, `liquidity`, `feeGrowthInside0X128`, `feeGrowthInside1X128`): `default`[]
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `feeGrowthInside0LastX128` | `default` |
-| `feeGrowthInside1LastX128` | `default` |
-| `liquidity` | `default` |
-| `feeGrowthInside0X128` | `default` |
-| `feeGrowthInside1X128` | `default` |
-
-#### Returns
-
-`default`[]
-
-#### Defined in
-
-[utils/position.ts:13](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/position.ts#L13)
diff --git a/docs/sdk/v3/reference/classes/Route.md b/docs/sdk/v3/reference/classes/Route.md
deleted file mode 100644
index f5d007b79..000000000
--- a/docs/sdk/v3/reference/classes/Route.md
+++ /dev/null
@@ -1,138 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / Route
-
-# Class: Route
-
-Represents a list of pools through which a swap can occur
-
-## Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token |
-| `TOutput` | extends `Currency` | The output token |
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Route.md#constructor)
-
-### Properties
-
-- [\_midPrice](Route.md#_midprice)
-- [input](Route.md#input)
-- [output](Route.md#output)
-- [pools](Route.md#pools)
-- [tokenPath](Route.md#tokenpath)
-
-### Accessors
-
-- [chainId](Route.md#chainid)
-- [midPrice](Route.md#midprice)
-
-## Constructors
-
-### constructor
-
-• **new Route**<`TInput`, `TOutput`\>(`pools`, `input`, `output`)
-
-Creates an instance of route.
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TInput` | extends `Currency` |
-| `TOutput` | extends `Currency` |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `pools` | [`Pool`](Pool.md)[] | An array of `Pool` objects, ordered by the route the swap will take |
-| `input` | `TInput` | The input token |
-| `output` | `TOutput` | The output token |
-
-#### Defined in
-
-[entities/route.ts:25](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/route.ts#L25)
-
-## Properties
-
-### \_midPrice
-
-• `Private` **\_midPrice**: ``null`` \| `Price`<`TInput`, `TOutput`\> = `null`
-
-#### Defined in
-
-[entities/route.ts:17](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/route.ts#L17)
-
-___
-
-### input
-
-• `Readonly` **input**: `TInput`
-
-#### Defined in
-
-[entities/route.ts:14](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/route.ts#L14)
-
-___
-
-### output
-
-• `Readonly` **output**: `TOutput`
-
-#### Defined in
-
-[entities/route.ts:15](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/route.ts#L15)
-
-___
-
-### pools
-
-• `Readonly` **pools**: [`Pool`](Pool.md)[]
-
-#### Defined in
-
-[entities/route.ts:12](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/route.ts#L12)
-
-___
-
-### tokenPath
-
-• `Readonly` **tokenPath**: `Token`[]
-
-#### Defined in
-
-[entities/route.ts:13](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/route.ts#L13)
-
-## Accessors
-
-### chainId
-
-• `get` **chainId**(): `number`
-
-#### Returns
-
-`number`
-
-#### Defined in
-
-[entities/route.ts:54](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/route.ts#L54)
-
-___
-
-### midPrice
-
-• `get` **midPrice**(): `Price`<`TInput`, `TOutput`\>
-
-Returns the mid price of the route
-
-#### Returns
-
-`Price`<`TInput`, `TOutput`\>
-
-#### Defined in
-
-[entities/route.ts:61](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/route.ts#L61)
diff --git a/docs/sdk/v3/reference/classes/SelfPermit.md b/docs/sdk/v3/reference/classes/SelfPermit.md
deleted file mode 100644
index 651e908de..000000000
--- a/docs/sdk/v3/reference/classes/SelfPermit.md
+++ /dev/null
@@ -1,60 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / SelfPermit
-
-# Class: SelfPermit
-
-## Table of contents
-
-### Constructors
-
-- [constructor](SelfPermit.md#constructor)
-
-### Properties
-
-- [INTERFACE](SelfPermit.md#interface)
-
-### Methods
-
-- [encodePermit](SelfPermit.md#encodepermit)
-
-## Constructors
-
-### constructor
-
-• `Private` **new SelfPermit**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[selfPermit.ts:34](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L34)
-
-## Properties
-
-### INTERFACE
-
-▪ `Static` **INTERFACE**: `Interface`
-
-#### Defined in
-
-[selfPermit.ts:29](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L29)
-
-## Methods
-
-### encodePermit
-
-▸ `Static` **encodePermit**(`token`, `options`): `string`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `token` | `Token` |
-| `options` | [`PermitOptions`](../modules.md#permitoptions) |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[selfPermit.ts:36](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L36)
diff --git a/docs/sdk/v3/reference/classes/SqrtPriceMath.md b/docs/sdk/v3/reference/classes/SqrtPriceMath.md
deleted file mode 100644
index 35924ddd6..000000000
--- a/docs/sdk/v3/reference/classes/SqrtPriceMath.md
+++ /dev/null
@@ -1,168 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / SqrtPriceMath
-
-# Class: SqrtPriceMath
-
-## Table of contents
-
-### Constructors
-
-- [constructor](SqrtPriceMath.md#constructor)
-
-### Methods
-
-- [getAmount0Delta](SqrtPriceMath.md#getamount0delta)
-- [getAmount1Delta](SqrtPriceMath.md#getamount1delta)
-- [getNextSqrtPriceFromAmount0RoundingUp](SqrtPriceMath.md#getnextsqrtpricefromamount0roundingup)
-- [getNextSqrtPriceFromAmount1RoundingDown](SqrtPriceMath.md#getnextsqrtpricefromamount1roundingdown)
-- [getNextSqrtPriceFromInput](SqrtPriceMath.md#getnextsqrtpricefrominput)
-- [getNextSqrtPriceFromOutput](SqrtPriceMath.md#getnextsqrtpricefromoutput)
-
-## Constructors
-
-### constructor
-
-• `Private` **new SqrtPriceMath**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[utils/sqrtPriceMath.ts:23](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/sqrtPriceMath.ts#L23)
-
-## Methods
-
-### getAmount0Delta
-
-▸ `Static` **getAmount0Delta**(`sqrtRatioAX96`, `sqrtRatioBX96`, `liquidity`, `roundUp`): `default`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sqrtRatioAX96` | `default` |
-| `sqrtRatioBX96` | `default` |
-| `liquidity` | `default` |
-| `roundUp` | `boolean` |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/sqrtPriceMath.ts:25](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/sqrtPriceMath.ts#L25)
-
-___
-
-### getAmount1Delta
-
-▸ `Static` **getAmount1Delta**(`sqrtRatioAX96`, `sqrtRatioBX96`, `liquidity`, `roundUp`): `default`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sqrtRatioAX96` | `default` |
-| `sqrtRatioBX96` | `default` |
-| `liquidity` | `default` |
-| `roundUp` | `boolean` |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/sqrtPriceMath.ts:38](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/sqrtPriceMath.ts#L38)
-
-___
-
-### getNextSqrtPriceFromAmount0RoundingUp
-
-▸ `Static` `Private` **getNextSqrtPriceFromAmount0RoundingUp**(`sqrtPX96`, `liquidity`, `amount`, `add`): `default`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sqrtPX96` | `default` |
-| `liquidity` | `default` |
-| `amount` | `default` |
-| `add` | `boolean` |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/sqrtPriceMath.ts:71](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/sqrtPriceMath.ts#L71)
-
-___
-
-### getNextSqrtPriceFromAmount1RoundingDown
-
-▸ `Static` `Private` **getNextSqrtPriceFromAmount1RoundingDown**(`sqrtPX96`, `liquidity`, `amount`, `add`): `default`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sqrtPX96` | `default` |
-| `liquidity` | `default` |
-| `amount` | `default` |
-| `add` | `boolean` |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/sqrtPriceMath.ts:100](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/sqrtPriceMath.ts#L100)
-
-___
-
-### getNextSqrtPriceFromInput
-
-▸ `Static` **getNextSqrtPriceFromInput**(`sqrtPX96`, `liquidity`, `amountIn`, `zeroForOne`): `default`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sqrtPX96` | `default` |
-| `liquidity` | `default` |
-| `amountIn` | `default` |
-| `zeroForOne` | `boolean` |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/sqrtPriceMath.ts:48](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/sqrtPriceMath.ts#L48)
-
-___
-
-### getNextSqrtPriceFromOutput
-
-▸ `Static` **getNextSqrtPriceFromOutput**(`sqrtPX96`, `liquidity`, `amountOut`, `zeroForOne`): `default`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sqrtPX96` | `default` |
-| `liquidity` | `default` |
-| `amountOut` | `default` |
-| `zeroForOne` | `boolean` |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/sqrtPriceMath.ts:57](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/sqrtPriceMath.ts#L57)
diff --git a/docs/sdk/v3/reference/classes/Staker.md b/docs/sdk/v3/reference/classes/Staker.md
deleted file mode 100644
index f275c0485..000000000
--- a/docs/sdk/v3/reference/classes/Staker.md
+++ /dev/null
@@ -1,167 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / Staker
-
-# Class: Staker
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Staker.md#constructor)
-
-### Properties
-
-- [INCENTIVE\_KEY\_ABI](Staker.md#incentive_key_abi)
-- [INTERFACE](Staker.md#interface)
-
-### Methods
-
-- [\_encodeIncentiveKey](Staker.md#_encodeincentivekey)
-- [collectRewards](Staker.md#collectrewards)
-- [encodeClaim](Staker.md#encodeclaim)
-- [encodeDeposit](Staker.md#encodedeposit)
-- [withdrawToken](Staker.md#withdrawtoken)
-
-## Constructors
-
-### constructor
-
-• `Protected` **new Staker**()
-
-#### Defined in
-
-[staker.ts:72](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L72)
-
-## Properties
-
-### INCENTIVE\_KEY\_ABI
-
-▪ `Static` `Private` **INCENTIVE\_KEY\_ABI**: `string` = `'tuple(address rewardToken, address pool, uint256 startTime, uint256 endTime, address refundee)'`
-
-#### Defined in
-
-[staker.ts:73](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L73)
-
-___
-
-### INTERFACE
-
-▪ `Static` **INTERFACE**: `Interface`
-
-#### Defined in
-
-[staker.ts:70](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L70)
-
-## Methods
-
-### \_encodeIncentiveKey
-
-▸ `Static` `Private` **_encodeIncentiveKey**(`incentiveKey`): `Object`
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `incentiveKey` | [`IncentiveKey`](../interfaces/IncentiveKey.md) | An `IncentiveKey` which represents a unique staking program. |
-
-#### Returns
-
-`Object`
-
-An encoded IncentiveKey to be read by ethers
-
-#### Defined in
-
-[staker.ts:194](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L194)
-
-___
-
-### collectRewards
-
-▸ `Static` **collectRewards**(`incentiveKeys`, `options`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-Note: A `tokenId` can be staked in many programs but to claim rewards and continue the program you must unstake, claim, and then restake.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `incentiveKeys` | [`IncentiveKey`](../interfaces/IncentiveKey.md) \| [`IncentiveKey`](../interfaces/IncentiveKey.md)[] | An IncentiveKey or array of IncentiveKeys that `tokenId` is staked in. Input an array of IncentiveKeys to claim rewards for each program. |
-| `options` | [`ClaimOptions`](../interfaces/ClaimOptions.md) | ClaimOptions to specify tokenId, recipient, and amount wanting to collect. Note that you can only specify one amount and one recipient across the various programs if you are collecting from multiple programs at once. |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Defined in
-
-[staker.ts:107](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L107)
-
-___
-
-### encodeClaim
-
-▸ `Static` `Private` **encodeClaim**(`incentiveKey`, `options`): `string`[]
-
-To claim rewards, must unstake and then claim.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `incentiveKey` | [`IncentiveKey`](../interfaces/IncentiveKey.md) | The unique identifier of a staking program. |
-| `options` | [`ClaimOptions`](../interfaces/ClaimOptions.md) | Options for producing the calldata to claim. Can't claim unless you unstake. |
-
-#### Returns
-
-`string`[]
-
-The calldatas for 'unstakeToken' and 'claimReward'.
-
-#### Defined in
-
-[staker.ts:82](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L82)
-
-___
-
-### encodeDeposit
-
-▸ `Static` **encodeDeposit**(`incentiveKeys`): `string`
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `incentiveKeys` | [`IncentiveKey`](../interfaces/IncentiveKey.md) \| [`IncentiveKey`](../interfaces/IncentiveKey.md)[] | A single IncentiveKey or array of IncentiveKeys to be encoded and used in the data parameter in `safeTransferFrom` |
-
-#### Returns
-
-`string`
-
-An IncentiveKey as a string
-
-#### Defined in
-
-[staker.ts:173](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L173)
-
-___
-
-### withdrawToken
-
-▸ `Static` **withdrawToken**(`incentiveKeys`, `withdrawOptions`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `incentiveKeys` | [`IncentiveKey`](../interfaces/IncentiveKey.md) \| [`IncentiveKey`](../interfaces/IncentiveKey.md)[] | A list of incentiveKeys to unstake from. Should include all incentiveKeys (unique staking programs) that `options.tokenId` is staked in. |
-| `withdrawOptions` | [`FullWithdrawOptions`](../modules.md#fullwithdrawoptions) | Options for producing claim calldata and withdraw calldata. Can't withdraw without unstaking all programs for `tokenId`. |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-Calldata for unstaking, claiming, and withdrawing.
-
-#### Defined in
-
-[staker.ts:136](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L136)
diff --git a/docs/sdk/v3/reference/classes/SwapMath.md b/docs/sdk/v3/reference/classes/SwapMath.md
deleted file mode 100644
index bbf32fb84..000000000
--- a/docs/sdk/v3/reference/classes/SwapMath.md
+++ /dev/null
@@ -1,49 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / SwapMath
-
-# Class: SwapMath
-
-## Table of contents
-
-### Constructors
-
-- [constructor](SwapMath.md#constructor)
-
-### Methods
-
-- [computeSwapStep](SwapMath.md#computeswapstep)
-
-## Constructors
-
-### constructor
-
-• `Private` **new SwapMath**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[utils/swapMath.ts:13](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/swapMath.ts#L13)
-
-## Methods
-
-### computeSwapStep
-
-▸ `Static` **computeSwapStep**(`sqrtRatioCurrentX96`, `sqrtRatioTargetX96`, `liquidity`, `amountRemaining`, `feePips`): [`default`, `default`, `default`, `default`]
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `sqrtRatioCurrentX96` | `default` |
-| `sqrtRatioTargetX96` | `default` |
-| `liquidity` | `default` |
-| `amountRemaining` | `default` |
-| `feePips` | [`FeeAmount`](../enums/FeeAmount.md) |
-
-#### Returns
-
-[`default`, `default`, `default`, `default`]
-
-#### Defined in
-
-[utils/swapMath.ts:15](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/swapMath.ts#L15)
diff --git a/docs/sdk/v3/reference/classes/SwapQuoter.md b/docs/sdk/v3/reference/classes/SwapQuoter.md
deleted file mode 100644
index 49c559e71..000000000
--- a/docs/sdk/v3/reference/classes/SwapQuoter.md
+++ /dev/null
@@ -1,82 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / SwapQuoter
-
-# Class: SwapQuoter
-
-Represents the t1 V3 QuoterV1 contract with a method for returning the formatted
-calldata needed to call the quoter contract.
-
-## Table of contents
-
-### Constructors
-
-- [constructor](SwapQuoter.md#constructor)
-
-### Properties
-
-- [V1INTERFACE](SwapQuoter.md#v1interface)
-- [V2INTERFACE](SwapQuoter.md#v2interface)
-
-### Methods
-
-- [quoteCallParameters](SwapQuoter.md#quotecallparameters)
-
-## Constructors
-
-### constructor
-
-• **new SwapQuoter**()
-
-## Properties
-
-### V1INTERFACE
-
-▪ `Static` **V1INTERFACE**: `Interface`
-
-#### Defined in
-
-[quoter.ts:37](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/quoter.ts#L37)
-
-___
-
-### V2INTERFACE
-
-▪ `Static` **V2INTERFACE**: `Interface`
-
-#### Defined in
-
-[quoter.ts:38](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/quoter.ts#L38)
-
-## Methods
-
-### quoteCallParameters
-
-▸ `Static` **quoteCallParameters**<`TInput`, `TOutput`\>(`route`, `amount`, `tradeType`, `options?`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-Produces the on-chain method name of the appropriate function within QuoterV2,
-and the relevant hex encoded parameters.
-
-#### Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20 |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20 |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `route` | [`Route`](Route.md)<`TInput`, `TOutput`\> | The swap route, a list of pools through which a swap can occur |
-| `amount` | `CurrencyAmount`<`TInput` \| `TOutput`\> | The amount of the quote, either an amount in, or an amount out |
-| `tradeType` | `TradeType` | The trade type, either exact input or exact output |
-| `options` | [`QuoteOptions`](../interfaces/QuoteOptions.md) | The optional params including price limit and Quoter contract switch |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-The formatted calldata
-
-#### Defined in
-
-[quoter.ts:51](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/quoter.ts#L51)
diff --git a/docs/sdk/v3/reference/classes/SwapRouter.md b/docs/sdk/v3/reference/classes/SwapRouter.md
deleted file mode 100644
index 68787b17f..000000000
--- a/docs/sdk/v3/reference/classes/SwapRouter.md
+++ /dev/null
@@ -1,64 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / SwapRouter
-
-# Class: SwapRouter
-
-Represents the t1 V3 SwapRouter, and has static methods for helping execute trades.
-
-## Table of contents
-
-### Constructors
-
-- [constructor](SwapRouter.md#constructor)
-
-### Properties
-
-- [INTERFACE](SwapRouter.md#interface)
-
-### Methods
-
-- [swapCallParameters](SwapRouter.md#swapcallparameters)
-
-## Constructors
-
-### constructor
-
-• `Private` **new SwapRouter**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[swapRouter.ts:57](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L57)
-
-## Properties
-
-### INTERFACE
-
-▪ `Static` **INTERFACE**: `Interface`
-
-#### Defined in
-
-[swapRouter.ts:52](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L52)
-
-## Methods
-
-### swapCallParameters
-
-▸ `Static` **swapCallParameters**(`trades`, `options`): [`MethodParameters`](../interfaces/MethodParameters.md)
-
-Produces the on-chain method name to call and the hex encoded parameters to pass as arguments for a given trade.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `trades` | [`Trade`](Trade.md)<`Currency`, `Currency`, `TradeType`\> \| [`Trade`](Trade.md)<`Currency`, `Currency`, `TradeType`\>[] | - |
-| `options` | [`SwapOptions`](../interfaces/SwapOptions.md) | options for the call parameters |
-
-#### Returns
-
-[`MethodParameters`](../interfaces/MethodParameters.md)
-
-#### Defined in
-
-[swapRouter.ts:64](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L64)
diff --git a/docs/sdk/v3/reference/classes/Tick.md b/docs/sdk/v3/reference/classes/Tick.md
deleted file mode 100644
index befa90a8f..000000000
--- a/docs/sdk/v3/reference/classes/Tick.md
+++ /dev/null
@@ -1,61 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / Tick
-
-# Class: Tick
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Tick.md#constructor)
-
-### Properties
-
-- [index](Tick.md#index)
-- [liquidityGross](Tick.md#liquiditygross)
-- [liquidityNet](Tick.md#liquiditynet)
-
-## Constructors
-
-### constructor
-
-• **new Tick**(`__namedParameters`)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `__namedParameters` | [`TickConstructorArgs`](../interfaces/TickConstructorArgs.md) |
-
-#### Defined in
-
-[entities/tick.ts:17](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tick.ts#L17)
-
-## Properties
-
-### index
-
-• `Readonly` **index**: `number`
-
-#### Defined in
-
-[entities/tick.ts:13](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tick.ts#L13)
-
-___
-
-### liquidityGross
-
-• `Readonly` **liquidityGross**: `default`
-
-#### Defined in
-
-[entities/tick.ts:14](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tick.ts#L14)
-
-___
-
-### liquidityNet
-
-• `Readonly` **liquidityNet**: `default`
-
-#### Defined in
-
-[entities/tick.ts:15](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tick.ts#L15)
diff --git a/docs/sdk/v3/reference/classes/TickLibrary.md b/docs/sdk/v3/reference/classes/TickLibrary.md
deleted file mode 100644
index 40fe49bec..000000000
--- a/docs/sdk/v3/reference/classes/TickLibrary.md
+++ /dev/null
@@ -1,51 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / TickLibrary
-
-# Class: TickLibrary
-
-## Table of contents
-
-### Constructors
-
-- [constructor](TickLibrary.md#constructor)
-
-### Methods
-
-- [getFeeGrowthInside](TickLibrary.md#getfeegrowthinside)
-
-## Constructors
-
-### constructor
-
-• `Private` **new TickLibrary**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[utils/tickLibrary.ts:25](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickLibrary.ts#L25)
-
-## Methods
-
-### getFeeGrowthInside
-
-▸ `Static` **getFeeGrowthInside**(`feeGrowthOutsideLower`, `feeGrowthOutsideUpper`, `tickLower`, `tickUpper`, `tickCurrent`, `feeGrowthGlobal0X128`, `feeGrowthGlobal1X128`): `default`[]
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `feeGrowthOutsideLower` | `FeeGrowthOutside` |
-| `feeGrowthOutsideUpper` | `FeeGrowthOutside` |
-| `tickLower` | `number` |
-| `tickUpper` | `number` |
-| `tickCurrent` | `number` |
-| `feeGrowthGlobal0X128` | `default` |
-| `feeGrowthGlobal1X128` | `default` |
-
-#### Returns
-
-`default`[]
-
-#### Defined in
-
-[utils/tickLibrary.ts:27](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickLibrary.ts#L27)
diff --git a/docs/sdk/v3/reference/classes/TickList.md b/docs/sdk/v3/reference/classes/TickList.md
deleted file mode 100644
index aa5b5c557..000000000
--- a/docs/sdk/v3/reference/classes/TickList.md
+++ /dev/null
@@ -1,185 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / TickList
-
-# Class: TickList
-
-Utility methods for interacting with sorted lists of ticks
-
-## Table of contents
-
-### Constructors
-
-- [constructor](TickList.md#constructor)
-
-### Methods
-
-- [binarySearch](TickList.md#binarysearch)
-- [getTick](TickList.md#gettick)
-- [isAtOrAboveLargest](TickList.md#isatorabovelargest)
-- [isBelowSmallest](TickList.md#isbelowsmallest)
-- [nextInitializedTick](TickList.md#nextinitializedtick)
-- [nextInitializedTickWithinOneWord](TickList.md#nextinitializedtickwithinoneword)
-- [validateList](TickList.md#validatelist)
-
-## Constructors
-
-### constructor
-
-• `Private` **new TickList**()
-
-Cannot be constructed
-
-#### Defined in
-
-[utils/tickList.ts:18](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickList.ts#L18)
-
-## Methods
-
-### binarySearch
-
-▸ `Static` `Private` **binarySearch**(`ticks`, `tick`): `number`
-
-Finds the largest tick in the list of ticks that is less than or equal to tick
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `ticks` | readonly [`Tick`](Tick.md)[] | list of ticks |
-| `tick` | `number` | tick to find the largest tick that is less than or equal to tick |
-
-#### Returns
-
-`number`
-
-#### Defined in
-
-[utils/tickList.ts:62](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickList.ts#L62)
-
-___
-
-### getTick
-
-▸ `Static` **getTick**(`ticks`, `index`): [`Tick`](Tick.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `ticks` | readonly [`Tick`](Tick.md)[] |
-| `index` | `number` |
-
-#### Returns
-
-[`Tick`](Tick.md)
-
-#### Defined in
-
-[utils/tickList.ts:50](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickList.ts#L50)
-
-___
-
-### isAtOrAboveLargest
-
-▸ `Static` **isAtOrAboveLargest**(`ticks`, `tick`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `ticks` | readonly [`Tick`](Tick.md)[] |
-| `tick` | `number` |
-
-#### Returns
-
-`boolean`
-
-#### Defined in
-
-[utils/tickList.ts:45](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickList.ts#L45)
-
-___
-
-### isBelowSmallest
-
-▸ `Static` **isBelowSmallest**(`ticks`, `tick`): `boolean`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `ticks` | readonly [`Tick`](Tick.md)[] |
-| `tick` | `number` |
-
-#### Returns
-
-`boolean`
-
-#### Defined in
-
-[utils/tickList.ts:40](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickList.ts#L40)
-
-___
-
-### nextInitializedTick
-
-▸ `Static` **nextInitializedTick**(`ticks`, `tick`, `lte`): [`Tick`](Tick.md)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `ticks` | readonly [`Tick`](Tick.md)[] |
-| `tick` | `number` |
-| `lte` | `boolean` |
-
-#### Returns
-
-[`Tick`](Tick.md)
-
-#### Defined in
-
-[utils/tickList.ts:83](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickList.ts#L83)
-
-___
-
-### nextInitializedTickWithinOneWord
-
-▸ `Static` **nextInitializedTickWithinOneWord**(`ticks`, `tick`, `lte`, `tickSpacing`): [`number`, `boolean`]
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `ticks` | readonly [`Tick`](Tick.md)[] |
-| `tick` | `number` |
-| `lte` | `boolean` |
-| `tickSpacing` | `number` |
-
-#### Returns
-
-[`number`, `boolean`]
-
-#### Defined in
-
-[utils/tickList.ts:101](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickList.ts#L101)
-
-___
-
-### validateList
-
-▸ `Static` **validateList**(`ticks`, `tickSpacing`): `void`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `ticks` | [`Tick`](Tick.md)[] |
-| `tickSpacing` | `number` |
-
-#### Returns
-
-`void`
-
-#### Defined in
-
-[utils/tickList.ts:20](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickList.ts#L20)
diff --git a/docs/sdk/v3/reference/classes/TickListDataProvider.md b/docs/sdk/v3/reference/classes/TickListDataProvider.md
deleted file mode 100644
index c27c686c0..000000000
--- a/docs/sdk/v3/reference/classes/TickListDataProvider.md
+++ /dev/null
@@ -1,105 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / TickListDataProvider
-
-# Class: TickListDataProvider
-
-A data provider for ticks that is backed by an in-memory array of ticks.
-
-## Implements
-
-- [`TickDataProvider`](../interfaces/TickDataProvider.md)
-
-## Table of contents
-
-### Constructors
-
-- [constructor](TickListDataProvider.md#constructor)
-
-### Properties
-
-- [ticks](TickListDataProvider.md#ticks)
-
-### Methods
-
-- [getTick](TickListDataProvider.md#gettick)
-- [nextInitializedTickWithinOneWord](TickListDataProvider.md#nextinitializedtickwithinoneword)
-
-## Constructors
-
-### constructor
-
-• **new TickListDataProvider**(`ticks`, `tickSpacing`)
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `ticks` | ([`Tick`](Tick.md) \| [`TickConstructorArgs`](../interfaces/TickConstructorArgs.md))[] |
-| `tickSpacing` | `number` |
-
-#### Defined in
-
-[entities/tickListDataProvider.ts:12](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickListDataProvider.ts#L12)
-
-## Properties
-
-### ticks
-
-• `Private` **ticks**: readonly [`Tick`](Tick.md)[]
-
-#### Defined in
-
-[entities/tickListDataProvider.ts:10](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickListDataProvider.ts#L10)
-
-## Methods
-
-### getTick
-
-▸ **getTick**(`tick`): `Promise`<{ `liquidityGross`: `BigintIsh` ; `liquidityNet`: `BigintIsh` }\>
-
-Return information corresponding to a specific tick
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `tick` | `number` | the tick to load |
-
-#### Returns
-
-`Promise`<{ `liquidityGross`: `BigintIsh` ; `liquidityNet`: `BigintIsh` }\>
-
-#### Implementation of
-
-[TickDataProvider](../interfaces/TickDataProvider.md).[getTick](../interfaces/TickDataProvider.md#gettick)
-
-#### Defined in
-
-[entities/tickListDataProvider.ts:18](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickListDataProvider.ts#L18)
-
-___
-
-### nextInitializedTickWithinOneWord
-
-▸ **nextInitializedTickWithinOneWord**(`tick`, `lte`, `tickSpacing`): `Promise`<[`number`, `boolean`]\>
-
-Return the next tick that is initialized within a single word
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `tick` | `number` | The current tick |
-| `lte` | `boolean` | Whether the next tick should be lte the current tick |
-| `tickSpacing` | `number` | The tick spacing of the pool |
-
-#### Returns
-
-`Promise`<[`number`, `boolean`]\>
-
-#### Implementation of
-
-[TickDataProvider](../interfaces/TickDataProvider.md).[nextInitializedTickWithinOneWord](../interfaces/TickDataProvider.md#nextinitializedtickwithinoneword)
-
-#### Defined in
-
-[entities/tickListDataProvider.ts:22](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickListDataProvider.ts#L22)
diff --git a/docs/sdk/v3/reference/classes/TickMath.md b/docs/sdk/v3/reference/classes/TickMath.md
deleted file mode 100644
index fefbc18a7..000000000
--- a/docs/sdk/v3/reference/classes/TickMath.md
+++ /dev/null
@@ -1,126 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / TickMath
-
-# Class: TickMath
-
-## Table of contents
-
-### Constructors
-
-- [constructor](TickMath.md#constructor)
-
-### Properties
-
-- [MAX\_SQRT\_RATIO](TickMath.md#max_sqrt_ratio)
-- [MAX\_TICK](TickMath.md#max_tick)
-- [MIN\_SQRT\_RATIO](TickMath.md#min_sqrt_ratio)
-- [MIN\_TICK](TickMath.md#min_tick)
-
-### Methods
-
-- [getSqrtRatioAtTick](TickMath.md#getsqrtratioattick)
-- [getTickAtSqrtRatio](TickMath.md#gettickatsqrtratio)
-
-## Constructors
-
-### constructor
-
-• `Private` **new TickMath**()
-
-Cannot be constructed.
-
-#### Defined in
-
-[utils/tickMath.ts:17](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickMath.ts#L17)
-
-## Properties
-
-### MAX\_SQRT\_RATIO
-
-▪ `Static` **MAX\_SQRT\_RATIO**: `default`
-
-The sqrt ratio corresponding to the maximum tick that could be used on any pool.
-
-#### Defined in
-
-[utils/tickMath.ts:35](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickMath.ts#L35)
-
-___
-
-### MAX\_TICK
-
-▪ `Static` **MAX\_TICK**: `number` = `-TickMath.MIN_TICK`
-
-The maximum tick that can be used on any pool.
-
-#### Defined in
-
-[utils/tickMath.ts:26](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickMath.ts#L26)
-
-___
-
-### MIN\_SQRT\_RATIO
-
-▪ `Static` **MIN\_SQRT\_RATIO**: `default`
-
-The sqrt ratio corresponding to the minimum tick that could be used on any pool.
-
-#### Defined in
-
-[utils/tickMath.ts:31](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickMath.ts#L31)
-
-___
-
-### MIN\_TICK
-
-▪ `Static` **MIN\_TICK**: `number` = `-887272`
-
-The minimum tick that can be used on any pool.
-
-#### Defined in
-
-[utils/tickMath.ts:22](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickMath.ts#L22)
-
-## Methods
-
-### getSqrtRatioAtTick
-
-▸ `Static` **getSqrtRatioAtTick**(`tick`): `default`
-
-Returns the sqrt ratio as a Q64.96 for the given tick. The sqrt ratio is computed as sqrt(1.0001)^tick
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `tick` | `number` | the tick for which to compute the sqrt ratio |
-
-#### Returns
-
-`default`
-
-#### Defined in
-
-[utils/tickMath.ts:41](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickMath.ts#L41)
-
-___
-
-### getTickAtSqrtRatio
-
-▸ `Static` **getTickAtSqrtRatio**(`sqrtRatioX96`): `number`
-
-Returns the tick corresponding to a given sqrt ratio, s.t. #getSqrtRatioAtTick(tick) <= sqrtRatioX96
-and #getSqrtRatioAtTick(tick + 1) > sqrtRatioX96
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `sqrtRatioX96` | `default` | the sqrt ratio as a Q64.96 for which to compute the tick |
-
-#### Returns
-
-`number`
-
-#### Defined in
-
-[utils/tickMath.ts:82](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickMath.ts#L82)
diff --git a/docs/sdk/v3/reference/classes/Trade.md b/docs/sdk/v3/reference/classes/Trade.md
deleted file mode 100644
index 05db852da..000000000
--- a/docs/sdk/v3/reference/classes/Trade.md
+++ /dev/null
@@ -1,601 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / Trade
-
-# Class: Trade
-
-Represents a trade executed against a set of routes where some percentage of the input is
-split across each route.
-
-Each route has its own set of pools. Pools can not be re-used across routes.
-
-Does not account for slippage, i.e., changes in price environment that can occur between
-the time the trade is submitted and when it is executed.
-
-## Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20 |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20 |
-| `TTradeType` | extends `TradeType` | The trade type, either exact input or exact output |
-
-## Table of contents
-
-### Constructors
-
-- [constructor](Trade.md#constructor)
-
-### Properties
-
-- [\_executionPrice](Trade.md#_executionprice)
-- [\_inputAmount](Trade.md#_inputamount)
-- [\_outputAmount](Trade.md#_outputamount)
-- [\_priceImpact](Trade.md#_priceimpact)
-- [swaps](Trade.md#swaps)
-- [tradeType](Trade.md#tradetype)
-
-### Accessors
-
-- [executionPrice](Trade.md#executionprice)
-- [inputAmount](Trade.md#inputamount)
-- [outputAmount](Trade.md#outputamount)
-- [priceImpact](Trade.md#priceimpact)
-- [route](Trade.md#route)
-
-### Methods
-
-- [maximumAmountIn](Trade.md#maximumamountin)
-- [minimumAmountOut](Trade.md#minimumamountout)
-- [worstExecutionPrice](Trade.md#worstexecutionprice)
-- [bestTradeExactIn](Trade.md#besttradeexactin)
-- [bestTradeExactOut](Trade.md#besttradeexactout)
-- [createUncheckedTrade](Trade.md#createuncheckedtrade)
-- [createUncheckedTradeWithMultipleRoutes](Trade.md#createuncheckedtradewithmultipleroutes)
-- [exactIn](Trade.md#exactin)
-- [exactOut](Trade.md#exactout)
-- [fromRoute](Trade.md#fromroute)
-- [fromRoutes](Trade.md#fromroutes)
-
-## Constructors
-
-### constructor
-
-• `Private` **new Trade**<`TInput`, `TOutput`, `TTradeType`\>(`__namedParameters`)
-
-Construct a trade by passing in the pre-computed property values
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TInput` | extends `Currency` |
-| `TOutput` | extends `Currency` |
-| `TTradeType` | extends `TradeType` |
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `__namedParameters` | `Object` |
-| `__namedParameters.routes` | { `inputAmount`: `CurrencyAmount`<`TInput`\> ; `outputAmount`: `CurrencyAmount`<`TOutput`\> ; `route`: [`Route`](Route.md)<`TInput`, `TOutput`\> }[] |
-| `__namedParameters.tradeType` | `TTradeType` |
-
-#### Defined in
-
-[entities/trade.ts:397](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L397)
-
-## Properties
-
-### \_executionPrice
-
-• `Private` **\_executionPrice**: `undefined` \| `Price`<`TInput`, `TOutput`\>
-
-The cached result of the computed execution price
-
-#### Defined in
-
-[entities/trade.ts:143](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L143)
-
-___
-
-### \_inputAmount
-
-• `Private` **\_inputAmount**: `undefined` \| `CurrencyAmount`<`TInput`\>
-
-The cached result of the input amount computation
-
-#### Defined in
-
-[entities/trade.ts:97](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L97)
-
-___
-
-### \_outputAmount
-
-• `Private` **\_outputAmount**: `undefined` \| `CurrencyAmount`<`TOutput`\>
-
-The cached result of the output amount computation
-
-#### Defined in
-
-[entities/trade.ts:120](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L120)
-
-___
-
-### \_priceImpact
-
-• `Private` **\_priceImpact**: `undefined` \| `Percent`
-
-The cached result of the price impact computation
-
-#### Defined in
-
-[entities/trade.ts:164](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L164)
-
-___
-
-### swaps
-
-• `Readonly` **swaps**: { `inputAmount`: `CurrencyAmount`<`TInput`\> ; `outputAmount`: `CurrencyAmount`<`TOutput`\> ; `route`: [`Route`](Route.md)<`TInput`, `TOutput`\> }[]
-
-The swaps of the trade, i.e. which routes and how much is swapped in each that
-make up the trade.
-
-#### Defined in
-
-[entities/trade.ts:82](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L82)
-
-___
-
-### tradeType
-
-• `Readonly` **tradeType**: `TTradeType`
-
-The type of the trade, either exact in or exact out.
-
-#### Defined in
-
-[entities/trade.ts:91](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L91)
-
-## Accessors
-
-### executionPrice
-
-• `get` **executionPrice**(): `Price`<`TInput`, `TOutput`\>
-
-The price expressed in terms of output amount/input amount.
-
-#### Returns
-
-`Price`<`TInput`, `TOutput`\>
-
-#### Defined in
-
-[entities/trade.ts:148](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L148)
-
-___
-
-### inputAmount
-
-• `get` **inputAmount**(): `CurrencyAmount`<`TInput`\>
-
-The input amount for the trade assuming no slippage.
-
-#### Returns
-
-`CurrencyAmount`<`TInput`\>
-
-#### Defined in
-
-[entities/trade.ts:102](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L102)
-
-___
-
-### outputAmount
-
-• `get` **outputAmount**(): `CurrencyAmount`<`TOutput`\>
-
-The output amount for the trade assuming no slippage.
-
-#### Returns
-
-`CurrencyAmount`<`TOutput`\>
-
-#### Defined in
-
-[entities/trade.ts:125](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L125)
-
-___
-
-### priceImpact
-
-• `get` **priceImpact**(): `Percent`
-
-Returns the percent difference between the route's mid price and the price impact
-
-#### Returns
-
-`Percent`
-
-#### Defined in
-
-[entities/trade.ts:169](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L169)
-
-___
-
-### route
-
-• `get` **route**(): [`Route`](Route.md)<`TInput`, `TOutput`\>
-
-**`Deprecated`**
-
-Deprecated in favor of 'swaps' property. If the trade consists of multiple routes
-this will return an error.
-
-When the trade consists of just a single route, this returns the route of the trade,
-i.e. which pools the trade goes through.
-
-#### Returns
-
-[`Route`](Route.md)<`TInput`, `TOutput`\>
-
-#### Defined in
-
-[entities/trade.ts:73](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L73)
-
-## Methods
-
-### maximumAmountIn
-
-▸ **maximumAmountIn**(`slippageTolerance`, `amountIn?`): `CurrencyAmount`<`TInput`\>
-
-Get the maximum amount in that can be spent via this trade for the given slippage tolerance
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `slippageTolerance` | `Percent` | The tolerance of unfavorable slippage from the execution price of this trade |
-| `amountIn` | `CurrencyAmount`<`TInput`\> | - |
-
-#### Returns
-
-`CurrencyAmount`<`TInput`\>
-
-The amount in
-
-#### Defined in
-
-[entities/trade.ts:456](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L456)
-
-___
-
-### minimumAmountOut
-
-▸ **minimumAmountOut**(`slippageTolerance`, `amountOut?`): `CurrencyAmount`<`TOutput`\>
-
-Get the minimum amount that must be received from this trade for the given slippage tolerance
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `slippageTolerance` | `Percent` | The tolerance of unfavorable slippage from the execution price of this trade |
-| `amountOut` | `CurrencyAmount`<`TOutput`\> | - |
-
-#### Returns
-
-`CurrencyAmount`<`TOutput`\>
-
-The amount out
-
-#### Defined in
-
-[entities/trade.ts:438](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L438)
-
-___
-
-### worstExecutionPrice
-
-▸ **worstExecutionPrice**(`slippageTolerance`): `Price`<`TInput`, `TOutput`\>
-
-Return the execution price after accounting for slippage tolerance
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `slippageTolerance` | `Percent` | the allowed tolerated slippage |
-
-#### Returns
-
-`Price`<`TInput`, `TOutput`\>
-
-The execution price
-
-#### Defined in
-
-[entities/trade.ts:471](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L471)
-
-___
-
-### bestTradeExactIn
-
-▸ `Static` **bestTradeExactIn**<`TInput`, `TOutput`\>(`pools`, `currencyAmountIn`, `currencyOut`, `__namedParameters?`, `currentPools?`, `nextAmountIn?`, `bestTrades?`): `Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_INPUT`\>[]\>
-
-Given a list of pools, and a fixed amount in, returns the top `maxNumResults` trades that go from an input token
-amount to an output token, making at most `maxHops` hops.
-Note this does not consider aggregation, as routes are linear. It's possible a better route exists by splitting
-the amount in among multiple routes.
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TInput` | extends `Currency` |
-| `TOutput` | extends `Currency` |
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `pools` | [`Pool`](Pool.md)[] | `undefined` | the pools to consider in finding the best trade |
-| `currencyAmountIn` | `CurrencyAmount`<`TInput`\> | `undefined` | used in recursion; the original value of the currencyAmountIn parameter |
-| `currencyOut` | `TOutput` | `undefined` | the desired currency out |
-| `__namedParameters` | [`BestTradeOptions`](../interfaces/BestTradeOptions.md) | `{}` | - |
-| `currentPools` | [`Pool`](Pool.md)[] | `[]` | used in recursion; the current list of pools |
-| `nextAmountIn` | `CurrencyAmount`<`Currency`\> | `currencyAmountIn` | exact amount of input currency to spend |
-| `bestTrades` | [`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_INPUT`\>[] | `[]` | used in recursion; the current list of best trades |
-
-#### Returns
-
-`Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_INPUT`\>[]\>
-
-The exact in trade
-
-#### Defined in
-
-[entities/trade.ts:495](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L495)
-
-___
-
-### bestTradeExactOut
-
-▸ `Static` **bestTradeExactOut**<`TInput`, `TOutput`\>(`pools`, `currencyIn`, `currencyAmountOut`, `__namedParameters?`, `currentPools?`, `nextAmountOut?`, `bestTrades?`): `Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_OUTPUT`\>[]\>
-
-similar to the above method but instead targets a fixed output amount
-given a list of pools, and a fixed amount out, returns the top `maxNumResults` trades that go from an input token
-to an output token amount, making at most `maxHops` hops
-note this does not consider aggregation, as routes are linear. it's possible a better route exists by splitting
-the amount in among multiple routes.
-
-#### Type parameters
-
-| Name | Type |
-| :------ | :------ |
-| `TInput` | extends `Currency` |
-| `TOutput` | extends `Currency` |
-
-#### Parameters
-
-| Name | Type | Default value | Description |
-| :------ | :------ | :------ | :------ |
-| `pools` | [`Pool`](Pool.md)[] | `undefined` | the pools to consider in finding the best trade |
-| `currencyIn` | `TInput` | `undefined` | the currency to spend |
-| `currencyAmountOut` | `CurrencyAmount`<`TOutput`\> | `undefined` | the desired currency amount out |
-| `__namedParameters` | [`BestTradeOptions`](../interfaces/BestTradeOptions.md) | `{}` | - |
-| `currentPools` | [`Pool`](Pool.md)[] | `[]` | used in recursion; the current list of pools |
-| `nextAmountOut` | `CurrencyAmount`<`Currency`\> | `currencyAmountOut` | the exact amount of currency out |
-| `bestTrades` | [`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_OUTPUT`\>[] | `[]` | used in recursion; the current list of best trades |
-
-#### Returns
-
-`Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_OUTPUT`\>[]\>
-
-The exact out trade
-
-#### Defined in
-
-[entities/trade.ts:576](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L576)
-
-___
-
-### createUncheckedTrade
-
-▸ `Static` **createUncheckedTrade**<`TInput`, `TOutput`, `TTradeType`\>(`constructorArguments`): [`Trade`](Trade.md)<`TInput`, `TOutput`, `TTradeType`\>
-
-Creates a trade without computing the result of swapping through the route. Useful when you have simulated the trade
-elsewhere and do not have any tick data
-
-#### Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20 |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20 |
-| `TTradeType` | extends `TradeType` | The type of the trade, either exact in or exact out |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `constructorArguments` | `Object` | The arguments passed to the trade constructor |
-| `constructorArguments.inputAmount` | `CurrencyAmount`<`TInput`\> | - |
-| `constructorArguments.outputAmount` | `CurrencyAmount`<`TOutput`\> | - |
-| `constructorArguments.route` | [`Route`](Route.md)<`TInput`, `TOutput`\> | - |
-| `constructorArguments.tradeType` | `TTradeType` | - |
-
-#### Returns
-
-[`Trade`](Trade.md)<`TInput`, `TOutput`, `TTradeType`\>
-
-The unchecked trade
-
-#### Defined in
-
-[entities/trade.ts:346](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L346)
-
-___
-
-### createUncheckedTradeWithMultipleRoutes
-
-▸ `Static` **createUncheckedTradeWithMultipleRoutes**<`TInput`, `TOutput`, `TTradeType`\>(`constructorArguments`): [`Trade`](Trade.md)<`TInput`, `TOutput`, `TTradeType`\>
-
-Creates a trade without computing the result of swapping through the routes. Useful when you have simulated the trade
-elsewhere and do not have any tick data
-
-#### Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20 |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20 |
-| `TTradeType` | extends `TradeType` | The type of the trade, either exact in or exact out |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `constructorArguments` | `Object` | The arguments passed to the trade constructor |
-| `constructorArguments.routes` | { `inputAmount`: `CurrencyAmount`<`TInput`\> ; `outputAmount`: `CurrencyAmount`<`TOutput`\> ; `route`: [`Route`](Route.md)<`TInput`, `TOutput`\> }[] | - |
-| `constructorArguments.tradeType` | `TTradeType` | - |
-
-#### Returns
-
-[`Trade`](Trade.md)<`TInput`, `TOutput`, `TTradeType`\>
-
-The unchecked trade
-
-#### Defined in
-
-[entities/trade.ts:377](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L377)
-
-___
-
-### exactIn
-
-▸ `Static` **exactIn**<`TInput`, `TOutput`\>(`route`, `amountIn`): `Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_INPUT`\>\>
-
-Constructs an exact in trade with the given amount in and route
-
-#### Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20 |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20 |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `route` | [`Route`](Route.md)<`TInput`, `TOutput`\> | The route of the exact in trade |
-| `amountIn` | `CurrencyAmount`<`TInput`\> | The amount being passed in |
-
-#### Returns
-
-`Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_INPUT`\>\>
-
-The exact in trade
-
-#### Defined in
-
-[entities/trade.ts:194](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L194)
-
-___
-
-### exactOut
-
-▸ `Static` **exactOut**<`TInput`, `TOutput`\>(`route`, `amountOut`): `Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_OUTPUT`\>\>
-
-Constructs an exact out trade with the given amount out and route
-
-#### Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20 |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20 |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `route` | [`Route`](Route.md)<`TInput`, `TOutput`\> | The route of the exact out trade |
-| `amountOut` | `CurrencyAmount`<`TOutput`\> | The amount returned by the trade |
-
-#### Returns
-
-`Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `EXACT_OUTPUT`\>\>
-
-The exact out trade
-
-#### Defined in
-
-[entities/trade.ts:209](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L209)
-
-___
-
-### fromRoute
-
-▸ `Static` **fromRoute**<`TInput`, `TOutput`, `TTradeType`\>(`route`, `amount`, `tradeType`): `Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `TTradeType`\>\>
-
-Constructs a trade by simulating swaps through the given route
-
-#### Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20. |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20. |
-| `TTradeType` | extends `TradeType` | The type of the trade, either exact in or exact out. |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `route` | [`Route`](Route.md)<`TInput`, `TOutput`\> | route to swap through |
-| `amount` | `TTradeType` extends `EXACT_INPUT` ? `CurrencyAmount`<`TInput`\> : `CurrencyAmount`<`TOutput`\> | the amount specified, either input or output, depending on tradeType |
-| `tradeType` | `TTradeType` | whether the trade is an exact input or exact output swap |
-
-#### Returns
-
-`Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `TTradeType`\>\>
-
-The route
-
-#### Defined in
-
-[entities/trade.ts:226](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L226)
-
-___
-
-### fromRoutes
-
-▸ `Static` **fromRoutes**<`TInput`, `TOutput`, `TTradeType`\>(`routes`, `tradeType`): `Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `TTradeType`\>\>
-
-Constructs a trade from routes by simulating swaps
-
-#### Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20. |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20. |
-| `TTradeType` | extends `TradeType` | The type of the trade, either exact in or exact out. |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `routes` | { `amount`: `TTradeType` extends `EXACT_INPUT` ? `CurrencyAmount`<`TInput`\> : `CurrencyAmount`<`TOutput`\> ; `route`: [`Route`](Route.md)<`TInput`, `TOutput`\> }[] | the routes to swap through and how much of the amount should be routed through each |
-| `tradeType` | `TTradeType` | whether the trade is an exact input or exact output swap |
-
-#### Returns
-
-`Promise`<[`Trade`](Trade.md)<`TInput`, `TOutput`, `TTradeType`\>\>
-
-The trade
-
-#### Defined in
-
-[entities/trade.ts:276](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L276)
diff --git a/docs/sdk/v3/reference/enums/FeeAmount.md b/docs/sdk/v3/reference/enums/FeeAmount.md
deleted file mode 100644
index 77cb5ed2c..000000000
--- a/docs/sdk/v3/reference/enums/FeeAmount.md
+++ /dev/null
@@ -1,54 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / FeeAmount
-
-# Enumeration: FeeAmount
-
-The default factory enabled fee amounts, denominated in hundredths of bips.
-
-## Table of contents
-
-### Enumeration Members
-
-- [HIGH](FeeAmount.md#high)
-- [LOW](FeeAmount.md#low)
-- [LOWEST](FeeAmount.md#lowest)
-- [MEDIUM](FeeAmount.md#medium)
-
-## Enumeration Members
-
-### HIGH
-
-• **HIGH** = ``10000``
-
-#### Defined in
-
-[constants.ts:14](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/constants.ts#L14)
-
-___
-
-### LOW
-
-• **LOW** = ``500``
-
-#### Defined in
-
-[constants.ts:12](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/constants.ts#L12)
-
-___
-
-### LOWEST
-
-• **LOWEST** = ``100``
-
-#### Defined in
-
-[constants.ts:11](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/constants.ts#L11)
-
-___
-
-### MEDIUM
-
-• **MEDIUM** = ``3000``
-
-#### Defined in
-
-[constants.ts:13](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/constants.ts#L13)
diff --git a/docs/sdk/v3/reference/interfaces/AllowedPermitArguments.md b/docs/sdk/v3/reference/interfaces/AllowedPermitArguments.md
deleted file mode 100644
index f9856cebf..000000000
--- a/docs/sdk/v3/reference/interfaces/AllowedPermitArguments.md
+++ /dev/null
@@ -1,63 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / AllowedPermitArguments
-
-# Interface: AllowedPermitArguments
-
-## Table of contents
-
-### Properties
-
-- [expiry](AllowedPermitArguments.md#expiry)
-- [nonce](AllowedPermitArguments.md#nonce)
-- [r](AllowedPermitArguments.md#r)
-- [s](AllowedPermitArguments.md#s)
-- [v](AllowedPermitArguments.md#v)
-
-## Properties
-
-### expiry
-
-• **expiry**: `BigintIsh`
-
-#### Defined in
-
-[selfPermit.ts:19](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L19)
-
-___
-
-### nonce
-
-• **nonce**: `BigintIsh`
-
-#### Defined in
-
-[selfPermit.ts:18](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L18)
-
-___
-
-### r
-
-• **r**: `string`
-
-#### Defined in
-
-[selfPermit.ts:16](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L16)
-
-___
-
-### s
-
-• **s**: `string`
-
-#### Defined in
-
-[selfPermit.ts:17](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L17)
-
-___
-
-### v
-
-• **v**: ``0`` \| ``1`` \| ``27`` \| ``28``
-
-#### Defined in
-
-[selfPermit.ts:15](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L15)
diff --git a/docs/sdk/v3/reference/interfaces/BestTradeOptions.md b/docs/sdk/v3/reference/interfaces/BestTradeOptions.md
deleted file mode 100644
index 37ad44878..000000000
--- a/docs/sdk/v3/reference/interfaces/BestTradeOptions.md
+++ /dev/null
@@ -1,30 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / BestTradeOptions
-
-# Interface: BestTradeOptions
-
-## Table of contents
-
-### Properties
-
-- [maxHops](BestTradeOptions.md#maxhops)
-- [maxNumResults](BestTradeOptions.md#maxnumresults)
-
-## Properties
-
-### maxHops
-
-• `Optional` **maxHops**: `number`
-
-#### Defined in
-
-[entities/trade.ts:50](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L50)
-
-___
-
-### maxNumResults
-
-• `Optional` **maxNumResults**: `number`
-
-#### Defined in
-
-[entities/trade.ts:48](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L48)
diff --git a/docs/sdk/v3/reference/interfaces/ClaimOptions.md b/docs/sdk/v3/reference/interfaces/ClaimOptions.md
deleted file mode 100644
index 7415cba3a..000000000
--- a/docs/sdk/v3/reference/interfaces/ClaimOptions.md
+++ /dev/null
@@ -1,49 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / ClaimOptions
-
-# Interface: ClaimOptions
-
-Options to specify when claiming rewards.
-
-## Table of contents
-
-### Properties
-
-- [amount](ClaimOptions.md#amount)
-- [recipient](ClaimOptions.md#recipient)
-- [tokenId](ClaimOptions.md#tokenid)
-
-## Properties
-
-### amount
-
-• `Optional` **amount**: `BigintIsh`
-
-The amount of `rewardToken` to claim. 0 claims all.
-
-#### Defined in
-
-[staker.ts:52](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L52)
-
-___
-
-### recipient
-
-• **recipient**: `string`
-
-Address to send rewards to.
-
-#### Defined in
-
-[staker.ts:47](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L47)
-
-___
-
-### tokenId
-
-• **tokenId**: `BigintIsh`
-
-The id of the NFT
-
-#### Defined in
-
-[staker.ts:42](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L42)
diff --git a/docs/sdk/v3/reference/interfaces/CollectOptions.md b/docs/sdk/v3/reference/interfaces/CollectOptions.md
deleted file mode 100644
index 2bcabeb10..000000000
--- a/docs/sdk/v3/reference/interfaces/CollectOptions.md
+++ /dev/null
@@ -1,60 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / CollectOptions
-
-# Interface: CollectOptions
-
-## Table of contents
-
-### Properties
-
-- [expectedCurrencyOwed0](CollectOptions.md#expectedcurrencyowed0)
-- [expectedCurrencyOwed1](CollectOptions.md#expectedcurrencyowed1)
-- [recipient](CollectOptions.md#recipient)
-- [tokenId](CollectOptions.md#tokenid)
-
-## Properties
-
-### expectedCurrencyOwed0
-
-• **expectedCurrencyOwed0**: `CurrencyAmount`<`Currency`\>
-
-Expected value of tokensOwed0, including as-of-yet-unaccounted-for fees/liquidity value to be burned
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:114](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L114)
-
-___
-
-### expectedCurrencyOwed1
-
-• **expectedCurrencyOwed1**: `CurrencyAmount`<`Currency`\>
-
-Expected value of tokensOwed1, including as-of-yet-unaccounted-for fees/liquidity value to be burned
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:119](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L119)
-
-___
-
-### recipient
-
-• **recipient**: `string`
-
-The account that should receive the tokens.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:124](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L124)
-
-___
-
-### tokenId
-
-• **tokenId**: `BigintIsh`
-
-Indicates the ID of the position to collect for.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:109](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L109)
diff --git a/docs/sdk/v3/reference/interfaces/CommonAddLiquidityOptions.md b/docs/sdk/v3/reference/interfaces/CommonAddLiquidityOptions.md
deleted file mode 100644
index db9f9d0b1..000000000
--- a/docs/sdk/v3/reference/interfaces/CommonAddLiquidityOptions.md
+++ /dev/null
@@ -1,75 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / CommonAddLiquidityOptions
-
-# Interface: CommonAddLiquidityOptions
-
-Options for producing the calldata to add liquidity.
-
-## Table of contents
-
-### Properties
-
-- [deadline](CommonAddLiquidityOptions.md#deadline)
-- [slippageTolerance](CommonAddLiquidityOptions.md#slippagetolerance)
-- [token0Permit](CommonAddLiquidityOptions.md#token0permit)
-- [token1Permit](CommonAddLiquidityOptions.md#token1permit)
-- [useNative](CommonAddLiquidityOptions.md#usenative)
-
-## Properties
-
-### deadline
-
-• **deadline**: `BigintIsh`
-
-When the transaction expires, in epoch seconds.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:56](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L56)
-
-___
-
-### slippageTolerance
-
-• **slippageTolerance**: `Percent`
-
-How much the pool price is allowed to move.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:51](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L51)
-
-___
-
-### token0Permit
-
-• `Optional` **token0Permit**: [`PermitOptions`](../modules.md#permitoptions)
-
-The optional permit parameters for spending token0
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:66](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L66)
-
-___
-
-### token1Permit
-
-• `Optional` **token1Permit**: [`PermitOptions`](../modules.md#permitoptions)
-
-The optional permit parameters for spending token1
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:71](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L71)
-
-___
-
-### useNative
-
-• `Optional` **useNative**: `NativeCurrency`
-
-Whether to spend ether. If true, one of the pool tokens must be WETH, by default false
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:61](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L61)
diff --git a/docs/sdk/v3/reference/interfaces/FeeOptions.md b/docs/sdk/v3/reference/interfaces/FeeOptions.md
deleted file mode 100644
index 3ca35a9a0..000000000
--- a/docs/sdk/v3/reference/interfaces/FeeOptions.md
+++ /dev/null
@@ -1,34 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / FeeOptions
-
-# Interface: FeeOptions
-
-## Table of contents
-
-### Properties
-
-- [fee](FeeOptions.md#fee)
-- [recipient](FeeOptions.md#recipient)
-
-## Properties
-
-### fee
-
-• **fee**: `Percent`
-
-The percent of the output that will be taken as a fee.
-
-#### Defined in
-
-[payments.ts:11](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/payments.ts#L11)
-
-___
-
-### recipient
-
-• **recipient**: `string`
-
-The recipient of the fee.
-
-#### Defined in
-
-[payments.ts:16](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/payments.ts#L16)
diff --git a/docs/sdk/v3/reference/interfaces/IncentiveKey.md b/docs/sdk/v3/reference/interfaces/IncentiveKey.md
deleted file mode 100644
index ce57f8795..000000000
--- a/docs/sdk/v3/reference/interfaces/IncentiveKey.md
+++ /dev/null
@@ -1,75 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / IncentiveKey
-
-# Interface: IncentiveKey
-
-Represents a unique staking program.
-
-## Table of contents
-
-### Properties
-
-- [endTime](IncentiveKey.md#endtime)
-- [pool](IncentiveKey.md#pool)
-- [refundee](IncentiveKey.md#refundee)
-- [rewardToken](IncentiveKey.md#rewardtoken)
-- [startTime](IncentiveKey.md#starttime)
-
-## Properties
-
-### endTime
-
-• **endTime**: `BigintIsh`
-
-The time that the incentive program ends.
-
-#### Defined in
-
-[staker.ts:28](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L28)
-
-___
-
-### pool
-
-• **pool**: [`Pool`](../classes/Pool.md)
-
-The pool that the staked positions must provide in.
-
-#### Defined in
-
-[staker.ts:20](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L20)
-
-___
-
-### refundee
-
-• **refundee**: `string`
-
-The address which receives any remaining reward tokens at `endTime`.
-
-#### Defined in
-
-[staker.ts:32](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L32)
-
-___
-
-### rewardToken
-
-• **rewardToken**: `Token`
-
-The token rewarded for participating in the staking program.
-
-#### Defined in
-
-[staker.ts:16](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L16)
-
-___
-
-### startTime
-
-• **startTime**: `BigintIsh`
-
-The time when the incentive program begins.
-
-#### Defined in
-
-[staker.ts:24](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L24)
diff --git a/docs/sdk/v3/reference/interfaces/IncreaseSpecificOptions.md b/docs/sdk/v3/reference/interfaces/IncreaseSpecificOptions.md
deleted file mode 100644
index afb55e57f..000000000
--- a/docs/sdk/v3/reference/interfaces/IncreaseSpecificOptions.md
+++ /dev/null
@@ -1,21 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / IncreaseSpecificOptions
-
-# Interface: IncreaseSpecificOptions
-
-## Table of contents
-
-### Properties
-
-- [tokenId](IncreaseSpecificOptions.md#tokenid)
-
-## Properties
-
-### tokenId
-
-• **tokenId**: `BigintIsh`
-
-Indicates the ID of the position to increase liquidity for.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:41](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L41)
diff --git a/docs/sdk/v3/reference/interfaces/MethodParameters.md b/docs/sdk/v3/reference/interfaces/MethodParameters.md
deleted file mode 100644
index 303a07b12..000000000
--- a/docs/sdk/v3/reference/interfaces/MethodParameters.md
+++ /dev/null
@@ -1,36 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / MethodParameters
-
-# Interface: MethodParameters
-
-Generated method parameters for executing a call.
-
-## Table of contents
-
-### Properties
-
-- [calldata](MethodParameters.md#calldata)
-- [value](MethodParameters.md#value)
-
-## Properties
-
-### calldata
-
-• **calldata**: `string`
-
-The hex encoded calldata to perform the given operation
-
-#### Defined in
-
-[utils/calldata.ts:11](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/calldata.ts#L11)
-
-___
-
-### value
-
-• **value**: `string`
-
-The amount of ether (wei) to send in hex.
-
-#### Defined in
-
-[utils/calldata.ts:15](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/calldata.ts#L15)
diff --git a/docs/sdk/v3/reference/interfaces/MintSpecificOptions.md b/docs/sdk/v3/reference/interfaces/MintSpecificOptions.md
deleted file mode 100644
index a11e98ca2..000000000
--- a/docs/sdk/v3/reference/interfaces/MintSpecificOptions.md
+++ /dev/null
@@ -1,34 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / MintSpecificOptions
-
-# Interface: MintSpecificOptions
-
-## Table of contents
-
-### Properties
-
-- [createPool](MintSpecificOptions.md#createpool)
-- [recipient](MintSpecificOptions.md#recipient)
-
-## Properties
-
-### createPool
-
-• `Optional` **createPool**: `boolean`
-
-Creates pool if not initialized before mint.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:34](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L34)
-
-___
-
-### recipient
-
-• **recipient**: `string`
-
-The account that should receive the minted NFT.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:29](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L29)
diff --git a/docs/sdk/v3/reference/interfaces/NFTPermitOptions.md b/docs/sdk/v3/reference/interfaces/NFTPermitOptions.md
deleted file mode 100644
index 253979f4a..000000000
--- a/docs/sdk/v3/reference/interfaces/NFTPermitOptions.md
+++ /dev/null
@@ -1,63 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / NFTPermitOptions
-
-# Interface: NFTPermitOptions
-
-## Table of contents
-
-### Properties
-
-- [deadline](NFTPermitOptions.md#deadline)
-- [r](NFTPermitOptions.md#r)
-- [s](NFTPermitOptions.md#s)
-- [spender](NFTPermitOptions.md#spender)
-- [v](NFTPermitOptions.md#v)
-
-## Properties
-
-### deadline
-
-• **deadline**: `BigintIsh`
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:131](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L131)
-
-___
-
-### r
-
-• **r**: `string`
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:129](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L129)
-
-___
-
-### s
-
-• **s**: `string`
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:130](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L130)
-
-___
-
-### spender
-
-• **spender**: `string`
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:132](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L132)
-
-___
-
-### v
-
-• **v**: ``0`` \| ``1`` \| ``27`` \| ``28``
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:128](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L128)
diff --git a/docs/sdk/v3/reference/interfaces/QuoteOptions.md b/docs/sdk/v3/reference/interfaces/QuoteOptions.md
deleted file mode 100644
index 16414828b..000000000
--- a/docs/sdk/v3/reference/interfaces/QuoteOptions.md
+++ /dev/null
@@ -1,36 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / QuoteOptions
-
-# Interface: QuoteOptions
-
-Optional arguments to send to the quoter.
-
-## Table of contents
-
-### Properties
-
-- [sqrtPriceLimitX96](QuoteOptions.md#sqrtpricelimitx96)
-- [useQuoterV2](QuoteOptions.md#usequoterv2)
-
-## Properties
-
-### sqrtPriceLimitX96
-
-• `Optional` **sqrtPriceLimitX96**: `BigintIsh`
-
-The optional price limit for the trade.
-
-#### Defined in
-
-[quoter.ts:17](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/quoter.ts#L17)
-
-___
-
-### useQuoterV2
-
-• `Optional` **useQuoterV2**: `boolean`
-
-The optional quoter interface to use
-
-#### Defined in
-
-[quoter.ts:22](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/quoter.ts#L22)
diff --git a/docs/sdk/v3/reference/interfaces/RemoveLiquidityOptions.md b/docs/sdk/v3/reference/interfaces/RemoveLiquidityOptions.md
deleted file mode 100644
index e775fc21c..000000000
--- a/docs/sdk/v3/reference/interfaces/RemoveLiquidityOptions.md
+++ /dev/null
@@ -1,101 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / RemoveLiquidityOptions
-
-# Interface: RemoveLiquidityOptions
-
-Options for producing the calldata to exit a position.
-
-## Table of contents
-
-### Properties
-
-- [burnToken](RemoveLiquidityOptions.md#burntoken)
-- [collectOptions](RemoveLiquidityOptions.md#collectoptions)
-- [deadline](RemoveLiquidityOptions.md#deadline)
-- [liquidityPercentage](RemoveLiquidityOptions.md#liquiditypercentage)
-- [permit](RemoveLiquidityOptions.md#permit)
-- [slippageTolerance](RemoveLiquidityOptions.md#slippagetolerance)
-- [tokenId](RemoveLiquidityOptions.md#tokenid)
-
-## Properties
-
-### burnToken
-
-• `Optional` **burnToken**: `boolean`
-
-Whether the NFT should be burned if the entire position is being exited, by default false.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:162](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L162)
-
-___
-
-### collectOptions
-
-• **collectOptions**: `Omit`<[`CollectOptions`](CollectOptions.md), ``"tokenId"``\>
-
-Parameters to be passed on to collect
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:172](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L172)
-
-___
-
-### deadline
-
-• **deadline**: `BigintIsh`
-
-When the transaction expires, in epoch seconds.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:157](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L157)
-
-___
-
-### liquidityPercentage
-
-• **liquidityPercentage**: `Percent`
-
-The percentage of position liquidity to exit.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:147](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L147)
-
-___
-
-### permit
-
-• `Optional` **permit**: [`NFTPermitOptions`](NFTPermitOptions.md)
-
-The optional permit of the token ID being exited, in case the exit transaction is being sent by an account that does not own the NFT
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:167](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L167)
-
-___
-
-### slippageTolerance
-
-• **slippageTolerance**: `Percent`
-
-How much the pool price is allowed to move.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:152](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L152)
-
-___
-
-### tokenId
-
-• **tokenId**: `BigintIsh`
-
-The ID of the token to exit
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:142](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L142)
diff --git a/docs/sdk/v3/reference/interfaces/SafeTransferOptions.md b/docs/sdk/v3/reference/interfaces/SafeTransferOptions.md
deleted file mode 100644
index f6d085f9f..000000000
--- a/docs/sdk/v3/reference/interfaces/SafeTransferOptions.md
+++ /dev/null
@@ -1,60 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / SafeTransferOptions
-
-# Interface: SafeTransferOptions
-
-## Table of contents
-
-### Properties
-
-- [data](SafeTransferOptions.md#data)
-- [recipient](SafeTransferOptions.md#recipient)
-- [sender](SafeTransferOptions.md#sender)
-- [tokenId](SafeTransferOptions.md#tokenid)
-
-## Properties
-
-### data
-
-• `Optional` **data**: `string`
-
-The optional parameter that passes data to the `onERC721Received` call for the staker
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:97](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L97)
-
-___
-
-### recipient
-
-• **recipient**: `string`
-
-The account that should receive the NFT.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:88](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L88)
-
-___
-
-### sender
-
-• **sender**: `string`
-
-The account sending the NFT.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:83](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L83)
-
-___
-
-### tokenId
-
-• **tokenId**: `BigintIsh`
-
-The id of the token being sent.
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:93](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L93)
diff --git a/docs/sdk/v3/reference/interfaces/StandardPermitArguments.md b/docs/sdk/v3/reference/interfaces/StandardPermitArguments.md
deleted file mode 100644
index d468bf69d..000000000
--- a/docs/sdk/v3/reference/interfaces/StandardPermitArguments.md
+++ /dev/null
@@ -1,63 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / StandardPermitArguments
-
-# Interface: StandardPermitArguments
-
-## Table of contents
-
-### Properties
-
-- [amount](StandardPermitArguments.md#amount)
-- [deadline](StandardPermitArguments.md#deadline)
-- [r](StandardPermitArguments.md#r)
-- [s](StandardPermitArguments.md#s)
-- [v](StandardPermitArguments.md#v)
-
-## Properties
-
-### amount
-
-• **amount**: `BigintIsh`
-
-#### Defined in
-
-[selfPermit.ts:10](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L10)
-
-___
-
-### deadline
-
-• **deadline**: `BigintIsh`
-
-#### Defined in
-
-[selfPermit.ts:11](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L11)
-
-___
-
-### r
-
-• **r**: `string`
-
-#### Defined in
-
-[selfPermit.ts:8](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L8)
-
-___
-
-### s
-
-• **s**: `string`
-
-#### Defined in
-
-[selfPermit.ts:9](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L9)
-
-___
-
-### v
-
-• **v**: ``0`` \| ``1`` \| ``27`` \| ``28``
-
-#### Defined in
-
-[selfPermit.ts:7](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L7)
diff --git a/docs/sdk/v3/reference/interfaces/SwapOptions.md b/docs/sdk/v3/reference/interfaces/SwapOptions.md
deleted file mode 100644
index e77958be9..000000000
--- a/docs/sdk/v3/reference/interfaces/SwapOptions.md
+++ /dev/null
@@ -1,88 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / SwapOptions
-
-# Interface: SwapOptions
-
-Options for producing the arguments to send calls to the router.
-
-## Table of contents
-
-### Properties
-
-- [deadline](SwapOptions.md#deadline)
-- [fee](SwapOptions.md#fee)
-- [inputTokenPermit](SwapOptions.md#inputtokenpermit)
-- [recipient](SwapOptions.md#recipient)
-- [slippageTolerance](SwapOptions.md#slippagetolerance)
-- [sqrtPriceLimitX96](SwapOptions.md#sqrtpricelimitx96)
-
-## Properties
-
-### deadline
-
-• **deadline**: `BigintIsh`
-
-When the transaction expires, in epoch seconds.
-
-#### Defined in
-
-[swapRouter.ts:30](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L30)
-
-___
-
-### fee
-
-• `Optional` **fee**: [`FeeOptions`](FeeOptions.md)
-
-Optional information for taking a fee on output.
-
-#### Defined in
-
-[swapRouter.ts:45](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L45)
-
-___
-
-### inputTokenPermit
-
-• `Optional` **inputTokenPermit**: [`PermitOptions`](../modules.md#permitoptions)
-
-The optional permit parameters for spending the input.
-
-#### Defined in
-
-[swapRouter.ts:35](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L35)
-
-___
-
-### recipient
-
-• **recipient**: `string`
-
-The account that should receive the output.
-
-#### Defined in
-
-[swapRouter.ts:25](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L25)
-
-___
-
-### slippageTolerance
-
-• **slippageTolerance**: `Percent`
-
-How much the execution price is allowed to move unfavorably from the trade execution price.
-
-#### Defined in
-
-[swapRouter.ts:20](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L20)
-
-___
-
-### sqrtPriceLimitX96
-
-• `Optional` **sqrtPriceLimitX96**: `BigintIsh`
-
-The optional price limit for the trade.
-
-#### Defined in
-
-[swapRouter.ts:40](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/swapRouter.ts#L40)
diff --git a/docs/sdk/v3/reference/interfaces/TickConstructorArgs.md b/docs/sdk/v3/reference/interfaces/TickConstructorArgs.md
deleted file mode 100644
index 6ce3179ed..000000000
--- a/docs/sdk/v3/reference/interfaces/TickConstructorArgs.md
+++ /dev/null
@@ -1,41 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / TickConstructorArgs
-
-# Interface: TickConstructorArgs
-
-## Table of contents
-
-### Properties
-
-- [index](TickConstructorArgs.md#index)
-- [liquidityGross](TickConstructorArgs.md#liquiditygross)
-- [liquidityNet](TickConstructorArgs.md#liquiditynet)
-
-## Properties
-
-### index
-
-• **index**: `number`
-
-#### Defined in
-
-[entities/tick.ts:7](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tick.ts#L7)
-
-___
-
-### liquidityGross
-
-• **liquidityGross**: `BigintIsh`
-
-#### Defined in
-
-[entities/tick.ts:8](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tick.ts#L8)
-
-___
-
-### liquidityNet
-
-• **liquidityNet**: `BigintIsh`
-
-#### Defined in
-
-[entities/tick.ts:9](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tick.ts#L9)
diff --git a/docs/sdk/v3/reference/interfaces/TickDataProvider.md b/docs/sdk/v3/reference/interfaces/TickDataProvider.md
deleted file mode 100644
index 01e5b43ac..000000000
--- a/docs/sdk/v3/reference/interfaces/TickDataProvider.md
+++ /dev/null
@@ -1,63 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / TickDataProvider
-
-# Interface: TickDataProvider
-
-Provides information about ticks
-
-## Implemented by
-
-- [`NoTickDataProvider`](../classes/NoTickDataProvider.md)
-- [`TickListDataProvider`](../classes/TickListDataProvider.md)
-
-## Table of contents
-
-### Methods
-
-- [getTick](TickDataProvider.md#gettick)
-- [nextInitializedTickWithinOneWord](TickDataProvider.md#nextinitializedtickwithinoneword)
-
-## Methods
-
-### getTick
-
-▸ **getTick**(`tick`): `Promise`<{ `liquidityNet`: `BigintIsh` }\>
-
-Return information corresponding to a specific tick
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `tick` | `number` | the tick to load |
-
-#### Returns
-
-`Promise`<{ `liquidityNet`: `BigintIsh` }\>
-
-#### Defined in
-
-[entities/tickDataProvider.ts:11](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickDataProvider.ts#L11)
-
-___
-
-### nextInitializedTickWithinOneWord
-
-▸ **nextInitializedTickWithinOneWord**(`tick`, `lte`, `tickSpacing`): `Promise`<[`number`, `boolean`]\>
-
-Return the next tick that is initialized within a single word
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `tick` | `number` | The current tick |
-| `lte` | `boolean` | Whether the next tick should be lte the current tick |
-| `tickSpacing` | `number` | The tick spacing of the pool |
-
-#### Returns
-
-`Promise`<[`number`, `boolean`]\>
-
-#### Defined in
-
-[entities/tickDataProvider.ts:19](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/tickDataProvider.ts#L19)
diff --git a/docs/sdk/v3/reference/interfaces/WithdrawOptions.md b/docs/sdk/v3/reference/interfaces/WithdrawOptions.md
deleted file mode 100644
index d1fdf62e7..000000000
--- a/docs/sdk/v3/reference/interfaces/WithdrawOptions.md
+++ /dev/null
@@ -1,36 +0,0 @@
-[@uniswap/v3-sdk](../README.md) / [Exports](../modules.md) / WithdrawOptions
-
-# Interface: WithdrawOptions
-
-Options to specify when withdrawing a position.
-
-## Table of contents
-
-### Properties
-
-- [data](WithdrawOptions.md#data)
-- [owner](WithdrawOptions.md#owner)
-
-## Properties
-
-### data
-
-• `Optional` **data**: `string`
-
-Set when withdrawing. `data` is passed to `safeTransferFrom` when transferring the position from contract back to owner.
-
-#### Defined in
-
-[staker.ts:66](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L66)
-
-___
-
-### owner
-
-• **owner**: `string`
-
-Set when withdrawing. The position will be sent to `owner` on withdraw.
-
-#### Defined in
-
-[staker.ts:61](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L61)
diff --git a/docs/sdk/v3/reference/overview.md b/docs/sdk/v3/reference/overview.md
deleted file mode 100644
index dfe5a7779..000000000
--- a/docs/sdk/v3/reference/overview.md
+++ /dev/null
@@ -1,484 +0,0 @@
----
-id: overview
-sidebar_position: 1
-title: Overview
----
-
-## Table of contents
-
-### Enumerations
-
-- [FeeAmount](enums/FeeAmount.md)
-
-### Classes
-
-- [FullMath](classes/FullMath.md)
-- [LiquidityMath](classes/LiquidityMath.md)
-- [Multicall](classes/Multicall.md)
-- [NoTickDataProvider](classes/NoTickDataProvider.md)
-- [NonfungiblePositionManager](classes/NonfungiblePositionManager.md)
-- [Payments](classes/Payments.md)
-- [Pool](classes/Pool.md)
-- [Position](classes/Position.md)
-- [PositionLibrary](classes/PositionLibrary.md)
-- [Route](classes/Route.md)
-- [SelfPermit](classes/SelfPermit.md)
-- [SqrtPriceMath](classes/SqrtPriceMath.md)
-- [Staker](classes/Staker.md)
-- [SwapMath](classes/SwapMath.md)
-- [SwapQuoter](classes/SwapQuoter.md)
-- [SwapRouter](classes/SwapRouter.md)
-- [Tick](classes/Tick.md)
-- [TickLibrary](classes/TickLibrary.md)
-- [TickList](classes/TickList.md)
-- [TickListDataProvider](classes/TickListDataProvider.md)
-- [TickMath](classes/TickMath.md)
-- [Trade](classes/Trade.md)
-
-### Interfaces
-
-- [AllowedPermitArguments](interfaces/AllowedPermitArguments.md)
-- [BestTradeOptions](interfaces/BestTradeOptions.md)
-- [ClaimOptions](interfaces/ClaimOptions.md)
-- [CollectOptions](interfaces/CollectOptions.md)
-- [CommonAddLiquidityOptions](interfaces/CommonAddLiquidityOptions.md)
-- [FeeOptions](interfaces/FeeOptions.md)
-- [IncentiveKey](interfaces/IncentiveKey.md)
-- [IncreaseSpecificOptions](interfaces/IncreaseSpecificOptions.md)
-- [MethodParameters](interfaces/MethodParameters.md)
-- [MintSpecificOptions](interfaces/MintSpecificOptions.md)
-- [NFTPermitOptions](interfaces/NFTPermitOptions.md)
-- [QuoteOptions](interfaces/QuoteOptions.md)
-- [RemoveLiquidityOptions](interfaces/RemoveLiquidityOptions.md)
-- [SafeTransferOptions](interfaces/SafeTransferOptions.md)
-- [StandardPermitArguments](interfaces/StandardPermitArguments.md)
-- [SwapOptions](interfaces/SwapOptions.md)
-- [TickConstructorArgs](interfaces/TickConstructorArgs.md)
-- [TickDataProvider](interfaces/TickDataProvider.md)
-- [WithdrawOptions](interfaces/WithdrawOptions.md)
-
-### Type Aliases
-
-- [AddLiquidityOptions](modules.md#addliquidityoptions)
-- [FullWithdrawOptions](modules.md#fullwithdrawoptions)
-- [IncreaseOptions](modules.md#increaseoptions)
-- [MintOptions](modules.md#mintoptions)
-- [PermitOptions](modules.md#permitoptions)
-
-### Variables
-
-- [ADDRESS\_ZERO](modules.md#address_zero)
-- [FACTORY\_ADDRESS](modules.md#factory_address)
-- [POOL\_INIT\_CODE\_HASH](modules.md#pool_init_code_hash)
-- [TICK\_SPACINGS](modules.md#tick_spacings)
-
-### Functions
-
-- [computePoolAddress](modules.md#computepooladdress)
-- [encodeRouteToPath](modules.md#encoderoutetopath)
-- [encodeSqrtRatioX96](modules.md#encodesqrtratiox96)
-- [isSorted](modules.md#issorted)
-- [maxLiquidityForAmounts](modules.md#maxliquidityforamounts)
-- [mostSignificantBit](modules.md#mostsignificantbit)
-- [nearestUsableTick](modules.md#nearestusabletick)
-- [priceToClosestTick](modules.md#pricetoclosesttick)
-- [subIn256](modules.md#subin256)
-- [tickToPrice](modules.md#ticktoprice)
-- [toHex](modules.md#tohex)
-- [tradeComparator](modules.md#tradecomparator)
-
-## Type Aliases
-
-### AddLiquidityOptions
-
-Ƭ **AddLiquidityOptions**: [`MintOptions`](modules.md#mintoptions) \| [`IncreaseOptions`](modules.md#increaseoptions)
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:77](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L77)
-
-___
-
-### FullWithdrawOptions
-
-Ƭ **FullWithdrawOptions**: [`ClaimOptions`](interfaces/ClaimOptions.md) & [`WithdrawOptions`](interfaces/WithdrawOptions.md)
-
-#### Defined in
-
-[staker.ts:8](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/staker.ts#L8)
-
-___
-
-### IncreaseOptions
-
-Ƭ **IncreaseOptions**: [`CommonAddLiquidityOptions`](interfaces/CommonAddLiquidityOptions.md) & [`IncreaseSpecificOptions`](interfaces/IncreaseSpecificOptions.md)
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:75](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L75)
-
-___
-
-### MintOptions
-
-Ƭ **MintOptions**: [`CommonAddLiquidityOptions`](interfaces/CommonAddLiquidityOptions.md) & [`MintSpecificOptions`](interfaces/MintSpecificOptions.md)
-
-#### Defined in
-
-[nonfungiblePositionManager.ts:74](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/nonfungiblePositionManager.ts#L74)
-
-___
-
-### PermitOptions
-
-Ƭ **PermitOptions**: [`StandardPermitArguments`](interfaces/StandardPermitArguments.md) \| [`AllowedPermitArguments`](interfaces/AllowedPermitArguments.md)
-
-#### Defined in
-
-[selfPermit.ts:22](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/selfPermit.ts#L22)
-
-## Variables
-
-### ADDRESS\_ZERO
-
-• `Const` **ADDRESS\_ZERO**: ``"0x0000000000000000000000000000000000000000"``
-
-#### Defined in
-
-[constants.ts:3](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/constants.ts#L3)
-
-___
-
-### FACTORY\_ADDRESS
-
-• `Const` **FACTORY\_ADDRESS**: ``"0x1F98431c8aD98523631AE4a59f267346ea31F984"``
-
-#### Defined in
-
-[constants.ts:1](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/constants.ts#L1)
-
-___
-
-### POOL\_INIT\_CODE\_HASH
-
-• `Const` **POOL\_INIT\_CODE\_HASH**: ``"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54"``
-
-#### Defined in
-
-[constants.ts:5](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/constants.ts#L5)
-
-___
-
-### TICK\_SPACINGS
-
-• `Const` **TICK\_SPACINGS**: { [amount in FeeAmount]: number }
-
-The default factory tick spacings by fee amount.
-
-#### Defined in
-
-[constants.ts:20](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/constants.ts#L20)
-
-## Functions
-
-### computePoolAddress
-
-▸ **computePoolAddress**(`__namedParameters`): `string`
-
-Computes a pool address
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `__namedParameters` | `Object` |
-| `__namedParameters.factoryAddress` | `string` |
-| `__namedParameters.fee` | [`FeeAmount`](enums/FeeAmount.md) |
-| `__namedParameters.initCodeHashManualOverride?` | `string` |
-| `__namedParameters.tokenA` | `Token` |
-| `__namedParameters.tokenB` | `Token` |
-
-#### Returns
-
-`string`
-
-The pool address
-
-#### Defined in
-
-[utils/computePoolAddress.ts:16](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/computePoolAddress.ts#L16)
-
-___
-
-### encodeRouteToPath
-
-▸ **encodeRouteToPath**(`route`, `exactOutput`): `string`
-
-Converts a route to a hex encoded path
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `route` | [`Route`](classes/Route.md)<`Currency`, `Currency`\> | the v3 path to convert to an encoded path |
-| `exactOutput` | `boolean` | whether the route should be encoded in reverse, for making exact output swaps |
-
-#### Returns
-
-`string`
-
-#### Defined in
-
-[utils/encodeRouteToPath.ts:11](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/encodeRouteToPath.ts#L11)
-
-___
-
-### encodeSqrtRatioX96
-
-▸ **encodeSqrtRatioX96**(`amount1`, `amount0`): `JSBI`
-
-Returns the sqrt ratio as a Q64.96 corresponding to a given ratio of amount1 and amount0
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `amount1` | `BigintIsh` | The numerator amount i.e., the amount of token1 |
-| `amount0` | `BigintIsh` | The denominator amount i.e., the amount of token0 |
-
-#### Returns
-
-`JSBI`
-
-The sqrt ratio
-
-#### Defined in
-
-[utils/encodeSqrtRatioX96.ts:11](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/encodeSqrtRatioX96.ts#L11)
-
-___
-
-### isSorted
-
-▸ **isSorted**<`T`\>(`list`, `comparator`): `boolean`
-
-Determines if a tick list is sorted
-
-#### Type parameters
-
-| Name |
-| :------ |
-| `T` |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `list` | `T`[] | The tick list |
-| `comparator` | (`a`: `T`, `b`: `T`) => `number` | The comparator |
-
-#### Returns
-
-`boolean`
-
-true if sorted
-
-#### Defined in
-
-[utils/isSorted.ts:7](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/isSorted.ts#L7)
-
-___
-
-### maxLiquidityForAmounts
-
-▸ **maxLiquidityForAmounts**(`sqrtRatioCurrentX96`, `sqrtRatioAX96`, `sqrtRatioBX96`, `amount0`, `amount1`, `useFullPrecision`): `JSBI`
-
-Computes the maximum amount of liquidity received for a given amount of token0, token1,
-and the prices at the tick boundaries.
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `sqrtRatioCurrentX96` | `default` | the current price |
-| `sqrtRatioAX96` | `default` | price at lower boundary |
-| `sqrtRatioBX96` | `default` | price at upper boundary |
-| `amount0` | `BigintIsh` | token0 amount |
-| `amount1` | `BigintIsh` | token1 amount |
-| `useFullPrecision` | `boolean` | if false, liquidity will be maximized according to what the router can calculate, not what core can theoretically support |
-
-#### Returns
-
-`JSBI`
-
-#### Defined in
-
-[utils/maxLiquidityForAmounts.ts:68](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/maxLiquidityForAmounts.ts#L68)
-
-___
-
-### mostSignificantBit
-
-▸ **mostSignificantBit**(`x`): `number`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `x` | `default` |
-
-#### Returns
-
-`number`
-
-#### Defined in
-
-[utils/mostSignificantBit.ts:12](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/mostSignificantBit.ts#L12)
-
-___
-
-### nearestUsableTick
-
-▸ **nearestUsableTick**(`tick`, `tickSpacing`): `number`
-
-Returns the closest tick that is nearest a given tick and usable for the given tick spacing
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `tick` | `number` | the target tick |
-| `tickSpacing` | `number` | the spacing of the pool |
-
-#### Returns
-
-`number`
-
-#### Defined in
-
-[utils/nearestUsableTick.ts:9](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/nearestUsableTick.ts#L9)
-
-___
-
-### priceToClosestTick
-
-▸ **priceToClosestTick**(`price`): `number`
-
-Returns the first tick for which the given price is greater than or equal to the tick price
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `price` | `Price`<`Token`, `Token`\> | for which to return the closest tick that represents a price less than or equal to the input price, i.e. the price of the returned tick is less than or equal to the input price |
-
-#### Returns
-
-`number`
-
-#### Defined in
-
-[utils/priceTickConversions.ts:29](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/priceTickConversions.ts#L29)
-
-___
-
-### subIn256
-
-▸ **subIn256**(`x`, `y`): `JSBI`
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `x` | `default` |
-| `y` | `default` |
-
-#### Returns
-
-`JSBI`
-
-#### Defined in
-
-[utils/tickLibrary.ts:11](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/tickLibrary.ts#L11)
-
-___
-
-### tickToPrice
-
-▸ **tickToPrice**(`baseToken`, `quoteToken`, `tick`): `Price`<`Token`, `Token`\>
-
-Returns a price object corresponding to the input tick and the base/quote token
-Inputs must be tokens because the address order is used to interpret the price represented by the tick
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `baseToken` | `Token` | the base token of the price |
-| `quoteToken` | `Token` | the quote token of the price |
-| `tick` | `number` | the tick for which to return the price |
-
-#### Returns
-
-`Price`<`Token`, `Token`\>
-
-#### Defined in
-
-[utils/priceTickConversions.ts:14](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/priceTickConversions.ts#L14)
-
-___
-
-### toHex
-
-▸ **toHex**(`bigintIsh`): `string`
-
-Converts a big int to a hex string
-
-#### Parameters
-
-| Name | Type |
-| :------ | :------ |
-| `bigintIsh` | `BigintIsh` |
-
-#### Returns
-
-`string`
-
-The hex encoded calldata
-
-#### Defined in
-
-[utils/calldata.ts:23](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/utils/calldata.ts#L23)
-
-___
-
-### tradeComparator
-
-▸ **tradeComparator**<`TInput`, `TOutput`, `TTradeType`\>(`a`, `b`): `number`
-
-Trades comparator, an extension of the input output comparator that also considers other dimensions of the trade in ranking them
-
-#### Type parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `TInput` | extends `Currency` | The input token, either Ether or an ERC-20 |
-| `TOutput` | extends `Currency` | The output token, either Ether or an ERC-20 |
-| `TTradeType` | extends `TradeType` | The trade type, either exact input or exact output |
-
-#### Parameters
-
-| Name | Type | Description |
-| :------ | :------ | :------ |
-| `a` | [`Trade`](classes/Trade.md)<`TInput`, `TOutput`, `TTradeType`\> | The first trade to compare |
-| `b` | [`Trade`](classes/Trade.md)<`TInput`, `TOutput`, `TTradeType`\> | The second trade to compare |
-
-#### Returns
-
-`number`
-
-A sorted ordering for two neighboring elements in a trade array
-
-#### Defined in
-
-[entities/trade.ts:16](https://github.com/Uniswap/v3-sdk/blob/08a7c05/src/entities/trade.ts#L16)
diff --git a/docs/sdk/web3-react/_category_.json b/docs/sdk/web3-react/_category_.json
deleted file mode 100644
index 3b42f2a86..000000000
--- a/docs/sdk/web3-react/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "web3-react",
- "position": 3,
- "collapsed": true
-}
diff --git a/docs/sdk/web3-react/guides/01-connect-wallet.md b/docs/sdk/web3-react/guides/01-connect-wallet.md
deleted file mode 100644
index ff355646e..000000000
--- a/docs/sdk/web3-react/guides/01-connect-wallet.md
+++ /dev/null
@@ -1,165 +0,0 @@
----
-id: connect-wallet
-title: Connecting to Wallets
----
-
-## Introduction
-
-This guide will cover how to connect wallets with `web3-react`. It is based on the [`web3-react` example](https://github.com/Uniswap/examples/tree/main/web3-react) found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the examples's [README](https://github.com/Uniswap/examples/blob/main/web3-react/README.md) and follow the setup instructions.
-
-
-In this example we will walk through setting up `web3-react` and connecting the most popular browser-injected connector, [MetaMask](https://metamask.io/), using [@web3-react/metamask](https://www.npmjs.com/package/@web3-react/metamask).
-
-
-The input parameters to this guide are the chains that we want our app to be able to connect to and their RPC URLs.
-
-The guide will **cover**:
-
-1. Creating a `web3-react` `Web3ReactProvider`
-2. Building a `web3-react` `InjectedConnector`
-3. Connecting and disconnecting the application to the connector
-
-At the end of the guide, we should be able to connect and disconnect your dApp to a MetaMask connector.
-
-For this guide, the following `web3-react` packages are used:
-
-- [`@web3-react/core`](https://www.npmjs.com/package/@web3-react/core)
-- [`@web3-react/types`](https://www.npmjs.com/package/@web3-react/types)
-- [`@web3-react/metamask`](https://www.npmjs.com/package/@web3-react/metamask)
-
-:::info
-This guide uses `web3-react` version 8, which is a beta version.
-:::
-
-These will be automatically installed by following the example's [README](https://github.com/Uniswap/examples/blob/main/web3-react/README.md).
-
-The core code of this guide can be found in [Web3ContextProvider](https://github.com/Uniswap/examples/blob/main/web3-react/src/libs/components/Web3ContextProvider.tsx) and [InjectedConnector](https://github.com/Uniswap/examples/blob/main/web3-react/src/libs/injected.ts).
-
-## Creating a `Web3ReactProvider`
-
-To be able to interact with the methods that `web3-react` offers, we first need to setup a `Web3ReactProvider` and wrap our application in it. `web3-react` uses a [React `Context`](https://reactjs.org/docs/context.html) to allow us to use the exposed hooks without additional configuration.
-
-To start, we create a React component called `Web3ContextProvider` in order to wrap the logic of configuring the `Web3ReactProvider`. In this component, we first import `Web3ReactProvider` from [@web3-react/core](https://www.npmjs.com/package/@web3-react/core).
-
-The component receives just one prop which is the `children` to which it will be providing the `Context`:
-
-```typescript reference title="Defining the Web3React component" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/components/Web3ContextProvider.tsx#L24
-```
-
-We then implement the component by rendering the imported `Web3ReactProvider` with the `children` within that:
-
-
-```typescript reference title="Implementing the component" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/components/Web3ContextProvider.tsx#L30-L34
-```
-
-Note that we map our list of [`Connections`](https://github.com/Uniswap/examples/blob/856dbb002e7f38120554ef226f4309c96ce6ea79/web3-react/src/libs/connections.ts#L10) to a *tuple* of the `connector` and `hooks` of the connection. The third element of a `Connection` refers to the [type](https://github.com/Uniswap/examples/blob/06980acc8f6d484b719d2c60f5bfe9d766cb95d6/web3-react/src/libs/connections.ts#L16) of `Connection` being established, which we will later use to keep track of the actively connected wallet.
-
-Finally, having created the `Web3ContextProvider` component, we can navigate to our [index file](https://github.com/Uniswap/examples/blob/feat/web3-react/web3-react/src/index.tsx) and wrap the whole application with it:
-
-```typescript reference title="Wrapping our app with the web3 context" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/7ac3853bc465aecc428a32be584bbeb833b0a63c/web3-react/src/index.tsx#L16-L22
-```
-
-## Building an Injected Connector
-
-The only parameter that we provided to the `Web3ReactProvider` component is a list of prioritized connectors, declared as `PRIORITIZED_CONNECTORS`. The prioritization ordering is with regards to which connector we want to be active when more than one connector is connected to our application. The list is defined inside our connectors module:
-```typescript reference title="Creating the prioritized Connectors list" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/connections.ts#L33-L39
-```
-
-Each one of those connectors lives within its own file, and they all follow a similar setup pattern.
-
-An example of a connector in the list is the `InjectedConnector`, which supports wallets that inject an *Ethereum Provider* into the browser window. The most popular example of an injected connector is the *MetaMask* browser extension. To set it up, we import `initializeConnector` function from [core]((https://www.npmjs.com/package/@web3-react/core)) and the `MetaMask` type from [metamask]((https://www.npmjs.com/package/@web3-react/core)):
-
-```typescript reference title="Importing Connector dependencies" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/856dbb002e7f38120554ef226f4309c96ce6ea79/web3-react/src/libs/injected.ts#L1-L2
-```
-
-We then utilize the templated `initializeConnector` function with `MetaMask` as the type argument:
-
-```typescript reference title="Initializing the MetaMask connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/injected.ts#L7-L9
-```
-
-By passing in `MetaMask` as the type argument, we define the function's required input parameters. In this case, the only parameter we need to pass is an instance of `Metamask`, which receives the `actions` and `onError` parameters. The first parameter defines the actions that `web3-react` performs on its local store for the connector (this usually can be passed through without modification), while the second parameter is the callback invoked when an error occurs.
-
-The return type of the function is a tuple of the initialized `Connector` and the `Hooks` that we can use on it. Using this tuple, we create an instance of a [`Connection`](https://github.com/Uniswap/examples/blob/856dbb002e7f38120554ef226f4309c96ce6ea79/web3-react/src/libs/connections.ts#L10) type, by setting the `type` property to `INJECTED`:
-
-
-```typescript reference title="Creating a connection instance" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/856dbb002e7f38120554ef226f4309c96ce6ea79/web3-react/src/libs/injected.ts#L16-L20
-```
-
-Finally, we return the instance of `Connection` we created, which is added to the list of prioritized connectors.
-
-:::info
-For help on creating the rest of the supported connectors of this examples, please visit our [connectors](./connectors.md) page!
-:::
-
-
-## Connecting and disconnecting the application to the connector
-
-Having built our `InjectedConnector`, we can now use it in the Context that allows our application to use that connector:
-
-```typescript reference title="Creating the Option component" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/components/Option.tsx#L5-L11
-```
-
-The component receives 5 parameters:
-- `isEnabled` determines whether the connector is eligible to be activated
-- `isConnected` determines whether the connector is currently active
-- `connectionType` determines the `ConnectionType`
-- `onActivate` is called once the component has established a connection
-- `onDeactivate` is called once the component has disconnected
-
-In the case of *MetaMask*, when declaring the `InjectedConnector` we pass the connector-specific arguments:
-
-```typescript reference title="Creating an injected connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/components/ConnectionOptions.tsx#L26-L32
-```
-
-Then, in the `html` portion of the `Option`, we can figure out whether we want the current `Option`'s action button to be disabled, and whether clicking the button would result in the connector being connected or disconnected:
-
-```typescript reference title="The component user interface" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/components/Option.tsx#L38-L42
-```
-
-Finally, we also have enough information to figure out what action to take when the button is clicked. In the case that the click triggers a connection:
-
-```typescript reference title="On connecting to a Connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/components/Option.tsx#L38-L42
-```
-
-To connect our wallet, all we need to do is to call the `tryActivateConnector` function and pass it the `InjectedConnector`. We then call the `onActivate` callback, which makes the `InjectedConnector` the active connector in our application's state.
-
-
-`tryActivateConnector` takes as its argument the connector that we want to activate, and attempts to call `activate` on it. If this activation succeeds, it returns the new `ConnectionType`:
-
-
-```typescript reference title="The implementation of tryActivateConnector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/connections.ts#L90-L92
-```
-
-
-In the case that the click triggers a disconnection:
-
-```typescript reference title="On disconnecting from a Connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/components/Option.tsx#L29-L36
-```
-
-
-To disconnect, all we need to do is to call `tryDeactivateConnector` and pass in it the `InjectedConnector` we created before. We then call the `onDeactivate` callback, which removes the `InjectedConnector` as the currently active connector from our application's state.
-
-`tryDeactivateConnector` takes as its argument the connector that we want to deactivate, and attempts to call `deactivate` on it. If this deactivation succeeds, it resets the connector's state by calling `resetState` and returns `null`:
-
-```typescript reference title="The implementation of tryDeactivateConnector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/connections.ts#L98-L100
-```
-
-## Next Steps
-
-Now that we have gone through connecting and disconnecting from an `InjectedConnector`, we will learn how to [connect and disconnect](./02-connectors.md) from all the different types of connectors that `web3-react` supports.
-
-
diff --git a/docs/sdk/web3-react/guides/02-connectors.md b/docs/sdk/web3-react/guides/02-connectors.md
deleted file mode 100644
index e157a26c1..000000000
--- a/docs/sdk/web3-react/guides/02-connectors.md
+++ /dev/null
@@ -1,164 +0,0 @@
----
-id: connectors
-title: Supported Connectors
----
-
-## Introduction
-
-This guide will cover how to connect our dApp to all the different connectors that `web3-react` supports. It is based on the [`web3-react` example](https://github.com/Uniswap/examples/tree/main/web3-react), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the examples's [README](https://github.com/Uniswap/examples/blob/main/web3-react/README.md) and follow the setup instructions.
-
-
-In this example we will cover connecting our dApp to the following connectors:
-- Coinbase wallet
-- WalletConnect wallet
-- Network
-- Gnosis safe
-
-
-:::info
-For help on setting up `web3-react` and interacting with a MetaMask wallet, please visit our [connecting to wallets](./01-connect-wallet.md) page!
-:::
-
-
-The input parameters to this guide are the chains that we want our dApp to be able to connect to and their RPC URLs.
-
-The guide will **cover**:
-
-1. Building a Coinbase Wallet connector
-2. Building a WalletConnect Wallet connector
-3. Building a Network connector
-4. Building a Gnosis Safe connector
-
-
-At the end of the guide, we should be able to connect and disconnect the application to the different connectors listed above.
-
-For this guide, the following `web3-react` packages are used:
-
-- [`@web3-react/core`](https://www.npmjs.com/package/@web3-react/core)
-- [`@web3-react/types`](https://www.npmjs.com/package/@web3-react/types)
-- [`@web3-react/coinbase-wallet`](https://www.npmjs.com/package/@web3-react/coinbase-wallet)
-- [`@web3-react/walletconnect`](https://www.npmjs.com/package/@web3-react/walletconnect)
-- [`@web3-react/network`](https://www.npmjs.com/package/@web3-react/network)
-- [`@web3-react/gnosis-safe`](https://www.npmjs.com/package/@web3-react/gnosis-safe)
-
-:::info
-This guide uses `web3-react` version 8, which is a beta version.
-:::
-
-The core code of this guide can be found in the top level of our [examples repository](https://github.com/Uniswap/examples/tree/main/web3-react), under each connectors' name. For example, the code for the Coinbase Wallet connector can be found in the the [coinbase file](https://github.com/Uniswap/examples/blob/main/web3-react/src/libs/coinbase.ts).
-
-## Building a Coinbase Wallet connector
-
-The second connector in the list of prioritized connectors that [we provided](./01-connect-wallet.md/#building-an-injected-connector) as a parameter to [`Web3ReactProvider`](https://github.com/Uniswap/examples/blob/feat/web3-react/web3-react/src/libs/components/Web3ContextProvider.tsx) is the *Coinbase Wallet* connector:
-
-```typescript reference title="Creating the prioritized Connectors list" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/connections.ts#L33-L39
-```
-
-To connect to a *Coinbase Wallet* connector, we first need to install [`@web3-react/coinbase-wallet`](https://www.npmjs.com/package/@web3-react/coinbase-wallet), as well as [`@coinbase/wallet-sdk`](https://github.com/coinbase/coinbase-wallet-sdk). Having installed the packages, we can import the `CoinbaseWallet` class from `@web3-react/coinbase-wallet`, as well as the `initializeConnector` function from the `@web3-react/core` package:
-
-```typescript reference title="Importing the Coinbase Wallet connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/coinbase.ts#L1-L2
-```
-We can now build our connector, supplying the required arguments:
-
-```typescript reference title="Initializing the Coinbase Wallet Connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/coinbase.ts#L8-L19
-```
-
-We pass `CoinbaseWallet` as the type argument to `initializeConnector`'s templated parameter. Similar to the case of the `InjectedConnector`, the `CoinbaseWallet` class is a class that extends the `AbstractConnector` class, which is part of the `@web3-react/core` package. The parameter provided to `initializeConnector` is a function that receives an `actions` object, and expects an instance of `CoinbaseWallet` (to match the type argument) to be returned.
-
-We build the new `CoinbaseWallet` instance by passing the `actions` object, an `options` object, and an `onError` callback. `onError` handles errors that occur during interaction with the connector, and `options` is used to configure the connector. In our case, we pass the `url`, `appName` and `reloadOnDisconnect` options: `url` is the *RPC URL* to connect to that was provided as an argument to the example application, `appName` is the name of our application, and `reloadOnDisconnect` is a `boolean` that indicates whether the application should reload when the user disconnects from the wallet.
-
-After building the connector, we use its two return types, the `Connector` and it's respective hooks, and build a `Connection` object by setting the connection's type as the Coinbase wallet:
-
-```typescript reference title="Building the Coinbase Wallet Connection" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/coinbase.ts#L20-L24
-```
-
-Having built the connector, all that remains is to build the user interface and supply it to our [`ConnectionOptions`](https://github.com/Uniswap/examples/blob/feat/web3-react/web3-react/src/libs/components/ConnectionOptions.tsx) component, just as we did with the `InjectedConnector`:
-
-```typescript reference title="Building the Coinbase Wallet component" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/components/ConnectionOptions.tsx#L39-L46
-```
-## Building a WalletConnect Wallet connector
-
-The third connector in the list of prioritized connectors that we provided to [`Web3ReactProvider`](https://github.com/Uniswap/examples/blob/feat/web3-react/web3-react/src/libs/components/Web3ContextProvider.tsx) is the WalletConnect Wallet connector.
-
-To connect to a WalletConnect Wallet connector, we first need to install [`@web3-react/walletconnect`](https://www.npmjs.com/package/@web3-react/walletconnect), as well as [`@walletconnect/ethereum-provider`](https://www.npmjs.com/package/@walletconnect/ethereum-provider). Having installed the packages, we can import the `WalletConnect` class from `@web3-react/walletconnect`, as well as the `initializeConnector` function from`@web3-react/core` package:
-
-```typescript reference title="Importing the WalletConnect Wallet Connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/wallet-connect.ts#L1-L2
-```
-We can now build our connector, supplying the required arguments:
-
-```typescript reference title="Initializing the WalletConnect Wallet Connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/wallet-connect.ts#L8-L17
-```
-
-The main difference from the Coinbase Wallet connector lies in the arguments that the `WalletConnect` class requires to be instantiated. `web3-react` knows about this difference, as we passed the type argument `WalletConnect` to `initializeConnector`, thus specializing the type of `AbstractConnector`. In this case, the class receives three arguments, including `actions` and `onError`, identical to those supplied in the Coinbase Wallet connector case.
-
-The difference lies in the second argument, which is an `options` object. In this case, we are passing the `rpc` parameter, which is an object that maps the chain ID to the RPC URL to connect to. We have already created this [map](https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/constants.ts#L11) in our [`constants`](https://github.com/Uniswap/examples/blob/feat/web3-react/web3-react/src/libs/constants.ts) file using our example's parameters. The other option that we are passing is the `qrcode`, which is a `boolean` that indicates whether the QR code should be displayed in the browser. In our case, we are passing `true` as we want to show the QR code.
-
-Having built the connector, we just need to build the user interface to enable user interaction with the connector, and supply it to our `ConnectionOptions`:
-
-```typescript reference title="Building the WalletConnect Wallet component" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/components/ConnectionOptions.tsx#L49-L56
-```
-## Building a Network connector
-
-The *Network connector*, alongside the *Gnosis Safe connector*, are two of the connectors that we do not surface through our user interface, but instead we connect to them programmatically. In contrast to the previous *Connectors*, these do not come with any pre-built user interface for the user to interact with. We attempt to connect to them **eagerly** in our [`Web3ContextProvider`](https://github.com/Uniswap/examples/blob/feat/web3-react/web3-react/src/libs/components/Web3ContextProvider.tsx) component through a hook:
-
-```typescript reference title="Hook to connect eagerly" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/81ec93e97b0afded621e177fe5f34fc9f98f80b0/web3-react/src/libs/components/Web3ContextProvider.tsx#L9-L13
-```
-
-The `useEagerlyConnect` hook is called in the `Web3ContextProvider` component and attempts to connect to the Network Connector and the Gnosis Safe Connector. The hook is named **eagerly** as it is called in the component's body as [React effect](https://reactjs.org/docs/hooks-effect.html) when the component is first rendered. In the hook implementation we attempt to call `web3-react`'s `connectEagerly` function if it exists on the connector, otherwise we call `activate` otherwise. The `connectEagerly` function attempts to connect our application to the connector, and **fails silently** if it does not succeed:
-
-```typescript reference title="Connecting eagerly" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/hooks.ts#L15-L19
-```
-
-Before eagerly connecting, we first need to initialize the connectors. We start by building the Network connector, and we first need to install [`@web3-react/network`](https://www.npmjs.com/package/@web3-react/network), and import the `Network` class from it. Note how this Connect does not require any package besides its `web3-react` package to function. We also need to import the `initializeConnector` function from `@web3-react/core`:
-
-```typescript reference title="Importing the Network Connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/network.ts#L1-L2
-```
-We can now build our connector, supplying the required arguments:
-
-```typescript reference title="Initializing the Network Connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/network.ts#L8-L15
-```
-
-The main difference from the other connectors lies in the arguments that the `Network` class requires to be instantiated. `web3-react` knows about this difference, as we passed the type argument `Network` to `initializeConnector`, thus specializing the type of `AbstractConnector`. In this case, the class receives `actions`, which is identical to that supplied in the rest of the connectors; `urlMap`, which is an object that maps the chain ID to the RPC URL to connect to, which we have already created in our [`constants`](https://github.com/Uniswap/examples/blob/feat/web3-react/web3-react/src/libs/constants.ts) file; and `defaultChainId` which is the chain ID to connect to by default.
-
-After building, the connector, we can create a `Connection` instance by supplying it the return value of the `initializeConnector` function, and the `Network` class:
-
-```typescript reference title="Creating a Network connection" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/network.ts#L16-L20
-```
-All that remains is to return the constructed `Connection` instance.
-
-## Building a Gnosis Safe connector
-
-Similar to the Network connector, we build the Gnosis Safe connector. We start by first installing [`@web3-react/gnosis-safe`](https://www.npmjs.com/package/@web3-react/gnosis-safe), and import the `GnosisSafe` class from it. We also need to import the `initializeConnector` function from `@web3-react/core`:
-
-```typescript reference title="Importing the Gnosis Safe connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/gnosis.tsx#L1-L2
-```
-
-The Gnosis Safe connector is the simplest of them all, as it does not require any additional parameterization other than `actions`:
-
-```typescript reference title="Initializing a Gnosis Safe Connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/gnosis.tsx#L6-L9
-```
-
-Having initialized the connector, we can now build the `Connection` instance and return it:
-
-```typescript reference title="Creating a Gnosis Safe Connection" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/gnosis.tsx#L10-L14
-```
-
-## Next steps
-
-Now that we have gone through building all of the different types of supported connectors, we will learn how to [switch chains](03-switch-chains.md).
\ No newline at end of file
diff --git a/docs/sdk/web3-react/guides/03-switch-chains.md b/docs/sdk/web3-react/guides/03-switch-chains.md
deleted file mode 100644
index 531a70078..000000000
--- a/docs/sdk/web3-react/guides/03-switch-chains.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-id: switch-chains
-title: Switching Chains
----
-
-## Introduction
-
-This guide will cover how to prompt a wallet that has connected to our dApp to switch chains using `web3-react`. It is based on the [`web3-react` example](https://github.com/Uniswap/examples/tree/main/web3-react), found in the t1 code examples [repository](https://github.com/Uniswap/examples). To run this example, check out the examples's [README](https://github.com/Uniswap/examples/blob/main/web3-react/README.md) and follow the setup instructions.
-
-
-:::info
-For help on setting up `web3-react` and interacting with a MetaMask wallet, please visit our [connecting to wallets](./01-connect-wallet.md) page!
-:::
-
-
-The input parameters to this guide are the chains that we want our dApp to be able to connect to and their RPC URLs.
-
-At the end of the guide, we should be able to switch chains on the connected wallet.
-
-For this guide, the following `web3-react` packages are used:
-
-- [`@web3-react/core`](https://www.npmjs.com/package/@web3-react/core)
-
-:::info
-This guide uses `web3-react` version 8, which is a beta version.
-:::
-
-The core code of this guide can be found in [connections](https://github.com/Uniswap/examples/blob/feat/web3-react/web3-react/src/libs/connections.ts).
-
-## Switching Chains
-
-Having [setup our application](./01-connect-wallet.md) to use `web3-react` and having built out the ability to [connect and disconnect wallets](./02-connectors.md), we can now move on to switching chains.
-
-Switching chains requires two parameters, the `chainId` we want to switch to, and the current `connectionType`:
-
-```typescript reference title="Defining the function" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/connections.ts#L64
-```
-
-Given the `ConnectionType`, we can retrieve the actual connector:
-
-```typescript reference title="Retrieving the connector" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/connections.ts#L69
-```
-
-Then, depending on the `ConnectionType`, we determine how to switch chains. For the `Network` or `WalletConnect` cases, we call `web3-react`'s `activate` function with the supplied `chainId`:
-
-```typescript reference title="Switching chains for Network and WalletConnect" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/connections.ts#L71-L74
-```
-
-The rest of the connectors require us to build an `AddEthereumChainParameter` object and pass it to the `web3-react`'s `activate` function:
-
-```typescript reference title="Switching chains the other Connectors" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/connections.ts#L77-L84
-```
-
-The metadata required to build `AddEthereumChainParameter` are defined in our constants file:
-
-```typescript reference title="Defining the chain parameters" referenceLinkText="View on Github" customStyling
-https://github.com/Uniswap/examples/blob/8c0e36ca8d2ba4718af944094191f39da62a9c5c/web3-react/src/libs/constants.ts#L27-L40
-```
-
-## Next steps
-
-Know you know how to support `web3-react`'s most common use cases! Stay tuned for follow up guides.
diff --git a/docs/sdk/web3-react/guides/_category_.json b/docs/sdk/web3-react/guides/_category_.json
deleted file mode 100644
index c694eb5b2..000000000
--- a/docs/sdk/web3-react/guides/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "label": "Guides",
- "position": 2,
- "collapsed": false
-}
diff --git a/docs/sdk/web3-react/overview.md b/docs/sdk/web3-react/overview.md
deleted file mode 100644
index 46fdadf73..000000000
--- a/docs/sdk/web3-react/overview.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-id: overview
-sidebar_position: 1
-title: Overview
----
-# `web3-react`
-
-> **Welcome to `web3-react`!**
-
-`web3-react` provides abstractions to assist you with connecting your dApp to web3 connectors and exposes methods to interact with those connections. It currently supports connecting to the following wallets:
-- Network
-- Injected wallets (eg MetaMask)
-- Gnosis safe
-- Coinbase wallet
-- WalletConnect wallet
-
-To begin, we recommend looking at our [guides](./guides/01-setting-up.md) which include [runnable examples](https://github.com/Uniswap/examples/tree/main/web3-react) and walkthroughs of core usages. These guides will help you better understand how to use `web3-react` and integrate it into your application.
-
-:::info
-This guide uses `web3-react` version 8, which is a beta version.
-:::
-
-## Installation
-
-`web3-react` consists of many packages, each providing different functionalities. The [core](https://www.npmjs.com/package/@web3-react/core) package exposes the methods used to interact with web3 connectors, the [types](https://www.npmjs.com/package/@web3-react/types) package declares useful types, while the others are installed to enable interactions with different connectors.
-
-To interact with `web3-react` we recommend installing though npm:
-
-```bash
-npm install --save @web3-react/core
-```
-
-or yarn:
-
-```bash
-yarn add @web3-react/core
-```
-
-## Developer Links
-
-- [**`web3-react` on Github**](https://github.com/Uniswap/web3-react)
-
-[](https://www.npmjs.com/package/@web3-react/core/v/latest)
-[](https://bundlephobia.com/result?p=@web3-react/core@latest)
-[](https://discord.com/channels/597638925346930701/607978109089611786)
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 14cd31019..225e021b1 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -107,13 +107,6 @@ module.exports = {
editUrl: 'https://github.com/t1protocol/docs/tree/main/',
includeCurrentVersion: true,
},
- blog: {
- remarkPlugins: [math],
- rehypePlugins: [katex],
- path: 'blog/',
- blogTitle: 'Engineering Blog',
- blogSidebarCount: 0,
- },
theme: {
customCss: require.resolve('./src/css/custom.css'),
customCss2: require.resolve('./src/css/colors.css'),
@@ -129,78 +122,5 @@ module.exports = {
crossorigin: 'anonymous',
},
],
- plugins: [
- ['@saucelabs/theme-github-codeblock', {}],
- [
- '@docusaurus/plugin-client-redirects',
- {
- redirects: [
- // 1/9/23 V3 SDK Guide Redirects
- {
- to: '/sdk/v3/guides/background',
- from: '/sdk/v3/guides/quick-start',
- },
- {
- to: '/sdk/v3/guides/swaps/quoting',
- from: ['/sdk/v3/guides/creating-a-pool', '/sdk/v3/guides/fetching-prices'],
- },
- {
- to: '/sdk/v3/guides/swaps/trading',
- from: '/sdk/v3/guides/creating-a-trade',
- },
- {
- to: '/sdk/v3/guides/swaps/routing',
- from: '/sdk/v3/guides/auto-router',
- },
- {
- to: '/sdk/v3/guides/liquidity/modifying-position',
- from: ['/sdk/v3/guides/liquidity/adding', '/sdk/v3/guides/liquidity/removing'],
- },
- ],
- createRedirects(existingPath) {
- // V3 Redirects
- if (existingPath.includes('/concepts/overview')) {
- return [existingPath.replace('/concepts/overview', '/protocol/introduction')]
- }
- if (existingPath.includes('/contracts/v3/reference')) {
- return [existingPath.replace('/contracts/v3/reference', '/protocol/reference')]
- }
- if (existingPath.includes('/contracts/v3/guides')) {
- return [existingPath.replace('/contracts/v3/guides', '/protocol/guides')]
- }
- // V2 Redirects
- if (existingPath.includes('/contracts/v2/reference')) {
- return [existingPath.replace('/contracts/v2/reference', '/protocol/V2/reference')]
- }
- if (existingPath.includes('/contracts/v2/guides')) {
- return [existingPath.replace('/contracts/v2/guides', '/protocol/V2/guides')]
- }
- // Permit2 Redirects
- if (existingPath.includes('/contracts/permit2')) {
- return [existingPath.replace('/contracts/permit2', '/protocol/permit2')]
- }
- // v3-sdk Redirects
- if (existingPath.includes('/sdk/v3/overview')) {
- return [existingPath.replace('/sdk/v3/overview', '/sdk/introduction')]
- }
- if (existingPath.includes('/sdk/v3/guides')) {
- return [existingPath.replace('/sdk/v3/guides', '/sdk/guides')]
- }
- // swap-widgets Redirects
- if (existingPath.includes('/sdk/swap-widget/overview')) {
- return [existingPath.replace('/sdk/swap-widget/overview', '/sdk/widgets/swap-widget')]
- }
- if (existingPath.includes('/sdk/swap-widget/reference/v2')) {
- return [existingPath.replace('/sdk/swap-widget/reference/v2', '/sdk/widgets/swap-widget/api')]
- }
- if (existingPath.includes('/concepts')) {
- return [existingPath.replace('/concepts', '/protocol/concepts')]
- }
-
- // Return a falsy value: no redirect created
- return undefined
- },
- },
- ],
- ],
+ plugins: [['@saucelabs/theme-github-codeblock', {}]],
}
diff --git a/examples/sdk/AddAndRemoveLiquidity.tsx b/examples/sdk/AddAndRemoveLiquidity.tsx
deleted file mode 100644
index de0c4636b..000000000
--- a/examples/sdk/AddAndRemoveLiquidity.tsx
+++ /dev/null
@@ -1,126 +0,0 @@
-import { Pool, Position, NonfungiblePositionManager, nearestUsableTick } from '@uniswap/v3-sdk'
-
-import { ethers } from 'ethers'
-import { Percent, Token, CurrencyAmount } from '@uniswap/sdk-core'
-import { abi as IUniswapV3PoolABI } from '@uniswap/v3-core/artifacts/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json'
-
-// default uses “http://localhost:8545”
-// can also input your own connection with "https://mainnet.infura.io/v3/" as an input
-const provider = new ethers.providers.JsonRpcProvider()
-
-// pool address for DAI/USDC 0.05%
-const poolAddress = '0x6c6bc977e13df9b0de53b251522280bb72383700'
-
-const poolContract = new ethers.Contract(poolAddress, IUniswapV3PoolABI, provider)
-
-interface Immutables {
- factory: string
- token0: string
- token1: string
- fee: number
- tickSpacing: number
- maxLiquidityPerTick: ethers.BigNumber
-}
-
-interface State {
- liquidity: ethers.BigNumber
- sqrtPriceX96: ethers.BigNumber
- tick: number
- observationIndex: number
- observationCardinality: number
- observationCardinalityNext: number
- feeProtocol: number
- unlocked: boolean
-}
-
-async function getPoolImmutables() {
- const immutables: Immutables = {
- factory: await poolContract.factory(),
- token0: await poolContract.token0(),
- token1: await poolContract.token1(),
- fee: await poolContract.fee(),
- tickSpacing: await poolContract.tickSpacing(),
- maxLiquidityPerTick: await poolContract.maxLiquidityPerTick(),
- }
- return immutables
-}
-
-async function getPoolState() {
- const slot = await poolContract.slot0()
- const PoolState: State = {
- liquidity: await poolContract.liquidity(),
- sqrtPriceX96: slot[0],
- tick: slot[1],
- observationIndex: slot[2],
- observationCardinality: slot[3],
- observationCardinalityNext: slot[4],
- feeProtocol: slot[5],
- unlocked: slot[6],
- }
- return PoolState
-}
-
-async function liquidityExamples(sender: string, exampleType: number) {
- const immutables = await getPoolImmutables()
- const state = await getPoolState()
- const DAI = new Token(1, immutables.token0, 18, 'DAI', 'Stablecoin')
- const USDC = new Token(1, immutables.token1, 18, 'USDC', 'USD Coin')
- const block = await provider.getBlock(provider.getBlockNumber())
- const deadline = block.timestamp + 200
-
- //create a pool
- const DAI_USDC_POOL = new Pool(
- DAI,
- USDC,
- immutables.fee,
- state.sqrtPriceX96.toString(),
- state.liquidity.toString(),
- state.tick
- )
-
- // create a position with the pool
- // the position is in-range, specified by the lower and upper tick
- // in this example, we will set the liquidity parameter to a small percentage of the current liquidity
- const position = new Position({
- pool: DAI_USDC_POOL,
- liquidity: state.liquidity.div(5000).toString(),
- tickLower: nearestUsableTick(state.tick, immutables.tickSpacing) - immutables.tickSpacing * 2,
- tickUpper: nearestUsableTick(state.tick, immutables.tickSpacing) + immutables.tickSpacing * 2,
- })
-
- // Example 0: Setting up calldata for minting a Position
- if (exampleType == 0) {
- const { calldata, value } = NonfungiblePositionManager.addCallParameters(position, {
- slippageTolerance: new Percent(50, 10_000),
- recipient: sender,
- deadline: deadline,
- })
- }
-
- // Example 1: Setting up calldata for adding liquidity to Position
- if (exampleType == 1) {
- const { calldata, value } = NonfungiblePositionManager.addCallParameters(position, {
- slippageTolerance: new Percent(50, 10_000),
- deadline: deadline,
- tokenId: 1,
- })
- }
-
- // Example 2: Setting up calldata for removing liquidity from Position
- if (exampleType == 2) {
- const { calldata, value } = NonfungiblePositionManager.removeCallParameters(position, {
- tokenId: 1,
- liquidityPercentage: new Percent(1),
- slippageTolerance: new Percent(50, 10_000),
- deadline: deadline,
- collectOptions: {
- expectedCurrencyOwed0: CurrencyAmount.fromRawAmount(DAI, 0),
- expectedCurrencyOwed1: CurrencyAmount.fromRawAmount(USDC, 0),
- recipient: sender,
- },
- })
- }
-}
-
-// call the example function by passing the sender, e.g.:
-// liquidityExamples("0xDA9dfA130Df4dE4673b89022EE50ff26f6EA73Cf", 0)
diff --git a/examples/sdk/fetchAndVerifyProofOfRead.ts b/examples/sdk/fetchAndVerifyProofOfRead.ts
deleted file mode 100644
index a560f6aa0..000000000
--- a/examples/sdk/fetchAndVerifyProofOfRead.ts
+++ /dev/null
@@ -1,174 +0,0 @@
-/**
- * t1 Protocol - Proof of Read Verification Example Script
- *
- * This script demonstrates how to fetch and verify cross-chain read proofs using the t1 Protocol.
- * It retrieves Merkle proofs for cross-chain read operations from t1's API and verifies them on-chain via t1 XChainReader contract.
- *
- * Before running this script, ensure you have:
- * 1. Node.js and npm installed
- * 2. Installed dependencies (ethers.js)
- * 3. A valid Ethereum address that has performed cross-chain reads through t1 Protocol
- *
- * Usage: node fetchAndVerifyProofOfRead
- * - requester_address: The Ethereum address that initiated cross-chain reads
- * - direction: Either "ARB_TO_BASE" or "BASE_TO_ARB" for the cross-chain direction
- *
- * Example: node fetchAndVerifyProofOfRead 0x1234567890123456789012345678901234567890 ARB_TO_BASE
- */
-
-import { ethers } from 'ethers';
-
-enum Direction {
- ARB_TO_BASE = 'ARB_TO_BASE',
- BASE_TO_ARB = 'BASE_TO_ARB',
-}
-
-interface ClaimInfo {
- from: string;
- to: string;
- value: string;
- nonce: string;
- message: string;
- x_chain_read_result: string;
- request_id: string;
- handle_read_result_with_proof_calldata: string;
- proof: {
- batch_index: string;
- merkle_proof: string;
- };
-}
-
-interface Result {
- source_tx_hash: string;
- message_type: number;
- block_number: number;
- message_hash: string;
- tx_sender: string;
- direction: Direction;
- claim_info: ClaimInfo;
-}
-
-interface ReadProofsResponse {
- results: Result[];
- page: number;
- page_size: number;
- total: number;
-}
-
-interface VerifiedProofReturn {
- requestId: string;
- result: string;
-}
-
-const XCHAINREADER_ABI = [
- 'function verifyProofOfRead(bytes encodedProofOfRead) external view returns (bytes32, bytes)',
-];
-const API_BASE_URL = 'https://api.v06.t1protocol.com/api';
-const ARB_RPC_URL = 'https://arbitrum-sepolia-rpc.publicnode.com';
-const BASE_RPC_URL = 'https://base-sepolia-rpc.publicnode.com';
-const ARB_XCHAINREADER_ADDRESS = '0x42d389A9007e446b92C0ce7bd8F42Ea10292881B';
-const BASE_XCHAINREADER_ADDRESS = '0x3821b214B4c9D053fa744dc2B355E2039696dFb7';
-
-async function getMerkleProofs(
- address: string,
- direction: Direction,
- page: number = 1,
- pageSize: number = 100,
-): Promise {
- const url = `${API_BASE_URL}/read-proofs?address=${address}&direction=${direction}&page=${page}&page_size=${pageSize}`;
-
- console.log(`Fetching Merkle proofs from: ${url}`);
-
- const response = await fetch(url);
-
- if (!response.ok) {
- throw new Error(
- `Failed to fetch proofs: ${response.status} ${response.statusText}`,
- );
- }
-
- const { data } = await response.json();
- return data;
-}
-
-async function verifyProofOfRead(
- direction: Direction,
- proofCalldata: string,
-): Promise {
- const provider = new ethers.JsonRpcProvider(
- direction === Direction.ARB_TO_BASE ? ARB_RPC_URL : BASE_RPC_URL,
- );
- const contract = new ethers.Contract(
- direction === Direction.ARB_TO_BASE
- ? ARB_XCHAINREADER_ADDRESS
- : BASE_XCHAINREADER_ADDRESS,
- XCHAINREADER_ABI,
- provider,
- );
-
- try {
- const response = await contract.verifyProofOfRead(proofCalldata);
- return { requestId: response[0], result: response[1] };
- } catch (error) {
- console.error('Error verifying proof:', error);
- return undefined;
- }
-}
-
-async function main() {
- const address = process.argv[2];
- const direction = process.argv[3];
-
- if (
- !address ||
- (direction !== 'ARB_TO_BASE' && direction !== 'BASE_TO_ARB')
- ) {
- console.error(
- 'Usage: npm run dev ',
- );
- process.exit(1);
- }
-
- const parsedDirection =
- direction === 'ARB_TO_BASE' ? Direction.ARB_TO_BASE : Direction.BASE_TO_ARB;
-
- try {
- console.log(`Getting Merkle proofs for address: ${address}`);
-
- const response = await getMerkleProofs(address, parsedDirection);
-
- if (response.results.length === 0) {
- console.log('No proofs found for this address.');
- return;
- }
-
- console.log(`Found ${response.results.length} proof(s)`);
-
- for (let i = 0; i < response.results.length; i++) {
- const item = response.results[i];
-
- console.log(`\nVerifying proof ${i + 1}/${response.results.length}:`);
- console.log(`- Request ID: ${item.claim_info.request_id}`);
- console.log(`- Source TX Hash: ${item.source_tx_hash}`);
- console.log(`- Batch Index: ${item.claim_info.proof.batch_index}`);
-
- const res = await verifyProofOfRead(
- parsedDirection,
- item.claim_info.handle_read_result_with_proof_calldata,
- );
-
- if (!res) {
- console.log('Proof verification FAILED');
- } else {
- console.log('Proof verification SUCCESSFUL');
- }
- }
-
- console.log('\nProof verifications completed');
- } catch (error) {
- console.error('Error:', error);
- process.exit(1);
- }
-}
-
-main().catch(console.error);
diff --git a/examples/smart-contracts/LiquidityExamples.sol b/examples/smart-contracts/LiquidityExamples.sol
deleted file mode 100644
index a722e3396..000000000
--- a/examples/smart-contracts/LiquidityExamples.sol
+++ /dev/null
@@ -1,243 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol';
-import '@uniswap/v3-core/contracts/libraries/TickMath.sol';
-import '../libraries/TransferHelper.sol';
-import '../interfaces/INonfungiblePositionManager.sol';
-
-contract LiquidityExamples is IERC721Receiver {
- address public constant nonfungiblePositionManager = 0xC36442b4a4522E871399CD717aBDD847Ab11FE88;
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
- uint24 public constant poolFee = 3000;
-
- /// @notice Represents the deposit of an NFT
- struct Deposit {
- address owner;
- uint128 liquidity;
- address token0;
- address token1;
- }
-
- /// @dev deposits[tokenId] => Deposit
- mapping(uint256 => Deposit) public deposits;
-
- // Implementing `onERC721Received` so this contract can receive custody of erc721 tokens
- // Note that the operator is recorded as the owner of the deposited NFT
- function onERC721Received(
- address operator,
- address,
- uint256 tokenId,
- bytes calldata
- ) external override returns (bytes4) {
- require(msg.sender == address(nonfungiblePositionManager), 'not a univ3 nft');
- _createDeposit(operator, tokenId);
- return this.onERC721Received.selector;
- }
-
- function _createDeposit(address owner, uint256 tokenId) internal {
- (, , address token0, address token1, , , , uint128 liquidity, , , , ) =
- nonfungiblePositionManager.positions(tokenId);
- // set the owner and data for position
- deposits[tokenId] = Deposit({owner: owner, liquidity: liquidity, token0: token0, token1: token1});
- }
-
- /// @notice Calls the mint function defined in periphery, mints the same amount of each token.
- /// For this example we are providing 1000 DAI and 1000 USDC in liquidity
- /// @return tokenId The id of the newly minted ERC721
- /// @return liquidity The amount of liquidity for the position
- /// @return amount0 The amount of token0
- /// @return amount1 The amount of token1
- function mintNewPosition()
- external
- returns (
- uint256 tokenId,
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- )
- {
- // For this example, we will provide equal amounts of liquidity in both assets.
- // Providing liquidity in both assets means liquidity will be earning fees and is considered in-range.
- uint256 amount0ToMint = 1000;
- uint256 amount1ToMint = 1000;
-
- // transfer tokens to contract
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amount0ToMint);
- TransferHelper.safeTransferFrom(USDC, msg.sender, address(this), amount1ToMint);
-
- // Approve the position manager
- TransferHelper.safeApprove(DAI, address(nonfungiblePositionManager), amount0ToMint);
- TransferHelper.safeApprove(USDC, address(nonfungiblePositionManager), amount1ToMint);
-
- // The values for tickLower and tickUpper may not work for all tick spacings.
- // Setting amount0Min and amount1Min to 0 is unsafe.
- INonfungiblePositionManager.MintParams memory params =
- INonfungiblePositionManager.MintParams({
- token0: DAI,
- token1: USDC,
- fee: poolFee,
- tickLower: TickMath.MIN_TICK,
- tickUpper: TickMath.MAX_TICK,
- amount0Desired: amount0ToMint,
- amount1Desired: amount1ToMint,
- amount0Min: 0,
- amount1Min: 0,
- recipient: address(this),
- deadline: block.timestamp
- });
-
- // Note that the pool defined by DAI/USDC and fee tier 0.3% must already be created and initialized in order to mint
- (tokenId, liquidity, amount0, amount1) = nonfungiblePositionManager.mint(params);
-
- // Create a deposit
- _createDeposit(msg.sender, tokenId);
-
- // Remove allowance and refund in both assets.
- if (amount0 < amount0ToMint) {
- TransferHelper.safeApprove(DAI, address(nonfungiblePositionManager), 0);
- uint256 refund0 = amount0ToMint - amount0;
- TransferHelper.safeTransfer(DAI, msg.sender, refund0);
- }
-
- if (amount1 < amount1ToMint) {
- TransferHelper.safeApprove(USDC, address(nonfungiblePositionManager), 0);
- uint256 refund1 = amount1ToMint - amount1;
- TransferHelper.safeTransfer(USDC, msg.sender, refund1);
- }
- }
-
- /// @notice Collects the fees associated with provided liquidity
- /// @dev The contract must hold the erc721 token before it can collect fees
- /// @param tokenId The id of the erc721 token
- /// @return amount0 The amount of fees collected in token0
- /// @return amount1 The amount of fees collected in token1
- function collectAllFees(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) {
- // Caller must own the ERC721 position, meaning it must be a deposit
- // set amount0Max and amount1Max to type(uint128).max to collect all fees
- // alternatively can set recipient to msg.sender and avoid another transaction in `sendToOwner`
- INonfungiblePositionManager.CollectParams memory params =
- INonfungiblePositionManager.CollectParams({
- tokenId: tokenId,
- recipient: address(this),
- amount0Max: type(uint128).max,
- amount1Max: type(uint128).max
- });
-
- (amount0, amount1) = nonfungiblePositionManager.collect(params);
-
- // send collected fees back to owner
- _sendToOwner(tokenId, amount0, amount1);
- }
-
- /// @notice A function that decreases the current liquidity by half. An example to show how to call the `decreaseLiquidity` function defined in periphery.
- /// @param tokenId The id of the erc721 token
- /// @return amount0 The amount received back in token0
- /// @return amount1 The amount returned back in token1
- function decreaseLiquidityInHalf(uint256 tokenId) external returns (uint256 amount0, uint256 amount1) {
- // caller must be the owner of the NFT
- require(msg.sender == deposits[tokenId].owner, 'Not the owner');
- // get liquidity data for tokenId
- uint128 liquidity = deposits[tokenId].liquidity;
- uint128 halfLiquidity = liquidity / 2;
-
- // amount0Min and amount1Min are price slippage checks
- // if the amount received after burning is not greater than these minimums, transaction will fail
- INonfungiblePositionManager.DecreaseLiquidityParams memory params =
- INonfungiblePositionManager.DecreaseLiquidityParams({
- tokenId: tokenId,
- liquidity: halfLiquidity,
- amount0Min: 0,
- amount1Min: 0,
- deadline: block.timestamp
- });
-
- (amount0, amount1) = nonfungiblePositionManager.decreaseLiquidity(params);
-
- // send liquidity back to owner
- _sendToOwner(tokenId, amount0, amount1);
- }
-
- /// @notice Increases liquidity in the current range
- /// @dev Pool must be initialized already to add liquidity
- /// @param tokenId The id of the erc721 token
- /// @param amount0 The amount to add of token0
- /// @param amount1 The amount to add of token1
- function increaseLiquidityCurrentRange(
- uint256 tokenId,
- uint256 amountAdd0,
- uint256 amountAdd1
- )
- external
- returns (
- uint128 liquidity,
- uint256 amount0,
- uint256 amount1
- )
- {
- uint256 token0 = deposits[tokenId].token0;
- uint256 token1 = deposits[tokenId].token1;
- TransferHelper.safeTransferFrom(token0, msg.sender, address(this), amountAdd0);
- TransferHelper.safeTransferFrom(token1, msg.sender, address(this), amountAdd1);
-
- TransferHelper.safeApprove(token0, address(nonfungiblePositionManager), amountAdd0);
- TransferHelper.safeApprove(token1, address(nonfungiblePositionManager), amountAdd1);
-
- INonfungiblePositionManager.IncreaseLiquidityParams memory params =
- INonfungiblePositionManager.IncreaseLiquidityParams({
- tokenId: tokenId,
- amount0Desired: amountAdd0,
- amount1Desired: amountAdd1,
- amount0Min: 0,
- amount1Min: 0,
- deadline: block.timestamp
- });
-
- (liquidity, amount0, amount1) = nonfungiblePositionManager.increaseLiquidity(params);
-
- // Remove allowance and refund in both assets.
- if (amount0 < amountAdd0) {
- TransferHelper.safeApprove(token0, address(nonfungiblePositionManager), 0);
- uint256 refund0 = amountAdd0 - amount0;
- TransferHelper.safeTransfer(token0, msg.sender, refund0);
- }
-
- if (amount1 < amount1ToMint) {
- TransferHelper.safeApprove(token1, address(nonfungiblePositionManager), 0);
- uint256 refund1 = amount1ToMint - amount1;
- TransferHelper.safeTransfer(token1, msg.sender, refund1);
- }
- }
-
- /// @notice Transfers funds to owner of NFT
- /// @param tokenId The id of the erc721
- /// @param amount0 The amount of token0
- /// @param amount1 The amount of token1
- function _sendToOwner(
- uint256 tokenId,
- uint256 amount0,
- uint256 amount1
- ) private {
- // get owner of contract
- address owner = deposits[tokenId].owner;
-
- address token0 = deposits[tokenId].token0;
- address token1 = deposits[tokenId].token1;
- // send collected fees to owner
- TransferHelper.safeTransfer(token0, owner, amount0);
- TransferHelper.safeTransfer(token1, owner, amount1);
- }
-
- /// @notice Transfers the NFT to the owner
- /// @param tokenId The id of the erc721
- function retrieveNFT(uint256 tokenId) external {
- // must be the owner of the NFT
- require(msg.sender == deposits[tokenId].owner, 'Not the owner');
- // remove information related to tokenId
- delete deposits[tokenId];
- // transfer ownership to original owner
- nonfungiblePositionManager.safeTransferFrom(address(this), msg.sender, tokenId);
- }
-}
\ No newline at end of file
diff --git a/examples/smart-contracts/SwapExamples.sol b/examples/smart-contracts/SwapExamples.sol
deleted file mode 100644
index c8e7cdd9f..000000000
--- a/examples/smart-contracts/SwapExamples.sol
+++ /dev/null
@@ -1,163 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-pragma solidity =0.7.6;
-pragma abicoder v2;
-
-import '../libraries/TransferHelper.sol';
-import '../interfaces/ISwapRouter.sol';
-
-contract SwapExamples {
- // For the scope of these swap examples,
- // we will detail the design considerations when using
- // `exactInput`, `exactInputSingle`, `exactOutput`, and `exactOutputSingle`.
-
- // It should be noted that for the sake of simplicity, we purposefully pass in the swap router instead of inheriting the swap router in these examples.
- // More advanced example contracts will detail how to inherit the swap router safely.
-
- ISwapRouter public immutable swapRouter;
-
- // This example swaps DAI/WETH9 for single path swaps and DAI/USDC/WETH9 for multipath swaps.
-
- address public constant DAI = 0x6B175474E89094C44Da98b954EedeAC495271d0F;
- address public constant WETH9 = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
- address public constant USDC = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48;
-
- // For this example, we will set the pool fee to 0.3%.
- uint24 public constant poolFee = 3000;
-
- constructor(ISwapRouter _swapRouter) {
- swapRouter = _swapRouter;
- }
-
- /// @notice swapExactInputSingle swaps a fixed amount of DAI for a maximum possible amount of WETH9
- /// using the DAI/WETH9 0.3% pool by calling `exactInputSingle` in the swap router.
- /// @dev The calling address must approve this contract to spend at least `amountIn` worth of its DAI for this function to succeed.
- /// @param amountIn The exact amount of DAI that will be swapped for WETH9.
- /// @return amountOut The amount of WETH9 received.
- function swapExactInputSingle(uint256 amountIn) external returns (uint256 amountOut) {
- // msg.sender must approve this contract
-
- // Transfer the specified amount of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountIn);
-
- // Approve the router to spend DAI.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountIn);
-
- // Naively set amountOutMinimum to 0. In production, use an oracle or other data source to choose a safer value for amountOutMinimum.
- // We also set the sqrtPriceLimitx96 to be 0 to ensure we swap our exact input amount.
- ISwapRouter.ExactInputSingleParams memory params =
- ISwapRouter.ExactInputSingleParams({
- tokenIn: DAI,
- tokenOut: WETH9,
- fee: poolFee,
- recipient: msg.sender,
- deadline: block.timestamp,
- amountIn: amountIn,
- amountOutMinimum: 0,
- sqrtPriceLimitX96: 0
- });
-
- // The call to `exactInputSingle` executes the swap.
- amountOut = swapRouter.exactInputSingle(params);
- }
-
- /// @notice swapExactOutputSingle swaps a minimum possible amount of DAI for a fixed amount of WETH.
- /// @dev The calling address must approve this contract to spend its DAI for this function to succeed. As the amount of input DAI is variable,
- /// the calling address will need to approve for a slightly higher amount, anticipating some variance.
- /// @param amountOut The exact amount of WETH9 to receive from the swap.
- /// @param amountInMaximum The amount of DAI we are willing to spend to receive the specified amount of WETH9.
- /// @return amountIn The amount of DAI actually spent in the swap.
- function swapExactOutputSingle(uint256 amountOut, uint256 amountInMaximum) external returns (uint256 amountIn) {
- // Transfer the specified amount of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountInMaximum);
-
- // Approve the router to spend the specified `amountInMaximum` of DAI.
- // In production, you should choose the maximum amount to spend based on oracles or other data sources to achieve a better swap.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountInMaximum);
-
- ISwapRouter.ExactOutputSingleParams memory params =
- ISwapRouter.ExactOutputSingleParams({
- tokenIn: DAI,
- tokenOut: WETH9,
- fee: poolFee,
- recipient: msg.sender,
- deadline: block.timestamp,
- amountOut: amountOut,
- amountInMaximum: amountInMaximum,
- sqrtPriceLimitX96: 0
- });
-
- // Executes the swap returning the amountIn needed to spend to receive the desired amountOut.
- amountIn = swapRouter.exactOutputSingle(params);
-
- // For exact output swaps, the amountInMaximum may not have all been spent.
- // If the actual amount spent (amountIn) is less than the specified maximum amount, we must refund the msg.sender and approve the swapRouter to spend 0.
- if (amountIn < amountInMaximum) {
- TransferHelper.safeApprove(DAI, address(swapRouter), 0);
- TransferHelper.safeTransfer(DAI, msg.sender, amountInMaximum - amountIn);
- }
- }
-
- /// @notice swapInputMultiplePools swaps a fixed amount of DAI for a maximum possible amount of WETH9 through an intermediary pool.
- /// For this example, we will swap DAI to USDC, then USDC to WETH9 to achieve our desired output.
- /// @dev The calling address must approve this contract to spend at least `amountIn` worth of its DAI for this function to succeed.
- /// @param amountIn The amount of DAI to be swapped.
- /// @return amountOut The amount of WETH9 received after the swap.
- function swapExactInputMultihop(uint256 amountIn) external returns (uint256 amountOut) {
- // Transfer `amountIn` of DAI to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountIn);
-
- // Approve the router to spend DAI.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountIn);
-
- // Multiple pool swaps are encoded through bytes called a `path`. A path is a sequence of token addresses and poolFees that define the pools used in the swaps.
- // The format for pool encoding is (tokenIn, fee, tokenOut/tokenIn, fee, tokenOut) where tokenIn/tokenOut parameter is the shared token across the pools.
- // Since we are swapping DAI to USDC and then USDC to WETH9 the path encoding is (DAI, 0.3%, USDC, 0.3%, WETH9).
- ISwapRouter.ExactInputParams memory params =
- ISwapRouter.ExactInputParams({
- path: abi.encodePacked(DAI, poolFee, USDC, poolFee, WETH9),
- recipient: msg.sender,
- deadline: block.timestamp,
- amountIn: amountIn,
- amountOutMinimum: 0
- });
-
- // Executes the swap.
- amountOut = swapRouter.exactInput(params);
- }
-
- /// @notice swapExactOutputMultihop swaps a minimum possible amount of DAI for a fixed amount of WETH through an intermediary pool.
- /// For this example, we want to swap DAI for WETH9 through a USDC pool but we specify the desired amountOut of WETH9. Notice how the path encoding is slightly different for exact output swaps.
- /// @dev The calling address must approve this contract to spend its DAI for this function to succeed. As the amount of input DAI is variable,
- /// the calling address will need to approve for a slightly higher amount, anticipating some variance.
- /// @param amountOut The desired amount of WETH9.
- /// @param amountInMaximum The maximum amount of DAI willing to be swapped for the specified amountOut of WETH9.
- /// @return amountIn The amountIn of DAI actually spent to receive the desired amountOut.
- function swapExactOutputMultihop(uint256 amountOut, uint256 amountInMaximum) external returns (uint256 amountIn) {
- // Transfer the specified `amountInMaximum` to this contract.
- TransferHelper.safeTransferFrom(DAI, msg.sender, address(this), amountInMaximum);
- // Approve the router to spend `amountInMaximum`.
- TransferHelper.safeApprove(DAI, address(swapRouter), amountInMaximum);
-
- // The parameter path is encoded as (tokenOut, fee, tokenIn/tokenOut, fee, tokenIn)
- // The tokenIn/tokenOut field is the shared token between the two pools used in the multiple pool swap. In this case, USDC is the "shared" token.
- // For an exactOutput swap, the first swap that occurs is the swap that returns the eventually desired token.
- // In this case, our desired output token is WETH9 so that swap happens first, and is encoded in the path accordingly.
- ISwapRouter.ExactOutputParams memory params =
- ISwapRouter.ExactOutputParams({
- path: abi.encodePacked(WETH9, poolFee, USDC, poolFee, DAI),
- recipient: msg.sender,
- deadline: block.timestamp,
- amountOut: amountOut,
- amountInMaximum: amountInMaximum
- });
-
- // Executes the swap, returning the amountIn actually spent.
- amountIn = swapRouter.exactOutput(params);
-
- // If the swap did not require the full amountInMaximum to achieve the exact amountOut then we refund msg.sender and approve the router to spend 0.
- if (amountIn < amountInMaximum) {
- TransferHelper.safeApprove(DAI, address(swapRouter), 0);
- TransferHelper.safeTransferFrom(DAI, address(this), msg.sender, amountInMaximum - amountIn);
- }
- }
-}
diff --git a/sidebars.js b/sidebars.js
index 3f4d8b9da..d51202570 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -1,10 +1,19 @@
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
- integrationSidebar: [{ type: 'autogenerated', dirName: 'integration' }],
conceptsSidebar: [{ type: 'autogenerated', dirName: 'concepts' }],
- contractsSidebar: [{ type: 'autogenerated', dirName: 'contracts' }],
- sdkSidebar: [{ type: 'autogenerated', dirName: 'sdk' }],
+ integrationSidebar: [
+ {
+ type: 'category',
+ label: 'xChainRead',
+ items: ['integration/xChainRead/overview', 'integration/xChainRead/api-reference'],
+ },
+ {
+ type: 'category',
+ label: '7683',
+ items: ['integration/7683/solver-integration', 'integration/7683/frontend-integration'],
+ },
+ ],
}
module.exports = sidebars
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
index 15a1511e6..1c54d0404 100644
--- a/src/pages/index.tsx
+++ b/src/pages/index.tsx
@@ -62,7 +62,7 @@ export const dAppGuides = [
]
export const smartContractGuides = [
{
- title: 'Cross Chain Intents',
+ title: 'Cross-chain Reads',
text: 'Read data from other chains and prove the results back to your contract. This primitive is useful in ERC7683 enabled cross-chain intents and swaps.',
to: '/integration/xChainRead/overview',
},