Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
e2ff0f1
Add naive tick visualization guide
Florian-S-A-W Jun 4, 2023
57c7778
Update graph to show custom tooltip, calculate virtual liquidity
Florian-S-A-W Jun 10, 2023
1161037
Calculate maximal extractable liquidity instead of virtual V2 liquidity
Florian-S-A-W Jun 11, 2023
96e9632
Improve formatting of Tooltip
Florian-S-A-W Jun 11, 2023
359470d
Cleanup tvl function in active liquidity
Florian-S-A-W Jun 12, 2023
f082741
Add simple oracle example
Florian-S-A-W Jun 23, 2023
ca3e9c4
Merge pull request #1 from Florian-S-A-W/feat/oracle
Florian-S-A-W Jun 23, 2023
8ddd1a5
Add range order setup with Mock Market Maker
Florian-S-A-W Jun 26, 2023
f8170ca
Mint, watch and withdraw range order
Florian-S-A-W Jun 27, 2023
23e46b3
Update Readme
Florian-S-A-W Jun 27, 2023
7ef7f74
Update config and change lower tick configuration
Florian-S-A-W Jun 28, 2023
4080dac
Update readme, config, small changes in MMM and React
Florian-S-A-W Jun 29, 2023
bf2d8fc
Merge pull request #3 from uniswapfoundation/feat/range-order
Florian-S-A-W Jul 3, 2023
1b7e598
Clean up pool data dependencies and remove unused constants
Florian-S-A-W Jul 3, 2023
d08503e
Cleanup oracle, remove unused functions and constants
Florian-S-A-W Jul 3, 2023
134d2be
Cleanup range-order
Florian-S-A-W Jul 3, 2023
f5979e3
Merge pull request #4 from uniswapfoundation/feat/advanced
Florian-S-A-W Jul 3, 2023
afae74b
Add get pool data via multicall code example
Florian-S-A-W Jul 24, 2023
490b4f6
Merge pull request #5 from uniswapfoundation/feat/multicall-pool-data
Florian-S-A-W Jul 24, 2023
e9b2982
Remove unused Wallet from config and README
Florian-S-A-W Aug 8, 2023
89e2a97
Merge pull request #6 from uniswapfoundation/feat/multicall-pool-data
Florian-S-A-W Aug 8, 2023
44f96c6
Merge remote-tracking branch 'upstream/main'
koraykoska Oct 27, 2023
08cf3c5
Update quoting guide
Florian-S-A-W Nov 18, 2023
dd91c2f
Merge pull request #7 from uniswapfoundation/feat/quoting_updated
Florian-S-A-W Nov 18, 2023
53764eb
Switch quoting example to quoteExactInput function
Florian-S-A-W Nov 18, 2023
195c322
Merge pull request #8 from uniswapfoundation/feat/quoting_updated
Florian-S-A-W Nov 18, 2023
f1e4832
Update dependencies
Florian-S-A-W Nov 18, 2023
f85c43b
Update trading example for new sdk version
Florian-S-A-W Nov 21, 2023
a20c5a9
Merge pull request #9 from uniswapfoundation/feat/trading_updated
Florian-S-A-W Nov 21, 2023
ec12d63
Use updated version of v3-sdk
Florian-S-A-W Nov 21, 2023
45b4999
Merge pull request #10 from uniswapfoundation/feat/trading_updated
Florian-S-A-W Nov 21, 2023
d7251e1
Update dependencies
Florian-S-A-W Nov 21, 2023
478d32f
Add template for offchain-simulation example
Florian-S-A-W Nov 21, 2023
af948f4
Add offchain-simulation example
Florian-S-A-W Nov 24, 2023
68f1b68
Merge pull request #11 from uniswapfoundation/feat/offchain_simulation
Florian-S-A-W Nov 24, 2023
e59d023
Fix dependency mismatch issue in routing example
Florian-S-A-W Nov 24, 2023
7ba5a87
Merge pull request #12 from uniswapfoundation/feat/routing_updated
Florian-S-A-W Nov 24, 2023
d035635
Remove multicall example
Florian-S-A-W Nov 25, 2023
5ae1f62
Clean up quoting example
Florian-S-A-W Nov 25, 2023
e6ea20d
Cleanup trading example
Florian-S-A-W Nov 25, 2023
0967d69
Clean up offchain-simulations example
Florian-S-A-W Nov 25, 2023
aef54a0
Merge pull request #13 from uniswapfoundation/fix/cleanup
Florian-S-A-W Nov 25, 2023
270c97c
Update oracle example to match new sdk version
Florian-S-A-W Dec 6, 2023
e2bb7ed
Merge pull request #14 from uniswapfoundation/feat/oracle_updated
Florian-S-A-W Dec 6, 2023
71a27f9
Fix advanced examples package names
Florian-S-A-W Dec 6, 2023
544984e
Merge pull request #15 from uniswapfoundation/fix/package-names
Florian-S-A-W Dec 6, 2023
3a24272
Update range order example for new sdk
Florian-S-A-W Dec 7, 2023
033bda9
Merge pull request #16 from uniswapfoundation/feat/range-order-updated
Florian-S-A-W Dec 7, 2023
bf1d9cc
Update collect fees example to match new sdk versions
Florian-S-A-W Dec 14, 2023
d51ceb5
Merge pull request #17 from uniswapfoundation/feat/collecting-fees
Florian-S-A-W Dec 14, 2023
f8a7aa4
feat: new version of modifying position
koraykoska Dec 15, 2023
2ef5f1f
fix: bump version
koraykoska Dec 15, 2023
ae87785
Update swap-and-add-liquidity example to match new sdk version
Florian-S-A-W Dec 15, 2023
c123fc9
Merge pull request #19 from uniswapfoundation/feat/swap-and-add-liqui…
Florian-S-A-W Dec 15, 2023
b57ca50
feat: remove liqudity
koraykoska Dec 15, 2023
41856b1
fix: remove position
koraykoska Dec 17, 2023
e7db940
Change target to ESNext in modify position example
Florian-S-A-W Dec 18, 2023
ddbe51b
Merge pull request #18 from uniswapfoundation/feat/modifying-positions
Florian-S-A-W Dec 18, 2023
c85fbf0
Update quoting example for sdk release version
Florian-S-A-W Dec 19, 2023
6fc2cab
Update trading example for sdk release version
Florian-S-A-W Dec 19, 2023
383cc5c
Update routing example for sdk release version
Florian-S-A-W Dec 19, 2023
8143ca0
Update minting position guide for sdk release version
Florian-S-A-W Dec 19, 2023
90010dd
Update collecting fees for sdk release version
Florian-S-A-W Dec 20, 2023
cd6506a
Update modifying position for sdk release version
Florian-S-A-W Dec 20, 2023
8460fb9
Update offchain-simulation example for sdk release version
Florian-S-A-W Dec 20, 2023
9da5d84
Update oracle to sdk-release-version
Florian-S-A-W Dec 20, 2023
3fe48d0
Update range order for sdk release version
Florian-S-A-W Dec 20, 2023
f522e4b
Update swap and add liquidity dependencies to v3-sdk release version
Florian-S-A-W Dec 20, 2023
559578e
Update sor dependency in routing example
Florian-S-A-W Dec 20, 2023
2b19b8a
Merge pull request #20 from uniswapfoundation/feat/release-sdk-versio…
Florian-S-A-W Dec 20, 2023
cc14fc4
Import packages from foundation npm
Florian-S-A-W Dec 27, 2023
ee6bd6a
Merge pull request #21 from uniswapfoundation/feat/foundation-deps
Florian-S-A-W Dec 27, 2023
2a2a991
Update sdk version
Florian-S-A-W Jan 6, 2024
ba3833d
Merge pull request #22 from uniswapfoundation/feat/foundation-sdk
koraykoska Jan 7, 2024
28bd5c4
Improve UX of some examples
Florian-S-A-W Jan 8, 2024
91e656e
Show mainnet rpc warning only if on mainnet environment
Florian-S-A-W Jan 8, 2024
64c53fe
Remove default fork url from range order
Florian-S-A-W Jan 8, 2024
4d2cf9a
Merge pull request #23 from uniswapfoundation/fix/release-patch
Florian-S-A-W Jan 8, 2024
db7bcac
Add deprecation notice to routing and swap-and-add-liquidity
Florian-S-A-W Jan 25, 2024
a335a78
Merge pull request #24 from uniswapfoundation/feat/deprecate-smart-or…
Florian-S-A-W Jan 25, 2024
7bacc76
Fix smart-order-router version in swap-and-add-liquidity example
Florian-S-A-W Jan 26, 2024
dc73396
Merge pull request #25 from uniswapfoundation/fix/sor-version-fix
Florian-S-A-W Jan 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"semi": false,
"singleQuote": true,
"printWidth": 80,
"bracketSameLine": true
}
7 changes: 2 additions & 5 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,5 @@
"editor.codeActionsOnSave": {
"source.fixAll": true
},
"cSpell.words": [
"bips",
"exponentiate"
],
}
"cSpell.words": ["bips", "exponentiate"],
}
8 changes: 4 additions & 4 deletions v3-sdk/collecting-fees/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"name": "collecting-fees",
"version": "0.1.0",
"version": "0.2.0",
"private": true,
"dependencies": {
"@types/node": "^16.7.13",
"@types/react": "^18.0.0",
"@types/react-dom": "^18.0.0",
"@uniswap/sdk-core": "^3.1.0",
"@uniswap/v3-sdk": "^3.9.0",
"@uniswap/sdk-core": "npm:@uniswapfoundation/sdk-core@^5.0.0",
"@uniswap/v3-sdk": "npm:@uniswapfoundation/v3-sdk@^4.0.2",
"ethers": "^5.7.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
Expand All @@ -19,7 +19,7 @@
"build": "react-scripts build",
"lint": "yarn eslint .",
"install:chain": "curl -L https://foundry.paradigm.xyz | bash && clear && echo $0 | exec && foundryup",
"start:chain": "anvil --chain-id 1337 --fork-url"
"start:chain": "anvil --chain-id 1 --fork-url"
},
"eslintConfig": {
"extends": [
Expand Down
8 changes: 3 additions & 5 deletions v3-sdk/collecting-fees/src/config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Token } from '@uniswap/sdk-core'
import { Fraction, Token } from '@uniswap/sdk-core'
import { FeeAmount } from '@uniswap/v3-sdk'
import { DAI_TOKEN, USDC_TOKEN } from './libs/constants'

Expand Down Expand Up @@ -26,8 +26,7 @@ export interface ExampleConfig {
token1: Token
token1Amount: number
poolFee: FeeAmount
token0AmountToCollect: number
token1AmountToCollect: number
feePercentage: Fraction
}
}

