Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
rouzwelt committed Feb 1, 2025
1 parent 9792524 commit 0bb3e14
Show file tree
Hide file tree
Showing 34 changed files with 1,118 additions and 15 deletions.
56 changes: 56 additions & 0 deletions packages/sushi/src/router/data-fetcher.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,49 +2,74 @@ import { http, PublicClient, createPublicClient } from 'viem'
import { ChainId, TestnetChainId } from '../chain/index.js'
import { publicClientConfig } from '../config/index.js'
import { Type } from '../currency/index.js'
import { AlienBaseV2Provider } from './liquidity-providers/AlienBaseV2.js'
import { AlienBaseV3Provider } from './liquidity-providers/AlienBaseV3.js'
import { ApeSwapProvider } from './liquidity-providers/ApeSwap.js'
import { BSCSwapProvider } from './liquidity-providers/BSCSwap.js'
import { BakerySwapProvider } from './liquidity-providers/BakerySwap.js'
import { BaseSwapProvider } from './liquidity-providers/BaseSwap.js'
import { BaseSwapV3Provider } from './liquidity-providers/BaseSwapV3.js'
import { BiswapProvider } from './liquidity-providers/Biswap.js'
import { BladeSwapProvider } from './liquidity-providers/BladeSwap.js'
import { BlastDEXProvider } from './liquidity-providers/BlastDEX.js'
import { BlazeSwapProvider } from './liquidity-providers/BlazeSwap.js'
import { CORExProvider } from './liquidity-providers/COREx.js'
import { CamelotProvider } from './liquidity-providers/Camelot.js'
import { CroDefiSwapProvider } from './liquidity-providers/CroDefiSwap.js'
import { CurveProvider } from './liquidity-providers/CurveProvider.js'
import { DackieSwapV2Provider } from './liquidity-providers/DackieSwapV2.js'
import { DackieSwapV3Provider } from './liquidity-providers/DackieSwapV3.js'
import { DfynProvider } from './liquidity-providers/Dfyn.js'
import { DovishV3Provider } from './liquidity-providers/DovishV3.js'
import { DyorV2Provider } from './liquidity-providers/DyorV2.js'
import { EddyFinanceProvider } from './liquidity-providers/EddyFinance.js'
import { ElkProvider } from './liquidity-providers/Elk.js'
import { EnosysProvider } from './liquidity-providers/Enosys.js'
import { FenixProvider } from './liquidity-providers/Fenix.js'
import { GlyphV4Provider } from './liquidity-providers/GlyphV4.js'
import { GravityFinanceProvider } from './liquidity-providers/GravityFinance.js'
import { HoneySwapProvider } from './liquidity-providers/HoneySwap.js'
import { HorizonProvider } from './liquidity-providers/Horizon.js'
import { HyperBlastProvider } from './liquidity-providers/HyperBlast.js'
import { JetSwapProvider } from './liquidity-providers/JetSwap.js'
import { KimV4Provider } from './liquidity-providers/KimV4.js'
import { KinetixV2Provider } from './liquidity-providers/KinetixV2.js'
import { KinetixV3Provider } from './liquidity-providers/KinetixV3.js'
import { KwikswapProvider } from './liquidity-providers/Kwikswap.js'
import { LaserSwapV2Provider } from './liquidity-providers/LaserSwap.js'
import {
LiquidityProvider,
LiquidityProviders,
} from './liquidity-providers/LiquidityProvider.js'
import { LynexV1Provider } from './liquidity-providers/LynexV1.js'
import { LynexV2Provider } from './liquidity-providers/LynexV2.js'
import { MMFinanceProvider } from './liquidity-providers/MMFinance.js'
import { MSwapProvider } from './liquidity-providers/MSwap.js'
import { MonoswapV2Provider } from './liquidity-providers/MonoSwapV2.js'
import { MonoswapV3Provider } from './liquidity-providers/MonoSwapV3.js'
import { NativeWrapProvider } from './liquidity-providers/NativeWrapProvider.js'
import { NetSwapProvider } from './liquidity-providers/NetSwap.js'
import { NineInchProvider } from './liquidity-providers/NineInch.js'
import { PancakeSwapV2Provider } from './liquidity-providers/PancakeSwapV2.js'
import { PancakeSwapV3Provider } from './liquidity-providers/PancakeSwapV3.js'
import { PangolinProvider } from './liquidity-providers/Pangolin.js'
import { QuickSwapV2Provider } from './liquidity-providers/QuickSwapV2.js'
import { QuickSwapV3Provider } from './liquidity-providers/QuickswapV3.js'
import { RingExchangeV2Provider } from './liquidity-providers/RingExchangeV2.js'
import { RingExchangeV3Provider } from './liquidity-providers/RingExchangeV3.js'
import { ScribeProvider } from './liquidity-providers/Scribe.js'
import { ShibaSwapProvider } from './liquidity-providers/ShibaSwap.js'
import { SolarbeamProvider } from './liquidity-providers/Solarbeam.js'
import { SparkDexV2Provider } from './liquidity-providers/SparkDexV2.js'
import { SparkDexV3Provider } from './liquidity-providers/SparkDexV3.js'
import { SparkDexV3_1Provider } from './liquidity-providers/SparkDexV3_1.js'
import { SpookySwapV2Provider } from './liquidity-providers/SpookySwapV2.js'
import { SpookySwapV3Provider } from './liquidity-providers/SpookySwapV3.js'
import { SquadSwapV2Provider } from './liquidity-providers/SquadSwapV2.js'
import { SushiSwapV2Provider } from './liquidity-providers/SushiSwapV2.js'
import { SushiSwapV3Provider } from './liquidity-providers/SushiSwapV3.js'
import { SwapBlastProvider } from './liquidity-providers/SwapBlast.js'
import { SwapsicleProvider } from './liquidity-providers/Swapsicle.js'
import {
ThrusterV2_1Provider,
ThrusterV2_3Provider,
Expand All @@ -55,8 +80,11 @@ import { TridentProvider } from './liquidity-providers/Trident.js'
import { UbeSwapProvider } from './liquidity-providers/UbeSwap.js'
import { UniswapV2Provider } from './liquidity-providers/UniswapV2.js'
import { UniswapV3Provider } from './liquidity-providers/UniswapV3.js'
import { VVSFlawlessProvider } from './liquidity-providers/VVSFlawless.js'
import { VVSStandardProvider } from './liquidity-providers/VVSStandard.js'
import { WagmiProvider } from './liquidity-providers/Wagmi.js'
import { WigoswapProvider } from './liquidity-providers/Wigoswap.js'
import { ZebraV2Provider } from './liquidity-providers/ZebraV2.js'
import type { PoolCode } from './pool-codes/index.js'
import { promiseTimeout } from './timeout.js'

Expand Down Expand Up @@ -155,44 +183,69 @@ export class DataFetcher {
// concrete providers
this.providers = [new NativeWrapProvider(this.chainId, this.web3Client)]
;[
AlienBaseV2Provider,
AlienBaseV3Provider,
ApeSwapProvider,
BakerySwapProvider,
BaseSwapProvider,
BaseSwapV3Provider,
BiswapProvider,
BladeSwapProvider,
BlastDEXProvider,
BlazeSwapProvider,
BSCSwapProvider,
CamelotProvider,
CORExProvider,
CroDefiSwapProvider,
CurveProvider,
DackieSwapV2Provider,
DackieSwapV3Provider,
DfynProvider,
DovishV3Provider,
DyorV2Provider,
EddyFinanceProvider,
ElkProvider,
EnosysProvider,
FenixProvider,
GlyphV4Provider,
GravityFinanceProvider,
HoneySwapProvider,
HorizonProvider,
HyperBlastProvider,
JetSwapProvider,
KimV4Provider,
KinetixV2Provider,
KinetixV3Provider,
KwikswapProvider,
LaserSwapV2Provider,
LynexV1Provider,
LynexV2Provider,
MMFinanceProvider,
MonoswapV2Provider,
MonoswapV3Provider,
MSwapProvider,
NetSwapProvider,
NineInchProvider,
PancakeSwapV2Provider,
PancakeSwapV3Provider,
PangolinProvider,
QuickSwapV2Provider,
QuickSwapV3Provider,
RingExchangeV2Provider,
RingExchangeV3Provider,
ScribeProvider,
ShibaSwapProvider,
SolarbeamProvider,
SparkDexV2Provider,
SparkDexV3Provider,
SparkDexV3_1Provider,
SpookySwapV2Provider,
SpookySwapV3Provider,
SquadSwapV2Provider,
SushiSwapV2Provider,
SushiSwapV3Provider,
SwapBlastProvider,
SwapsicleProvider,
ThrusterV2_1Provider,
ThrusterV2_3Provider,
ThrusterV3Provider,
Expand All @@ -202,7 +255,10 @@ export class DataFetcher {
UniswapV2Provider,
UniswapV3Provider,
VVSStandardProvider,
VVSFlawlessProvider,
WagmiProvider,
WigoswapProvider,
ZebraV2Provider,
].forEach((p) => {
try {
const provider = new p(this.chainId, this.web3Client)
Expand Down
24 changes: 24 additions & 0 deletions packages/sushi/src/router/liquidity-providers/AlienBaseV2.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { PublicClient } from 'viem'
import { ChainId } from '../../chain/index.js'
import { LiquidityProviders } from './LiquidityProvider.js'
import { UniswapV2BaseProvider } from './UniswapV2Base.js'

export class AlienBaseV2Provider extends UniswapV2BaseProvider {
override fee = 0.0016
constructor(chainId: ChainId, web3Client: PublicClient) {
const factory = {
[ChainId.BASE]: '0x3E84D913803b02A4a7f027165E8cA42C14C0FdE7',
} as const
const initCodeHash = {
[ChainId.BASE]:
'0x7ede5bbb7d245103c4a6d59bfd62246fbc488e93f95f23a19d9d76f0d91bd0d0',
} as const
super(chainId, web3Client, factory, initCodeHash)
}
getType(): LiquidityProviders {
return LiquidityProviders.AlienBaseV2
}
getPoolProviderName(): string {
return 'AlienBaseV2'
}
}
52 changes: 52 additions & 0 deletions packages/sushi/src/router/liquidity-providers/AlienBaseV3.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import { PublicClient } from 'viem'
import { ChainId } from '../../chain/index.js'
import { LiquidityProviders } from './LiquidityProvider.js'
import { UniswapV3BaseProvider } from './UniswapV3Base.js'

/**
* The default factory enabled fee amounts, denominated in hundredths of bips.
*/
export enum AlienBaseV3FeeAmount {
/** 0.02% */
LOWEST = 200,
/** 0.075% */
LOW = 750,
/** 0.3% */
MEDIUM = 3000,
/** 1% */
HIGH = 10000,
}

export const ALIENBASE_V3_FEE_SPACING_MAP: Record<
AlienBaseV3FeeAmount,
number
> = {
[AlienBaseV3FeeAmount.LOWEST]: 4,
[AlienBaseV3FeeAmount.LOW]: 15,
[AlienBaseV3FeeAmount.MEDIUM]: 60,
[AlienBaseV3FeeAmount.HIGH]: 200,
}

export class AlienBaseV3Provider extends UniswapV3BaseProvider {
override FEE = AlienBaseV3FeeAmount
override TICK_SPACINGS = ALIENBASE_V3_FEE_SPACING_MAP
constructor(chainId: ChainId, web3Client: PublicClient) {
const factory = {
[ChainId.BASE]: '0x0Fd83557b2be93617c9C1C1B6fd549401C74558C',
} as const
const initCodeHash = {
[ChainId.BASE]:
'0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54',
} as const
const tickLens = {
[ChainId.BASE]: '0xe3B6A547495c84A039D70A81178496220B5Fbd8e',
} as const
super(chainId, web3Client, factory, initCodeHash, tickLens)
}
getType(): LiquidityProviders {
return LiquidityProviders.AlienBaseV3
}
getPoolProviderName(): string {
return 'AlienBaseV3'
}
}
3 changes: 3 additions & 0 deletions packages/sushi/src/router/liquidity-providers/ApeSwap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export class ApeSwapProvider extends UniswapV2BaseProvider {
[ChainId.POLYGON]: '0xCf083Be4164828f00cAE704EC15a36D711491284',
[ChainId.BSC]: '0x0841BD0B734E4F5853f0dD8d7Ea041c241fb0Da6',
[ChainId.TELOS]: '0x411172Dfcd5f68307656A1ff35520841C2F7fAec',
[ChainId.ARBITRUM]: '0xCf083Be4164828f00cAE704EC15a36D711491284',
} as const
const initCodeHash = {
[ChainId.ETHEREUM]:
Expand All @@ -20,6 +21,8 @@ export class ApeSwapProvider extends UniswapV2BaseProvider {
'0xf4ccce374816856d11f00e4069e7cada164065686fbef53c6167a63ec2fd8c5b',
[ChainId.TELOS]:
'0x7d4b9bb0d5808344c0184aada7d10aae8f6b0cc8ceb5eba8dd084f63b8c32099',
[ChainId.ARBITRUM]:
'0xae7373e804a043c4c08107a81def627eeb3792e211fb4711fcfe32f0e4c45fd5',
} as const
super(chainId, web3Client, factory, initCodeHash)
}
Expand Down
24 changes: 24 additions & 0 deletions packages/sushi/src/router/liquidity-providers/BSCSwap.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { PublicClient } from 'viem'
import { ChainId } from '../../chain/index.js'
import { LiquidityProviders } from './LiquidityProvider.js'
import { UniswapV2BaseProvider } from './UniswapV2Base.js'

export class BSCSwapProvider extends UniswapV2BaseProvider {
override fee = 0.003
constructor(chainId: ChainId, web3Client: PublicClient) {
const factory = {
[ChainId.BSC]: '0xCe8fd65646F2a2a897755A1188C04aCe94D2B8D0',
} as const
const initCodeHash = {
[ChainId.BSC]:
'0xacc1c81cc3e9fb496da555f6bd67c3a095e579b26c1b580070cc6afa8f0a94fa',
} as const
super(chainId, web3Client, factory, initCodeHash)
}
getType(): LiquidityProviders {
return LiquidityProviders.BSCSwap
}
getPoolProviderName(): string {
return 'BSCSwap'
}
}
24 changes: 24 additions & 0 deletions packages/sushi/src/router/liquidity-providers/BakerySwap.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { PublicClient } from 'viem'
import { ChainId } from '../../chain/index.js'
import { LiquidityProviders } from './LiquidityProvider.js'
import { UniswapV2BaseProvider } from './UniswapV2Base.js'

export class BakerySwapProvider extends UniswapV2BaseProvider {
override fee = 0.003
constructor(chainId: ChainId, web3Client: PublicClient) {
const factory = {
[ChainId.BSC]: '0x01bF7C66c6BD861915CdaaE475042d3c4BaE16A7',
} as const
const initCodeHash = {
[ChainId.BSC]:
'0xe2e87433120e32c4738a7d8f3271f3d872cbe16241d67537139158d90bac61d3',
} as const
super(chainId, web3Client, factory, initCodeHash)
}
getType(): LiquidityProviders {
return LiquidityProviders.BakerySwap
}
getPoolProviderName(): string {
return 'BakerySwap'
}
}
53 changes: 53 additions & 0 deletions packages/sushi/src/router/liquidity-providers/BaseSwapV3.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { PublicClient } from 'viem'
import { ChainId } from '../../chain/index.js'
import { LiquidityProviders } from './LiquidityProvider.js'
import { UniswapV3BaseProvider } from './UniswapV3Base.js'

/**
* The default factory enabled fee amounts, denominated in hundredths of bips.
*/
export enum BaseSwapV3FeeAmount {
/** 0.008% */
LOWEST = 80,
/** 0.035% */
LOW = 350,
/** 0.045% */
MEDIUM = 450,
/** 0.25% */
HIGH = 2500,
/** 1% */
HIGHEST = 10000,
}

export const BASESWAP_V3_FEE_SPACING_MAP: Record<BaseSwapV3FeeAmount, number> =
{
[BaseSwapV3FeeAmount.LOWEST]: 1,
[BaseSwapV3FeeAmount.LOW]: 10,
[BaseSwapV3FeeAmount.MEDIUM]: 10,
[BaseSwapV3FeeAmount.HIGH]: 60,
[BaseSwapV3FeeAmount.HIGHEST]: 200,
}

export class BaseSwapV3Provider extends UniswapV3BaseProvider {
override FEE = BaseSwapV3FeeAmount
override TICK_SPACINGS = BASESWAP_V3_FEE_SPACING_MAP
constructor(chainId: ChainId, web3Client: PublicClient) {
const factory = {
[ChainId.BASE]: '0x38015D05f4fEC8AFe15D7cc0386a126574e8077B',
} as const
const initCodeHash = {
[ChainId.BASE]:
'0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54',
} as const
const tickLens = {
[ChainId.BASE]: '0xe3B6A547495c84A039D70A81178496220B5Fbd8e',
} as const
super(chainId, web3Client, factory, initCodeHash, tickLens)
}
getType(): LiquidityProviders {
return LiquidityProviders.BaseSwapV3
}
getPoolProviderName(): string {
return 'BaseSwapV3'
}
}
29 changes: 29 additions & 0 deletions packages/sushi/src/router/liquidity-providers/BladeSwap.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { PublicClient } from 'viem'
import { ChainId } from '../../chain/index.js'
import { AlgebraV1BaseProvider } from './AlgebraV1Base.js'
import { LiquidityProviders } from './LiquidityProvider.js'

export class BladeSwapProvider extends AlgebraV1BaseProvider {
constructor(chainId: ChainId, web3Client: PublicClient) {
const factory = {
[ChainId.BLAST]: '0xA87DbF5082Af26c9A6Ab2B854E378f704638CCa5',
} as const
const poolDeployer = {
[ChainId.BLAST]: '0xfFeEcb1fe0EAaEFeE69d122F6B7a0368637cb593',
} as const
const initCodeHash = {
[ChainId.BLAST]:
'0xa9df2657ce5872e94bdc9525588fd983b0aa5db2f3c7a83d7e6b6a99cd2003a1',
} as const
const tickLens = {
[ChainId.BLAST]: '0x969195B66f95D8B70fA414671b438134889Ba348',
} as const
super(chainId, web3Client, factory, initCodeHash, tickLens, poolDeployer)
}
getType(): LiquidityProviders {
return LiquidityProviders.BladeSwap
}
getPoolProviderName(): string {
return 'BladeSwap'
}
}
Loading

0 comments on commit 0bb3e14

Please sign in to comment.