diff --git a/packages/address-book/src/address-book/base/tokens/tokens.ts b/packages/address-book/src/address-book/base/tokens/tokens.ts index c193729f2..6f0833ec2 100644 --- a/packages/address-book/src/address-book/base/tokens/tokens.ts +++ b/packages/address-book/src/address-book/base/tokens/tokens.ts @@ -21,7 +21,7 @@ export const tokens = { mooBIFI: { name: 'Bridged BIFI Vault Receipt', symbol: 'mooBIFI', - oracleId: 'mooBIFI', + oracleId: 'basemooBIFI', address: '0xc55E93C62874D8100dBd2DfE307EDc1036ad5434', chainId: 8453, decimals: 18, diff --git a/packages/address-book/src/address-book/optimism/tokens/tokens.ts b/packages/address-book/src/address-book/optimism/tokens/tokens.ts index 1d601e96d..d6f06eea9 100644 --- a/packages/address-book/src/address-book/optimism/tokens/tokens.ts +++ b/packages/address-book/src/address-book/optimism/tokens/tokens.ts @@ -21,7 +21,7 @@ export const tokens = { mooBIFI: { name: 'Bridged BIFI Vault Receipt', symbol: 'mooBIFI', - oracleId: 'mooBIFI', + oracleId: 'opmooBIFI', address: '0xc55E93C62874D8100dBd2DfE307EDc1036ad5434', chainId: 10, decimals: 18, diff --git a/src/abis/ISlipstreamPool.ts b/src/abis/ISlipstreamPool.ts new file mode 100644 index 000000000..d2bb2cc9f --- /dev/null +++ b/src/abis/ISlipstreamPool.ts @@ -0,0 +1,535 @@ +const ISlipstreamPool = [ + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'owner', type: 'address' }, + { indexed: true, internalType: 'int24', name: 'tickLower', type: 'int24' }, + { indexed: true, internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { indexed: false, internalType: 'uint128', name: 'amount', type: 'uint128' }, + { indexed: false, internalType: 'uint256', name: 'amount0', type: 'uint256' }, + { indexed: false, internalType: 'uint256', name: 'amount1', type: 'uint256' }, + ], + name: 'Burn', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'owner', type: 'address' }, + { indexed: false, internalType: 'address', name: 'recipient', type: 'address' }, + { indexed: true, internalType: 'int24', name: 'tickLower', type: 'int24' }, + { indexed: true, internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { indexed: false, internalType: 'uint128', name: 'amount0', type: 'uint128' }, + { indexed: false, internalType: 'uint128', name: 'amount1', type: 'uint128' }, + ], + name: 'Collect', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'recipient', type: 'address' }, + { indexed: false, internalType: 'uint128', name: 'amount0', type: 'uint128' }, + { indexed: false, internalType: 'uint128', name: 'amount1', type: 'uint128' }, + ], + name: 'CollectFees', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'sender', type: 'address' }, + { indexed: true, internalType: 'address', name: 'recipient', type: 'address' }, + { indexed: false, internalType: 'uint256', name: 'amount0', type: 'uint256' }, + { indexed: false, internalType: 'uint256', name: 'amount1', type: 'uint256' }, + { indexed: false, internalType: 'uint256', name: 'paid0', type: 'uint256' }, + { indexed: false, internalType: 'uint256', name: 'paid1', type: 'uint256' }, + ], + name: 'Flash', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { indexed: false, internalType: 'uint16', name: 'observationCardinalityNextOld', type: 'uint16' }, + { indexed: false, internalType: 'uint16', name: 'observationCardinalityNextNew', type: 'uint16' }, + ], + name: 'IncreaseObservationCardinalityNext', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { indexed: false, internalType: 'uint160', name: 'sqrtPriceX96', type: 'uint160' }, + { indexed: false, internalType: 'int24', name: 'tick', type: 'int24' }, + ], + name: 'Initialize', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { indexed: false, internalType: 'address', name: 'sender', type: 'address' }, + { indexed: true, internalType: 'address', name: 'owner', type: 'address' }, + { indexed: true, internalType: 'int24', name: 'tickLower', type: 'int24' }, + { indexed: true, internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { indexed: false, internalType: 'uint128', name: 'amount', type: 'uint128' }, + { indexed: false, internalType: 'uint256', name: 'amount0', type: 'uint256' }, + { indexed: false, internalType: 'uint256', name: 'amount1', type: 'uint256' }, + ], + name: 'Mint', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { indexed: false, internalType: 'uint8', name: 'feeProtocol0Old', type: 'uint8' }, + { indexed: false, internalType: 'uint8', name: 'feeProtocol1Old', type: 'uint8' }, + { indexed: false, internalType: 'uint8', name: 'feeProtocol0New', type: 'uint8' }, + { indexed: false, internalType: 'uint8', name: 'feeProtocol1New', type: 'uint8' }, + ], + name: 'SetFeeProtocol', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { indexed: true, internalType: 'address', name: 'sender', type: 'address' }, + { indexed: true, internalType: 'address', name: 'recipient', type: 'address' }, + { indexed: false, internalType: 'int256', name: 'amount0', type: 'int256' }, + { indexed: false, internalType: 'int256', name: 'amount1', type: 'int256' }, + { indexed: false, internalType: 'uint160', name: 'sqrtPriceX96', type: 'uint160' }, + { indexed: false, internalType: 'uint128', name: 'liquidity', type: 'uint128' }, + { indexed: false, internalType: 'int24', name: 'tick', type: 'int24' }, + ], + name: 'Swap', + type: 'event', + }, + { + inputs: [ + { internalType: 'int24', name: 'tickLower', type: 'int24' }, + { internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { internalType: 'uint128', name: 'amount', type: 'uint128' }, + { internalType: 'address', name: 'owner', type: 'address' }, + ], + name: 'burn', + outputs: [ + { internalType: 'uint256', name: 'amount0', type: 'uint256' }, + { internalType: 'uint256', name: 'amount1', type: 'uint256' }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { internalType: 'int24', name: 'tickLower', type: 'int24' }, + { internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { internalType: 'uint128', name: 'amount', type: 'uint128' }, + ], + name: 'burn', + outputs: [ + { internalType: 'uint256', name: 'amount0', type: 'uint256' }, + { internalType: 'uint256', name: 'amount1', type: 'uint256' }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: 'recipient', type: 'address' }, + { internalType: 'int24', name: 'tickLower', type: 'int24' }, + { internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { internalType: 'uint128', name: 'amount0Requested', type: 'uint128' }, + { internalType: 'uint128', name: 'amount1Requested', type: 'uint128' }, + { internalType: 'address', name: 'owner', type: 'address' }, + ], + name: 'collect', + outputs: [ + { internalType: 'uint128', name: 'amount0', type: 'uint128' }, + { internalType: 'uint128', name: 'amount1', type: 'uint128' }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: 'recipient', type: 'address' }, + { internalType: 'int24', name: 'tickLower', type: 'int24' }, + { internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { internalType: 'uint128', name: 'amount0Requested', type: 'uint128' }, + { internalType: 'uint128', name: 'amount1Requested', type: 'uint128' }, + ], + name: 'collect', + outputs: [ + { internalType: 'uint128', name: 'amount0', type: 'uint128' }, + { internalType: 'uint128', name: 'amount1', type: 'uint128' }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'collectFees', + outputs: [ + { internalType: 'uint128', name: 'amount0', type: 'uint128' }, + { internalType: 'uint128', name: 'amount1', type: 'uint128' }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'factory', + outputs: [{ internalType: 'address', name: '', type: 'address' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'factoryRegistry', + outputs: [{ internalType: 'address', name: '', type: 'address' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'fee', + outputs: [{ internalType: 'uint24', name: '', type: 'uint24' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'feeGrowthGlobal0X128', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'feeGrowthGlobal1X128', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: 'recipient', type: 'address' }, + { internalType: 'uint256', name: 'amount0', type: 'uint256' }, + { internalType: 'uint256', name: 'amount1', type: 'uint256' }, + { internalType: 'bytes', name: 'data', type: 'bytes' }, + ], + name: 'flash', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'gauge', + outputs: [{ internalType: 'address', name: '', type: 'address' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'gaugeFees', + outputs: [ + { internalType: 'uint128', name: 'token0', type: 'uint128' }, + { internalType: 'uint128', name: 'token1', type: 'uint128' }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'int24', name: 'tickLower', type: 'int24' }, + { internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { internalType: 'uint256', name: '_rewardGrowthGlobalX128', type: 'uint256' }, + ], + name: 'getRewardGrowthInside', + outputs: [{ internalType: 'uint256', name: 'rewardGrowthInside', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ internalType: 'uint16', name: 'observationCardinalityNext', type: 'uint16' }], + name: 'increaseObservationCardinalityNext', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: '_factory', type: 'address' }, + { internalType: 'address', name: '_token0', type: 'address' }, + { internalType: 'address', name: '_token1', type: 'address' }, + { internalType: 'int24', name: '_tickSpacing', type: 'int24' }, + { internalType: 'address', name: '_factoryRegistry', type: 'address' }, + { internalType: 'uint160', name: '_sqrtPriceX96', type: 'uint160' }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'lastUpdated', + outputs: [{ internalType: 'uint32', name: '', type: 'uint32' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'liquidity', + outputs: [{ internalType: 'uint128', name: '', type: 'uint128' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'maxLiquidityPerTick', + outputs: [{ internalType: 'uint128', name: '', type: 'uint128' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: 'recipient', type: 'address' }, + { internalType: 'int24', name: 'tickLower', type: 'int24' }, + { internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { internalType: 'uint128', name: 'amount', type: 'uint128' }, + { internalType: 'bytes', name: 'data', type: 'bytes' }, + ], + name: 'mint', + outputs: [ + { internalType: 'uint256', name: 'amount0', type: 'uint256' }, + { internalType: 'uint256', name: 'amount1', type: 'uint256' }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'nft', + outputs: [{ internalType: 'address', name: '', type: 'address' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + name: 'observations', + outputs: [ + { internalType: 'uint32', name: 'blockTimestamp', type: 'uint32' }, + { internalType: 'int56', name: 'tickCumulative', type: 'int56' }, + { internalType: 'uint160', name: 'secondsPerLiquidityCumulativeX128', type: 'uint160' }, + { internalType: 'bool', name: 'initialized', type: 'bool' }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ internalType: 'uint32[]', name: 'secondsAgos', type: 'uint32[]' }], + name: 'observe', + outputs: [ + { internalType: 'int56[]', name: 'tickCumulatives', type: 'int56[]' }, + { internalType: 'uint160[]', name: 'secondsPerLiquidityCumulativeX128s', type: 'uint160[]' }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'periodFinish', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], + name: 'positions', + outputs: [ + { internalType: 'uint128', name: 'liquidity', type: 'uint128' }, + { internalType: 'uint256', name: 'feeGrowthInside0LastX128', type: 'uint256' }, + { internalType: 'uint256', name: 'feeGrowthInside1LastX128', type: 'uint256' }, + { internalType: 'uint128', name: 'tokensOwed0', type: 'uint128' }, + { internalType: 'uint128', name: 'tokensOwed1', type: 'uint128' }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardGrowthGlobalX128', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardRate', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rewardReserve', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'rollover', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: '_gauge', type: 'address' }, + { internalType: 'address', name: '_nft', type: 'address' }, + ], + name: 'setGaugeAndPositionManager', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'slot0', + outputs: [ + { internalType: 'uint160', name: 'sqrtPriceX96', type: 'uint160' }, + { internalType: 'int24', name: 'tick', type: 'int24' }, + { internalType: 'uint16', name: 'observationIndex', type: 'uint16' }, + { internalType: 'uint16', name: 'observationCardinality', type: 'uint16' }, + { internalType: 'uint16', name: 'observationCardinalityNext', type: 'uint16' }, + { internalType: 'bool', name: 'unlocked', type: 'bool' }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'int24', name: 'tickLower', type: 'int24' }, + { internalType: 'int24', name: 'tickUpper', type: 'int24' }, + ], + name: 'snapshotCumulativesInside', + outputs: [ + { internalType: 'int56', name: 'tickCumulativeInside', type: 'int56' }, + { internalType: 'uint160', name: 'secondsPerLiquidityInsideX128', type: 'uint160' }, + { internalType: 'uint32', name: 'secondsInside', type: 'uint32' }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'int128', name: 'stakedLiquidityDelta', type: 'int128' }, + { internalType: 'int24', name: 'tickLower', type: 'int24' }, + { internalType: 'int24', name: 'tickUpper', type: 'int24' }, + { internalType: 'bool', name: 'positionUpdate', type: 'bool' }, + ], + name: 'stake', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'stakedLiquidity', + outputs: [{ internalType: 'uint128', name: '', type: 'uint128' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { internalType: 'address', name: 'recipient', type: 'address' }, + { internalType: 'bool', name: 'zeroForOne', type: 'bool' }, + { internalType: 'int256', name: 'amountSpecified', type: 'int256' }, + { internalType: 'uint160', name: 'sqrtPriceLimitX96', type: 'uint160' }, + { internalType: 'bytes', name: 'data', type: 'bytes' }, + ], + name: 'swap', + outputs: [ + { internalType: 'int256', name: 'amount0', type: 'int256' }, + { internalType: 'int256', name: 'amount1', type: 'int256' }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { internalType: 'uint256', name: '_rewardRate', type: 'uint256' }, + { internalType: 'uint256', name: '_rewardReserve', type: 'uint256' }, + { internalType: 'uint256', name: '_periodFinish', type: 'uint256' }, + ], + name: 'syncReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [{ internalType: 'int16', name: '', type: 'int16' }], + name: 'tickBitmap', + outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'tickSpacing', + outputs: [{ internalType: 'int24', name: '', type: 'int24' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ internalType: 'int24', name: '', type: 'int24' }], + name: 'ticks', + outputs: [ + { internalType: 'uint128', name: 'liquidityGross', type: 'uint128' }, + { internalType: 'int128', name: 'liquidityNet', type: 'int128' }, + { internalType: 'int128', name: 'stakedLiquidityNet', type: 'int128' }, + { internalType: 'uint256', name: 'feeGrowthOutside0X128', type: 'uint256' }, + { internalType: 'uint256', name: 'feeGrowthOutside1X128', type: 'uint256' }, + { internalType: 'uint256', name: 'rewardGrowthOutsideX128', type: 'uint256' }, + { internalType: 'int56', name: 'tickCumulativeOutside', type: 'int56' }, + { internalType: 'uint160', name: 'secondsPerLiquidityOutsideX128', type: 'uint160' }, + { internalType: 'uint32', name: 'secondsOutside', type: 'uint32' }, + { internalType: 'bool', name: 'initialized', type: 'bool' }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'token0', + outputs: [{ internalType: 'address', name: '', type: 'address' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'token1', + outputs: [{ internalType: 'address', name: '', type: 'address' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'unstakedFee', + outputs: [{ internalType: 'uint24', name: '', type: 'uint24' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'updateRewardsGrowthGlobal', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +] as const; +export default ISlipstreamPool; diff --git a/src/data/archive/oldLpPools.json b/src/data/archive/oldLpPools.json index 931e98f55..361a322d7 100644 --- a/src/data/archive/oldLpPools.json +++ b/src/data/archive/oldLpPools.json @@ -1,4 +1,24 @@ [ + { + "name": "velodrome-v2-weth-moobifi-addoracle", + "address": "0x6Ed6Df1C23C51cb7Cc67a348cC8d9E6108EA3BFE", + "gauge": "0xcFa050836C3E5dfA98D065d2f365Cfd78a9011F9", + "decimals": "1e18", + "chainId": 10, + "beefyFee": 0.095, + "lp0": { + "address": "0x4200000000000000000000000000000000000006", + "oracle": "tokens", + "oracleId": "WETH", + "decimals": "1e18" + }, + "lp1": { + "address": "0xc55E93C62874D8100dBd2DfE307EDc1036ad5434", + "oracle": "tokens", + "oracleId": "mooBIFI", + "decimals": "1e18" + } + }, { "name": "pharaoh-phar-wavax", "address": "0xaaa3f202babcf7d6493afbc0caee03af9c64f984", diff --git a/src/data/base/beefyCowVaults.json b/src/data/base/beefyCowVaults.json index 0959c9dd5..a58a83bf2 100644 --- a/src/data/base/beefyCowVaults.json +++ b/src/data/base/beefyCowVaults.json @@ -20,7 +20,7 @@ "address": "0xfE7bde43F2b6D1cd257CdEEa1Fea6A84FC1C49d2", "lpAddress": "0xb378137c90444BbceCD44a1f766851fbf53D2a9E", "tokens": ["0x4200000000000000000000000000000000000006", "0xc55E93C62874D8100dBd2DfE307EDc1036ad5434"], - "tokenOracleIds": ["WETH", "mooBIFI"], + "tokenOracleIds": ["WETH", "basemooBIFI"], "decimals": [18, 18], "oracleId": "aero-cow-weth-moobifi", "providerId": "aerodrome", diff --git a/src/data/optimism/beefyCowVaults.json b/src/data/optimism/beefyCowVaults.json index 02a2afd9e..4763dfd1e 100644 --- a/src/data/optimism/beefyCowVaults.json +++ b/src/data/optimism/beefyCowVaults.json @@ -328,7 +328,7 @@ "address": "0xD4768E30180786e875a4909472c9826b18931E43", "lpAddress": "0x173cDC71e29d5Cffa6D090AD99f555a24B8831f9", "tokens": ["0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", "0xc55E93C62874D8100dBd2DfE307EDc1036ad5434"], - "tokenOracleIds": ["USDC", "mooBIFI"], + "tokenOracleIds": ["USDC", "opmooBIFI"], "decimals": [6, 18], "oracleId": "velo-cow-op-moobifi-usdc", "providerId": "velodrome", diff --git a/src/data/optimism/velodromeLpPools.json b/src/data/optimism/velodromeLpPools.json index da625d1fc..d55ab3eea 100644 --- a/src/data/optimism/velodromeLpPools.json +++ b/src/data/optimism/velodromeLpPools.json @@ -575,7 +575,7 @@ "lp1": { "address": "0xc55E93C62874D8100dBd2DfE307EDc1036ad5434", "oracle": "tokens", - "oracleId": "mooBIFI", + "oracleId": "opmooBIFI", "decimals": "1e18" } }, diff --git a/src/utils/fetchConcentratedLiquidityTokenPrices.ts b/src/utils/fetchConcentratedLiquidityTokenPrices.ts index 9337d0dcb..f1e15d91d 100644 --- a/src/utils/fetchConcentratedLiquidityTokenPrices.ts +++ b/src/utils/fetchConcentratedLiquidityTokenPrices.ts @@ -2,9 +2,9 @@ import IUniV3PoolAbi from '../abis/IUniV3Pool'; import IKyberElasticPoolAbi from '../abis/IKyberElasticPool'; import IAlgebraPool from '../abis/IAlgebraPool'; import IAlgebraPoolV1 from '../abis/IAlgebraPoolV1'; +import ISlipstreamPool from '../abis/ISlipstreamPool'; import { ChainId } from '../../packages/address-book/src/types/chainid'; import { fetchContract } from '../api/rpc/client'; -import { chain } from 'lodash'; type ConcentratedLiquidityToken = { type: string; @@ -302,6 +302,16 @@ const tokens: Partial secondToken: 'WBTC', }, ], + base: [ + { + type: 'Slipstream', + oracleId: 'basemooBIFI', + decimalDelta: 1, + pool: '0xb378137c90444BbceCD44a1f766851fbf53D2a9E', + firstToken: 'basemooBIFI', + secondToken: 'ETH', + }, + ], }; async function getConcentratedLiquidityPrices( @@ -319,6 +329,9 @@ async function getConcentratedLiquidityPrices( } else if (token.type == 'AlgebraV1') { const tokenContract = fetchContract(token.pool, IAlgebraPoolV1, chainId); return tokenContract.read.globalState(); + } else if (token.type == 'Slipstream') { + const tokenContract = fetchContract(token.pool, ISlipstreamPool, chainId); + return tokenContract.read.slot0(); } else { const tokenContract = fetchContract(token.pool, IUniV3PoolAbi, chainId); return tokenContract.read.slot0();