Expand All @@ -50,7 +49,6 @@ export const CurrentConfig: ExampleConfig = {
token1: DAI_TOKEN,
token1Amount: 1000,
poolFee: FeeAmount.LOW,
token0AmountToCollect: 10,
token1AmountToCollect: 10,
feePercentage: new Fraction(1),
},
}
72 changes: 35 additions & 37 deletions v3-sdk/collecting-fees/src/example/Example.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,9 @@ import {
TransactionState,
getWalletAddress,
} from '../libs/providers'
import {
collectFees,
getPositionIds,
getPositionInfo,
mintPosition,
PositionInfo,
} from '../libs/liquidity'
import { collectFees, getPositions, mintPosition } from '../libs/liquidity'
import { Position } from '@uniswap/v3-sdk'
import { BigintIsh } from '@uniswap/sdk-core'

const useOnBlockUpdated = (callback: (blockNumber: number) => void) => {
useEffect(() => {
Expand All @@ -28,8 +24,7 @@ const useOnBlockUpdated = (callback: (blockNumber: number) => void) => {
const Example = () => {
const [token0Balance, setToken0Balance] = useState<string>()
const [token1Balance, setToken1Balance] = useState<string>()
const [positionIds, setPositionIds] = useState<number[]>([])
const [positionsInfo, setPositionsInfo] = useState<PositionInfo[]>([])
const [positions, setPositions] = useState<Position[]>([])
const [txState, setTxState] = useState<TransactionState>(TransactionState.New)
const [blockNumber, setBlockNumber] = useState<number>(0)

Expand All @@ -56,9 +51,7 @@ const Example = () => {
)

// Set Position Info
const ids = await getPositionIds()
setPositionIds(ids)
setPositionsInfo(await Promise.all(ids.map(getPositionInfo)))
setPositions(await getPositions())
}, [])

// Event Handlers
Expand All @@ -74,32 +67,37 @@ const Example = () => {
setTxState(await mintPosition())
}, [])

const onCollectFees = useCallback(async (position: number) => {
setTxState(TransactionState.Sending)
setTxState(await collectFees(position))
}, [])
const onCollectFees = useCallback(
async (positionId: BigintIsh | undefined) => {
if (positionId === undefined) {
throw new Error('Position not fetched correctly')
}
setTxState(TransactionState.Sending)
setTxState(await collectFees(positionId))
},
[]
)

// Formatted Data

const positionInfoStrings: string[] = useMemo(() => {
if (positionIds.length !== positionsInfo.length) {
return []
}

return positionIds
.map((id, index) => [id, positionsInfo[index]])
.map((info) => {
const id = info[0]
const posInfo = info[1] as PositionInfo
return `${id}: ${posInfo.liquidity.toString()} liquidity, owed ${posInfo.tokensOwed0.toString()} and ${posInfo.tokensOwed1.toString()}`
})
}, [positionIds, positionsInfo])
const positionStrings: string[] = useMemo(() => {
return positions.map((pos) => {
return `${
pos.positionId ? pos.positionId : 'No id'
}: ${pos.liquidity.toString()} liquidity, owed ${
pos.tokensOwed0 ? pos.tokensOwed0.toString() : '0'
} and ${pos.tokensOwed1 ? pos.tokensOwed1.toString() : '0'}`
})
}, [positions])

return (
<div className="App">
{CurrentConfig.rpc.mainnet === '' && (
<h2 className="error">Please set your mainnet RPC URL in config.ts</h2>
)}
{CurrentConfig.rpc.mainnet === '' &&
CurrentConfig.env === Environment.PRODUCTION && (
<h2 className="error">
Please set your mainnet RPC URL in config.ts
</h2>
)}
{CurrentConfig.env === Environment.WALLET_EXTENSION &&
getProvider() === null && (
<h2 className="error">
Expand All @@ -117,7 +115,7 @@ const Example = () => {
<h3>{`${CurrentConfig.tokens.token1.symbol} Balance: ${token1Balance}`}</h3>
<div>
Positions:{' '}
{positionInfoStrings.map((s, i) => (
{positionStrings.map((s, i) => (
<p key={i}>{s}</p>
))}
</div>
Expand All @@ -127,20 +125,20 @@ const Example = () => {
disabled={
txState === TransactionState.Sending ||
getProvider() === null ||
CurrentConfig.rpc.mainnet === ''
(CurrentConfig.rpc.mainnet === '' &&
CurrentConfig.env === Environment.PRODUCTION)
}>
<p>Mint Position</p>
</button>
<button
className="button"
onClick={() => {
onCollectFees(positionIds[positionIds.length - 1])
onCollectFees(positions[positions.length - 1].positionId)
}}
disabled={
txState === TransactionState.Sending ||
getProvider() === null ||
CurrentConfig.rpc.mainnet === '' ||
positionIds.length < 1
positions.length < 1
}>
<p>Collect Fees</p>
</button>
Expand Down
15 changes: 3 additions & 12 deletions v3-sdk/collecting-fees/src/libs/constants.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// This file stores web3 related constants such as addresses, token definitions, ETH currency references and ABI's

import { SupportedChainId, Token } from '@uniswap/sdk-core'
import { ChainId, Token } from '@uniswap/sdk-core'

// Addresses

Expand All @@ -12,15 +12,15 @@ export const NONFUNGIBLE_POSITION_MANAGER_CONTRACT_ADDRESS =
// Currencies and Tokens

export const USDC_TOKEN = new Token(
SupportedChainId.MAINNET,
ChainId.MAINNET,
'0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
6,
'USDC',
'USD//C'
)

export const DAI_TOKEN = new Token(
SupportedChainId.MAINNET,
ChainId.MAINNET,
'0x6B175474E89094C44Da98b954EedeAC495271d0F',
18,
'DAI',
Expand Down Expand Up @@ -48,12 +48,3 @@ export const ERC20_ABI = [
// Events
'event Transfer(address indexed from, address indexed to, uint amount)',
]

export const NONFUNGIBLE_POSITION_MANAGER_ABI = [
// Read-Only Functions
'function balanceOf(address _owner) view returns (uint256)',
'function tokenOfOwnerByIndex(address _owner, uint256 _index) view returns (uint256)',
'function tokenURI(uint256 tokenId) view returns (string memory)',

'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)',
]
Loading