-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
22 changed files
with
313 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
60 changes: 60 additions & 0 deletions
60
...n/calculation-manager/providers/dexes/gravity/camelot-gravity/camelot-gravity-provider.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
import { BLOCKCHAIN_NAME } from 'src/core/blockchain/models/blockchain-name'; | ||
import { EvmWeb3Pure } from 'src/core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/evm-web3-pure'; | ||
import { createTokenNativeAddressProxyInPathStartAndEnd } from 'src/features/common/utils/token-native-address-proxy'; | ||
|
||
import { ON_CHAIN_TRADE_TYPE, OnChainTradeType } from '../../../common/models/on-chain-trade-type'; | ||
import { AlgebraQuoterController } from '../../common/algebra/algebra-quoter-controller'; | ||
import { UniswapV3AlgebraTradeStructOmitPath } from '../../common/uniswap-v3-algebra-abstract/models/uniswap-v3-algebra-trade-struct'; | ||
import { UniswapV3AlgebraAbstractProvider } from '../../common/uniswap-v3-algebra-abstract/uniswap-v3-algebra-abstract-provider'; | ||
import { QUICK_SWAP_V3_ROUTER_CONTRACT_ABI } from '../../polygon/quick-swap-v3/constants/swap-router-contract-data'; | ||
import { QuickSwapV3Route } from '../../polygon/quick-swap-v3/models/quick-swap-v3-route'; | ||
import { defaultzGravityProviderConfiguration } from '../default-constants'; | ||
import { CamelotGravityTrade } from './camelot-gravity-trade'; | ||
import { CAMELOT_GRAVITY_ROUTER_CONTRACT_ADDRESS } from './constants/gravity-swap-router-contract-address'; | ||
import { CAMELOT_GRAVITY_PROVIDER_CONFIGURATION } from './constants/provider-configuration'; | ||
import { | ||
CAMELOT_GRAVITY_QUOTER_CONTRACT_ABI, | ||
CAMELOT_GRAVITY_QUOTER_CONTRACT_ADDRESS | ||
} from './constants/quote-contract-data'; | ||
|
||
export class CamelotGravityProvider extends UniswapV3AlgebraAbstractProvider<CamelotGravityTrade> { | ||
protected readonly contractAddress = CAMELOT_GRAVITY_ROUTER_CONTRACT_ADDRESS; | ||
|
||
protected readonly contractAbi = QUICK_SWAP_V3_ROUTER_CONTRACT_ABI; | ||
|
||
public readonly blockchain = BLOCKCHAIN_NAME.GRAVITY; | ||
|
||
protected readonly OnChainTradeClass = CamelotGravityTrade; | ||
|
||
protected readonly quoterController = new AlgebraQuoterController( | ||
this.blockchain, | ||
defaultzGravityProviderConfiguration.routingProvidersAddresses, | ||
CAMELOT_GRAVITY_QUOTER_CONTRACT_ADDRESS, | ||
CAMELOT_GRAVITY_QUOTER_CONTRACT_ABI | ||
); | ||
|
||
protected readonly providerConfiguration = CAMELOT_GRAVITY_PROVIDER_CONFIGURATION; | ||
|
||
public get type(): OnChainTradeType { | ||
return ON_CHAIN_TRADE_TYPE.CAMELOT; | ||
} | ||
|
||
protected createTradeInstance( | ||
tradeStruct: UniswapV3AlgebraTradeStructOmitPath, | ||
route: QuickSwapV3Route, | ||
providerAddress: string | ||
): CamelotGravityTrade { | ||
const path = createTokenNativeAddressProxyInPathStartAndEnd( | ||
route.path, | ||
EvmWeb3Pure.nativeTokenAddress | ||
); | ||
return new CamelotGravityTrade( | ||
{ | ||
...tradeStruct, | ||
path, | ||
route | ||
}, | ||
providerAddress | ||
); | ||
} | ||
} |
73 changes: 73 additions & 0 deletions
73
...hain/calculation-manager/providers/dexes/gravity/camelot-gravity/camelot-gravity-trade.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
import { Token } from 'src/common/tokens'; | ||
import { MethodData } from 'src/core/blockchain/web3-public-service/web3-public/models/method-data'; | ||
|
||
import { ON_CHAIN_TRADE_TYPE, OnChainTradeType } from '../../../common/models/on-chain-trade-type'; | ||
import { AlgebraQuoterController } from '../../common/algebra/algebra-quoter-controller'; | ||
import { UniswapV3AlgebraAbstractTrade } from '../../common/uniswap-v3-algebra-abstract/uniswap-v3-algebra-abstract-trade'; | ||
import { QUICK_SWAP_V3_ROUTER_CONTRACT_ABI } from '../../polygon/quick-swap-v3/constants/swap-router-contract-data'; | ||
import { QuickSwapV3Route } from '../../polygon/quick-swap-v3/models/quick-swap-v3-route'; | ||
import { QuickSwapV3TradeStruct } from '../../polygon/quick-swap-v3/models/quick-swap-v3-trade-struct'; | ||
import { CAMELOT_GRAVITY_ROUTER_CONTRACT_ADDRESS } from './constants/gravity-swap-router-contract-address'; | ||
|
||
export class CamelotGravityTrade extends UniswapV3AlgebraAbstractTrade { | ||
public static get type(): OnChainTradeType { | ||
return ON_CHAIN_TRADE_TYPE.CAMELOT; | ||
} | ||
|
||
public readonly dexContractAddress = CAMELOT_GRAVITY_ROUTER_CONTRACT_ADDRESS; | ||
|
||
protected readonly contractAbi = QUICK_SWAP_V3_ROUTER_CONTRACT_ABI; | ||
|
||
protected readonly unwrapWethMethodName = 'unwrapWNativeToken'; | ||
|
||
private readonly route: QuickSwapV3Route; | ||
|
||
public readonly wrappedPath: ReadonlyArray<Token>; | ||
|
||
constructor(tradeStruct: QuickSwapV3TradeStruct, providerAddress: string) { | ||
super(tradeStruct, providerAddress); | ||
|
||
this.route = tradeStruct.route; | ||
|
||
this.wrappedPath = this.route.path; | ||
} | ||
|
||
/** | ||
* Returns swap `exactInput` method's name and arguments to use in Swap contract. | ||
*/ | ||
protected getSwapRouterExactInputMethodData(walletAddress: string): MethodData { | ||
const amountParams = this.getAmountParams(); | ||
|
||
if (this.route.path.length === 2 && this.route?.path?.[0] && this.route?.path?.[1]) { | ||
const methodName = this.exact === 'input' ? 'exactInputSingle' : 'exactOutputSingle'; | ||
|
||
return { | ||
methodName, | ||
methodArguments: [ | ||
[ | ||
this.route.path[0].address, | ||
this.route.path[1].address, | ||
walletAddress, | ||
this.deadlineMinutesTimestamp, | ||
...amountParams, | ||
0 | ||
] | ||
] | ||
}; | ||
} | ||
|
||
const methodName = this.exact === 'input' ? 'exactInput' : 'exactOutput'; | ||
|
||
return { | ||
methodName, | ||
methodArguments: [ | ||
[ | ||
AlgebraQuoterController.getEncodedPath(this.route.path), | ||
walletAddress, | ||
this.deadlineMinutesTimestamp, | ||
...amountParams | ||
] | ||
] | ||
}; | ||
} | ||
} |
1 change: 1 addition & 0 deletions
1
...providers/dexes/gravity/camelot-gravity/constants/gravity-swap-router-contract-address.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
export const CAMELOT_GRAVITY_ROUTER_CONTRACT_ADDRESS = '0x60A186019F81bFD04aFc16c9C01804a04E79e68B'; |
9 changes: 9 additions & 0 deletions
9
...ation-manager/providers/dexes/gravity/camelot-gravity/constants/provider-configuration.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
import { wrappedNativeTokensList } from 'src/common/tokens/constants/wrapped-native-tokens'; | ||
import { BLOCKCHAIN_NAME } from 'src/core/blockchain/models/blockchain-name'; | ||
|
||
import { UniswapV3AlgebraProviderConfiguration } from '../../../common/uniswap-v3-algebra-abstract/models/uniswap-v3-algebra-provider-configuration'; | ||
|
||
export const CAMELOT_GRAVITY_PROVIDER_CONFIGURATION: UniswapV3AlgebraProviderConfiguration = { | ||
wethAddress: wrappedNativeTokensList[BLOCKCHAIN_NAME.GRAVITY]!.address, | ||
maxTransitTokens: 1 | ||
}; |
Oops, something went wrong.