From b2a340683684a5579d0d5dd67e6c1ec8c76419ee Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 19 Mar 2024 09:09:03 +0000 Subject: [PATCH 001/114] feat: added new method getExchangeContractWalletBalance --- package.json | 2 +- src/services/BlockchainService/index.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 8d2b156..471d681 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.73", + "version": "0.20.74-rc0", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/BlockchainService/index.ts b/src/services/BlockchainService/index.ts index 16d5e59..ceacbcb 100644 --- a/src/services/BlockchainService/index.ts +++ b/src/services/BlockchainService/index.ts @@ -114,6 +114,7 @@ class BlockchainService { this.getRedeemOrderBySecretHash = this.getRedeemOrderBySecretHash.bind(this); this.claimOrder = this.claimOrder.bind(this); this.getGasLimits = this.getGasLimits.bind(this); + this.getExchangeContractWalletBalance = this.getExchangeContractWalletBalance.bind(this); } get basicAuthHeaders() { @@ -495,6 +496,12 @@ class BlockchainService { z.record(z.number()), { headers: this.basicAuthHeaders } ); + + getExchangeContractWalletBalance = (exchangeContractAddress: string) => fetchWithValidation( + `${this.apiUrl}/api/broker/getWalletBalance/${exchangeContractAddress}`, + z.record(z.string()), + { headers: this.basicAuthHeaders } + ); } export * as schemas from './schemas/index.js'; From d97e5267f0dc4d715d39756ca1f0dd02e45305d6 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Wed, 20 Mar 2024 11:27:39 +0000 Subject: [PATCH 002/114] feat: updated contracts --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 98ae352..9cc7fbb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,19 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.72", + "version": "0.20.73", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.72", + "version": "0.20.73", "hasInstallScript": true, "license": "ISC", "dependencies": { "@babel/runtime": "^7.21.0", "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/providers": "^5.7.2", - "@orionprotocol/contracts": "1.22.10", + "@orionprotocol/contracts": "1.23.3", "@types/lodash.clonedeep": "^4.5.9", "bignumber.js": "^9.1.1", "bson-objectid": "^2.0.4", @@ -2423,9 +2423,9 @@ } }, "node_modules/@orionprotocol/contracts": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/@orionprotocol/contracts/-/contracts-1.22.10.tgz", - "integrity": "sha512-c9cUkXs1Nv8p+EVTybwJqeXhecwm7xeycAVauhl6jYAqvKOx7PDCUjzE3Nh0tpi4xP3CLeABgNy8JAFYyvN1VA==" + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/@orionprotocol/contracts/-/contracts-1.23.3.tgz", + "integrity": "sha512-3PBnuiUe//v7COArcm/dzFx71vxW+a9emU4PHi1zBdow+OUAa4WNb+NmNZ3AOjnx2AZKK+gWJY+zKo1zSfAOHQ==" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -13493,9 +13493,9 @@ } }, "@orionprotocol/contracts": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/@orionprotocol/contracts/-/contracts-1.22.10.tgz", - "integrity": "sha512-c9cUkXs1Nv8p+EVTybwJqeXhecwm7xeycAVauhl6jYAqvKOx7PDCUjzE3Nh0tpi4xP3CLeABgNy8JAFYyvN1VA==" + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/@orionprotocol/contracts/-/contracts-1.23.3.tgz", + "integrity": "sha512-3PBnuiUe//v7COArcm/dzFx71vxW+a9emU4PHi1zBdow+OUAa4WNb+NmNZ3AOjnx2AZKK+gWJY+zKo1zSfAOHQ==" }, "@sinclair/typebox": { "version": "0.27.8", diff --git a/package.json b/package.json index 8d2b156..93c9440 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,7 @@ "@babel/runtime": "^7.21.0", "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/providers": "^5.7.2", - "@orionprotocol/contracts": "1.22.10", + "@orionprotocol/contracts": "1.23.3", "@types/lodash.clonedeep": "^4.5.9", "bignumber.js": "^9.1.1", "bson-objectid": "^2.0.4", From 712c0d45a21cdc14c24038a7f17e42bcbed906d0 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Wed, 20 Mar 2024 11:28:25 +0000 Subject: [PATCH 003/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 93c9440..b92b6e2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.73", + "version": "0.20.74", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 555e26f842cf22294659c7103908e2d7f40d70a2 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Wed, 20 Mar 2024 13:47:40 +0000 Subject: [PATCH 004/114] feat: get from wallet first fix --- package.json | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b92b6e2..01262dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74", + "version": "0.20.75-rc0", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index 91f3fe6..fd7fe08 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -397,7 +397,7 @@ async function shouldUseExchangeBalance( let useExchangeBalance = true; let additionalTransferAmount = 0n; - if (exchangeBalance == 0n) { + if (walletBalance >= amount || exchangeBalance == 0n) { useExchangeBalance = false; additionalTransferAmount = amount; } else { From e2549932b24bde82be49d7f9b20316af5131378a Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Wed, 20 Mar 2024 14:02:27 +0000 Subject: [PATCH 005/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 01262dc..563e1fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.75-rc0", + "version": "0.20.75", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From a6d40294647ce14ba2df30159d85673673b8e739 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 08:34:12 +0000 Subject: [PATCH 006/114] feat: added new AVAX network --- src/config/chains.json | 13 +++++++++ src/config/envs.json | 36 +++++++++++++++++++++++++ src/constants/chains.ts | 1 + src/constants/networkCodes.ts | 2 +- src/constants/uppercasedNetworkCodes.ts | 2 +- src/types.ts | 1 + 6 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/config/chains.json b/src/config/chains.json index bed5a5d..9d21aae 100644 --- a/src/config/chains.json +++ b/src/config/chains.json @@ -219,5 +219,18 @@ "WETH": "0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f", "curveRegistry": "" } + }, + "43114": { + "chainId": "43114", + "label": "Avalanche Network", + "shortName": "Avax", + "code": "avax", + "baseCurrencyName": "AVAX", + "rpc": "https://api.avax.network/ext/bc/C/rpc/", + "explorer": "https://snowtrace.io/", + "contracts": { + "WETH": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + "curveRegistry": "" + } } } diff --git a/src/config/envs.json b/src/config/envs.json index 6628b38..0dddc93 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -164,6 +164,24 @@ "http": "/orion-indexer/" } } + }, + "43114": { + "api": "https://trade.orion.xyz/avax-mainnet", + "services": { + "aggregator": { + "http": "/backend", + "ws": "/v1" + }, + "blockchain": { + "http": "" + }, + "priceFeed": { + "all": "/price-feed" + }, + "indexer": { + "http": "/orion-indexer/" + } + } } } }, @@ -445,6 +463,24 @@ "http": "/orion-indexer/" } } + }, + "43114": { + "api": "https://trade.orion.xyz/avax-mainnet", + "services": { + "aggregator": { + "http": "/backend", + "ws": "/v1" + }, + "blockchain": { + "http": "" + }, + "priceFeed": { + "all": "/price-feed" + }, + "indexer": { + "http": "/orion-indexer/" + } + } } } }, diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 0e0b025..aac8213 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -19,4 +19,5 @@ export const productionChains = [ SupportedChainId.OPBNB, SupportedChainId.INEVM, SupportedChainId.LINEA, + SupportedChainId.AVAX, ]; diff --git a/src/constants/networkCodes.ts b/src/constants/networkCodes.ts index 74b0d0f..c3a5dad 100644 --- a/src/constants/networkCodes.ts +++ b/src/constants/networkCodes.ts @@ -1 +1 @@ -export default ['ftm', 'bsc', 'eth', 'polygon', 'okc', 'arb', 'drip', 'opbnb', 'inevm', 'linea'] as const; +export default ['ftm', 'bsc', 'eth', 'polygon', 'okc', 'arb', 'drip', 'opbnb', 'inevm', 'linea', 'avax'] as const; diff --git a/src/constants/uppercasedNetworkCodes.ts b/src/constants/uppercasedNetworkCodes.ts index f3c9515..6b8e312 100644 --- a/src/constants/uppercasedNetworkCodes.ts +++ b/src/constants/uppercasedNetworkCodes.ts @@ -1 +1 @@ -export default ['FTM', 'BSC', 'ETH', 'POLYGON', 'OKC', 'ARB', 'OPBNB', 'INEVM', 'LINEA'] as const; +export default ['FTM', 'BSC', 'ETH', 'POLYGON', 'OKC', 'ARB', 'OPBNB', 'INEVM', 'LINEA', 'AVAX'] as const; diff --git a/src/types.ts b/src/types.ts index 0f1bbb3..5828296 100644 --- a/src/types.ts +++ b/src/types.ts @@ -90,6 +90,7 @@ export enum SupportedChainId { OPBNB = '204', INEVM = '2525', LINEA = '59144', + AVAX = '43114', POLYGON_TESTNET = '80001', FANTOM_TESTNET = '4002', From 18f6805bf738e0f059c5dba77c7766e8a26185c5 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 08:34:47 +0000 Subject: [PATCH 007/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 563e1fb..f4be77f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.75", + "version": "0.20.76", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 8be6ff9c0309d5c9055ea117c482d49a6621aced Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 09:26:48 +0000 Subject: [PATCH 008/114] feat: updated api url for AVAX network --- src/config/envs.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/envs.json b/src/config/envs.json index 0dddc93..a6c3988 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -166,7 +166,7 @@ } }, "43114": { - "api": "https://trade.orion.xyz/avax-mainnet", + "api": "https://trade.orion.xyz/avalanche-c-chain", "services": { "aggregator": { "http": "/backend", @@ -465,7 +465,7 @@ } }, "43114": { - "api": "https://trade.orion.xyz/avax-mainnet", + "api": "https://trade.orion.xyz/avalanche-c-chain", "services": { "aggregator": { "http": "/backend", From 42c7f929ddedc31d4ef22780e976c2ea69120cd9 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 09:27:18 +0000 Subject: [PATCH 009/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f4be77f..9266080 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76", + "version": "0.20.77", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 4af485cbbf74c0161626054db96994bc9093279b Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 12:13:39 +0000 Subject: [PATCH 010/114] fix: console log all constants --- package.json | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 9266080..f075da9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.77", + "version": "0.20.76-rc100", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index fd7fe08..6933d9f 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -118,15 +118,21 @@ export async function generateSwapCalldata({ value: bigint; }> { const wethAddress = await addressLikeToString(wethAddressLike); + console.log('wethAddress', wethAddress); const curveRegistryAddress = await addressLikeToString(curveRegistryAddressLike); + console.log('curveRegistryAddress', curveRegistryAddress); const swapExecutorContractAddress = await addressLikeToString(swapExecutorContractAddressLike); + console.log('swapExecutorContractAddress', swapExecutorContractAddress); const feeToken = await addressLikeToString(feeTokenAddressLike); + console.log('feeToken', feeToken); const matcher = await addressLikeToString(matcherAddressLike); + console.log('matcher', matcher); let path = SafeArray.from(arrayLikePath).map((swapInfo) => { swapInfo.assetIn = swapInfo.assetIn.toLowerCase() swapInfo.assetOut = swapInfo.assetOut.toLowerCase() return swapInfo; }); + console.log('path', path); const { assetIn: srcToken } = path.first(); const { assetOut: dstToken } = path.last(); @@ -140,14 +146,18 @@ export async function generateSwapCalldata({ minReturnAmount, flags: 0, }; + console.log('swapDescription', swapDescription); const amountNativeDecimals = await exchangeToNativeDecimals(srcToken, amount, provider); + console.log('amountNativeDecimals', amountNativeDecimals); const feeNativeDecimals = await exchangeToNativeDecimals(feeToken, fee, provider) + console.log('feeNativeDecimals', feeNativeDecimals); path = SafeArray.from(arrayLikePath).map((singleSwap) => { if (singleSwap.assetIn == ethers.ZeroAddress) singleSwap.assetIn = wethAddress; if (singleSwap.assetOut == ethers.ZeroAddress) singleSwap.assetOut = wethAddress; return singleSwap; }); + calldata let calls: BytesLike[]; ({ swapDescription, calls } = await processSwaps( @@ -162,7 +172,10 @@ export async function generateSwapCalldata({ curveRegistryAddress, provider )); + console.log('swapDescription', swapDescription); + console.log('calls', calls); const calldata = generateCalls(calls); + console.log('calldata', calldata); const { useExchangeBalance, additionalTransferAmount } = await shouldUseExchangeBalance( srcToken, @@ -171,10 +184,13 @@ export async function generateSwapCalldata({ amountNativeDecimals, provider ); + console.log('useExchangeBalance', useExchangeBalance); + console.log('additionalTransferAmount', additionalTransferAmount); if (useExchangeBalance) { swapDescription.flags = 1n << 255n; } const value = srcToken == ZeroAddress ? additionalTransferAmount : 0n; + console.log('value', value); return { swapDescription, calldata, value }; } From 940b269c01625ad5a9dd6782b3445de3a5f77af5 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 12:23:44 +0000 Subject: [PATCH 011/114] fix: console log all constants --- package.json | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f075da9..c3237b0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc100", + "version": "0.20.76-rc101", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index 6933d9f..d734b49 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -157,7 +157,7 @@ export async function generateSwapCalldata({ if (singleSwap.assetOut == ethers.ZeroAddress) singleSwap.assetOut = wethAddress; return singleSwap; }); - calldata + console.log('path2', path); let calls: BytesLike[]; ({ swapDescription, calls } = await processSwaps( From 386b2e50ae46d0899d9b90dc2ce7dcc02ce48d5e Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 12:40:55 +0000 Subject: [PATCH 012/114] fix: console log all constants --- package.json | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index c3237b0..f39ff4f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc101", + "version": "0.20.76-rc102", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index d734b49..9f8f9e0 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -127,7 +127,9 @@ export async function generateSwapCalldata({ console.log('feeToken', feeToken); const matcher = await addressLikeToString(matcherAddressLike); console.log('matcher', matcher); + console.log('arrayLikePath', arrayLikePath); let path = SafeArray.from(arrayLikePath).map((swapInfo) => { + console.log('swapInfo', swapInfo); swapInfo.assetIn = swapInfo.assetIn.toLowerCase() swapInfo.assetOut = swapInfo.assetOut.toLowerCase() return swapInfo; From 09a394b28b5d95e4ca0eb42e53a37ca71579c977 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 16:45:34 +0000 Subject: [PATCH 013/114] fix: change asset names to asset addresses --- package.json | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 14 ++++++-------- src/services/Aggregator/ws/index.ts | 2 ++ .../Aggregator/ws/schemas/swapInfoSchema.ts | 2 ++ src/types.ts | 2 ++ 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index f39ff4f..29a8ecc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc102", + "version": "0.20.76-rc103", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index 9f8f9e0..68f5f90 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -66,20 +66,18 @@ export async function generateSwapCalldataWithUnit({ } const wethAddress = safeGet(unit.contracts, "WETH"); const curveRegistryAddress = safeGet(unit.contracts, "curveRegistry"); - const { assetToAddress, swapExecutorContractAddress, exchangeContractAddress } = await simpleFetch( + const { swapExecutorContractAddress, exchangeContractAddress } = await simpleFetch( unit.blockchainService.getInfo )(); const arrayLikePathCopy = cloneDeep(arrayLikePath); let path = SafeArray.from(arrayLikePathCopy); - path = SafeArray.from(arrayLikePathCopy).map((swapInfo) => { - swapInfo.assetIn = assetToAddress[swapInfo.assetIn] ?? swapInfo.assetIn - swapInfo.assetOut = assetToAddress[swapInfo.assetOut] ?? swapInfo.assetOut - swapInfo.assetIn = swapInfo.assetIn.toLowerCase() - swapInfo.assetOut = swapInfo.assetOut.toLowerCase() - return swapInfo; - }); + path = SafeArray.from(arrayLikePathCopy).map((swapInfo) => ({ + ...swapInfo, + assetIn: swapInfo.assetAddressIn.toLowerCase(), + assetOut: swapInfo.assetAddressOut.toLowerCase(), + })); return await generateSwapCalldata({ amount, diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index 69d214c..0583261 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -506,6 +506,8 @@ class AggregatorWS { assetIn: path.ai, assetOut: path.ao, factory: path.f, + assetAddressIn: path.aai, + assetAddressOut: path.aao, })), poolOptimal: json.po, ...(json.oi) && { diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index 3c8a5d4..ba32789 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -40,6 +40,8 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ ai: z.string().toUpperCase(), // asset in ao: z.string().toUpperCase(), // asset out f: factorySchema, // factory + aai: z.string(), // asset address in + aao: z.string(), // asset address out })), usd: z.object({ // USD info of this swap, nullable aa: z.number().optional(), // available amount in, USD diff --git a/src/types.ts b/src/types.ts index 5828296..a4fd6d6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -176,6 +176,8 @@ export type SingleSwap = { assetIn: string assetOut: string factory: Factory + assetAddressIn: string + assetAddressOut: string } export type SwapInfoBase = { From cb7ae8a1ff8f3eb11e84c4378cbb03fe5ad39e7b Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 25 Mar 2024 16:55:44 +0000 Subject: [PATCH 014/114] fix: change asset names to asset addresses --- package.json | 2 +- src/services/Aggregator/schemas/swapInfoSchema.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 29a8ecc..590c303 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc103", + "version": "0.20.76-rc104", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/schemas/swapInfoSchema.ts b/src/services/Aggregator/schemas/swapInfoSchema.ts index ecbd440..f4d0e0e 100644 --- a/src/services/Aggregator/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/schemas/swapInfoSchema.ts @@ -12,6 +12,8 @@ const exchangeContractStep = z.object({ assetIn: z.string(), assetOut: z.string(), factory: z.string(), + assetAddressIn: z.string(), + assetAddressOut: z.string(), }); const swapInfoBase = z.object({ From 1e45222a43e3dd400a44e690c6c278fb18e1da66 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 28 Mar 2024 12:04:29 +0000 Subject: [PATCH 015/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 690319a..cb7a74f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc0", + "version": "0.20.74-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From d17fed1e9e0005b6512427b05faf4c8f64c0def8 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 28 Mar 2024 12:09:01 +0000 Subject: [PATCH 016/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cb7a74f..ee8c258 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.74-rc1", + "version": "0.20.78", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From b0873ab04c7b570426a97d5d9141fea2434b8018 Mon Sep 17 00:00:00 2001 From: KS Date: Fri, 29 Mar 2024 07:26:15 +0300 Subject: [PATCH 017/114] added PMM-sample.md , fixed order schema --- PMM-sample.md | 288 +++++++++++++++++++++++++++++++ package.json | 2 +- src/Unit/Pmm/index.ts | 2 +- src/Unit/Pmm/schemas/order.ts | 2 +- src/services/Aggregator/index.ts | 3 +- 5 files changed, 292 insertions(+), 5 deletions(-) create mode 100644 PMM-sample.md diff --git a/PMM-sample.md b/PMM-sample.md new file mode 100644 index 0000000..ad1eb45 --- /dev/null +++ b/PMM-sample.md @@ -0,0 +1,288 @@ + + +
+ Orion Protocol SDK logo +

PMM example

+
+ +## Overview + +This is special example which shows how to use PMM liquidity without using SDK, only using few libraries + +```ts +import {ethers, Wallet} from "ethers"; +import {z} from "zod"; +import hmacSHA256 from "crypto-js/hmac-sha256"; +import Hex from "crypto-js/enc-hex"; + +/////////////////////////////// +/////////////////////////////// +const pmmOrderQuotationSchema = z.object({ + info: z.string().default(''), + makerAsset: z.string().default(''), + takerAsset: z.string().default(''), + maker: z.string().default(''), + allowedSender: z.string().default(''), + makingAmount: z.string().default(''), + takingAmount: z.string().default(''), +}); + +const pmmOrderSchema = z.object({ + order: pmmOrderQuotationSchema.default({}), + signature: z.string().default(''), + success: z.boolean().default(false), + error: z.string().default(''), +}); + +const orionRFQContractABI = + [ + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "info", + "type": "uint256" + }, + { + "internalType": "address", + "name": "makerAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "takerAsset", + "type": "address" + }, + { + "internalType": "address", + "name": "maker", + "type": "address" + }, + { + "internalType": "address", + "name": "allowedSender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "makingAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "takingAmount", + "type": "uint256" + } + ], + "internalType": "struct OrderRFQLib.OrderRFQ", + "name": "order", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "flagsAndAmount", + "type": "uint256" + } + ], + "name": "fillOrderRFQ", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ]; + +function encode_utf8(s : string) { + return unescape(encodeURIComponent(s)); +} +function sign(message : string, key: string) { + return hmacSHA256( + encode_utf8(message), + encode_utf8(key) + ).toString(Hex); +} + +function generateHeaders(body : any, method : string, path : string, timestamp : number, apiKey : string, secretKey : string) { + const sortedBody = Object.keys(body) + .sort() + .map((key) => ( + `${key}=${body[key]}` + )).join('&'); + + const payload = timestamp + method.toUpperCase() + path + sortedBody; + + const signature = sign(payload, secretKey); + + const httpOptions = { + headers: { + 'API-KEY': apiKey, + 'ACCESS-TIMESTAMP': timestamp.toString(), + 'ACCESS-SIGN': signature + } + }; + return httpOptions; +} + +// +async function RFQOrder( + tokenFrom: string, + tokenTo: string, + fromTokenAmount: string, + apiKey: string, // + secretKey: string, + wallet: string +) : Promise> { + + // NB: replace with correct URL for networks + const apiUrl = 'https://testing.orion.xyz/bsc-testnet/backend' + // const apiUrl = 'https://trade.orion.xyz/bsc-mainnet/backend' + , path = '/rfq' + , url = `${apiUrl}/api/v1/integration/pmm`+path + , headers = { + 'Content-Type': 'application/json', + } + , data = { + "baseToken":tokenFrom, // USDT + "quoteToken":tokenTo, // ORN + "amount": fromTokenAmount, // 100 + "taker": wallet, + "feeBps": 0 + } + , method = 'POST' + , timestamp = Date.now() + , signatureHeaders = generateHeaders(data, method, path, timestamp, apiKey, secretKey) + , compiledHeaders = {...headers, ...signatureHeaders.headers, } + , body = JSON.stringify(data) + ; + + let res = pmmOrderSchema.parse({}); + + try { + const result = await fetch(url,{ + headers: compiledHeaders, + method, + body + }); + + // const data = await result.text(); + // console.log(data); + + const json = await result.json(); + console.log(json); + const parseResult = pmmOrderSchema.safeParse(json); + + if(!parseResult.success) { + // Try to parse error answer + const errorSchema = z.object({error: z.object({code: z.number(), reason: z.string()})}); + + const errorParseResult = errorSchema.safeParse(json); + + if(!errorParseResult.success) + throw Error(`Unrecognized answer from aggregator: ${json}`); + + throw Error(errorParseResult.data.error.reason); + } + + res.order = parseResult.data.order; + res.signature = parseResult.data.signature; + res.error = ''; + res.success = true; + } + catch(err) { + res.error = `${err}`; + } + return res; +} + + +(async() => { + const apiKey = '958153f1-b8b9-3ec4-84eb-2147429105d9'; + const secretKey = 'secretKey'; + + // BNB testnet tokens and router + const assetORN = '0xf223eca06261145b3287a0fefd8cfad371c7eb34'; + const assetUSDT = '0xcb2951e90d8dcf16e1fa84ac0c83f48906d6a744'; + const router = '0x89357522C0ed6E557D39dC75290859246077bdfC'; + + // BNB mainnet tokens and router + // const assetORN = '0xe4ca1f75eca6214393fce1c1b316c237664eaa8e'; + // const assetUSDT = '0x55d398326f99059ff775485246999027b3197955'; + // const router = '0xcb2D40EabC4f4c92Ee993Eb3D67f7717bE476E76'; + + const rfqOrder = await RFQOrder( + assetORN, // Spending asset + assetUSDT, // Receiving asset + '1000000000', // Amount in "satoshi" of spending asset + apiKey, + secretKey, + '0x61Eed69c0d112C690fD6f44bB621357B89fBE67F' // Can be any address, ignored for now + ); + + if(!rfqOrder.success) { + console.log(rfqOrder.error); + return; + } + + // ... here you can check order prices, etc. + console.log(rfqOrder); + + // Calldata according to provided rfqOrder + const contractInterface = new ethers.Interface(orionRFQContractABI); + const calldata = contractInterface.encodeFunctionData("fillOrderRFQ", [rfqOrder.order, rfqOrder.signature, 0]); + console.log('Calldata = ', calldata); + + // Call router with this data + // Replace with your private key + const yourWalletPrivateKey = '0xf1.......'; + + const tx = { + to: router, + data: calldata + } + + const provider = new ethers.JsonRpcProvider("https://data-seed-prebsc-1-s1.binance.org:8545/"); + const signer = new ethers.Wallet(yourWalletPrivateKey, provider); + console.log('Address = ', signer.address); + const transactionResponse = await signer.sendTransaction(tx); + console.log("Transaction hash:", transactionResponse.hash); + await transactionResponse.wait(); +})(); +``` + +RFQ order response example description (`rfqOrder` from example above): + +``` + { + quotation: { + info: '31545611720730315633520017429', + makerAsset: '0xcb2951e90d8dcf16e1fa84ac0c83f48906d6a744', + takerAsset: '0xf223eca06261145b3287a0fefd8cfad371c7eb34', + maker: '0x1ff516e5ce789085cff86d37fc27747df852a80a', + allowedSender: '0x0000000000000000000000000000000000000000', + makingAmount: '193596929', + takingAmount: '10000000000' + }, + signature: '0x8a2f9140a3c3a5734eda763a19c54c5ac909d8a03db37d9804af9115641fd1d35896b66ca6e136c1c89e0478fb7382a4b875d0f74529c1e83601f9383d310dde1b', + success: true, + error: '' + } +``` + + +* info - can be ignored +* makerAsset - your RECEIVING asset (what you expect to receive from contract, in this case USDT) +* takerAsset - your SPENDING asset (what you're giving to contract, in this case ORN) +* maker - can be ignored for now; +* allowedSender - can be ignored for now; +* makingAmount - how much you will RECEIVE (in receiving asset's precision) +* takingAmount - how much you should SPEND (in spending asset's precision) \ No newline at end of file diff --git a/package.json b/package.json index cec14eb..a307337 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.68-rc1", + "version": "0.20.79-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Pmm/index.ts b/src/Unit/Pmm/index.ts index cb41136..d4f1c57 100644 --- a/src/Unit/Pmm/index.ts +++ b/src/Unit/Pmm/index.ts @@ -79,6 +79,6 @@ export default class Pmm { const contract = new ethers.Contract(this.contractAddress, orionRFQContractABI, signer); // @ts-ignore - return contract.fillOrderRFQ(order.quotation, order.signature, BigInt(0)); + return contract.fillOrderRFQ(order.order, order.signature, BigInt(0)); } } \ No newline at end of file diff --git a/src/Unit/Pmm/schemas/order.ts b/src/Unit/Pmm/schemas/order.ts index 2651660..a9727e4 100644 --- a/src/Unit/Pmm/schemas/order.ts +++ b/src/Unit/Pmm/schemas/order.ts @@ -11,7 +11,7 @@ export const pmmOrderQuotationSchema = z.object({ }); export const pmmOrderSchema = z.object({ - quotation: pmmOrderQuotationSchema.default({}), + order: pmmOrderQuotationSchema.default({}), signature: z.string().default(''), success: z.boolean().default(false), error: z.string().default(''), diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index f04e4c5..1077a53 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -461,11 +461,10 @@ class Aggregator { throw Error(errorParseResult.data.error.reason); } - res.quotation = parseResult.data.quotation; + res.order = parseResult.data.order; res.signature = parseResult.data.signature; res.error = ''; res.success = true; - // return result; } catch(err) { res.error = `${err}`; From ddc8acde7ca6004da69e94cc3ffcabc9d0bb1137 Mon Sep 17 00:00:00 2001 From: KS Date: Fri, 29 Mar 2024 07:27:52 +0300 Subject: [PATCH 018/114] fixed PMM-sample.md --- PMM-sample.md | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/PMM-sample.md b/PMM-sample.md index ad1eb45..344788e 100644 --- a/PMM-sample.md +++ b/PMM-sample.md @@ -257,32 +257,4 @@ async function RFQOrder( console.log("Transaction hash:", transactionResponse.hash); await transactionResponse.wait(); })(); -``` - -RFQ order response example description (`rfqOrder` from example above): - -``` - { - quotation: { - info: '31545611720730315633520017429', - makerAsset: '0xcb2951e90d8dcf16e1fa84ac0c83f48906d6a744', - takerAsset: '0xf223eca06261145b3287a0fefd8cfad371c7eb34', - maker: '0x1ff516e5ce789085cff86d37fc27747df852a80a', - allowedSender: '0x0000000000000000000000000000000000000000', - makingAmount: '193596929', - takingAmount: '10000000000' - }, - signature: '0x8a2f9140a3c3a5734eda763a19c54c5ac909d8a03db37d9804af9115641fd1d35896b66ca6e136c1c89e0478fb7382a4b875d0f74529c1e83601f9383d310dde1b', - success: true, - error: '' - } -``` - - -* info - can be ignored -* makerAsset - your RECEIVING asset (what you expect to receive from contract, in this case USDT) -* takerAsset - your SPENDING asset (what you're giving to contract, in this case ORN) -* maker - can be ignored for now; -* allowedSender - can be ignored for now; -* makingAmount - how much you will RECEIVE (in receiving asset's precision) -* takingAmount - how much you should SPEND (in spending asset's precision) \ No newline at end of file +``` \ No newline at end of file From 57474d28725433510bfb898b8ab6da502018a8ca Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 08:49:00 +0000 Subject: [PATCH 019/114] feat: added frontage service --- package.json | 2 +- src/Orion/index.ts | 5 +- src/Unit/index.ts | 5 +- src/config/envs.json | 99 +++++++++++++++++++ src/config/schemas/pureEnvSchema.ts | 3 + src/services/Frontage/index.ts | 20 ++++ src/services/Frontage/schemas/index.ts | 1 + .../Frontage/schemas/search-tickers-schema.ts | 9 ++ src/services/index.ts | 1 + src/types.ts | 6 ++ 10 files changed, 148 insertions(+), 3 deletions(-) create mode 100644 src/services/Frontage/index.ts create mode 100644 src/services/Frontage/schemas/index.ts create mode 100644 src/services/Frontage/schemas/search-tickers-schema.ts diff --git a/package.json b/package.json index ee8c258..fe29a0d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.78", + "version": "0.20.79-rc0", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Orion/index.ts b/src/Orion/index.ts index 7245c00..629027e 100644 --- a/src/Orion/index.ts +++ b/src/Orion/index.ts @@ -60,7 +60,10 @@ export default class Orion { }, indexer: { api: networkConfig.api + networkConfig.services.indexer?.http, - } + }, + frontage: { + api: networkConfig.api + networkConfig.services.frontage.http, + }, }, }; }) diff --git a/src/Unit/index.ts b/src/Unit/index.ts index 85d7052..b91e549 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -11,7 +11,7 @@ import Exchange from './Exchange/index.js'; import { chains, envs } from '../config'; import type { networkCodes } from '../constants/index.js'; import { IndexerService } from '../services/Indexer'; -import Pmm from "./Pmm"; +import Pmm from './Pmm'; type KnownConfig = { env: KnownEnv @@ -88,6 +88,9 @@ export default class Unit { indexer: { api: networkConfig.api + networkConfig.services.indexer?.http, }, + frontage: { + api: networkConfig.api + networkConfig.services.frontage.http, + }, }, }; } else { diff --git a/src/config/envs.json b/src/config/envs.json index a6c3988..0787b96 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -17,6 +17,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -36,6 +39,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -54,6 +60,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -72,6 +81,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -90,6 +102,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -108,6 +123,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -126,6 +144,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -144,6 +165,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -162,6 +186,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -180,6 +207,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } } @@ -203,6 +233,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } }, "liquidityMigratorAddress": "0x01b10dds12478C88A5E18e2707E729906bC25CfF6" @@ -222,6 +255,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -240,6 +276,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -258,6 +297,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -276,6 +318,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -294,6 +339,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } } @@ -317,6 +365,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -335,6 +386,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -353,6 +407,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -371,6 +428,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -389,6 +449,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -407,6 +470,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -425,6 +491,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -443,6 +512,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -461,6 +533,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -479,6 +554,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } } @@ -502,6 +580,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -520,6 +601,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } } @@ -543,6 +627,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -562,6 +649,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -580,6 +670,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -598,6 +691,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } }, @@ -616,6 +712,9 @@ }, "indexer": { "http": "/orion-indexer/" + }, + "frontage": { + "http": "/frontage" } } } diff --git a/src/config/schemas/pureEnvSchema.ts b/src/config/schemas/pureEnvSchema.ts index 9c799c4..31f503c 100644 --- a/src/config/schemas/pureEnvSchema.ts +++ b/src/config/schemas/pureEnvSchema.ts @@ -17,6 +17,9 @@ export const pureEnvNetworksSchema = z.object({ indexer: z.object({ http: z.string(), }).optional(), + frontage: z.object({ + http: z.string(), + }), }), rpc: z.string().optional(), liquidityMigratorAddress: z.string().optional(), diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts new file mode 100644 index 0000000..2646156 --- /dev/null +++ b/src/services/Frontage/index.ts @@ -0,0 +1,20 @@ +import { fetchWithValidation } from 'simple-typed-fetch'; +import { searchTickersSchema } from './schemas'; + +export class Frontage { + private readonly apiUrl: string; + + constructor(apiUrl: string) { + this.apiUrl = apiUrl; + + this.searchTickers = this.searchTickers.bind(this); + } + + searchTickers = () => { + return fetchWithValidation(`${this.apiUrl}/api/v1/tickers/search`, + searchTickersSchema + ); + }; +} + +export * as schemas from './schemas/index.js'; diff --git a/src/services/Frontage/schemas/index.ts b/src/services/Frontage/schemas/index.ts new file mode 100644 index 0000000..c03475f --- /dev/null +++ b/src/services/Frontage/schemas/index.ts @@ -0,0 +1 @@ +export * from './search-tickers-schema'; diff --git a/src/services/Frontage/schemas/search-tickers-schema.ts b/src/services/Frontage/schemas/search-tickers-schema.ts new file mode 100644 index 0000000..3822030 --- /dev/null +++ b/src/services/Frontage/schemas/search-tickers-schema.ts @@ -0,0 +1,9 @@ +import { z } from 'zod'; + +export const searchTickersSchema = z.array(z.object({ + pair: z.string(), + volume24: z.number(), + change24: z.number(), + lastPrice: z.number(), + networks: z.array(z.string()), +})); diff --git a/src/services/index.ts b/src/services/index.ts index ca04ebd..004c45f 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -3,3 +3,4 @@ export * as blockchainService from './BlockchainService/index.js'; export * as priceFeed from './PriceFeed/index.js'; export * as referralSystem from './ReferralSystem/index.js'; export * as indexer from './Indexer/index.js'; +export * as frontage from './Frontage/index.js'; diff --git a/src/types.ts b/src/types.ts index 5828296..3607a8d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -271,6 +271,12 @@ export type VerboseUnitConfig = { // http://localhost:3004/, // http:// } | undefined + frontage: { + api: string + // For example: + // http://localhost:3004/, + // http:// + } } basicAuth?: BasicAuthCredentials } From bfa4cc3d6f138d985adbd4b54d2f6210fc51ace1 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 09:55:25 +0000 Subject: [PATCH 020/114] feat: added two methods for tickers --- package.json | 2 +- src/services/Frontage/index.ts | 54 +++++++++++++++++-- src/services/Frontage/schemas/index.ts | 2 +- ...ch-tickers-schema.ts => tickers-schema.ts} | 2 +- src/types.ts | 21 +++++++- 5 files changed, 73 insertions(+), 8 deletions(-) rename src/services/Frontage/schemas/{search-tickers-schema.ts => tickers-schema.ts} (74%) diff --git a/package.json b/package.json index fe29a0d..48979e1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc0", + "version": "0.20.79-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index 2646156..77b3d8c 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -1,5 +1,6 @@ import { fetchWithValidation } from 'simple-typed-fetch'; -import { searchTickersSchema } from './schemas'; +import { tickersSchema } from './schemas'; +import type { tickersBaseSearchParams, tickersCategories } from '../../types'; export class Frontage { private readonly apiUrl: string; @@ -8,11 +9,56 @@ export class Frontage { this.apiUrl = apiUrl; this.searchTickers = this.searchTickers.bind(this); + this.getTickers = this.getTickers.bind(this); } - searchTickers = () => { - return fetchWithValidation(`${this.apiUrl}/api/v1/tickers/search`, - searchTickersSchema + searchTickers = ({ + searchValue, + currentNetwork, + targetNetwork, + sortBy, + sortType, + offset, + limit, + }: { searchValue: string } & tickersBaseSearchParams) => { + const queryParams = [ + `searchValue=${encodeURIComponent(searchValue)}`, + currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork)}` : '', + targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork)}` : '', + sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', + sortType !== undefined ? `&sortType=${encodeURIComponent(sortType)}` : '', + offset !== undefined ? `&offset=${offset}` : '', + limit !== undefined ? `&limit=${limit}` : '', + ].filter(Boolean).join('&'); + + return fetchWithValidation( + `${this.apiUrl}/api/v1/tickers/search?${queryParams}`, + tickersSchema + ); + }; + + getTickers = ({ + category, + currentNetwork, + targetNetwork, + sortBy, + sortType, + offset, + limit, + }: { category: tickersCategories } & tickersBaseSearchParams) => { + const queryParams = [ + `category=${encodeURIComponent(category)}`, + currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork)}` : '', + targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork)}` : '', + sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', + sortType !== undefined ? `&sortType=${encodeURIComponent(sortType)}` : '', + offset !== undefined ? `&offset=${offset}` : '', + limit !== undefined ? `&limit=${limit}` : '', + ].filter(Boolean).join('&'); + + return fetchWithValidation( + `/api/v1/tickers/get?${queryParams}`, + tickersSchema ); }; } diff --git a/src/services/Frontage/schemas/index.ts b/src/services/Frontage/schemas/index.ts index c03475f..4611949 100644 --- a/src/services/Frontage/schemas/index.ts +++ b/src/services/Frontage/schemas/index.ts @@ -1 +1 @@ -export * from './search-tickers-schema'; +export * from './tickers-schema'; diff --git a/src/services/Frontage/schemas/search-tickers-schema.ts b/src/services/Frontage/schemas/tickers-schema.ts similarity index 74% rename from src/services/Frontage/schemas/search-tickers-schema.ts rename to src/services/Frontage/schemas/tickers-schema.ts index 3822030..46f894f 100644 --- a/src/services/Frontage/schemas/search-tickers-schema.ts +++ b/src/services/Frontage/schemas/tickers-schema.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -export const searchTickersSchema = z.array(z.object({ +export const tickersSchema = z.array(z.object({ pair: z.string(), volume24: z.number(), change24: z.number(), diff --git a/src/types.ts b/src/types.ts index 3607a8d..63ea7ef 100644 --- a/src/types.ts +++ b/src/types.ts @@ -3,8 +3,9 @@ import type factories from './constants/factories.js'; import type { BigNumber } from 'bignumber.js'; import type subOrderStatuses from './constants/subOrderStatuses.js'; import type positionStatuses from './constants/positionStatuses.js'; -import type { knownEnvs } from './config/schemas/index.js'; +import type { knownEnvs } from './config/schemas'; import type getHistory from './Orion/bridge/getHistory.js'; +import type uppercasedNetworkCodes from './constants/uppercasedNetworkCodes'; export type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial; @@ -465,3 +466,21 @@ export type AtomicSwap = Partial< } export type OrderSource = 'TERMINAL_MARKET' | 'TERMINAL_LIMIT' | 'SWAP_UI' | 'WIDGET'; + +// Frontage +export type NetworkCode = typeof uppercasedNetworkCodes[number]; + +export type tickersCategories = 'USD' | 'ORN' | 'BNB' | 'ALTS'; + +export type tickersSortBy = 'PRICE' | 'CHANGE' | 'VOLUME'; + +export type tickersSortType = 'ASCENDING' | 'DESCENDING'; + +export type tickersBaseSearchParams = { + currentNetwork?: NetworkCode + targetNetwork?: NetworkCode + sortBy?: tickersSortBy + sortType?: tickersSortType + offset?: number + limit?: number +} From 8c27f339fc2b971fe690128858db57af91600737 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 12:15:59 +0000 Subject: [PATCH 021/114] feat: frontage was added to Unit --- package.json | 2 +- src/Unit/index.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 48979e1..f043ce8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc1", + "version": "0.20.79-rc2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/index.ts b/src/Unit/index.ts index b91e549..56d08c4 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -2,6 +2,7 @@ import { JsonRpcProvider } from 'ethers'; import { Aggregator } from '../services/Aggregator'; import { BlockchainService } from '../services/BlockchainService'; import { PriceFeed } from '../services/PriceFeed'; +import { Frontage } from '../services/Frontage'; import type { KnownEnv, SupportedChainId, @@ -35,6 +36,8 @@ export default class Unit { public readonly priceFeed: PriceFeed; + public readonly frontage: Frontage; + public readonly exchange: Exchange; public readonly config: VerboseUnitConfig; @@ -127,6 +130,9 @@ export default class Unit { this.config.services.priceFeed.api, this.config.basicAuth ); + this.frontage = new Frontage( + this.config.services.frontage.api + ); this.exchange = new Exchange(this); this.pmm = new Pmm(this); } From 252b7fc3415b10f38fd2b80bf97c0e8e2e69ed49 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 12:22:59 +0000 Subject: [PATCH 022/114] feat: types updates --- package.json | 2 +- src/services/Frontage/index.ts | 6 +++--- src/types.ts | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index f043ce8..87d0646 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc2", + "version": "0.20.79-rc3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index 77b3d8c..5a8ebfd 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -1,6 +1,6 @@ import { fetchWithValidation } from 'simple-typed-fetch'; import { tickersSchema } from './schemas'; -import type { tickersBaseSearchParams, tickersCategories } from '../../types'; +import type { TickersBaseSearchParams, TickersCategories } from '../../types'; export class Frontage { private readonly apiUrl: string; @@ -20,7 +20,7 @@ export class Frontage { sortType, offset, limit, - }: { searchValue: string } & tickersBaseSearchParams) => { + }: { searchValue: string } & TickersBaseSearchParams) => { const queryParams = [ `searchValue=${encodeURIComponent(searchValue)}`, currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork)}` : '', @@ -45,7 +45,7 @@ export class Frontage { sortType, offset, limit, - }: { category: tickersCategories } & tickersBaseSearchParams) => { + }: { category: TickersCategories } & TickersBaseSearchParams) => { const queryParams = [ `category=${encodeURIComponent(category)}`, currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork)}` : '', diff --git a/src/types.ts b/src/types.ts index 63ea7ef..4d3bf64 100644 --- a/src/types.ts +++ b/src/types.ts @@ -470,17 +470,17 @@ export type OrderSource = 'TERMINAL_MARKET' | 'TERMINAL_LIMIT' | 'SWAP_UI' | 'WI // Frontage export type NetworkCode = typeof uppercasedNetworkCodes[number]; -export type tickersCategories = 'USD' | 'ORN' | 'BNB' | 'ALTS'; +export type TickersCategories = 'USD' | 'ORN' | 'BNB' | 'ALTS'; -export type tickersSortBy = 'PRICE' | 'CHANGE' | 'VOLUME'; +export type TickersSortBy = 'PRICE' | 'CHANGE' | 'VOLUME'; -export type tickersSortType = 'ASCENDING' | 'DESCENDING'; +export type TickersSortType = 'ASCENDING' | 'DESCENDING'; -export type tickersBaseSearchParams = { +export type TickersBaseSearchParams = { currentNetwork?: NetworkCode targetNetwork?: NetworkCode - sortBy?: tickersSortBy - sortType?: tickersSortType + sortBy?: TickersSortBy + sortType?: TickersSortType offset?: number limit?: number } From ba4d7d1137b5f126ffaf9e5a3693a9d45ed47886 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 12:29:24 +0000 Subject: [PATCH 023/114] feat: types update --- package.json | 2 +- src/services/Frontage/index.ts | 8 ++++---- src/types.ts | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 87d0646..b753b9d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc3", + "version": "0.20.79-rc4", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index 5a8ebfd..c16134f 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -23,8 +23,8 @@ export class Frontage { }: { searchValue: string } & TickersBaseSearchParams) => { const queryParams = [ `searchValue=${encodeURIComponent(searchValue)}`, - currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork)}` : '', - targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork)}` : '', + currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork).toUpperCase()}` : '', + targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork).toUpperCase()}` : '', sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', sortType !== undefined ? `&sortType=${encodeURIComponent(sortType)}` : '', offset !== undefined ? `&offset=${offset}` : '', @@ -48,8 +48,8 @@ export class Frontage { }: { category: TickersCategories } & TickersBaseSearchParams) => { const queryParams = [ `category=${encodeURIComponent(category)}`, - currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork)}` : '', - targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork)}` : '', + currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork).toUpperCase()}` : '', + targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork).toUpperCase()}` : '', sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', sortType !== undefined ? `&sortType=${encodeURIComponent(sortType)}` : '', offset !== undefined ? `&offset=${offset}` : '', diff --git a/src/types.ts b/src/types.ts index 4d3bf64..1d6e3fd 100644 --- a/src/types.ts +++ b/src/types.ts @@ -5,7 +5,7 @@ import type subOrderStatuses from './constants/subOrderStatuses.js'; import type positionStatuses from './constants/positionStatuses.js'; import type { knownEnvs } from './config/schemas'; import type getHistory from './Orion/bridge/getHistory.js'; -import type uppercasedNetworkCodes from './constants/uppercasedNetworkCodes'; +import type { networkCodes } from './constants'; export type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial; @@ -468,7 +468,7 @@ export type AtomicSwap = Partial< export type OrderSource = 'TERMINAL_MARKET' | 'TERMINAL_LIMIT' | 'SWAP_UI' | 'WIDGET'; // Frontage -export type NetworkCode = typeof uppercasedNetworkCodes[number]; +export type NetworkCode = typeof networkCodes[number]; export type TickersCategories = 'USD' | 'ORN' | 'BNB' | 'ALTS'; From 8bd62243dc2bc96f838e6c83967e23fa33f70c82 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 13:19:16 +0000 Subject: [PATCH 024/114] feat: small fix for getTickers method --- package.json | 2 +- src/services/Frontage/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b753b9d..0142843 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc4", + "version": "0.20.79-rc5", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index c16134f..6217b85 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -57,7 +57,7 @@ export class Frontage { ].filter(Boolean).join('&'); return fetchWithValidation( - `/api/v1/tickers/get?${queryParams}`, + `${this.apiUrl}/api/v1/tickers/get?${queryParams}`, tickersSchema ); }; From 12533dbb4a25d2fccb6c3656f81671589ce5d5e2 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 13:29:02 +0000 Subject: [PATCH 025/114] fix: fix for frontage config --- package.json | 2 +- src/Unit/index.ts | 4 ++-- src/types.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 0142843..f7ec7f3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc5", + "version": "0.20.79-rc6", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/index.ts b/src/Unit/index.ts index 56d08c4..69d781f 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -92,7 +92,7 @@ export default class Unit { api: networkConfig.api + networkConfig.services.indexer?.http, }, frontage: { - api: networkConfig.api + networkConfig.services.frontage.http, + http: networkConfig.api + networkConfig.services.frontage.http, }, }, }; @@ -131,7 +131,7 @@ export default class Unit { this.config.basicAuth ); this.frontage = new Frontage( - this.config.services.frontage.api + this.config.services.frontage.http ); this.exchange = new Exchange(this); this.pmm = new Pmm(this); diff --git a/src/types.ts b/src/types.ts index 1d6e3fd..f5cc59d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -273,7 +273,7 @@ export type VerboseUnitConfig = { // http:// } | undefined frontage: { - api: string + http: string // For example: // http://localhost:3004/, // http:// From acdd78820d7933785271bb2d48ab9a162ff980b2 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 13:41:04 +0000 Subject: [PATCH 026/114] fix: fix for frontage config --- src/Orion/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Orion/index.ts b/src/Orion/index.ts index 629027e..54cbbf8 100644 --- a/src/Orion/index.ts +++ b/src/Orion/index.ts @@ -7,6 +7,7 @@ import type { SupportedChainId, DeepPartial, VerboseUnitConfig, KnownEnv, EnvCon import { isValidChainId } from '../utils/index.js'; import { simpleFetch } from 'simple-typed-fetch'; import Bridge from './bridge/index.js'; +import type { Frontage } from '../services/Frontage'; export default class Orion { public readonly env?: string; @@ -62,7 +63,7 @@ export default class Orion { api: networkConfig.api + networkConfig.services.indexer?.http, }, frontage: { - api: networkConfig.api + networkConfig.services.frontage.http, + http: networkConfig.api + networkConfig.services.frontage.http, }, }, }; From 14035cfcc30287dc27b9f5301a6c7ea3c4d19c4e Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 13:47:13 +0000 Subject: [PATCH 027/114] fix: fix for frontage config --- src/Orion/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Orion/index.ts b/src/Orion/index.ts index 54cbbf8..b05cf36 100644 --- a/src/Orion/index.ts +++ b/src/Orion/index.ts @@ -7,7 +7,6 @@ import type { SupportedChainId, DeepPartial, VerboseUnitConfig, KnownEnv, EnvCon import { isValidChainId } from '../utils/index.js'; import { simpleFetch } from 'simple-typed-fetch'; import Bridge from './bridge/index.js'; -import type { Frontage } from '../services/Frontage'; export default class Orion { public readonly env?: string; From d024d475a72be940ebc9484d9001121d01f32e1d Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 14:07:23 +0000 Subject: [PATCH 028/114] fix: fix frontage config --- src/Orion/index.ts | 15 ++-- src/Unit/index.ts | 11 +-- src/config/envs.json | 104 ++-------------------------- src/config/schemas/pureEnvSchema.ts | 6 +- src/types.ts | 7 +- 5 files changed, 18 insertions(+), 125 deletions(-) diff --git a/src/Orion/index.ts b/src/Orion/index.ts index b05cf36..8cc94b0 100644 --- a/src/Orion/index.ts +++ b/src/Orion/index.ts @@ -1,12 +1,13 @@ import { merge } from 'merge-anything'; -import { chains, envs } from '../config/index.js'; +import { chains, envs } from '../config'; import type { networkCodes } from '../constants/index.js'; import Unit from '../Unit/index.js'; -import { ReferralSystem } from '../services/ReferralSystem/index.js'; +import { ReferralSystem } from '../services/ReferralSystem'; import type { SupportedChainId, DeepPartial, VerboseUnitConfig, KnownEnv, EnvConfig, AggregatedAssets } from '../types.js'; import { isValidChainId } from '../utils/index.js'; import { simpleFetch } from 'simple-typed-fetch'; import Bridge from './bridge/index.js'; +import { Frontage } from '../services/Frontage'; export default class Orion { public readonly env?: string; @@ -17,6 +18,8 @@ export default class Orion { public readonly bridge: Bridge; + public readonly frontage: Frontage; + // TODO: get tradable assets (aggregated) // TODO: get tradable pairs (aggregated) @@ -35,6 +38,7 @@ export default class Orion { config = { analyticsAPI: envConfig?.analyticsAPI, referralAPI: envConfig.referralAPI, + frontageAPI: envConfig.frontageAPI, networks: Object.entries(envConfig.networks).map(([chainId, networkConfig]) => { if (!isValidChainId(chainId)) throw new Error(`Invalid chainId: ${chainId}`); const chainConfig = chains[chainId]; @@ -60,10 +64,7 @@ export default class Orion { }, indexer: { api: networkConfig.api + networkConfig.services.indexer?.http, - }, - frontage: { - http: networkConfig.api + networkConfig.services.frontage.http, - }, + } }, }; }) @@ -105,6 +106,8 @@ export default class Orion { this.bridge = new Bridge( this.unitsArray, ); + + this.frontage = new Frontage(config.frontageAPI); } get unitsArray() { diff --git a/src/Unit/index.ts b/src/Unit/index.ts index 69d781f..38f8e0e 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -2,7 +2,6 @@ import { JsonRpcProvider } from 'ethers'; import { Aggregator } from '../services/Aggregator'; import { BlockchainService } from '../services/BlockchainService'; import { PriceFeed } from '../services/PriceFeed'; -import { Frontage } from '../services/Frontage'; import type { KnownEnv, SupportedChainId, @@ -36,8 +35,6 @@ export default class Unit { public readonly priceFeed: PriceFeed; - public readonly frontage: Frontage; - public readonly exchange: Exchange; public readonly config: VerboseUnitConfig; @@ -90,10 +87,7 @@ export default class Unit { }, indexer: { api: networkConfig.api + networkConfig.services.indexer?.http, - }, - frontage: { - http: networkConfig.api + networkConfig.services.frontage.http, - }, + } }, }; } else { @@ -130,9 +124,6 @@ export default class Unit { this.config.services.priceFeed.api, this.config.basicAuth ); - this.frontage = new Frontage( - this.config.services.frontage.http - ); this.exchange = new Exchange(this); this.pmm = new Pmm(this); } diff --git a/src/config/envs.json b/src/config/envs.json index 0787b96..a2a180e 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -1,6 +1,7 @@ { "production": { "referralAPI": "https://trade.orion.xyz/referral-api", + "frontageAPI": "https://trade.orion.xyz/frontage", "networks": { "1": { "api": "https://trade.orion.xyz/eth-mainnet", @@ -17,9 +18,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -39,9 +37,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -60,9 +55,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -81,9 +73,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -102,9 +91,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -123,9 +109,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -144,9 +127,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -165,9 +145,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -186,9 +163,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -207,9 +181,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } } @@ -217,6 +188,7 @@ }, "testing": { "referralAPI": "https://testing.orion.xyz/referral-api", + "frontageAPI": "https://testing.orion.xyz/frontage", "networks": { "97": { "api": "https://testing.orion.xyz/bsc-testnet", @@ -233,9 +205,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } }, "liquidityMigratorAddress": "0x01b10dds12478C88A5E18e2707E729906bC25CfF6" @@ -255,9 +224,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -276,9 +242,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -297,9 +260,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -318,9 +278,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -339,9 +296,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } } @@ -349,6 +303,7 @@ }, "staging": { "referralAPI": "https://staging.orion.xyz/referral-api", + "frontageAPI": "https://staging.orion.xyz/frontage", "networks": { "1": { "api": "https://staging.orion.xyz/eth-mainnet", @@ -365,9 +320,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -386,9 +338,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -407,9 +356,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -428,9 +374,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -449,9 +392,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -470,9 +410,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -491,9 +428,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -512,9 +446,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -533,9 +464,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -554,9 +482,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } } @@ -564,6 +489,7 @@ }, "experimental": { "referralAPI": "https://testing.orion.xyz/referral-api", + "frontageAPI": "https://testing.orion.xyz/frontage", "networks": { "97": { "api": "https://dn-dev.orion.xyz/bsc-testnet", @@ -580,9 +506,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -601,9 +524,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } } @@ -611,6 +531,7 @@ }, "kucoin-production": { "referralAPI": "https://trade.orion.xyz/referral-api", + "frontageAPI": "https://trade.orion.xyz/frontage", "networks": { "1": { "api": "https://trade.orion.xyz/eth-mainnet", @@ -627,9 +548,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } }, "liquidityMigratorAddress": "0x23a1820a47BcD022E29f6058a5FD224242F50D1A" @@ -649,9 +567,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -670,9 +585,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -691,9 +603,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } }, @@ -712,9 +621,6 @@ }, "indexer": { "http": "/orion-indexer/" - }, - "frontage": { - "http": "/frontage" } } } diff --git a/src/config/schemas/pureEnvSchema.ts b/src/config/schemas/pureEnvSchema.ts index 31f503c..8f414be 100644 --- a/src/config/schemas/pureEnvSchema.ts +++ b/src/config/schemas/pureEnvSchema.ts @@ -16,10 +16,7 @@ export const pureEnvNetworksSchema = z.object({ }), indexer: z.object({ http: z.string(), - }).optional(), - frontage: z.object({ - http: z.string(), - }), + }).optional() }), rpc: z.string().optional(), liquidityMigratorAddress: z.string().optional(), @@ -28,6 +25,7 @@ export const pureEnvNetworksSchema = z.object({ export const pureEnvPayloadSchema = z.object({ analyticsAPI: z.string().url().optional(), referralAPI: z.string().url(), + frontageAPI: z.string().url(), networks: z.record( z.nativeEnum(SupportedChainId), pureEnvNetworksSchema diff --git a/src/types.ts b/src/types.ts index f5cc59d..7cf26f1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -272,12 +272,6 @@ export type VerboseUnitConfig = { // http://localhost:3004/, // http:// } | undefined - frontage: { - http: string - // For example: - // http://localhost:3004/, - // http:// - } } basicAuth?: BasicAuthCredentials } @@ -289,6 +283,7 @@ export type Json = string | number | boolean | null | Json[] | { [key: string]: export type EnvConfig = { analyticsAPI: string | undefined referralAPI: string + frontageAPI: string networks: Partial< Record< SupportedChainId, From e275a4d7532253b32c8f92ff7bf1b031ca98a46c Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 29 Mar 2024 14:07:37 +0000 Subject: [PATCH 029/114] fix: fix frontage config --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f7ec7f3..f8193ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc6", + "version": "0.20.79-rc7", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 9e493457715ed3cc45d02202b05e2d0178fe4881 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Tue, 2 Apr 2024 15:07:26 +0300 Subject: [PATCH 030/114] 0.20.79-rc1 --- package-lock.json | 4 +- package.json | 2 +- src/Orion/index.ts | 9 ++- src/Unit/index.ts | 8 ++- src/services/Aggregator/index.ts | 98 ++++++++++++++--------------- src/services/Aggregator/ws/index.ts | 26 +++++--- 6 files changed, 83 insertions(+), 64 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9cc7fbb..f02c880 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.73", + "version": "0.20.79-rc1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.73", + "version": "0.20.79-rc1", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index ee8c258..48979e1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.78", + "version": "0.20.79-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Orion/index.ts b/src/Orion/index.ts index 7245c00..8ddf534 100644 --- a/src/Orion/index.ts +++ b/src/Orion/index.ts @@ -21,10 +21,15 @@ export default class Orion { // TODO: get tradable pairs (aggregated) + public logger: ((message: string) => void) | undefined; + constructor( envOrConfig: KnownEnv | EnvConfig = 'production', - overrides?: DeepPartial + overrides?: DeepPartial, + logger?: ((message: string) => void) | undefined ) { + this.logger = logger; + let config: EnvConfig; if (typeof envOrConfig === 'string') { const envConfig = envs[envOrConfig]; @@ -92,7 +97,7 @@ export default class Orion { // api: networkConfig.api, nodeJsonRpc: networkConfig.nodeJsonRpc, services: networkConfig.services, - }); + }, logger); return { ...acc, [chainId]: unit, diff --git a/src/Unit/index.ts b/src/Unit/index.ts index 85d7052..9b504cc 100644 --- a/src/Unit/index.ts +++ b/src/Unit/index.ts @@ -41,7 +41,10 @@ export default class Unit { public readonly contracts: Record; - constructor(config: KnownConfig | VerboseUnitConfig) { + public logger: ((message: string) => void) | undefined; + + constructor(config: KnownConfig | VerboseUnitConfig, logger?: ((message: string) => void) | undefined) { + this.logger = logger; if ('env' in config) { const staticConfig = envs[config.env]; if (!staticConfig) { @@ -118,7 +121,8 @@ export default class Unit { this.aggregator = new Aggregator( this.config.services.aggregator.http, this.config.services.aggregator.ws, - this.config.basicAuth + this.config.basicAuth, + logger, ); this.priceFeed = new PriceFeed( this.config.services.priceFeed.api, diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index f04e4c5..2cbc6c5 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -19,9 +19,9 @@ import httpToWS from '../../utils/httpToWS.js'; import { ethers } from 'ethers'; import orderSchema from './schemas/orderSchema.js'; import { fetchWithValidation } from 'simple-typed-fetch'; -import hmacSHA256 from "crypto-js/hmac-sha256"; -import Hex from "crypto-js/enc-hex"; -import {pmmOrderSchema} from "../../Unit/Pmm/schemas/order"; +import hmacSHA256 from 'crypto-js/hmac-sha256'; +import Hex from 'crypto-js/enc-hex'; +import { pmmOrderSchema } from '../../Unit/Pmm/schemas/order'; class Aggregator { private readonly apiUrl: string; @@ -34,11 +34,16 @@ class Aggregator { return this.apiUrl; } + public logger: ((message: string) => void) | undefined; + constructor( httpAPIUrl: string, wsAPIUrl: string, - basicAuth?: BasicAuthCredentials + basicAuth?: BasicAuthCredentials, + logger?: ((message: string) => void) | undefined ) { + this.logger = logger; + // const oaUrl = new URL(apiUrl); // const oaWsProtocol = oaUrl.protocol === 'https:' ? 'wss' : 'ws'; // const aggregatorWsUrl = `${oaWsProtocol}://${oaUrl.host + (oaUrl.pathname === '/' @@ -46,7 +51,7 @@ class Aggregator { // : oaUrl.pathname)}/v1`; this.apiUrl = httpAPIUrl; - this.ws = new AggregatorWS(httpToWS(wsAPIUrl)); + this.ws = new AggregatorWS(httpToWS(wsAPIUrl), undefined, logger); this.basicAuth = basicAuth; this.getHistoryAtomicSwaps = this.getHistoryAtomicSwaps.bind(this); @@ -373,24 +378,23 @@ class Aggregator { return fetchWithValidation(url.toString(), atomicSwapHistorySchema, { headers: this.basicAuthHeaders }); }; - - private encode_utf8(s : string) { + private encode_utf8(s: string) { return unescape(encodeURIComponent(s)); } - private sign(message : string, key: string) { + private sign(message: string, key: string) { return hmacSHA256( - this.encode_utf8(message), - this.encode_utf8(key) + this.encode_utf8(message), + this.encode_utf8(key) ).toString(Hex); } - private generateHeaders(body : any, method : string, path : string, timestamp : number, apiKey : string, secretKey : string) { + private generateHeaders(body: any, method: string, path: string, timestamp: number, apiKey: string, secretKey: string) { const sortedBody = Object.keys(body) - .sort() - .map((key) => ( - `${key}=${body[key]}` - )).join('&'); + .sort() + .map((key) => ( + `${key}=${body[key]}` + )).join('&'); const payload = timestamp + method.toUpperCase() + path + sortedBody; @@ -407,40 +411,38 @@ class Aggregator { } public async RFQOrder( - tokenFrom: string, - tokenTo: string, - fromTokenAmount: string, - apiKey: string, // - secretKey: string, - wallet: string - ) : Promise> { - + tokenFrom: string, + tokenTo: string, + fromTokenAmount: string, + apiKey: string, // + secretKey: string, + wallet: string + ): Promise> { // Making the order structure const - path = '/rfq' - , url = `${this.apiUrl}/api/v1/integration/pmm`+path - , headers = { - 'Content-Type': 'application/json', - } - , data = { - "baseToken":tokenFrom, // USDT - "quoteToken":tokenTo, // ORN - "amount": fromTokenAmount, // 100 - "taker": wallet, - "feeBps": 0 - } - , method = 'POST' - , timestamp = Date.now() - , signatureHeaders = this.generateHeaders(data, method, path, timestamp, apiKey, secretKey) - , compiledHeaders = {...headers, ...signatureHeaders.headers, } - , body = JSON.stringify(data) + path = '/rfq'; + const url = `${this.apiUrl}/api/v1/integration/pmm` + path; + const headers = { + 'Content-Type': 'application/json', + }; + const data = { + baseToken: tokenFrom, // USDT + quoteToken: tokenTo, // ORN + amount: fromTokenAmount, // 100 + taker: wallet, + feeBps: 0 + }; + const method = 'POST'; + const timestamp = Date.now(); + const signatureHeaders = this.generateHeaders(data, method, path, timestamp, apiKey, secretKey); + const compiledHeaders = { ...headers, ...signatureHeaders.headers, }; + const body = JSON.stringify(data) ; - - let res = pmmOrderSchema.parse({}); + const res = pmmOrderSchema.parse({}); try { - const result = await fetch(url,{ + const result = await fetch(url, { headers: compiledHeaders, method, body @@ -449,14 +451,13 @@ class Aggregator { const json = await result.json(); const parseResult = pmmOrderSchema.safeParse(json); - if(!parseResult.success) { + if (!parseResult.success) { // Try to parse error answer - const errorSchema = z.object({error: z.object({code: z.number(), reason: z.string()})}); + const errorSchema = z.object({ error: z.object({ code: z.number(), reason: z.string() }) }); const errorParseResult = errorSchema.safeParse(json); - if(!errorParseResult.success) - throw Error(`Unrecognized answer from aggregator: ${json}`); + if (!errorParseResult.success) { throw Error(`Unrecognized answer from aggregator: ${json}`); } throw Error(errorParseResult.data.error.reason); } @@ -466,8 +467,7 @@ class Aggregator { res.error = ''; res.success = true; // return result; - } - catch(err) { + } catch (err) { res.error = `${err}`; } return res; diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index 69d214c..ab6f6c5 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -66,10 +66,11 @@ type PairConfigSubscription = { type AggregatedOrderbookSubscription = { payload: string + dc?: number callback: ( asks: OrderbookItem[], bids: OrderbookItem[], - pair: string + pair: string, ) => void errorCb?: (message: string) => void } @@ -195,9 +196,10 @@ class AggregatorWS { readonly basicAuth?: BasicAuthCredentials | undefined; - constructor(wsUrl: string, basicAuth?: BasicAuthCredentials) { + constructor(wsUrl: string, basicAuth?: BasicAuthCredentials, logger?: ((message: string) => void) | undefined) { this.wsUrl = wsUrl; this.basicAuth = basicAuth; + this.logger = logger; } private messageQueue: BufferLike[] = []; @@ -252,7 +254,7 @@ class AggregatorWS { subscription: Subscription[T], prevSubscriptionId?: string ) { - const id = type === 'aobus' + const id = type === SubscriptionType.AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE ? ((subscription as any).payload as string) // TODO: Refactor!!! : uuidv4(); @@ -261,6 +263,14 @@ class AggregatorWS { const subRequest: Json = {}; subRequest['T'] = type; subRequest['id'] = id; + // test + if ('dc' in subscription) { + if (typeof subscription.dc === 'number') { + subRequest['dc'] = subscription.dc; + } + } + + this.logger?.('test'); if ('payload' in subscription) { if (typeof subscription.payload === 'string') { @@ -369,11 +379,11 @@ class AggregatorWS { delete this.subscriptions[SubscriptionType.ASSET_PAIR_CONFIG_UPDATES_SUBSCRIBE]?.[newestSubId]; // !!! swap info subscription is uuid that contains hyphen } else if (isOrderBooksSubscription(newestSubId)) { // is pair name(AGGREGATED_ORDER_BOOK_UPDATE) - const aobSubscriptions = this.subscriptions[SubscriptionType.AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE]; - if (aobSubscriptions) { - const targetAobSub = Object.entries(aobSubscriptions).find(([, value]) => value?.payload === newestSubId); - if (targetAobSub) { - const [key] = targetAobSub; + const aobusSubscriptions = this.subscriptions[SubscriptionType.AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE]; + if (aobusSubscriptions) { + const targetAobusSub = Object.entries(aobusSubscriptions).find(([, value]) => value?.payload === newestSubId); + if (targetAobusSub) { + const [key] = targetAobusSub; delete this.subscriptions[SubscriptionType.AGGREGATED_ORDER_BOOK_UPDATES_SUBSCRIBE]?.[key]; } } From 57cffe5eff92d976ef9a5e169eed93f7c3bee645 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Tue, 2 Apr 2024 15:09:57 +0300 Subject: [PATCH 031/114] 0.20.80-rc1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 48979e1..14d3066 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc1", + "version": "0.20.80-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 84a0fe7a86fb9646a65602b507f0a53c3482df37 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Tue, 2 Apr 2024 15:18:35 +0300 Subject: [PATCH 032/114] fix: remove test logger --- package.json | 2 +- src/services/Aggregator/ws/index.ts | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index 14d3066..d19b27e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.80-rc1", + "version": "0.20.80-rc2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index ab6f6c5..55c875e 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -263,15 +263,12 @@ class AggregatorWS { const subRequest: Json = {}; subRequest['T'] = type; subRequest['id'] = id; - // test if ('dc' in subscription) { if (typeof subscription.dc === 'number') { subRequest['dc'] = subscription.dc; } } - this.logger?.('test'); - if ('payload' in subscription) { if (typeof subscription.payload === 'string') { subRequest['S'] = subscription.payload; From c204ebf0b3c6ce3487822ad2ce7cd2586c37e2ac Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Tue, 2 Apr 2024 16:19:36 +0300 Subject: [PATCH 033/114] fix: space --- src/services/Aggregator/ws/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index 55c875e..f0f0e8f 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -263,6 +263,7 @@ class AggregatorWS { const subRequest: Json = {}; subRequest['T'] = type; subRequest['id'] = id; + if ('dc' in subscription) { if (typeof subscription.dc === 'number') { subRequest['dc'] = subscription.dc; From 6b95e76a83c8a49b867f5f936c69f6ad018c2177 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Tue, 2 Apr 2024 16:29:23 +0300 Subject: [PATCH 034/114] bump version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f02c880..9e4bc27 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc1", + "version": "0.20.79", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc1", + "version": "0.20.79", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index d19b27e..b9093ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.80-rc2", + "version": "0.20.80-rc3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 201a177938f98eb709c4aaa847ca04d145b77ce2 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Tue, 2 Apr 2024 16:30:24 +0300 Subject: [PATCH 035/114] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b9093ae..986ea3e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.80-rc3", + "version": "0.20.79", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 8f840aede201d641e9ef7228edad726739a8e85e Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 2 Apr 2024 15:10:28 +0100 Subject: [PATCH 036/114] feat: updated readme file --- README.md | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index b06f8c3..0fec57d 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,8 @@ +[//]: # ( Orion Protocol SDK logo)
- Orion Protocol SDK logo -

Orion Protocol SDK

+

Lumia Stream SDK

Use CEX and DEX liquidity without KYC.

@@ -14,16 +10,15 @@ ![npm bundle size (version)](https://img.shields.io/bundlephobia/minzip/@orionprotocol/sdk) [![Downloads](https://img.shields.io/npm/dm/@orionprotocol/sdk.svg)](https://www.npmjs.com/package/@orionprotocol/sdk) -Do you want to integrate the Orion protocol into your application? See [integration guide](./docs/INTEGRATION.md) +Do you want to integrate the Lumia Stream protocol into your application? See [integration guide](./docs/INTEGRATION.md) ## Overview -Orion Software Developer Kit is a set of functions and methods that allow dApp developers connect to the superior aggregated liquidity of Orion Protocol which combines orderbooks of centralized exchanges as well decentralized automatic market makers such as Uniswap or Spookyswap across several supported blockchains. -Through this connection, developers using the SDK can perform a wide range of actions, including swapping selected tokens using Orion’s aggregated liquidity, obtaining relevant market information through subscriptions, add and remove liquidity to Orion’s pools. +Lumia Stream Developer Kit, natively built into Lumia, is a set of functions and methods that allow dApp developers to connect to the superior aggregated liquidity of Lumia Stream which combines orderbooks of centralized exchanges as well as decentralized Automatic Market Makers (AMMs) such as Uniswap, PancakeSwap, and Curve, across several supported blockchains. Through this connection, developers using the SDK can perform a wide range of actions, including swapping selected tokens, obtaining relevant market information through subscriptions, and more. ## API Key -Orion’s SDK is free to use and does not require an API key or registration. Refer to integration examples for more detailed information. +Lumia Stream’s SDK is free to use and does not require an API key or registration. Refer to integration examples for more detailed information. - [Overview](#overview) - [API Key](#api-key) @@ -33,7 +28,7 @@ Orion’s SDK is free to use and does not require an API key or registration. Re - [High level methods](#high-level-methods) - [Get assets](#get-assets) - [Get pairs](#get-pairs) - - [Get Orion Bridge history](#get-orion-bridge-history) + - [Get Lumia Stream Bridge history](#get-lumia-stream-bridge-history) - [Bridge swap](#bridge-swap) - [Withdraw](#withdraw) - [Deposit](#deposit) @@ -145,7 +140,7 @@ const pairs = await orion.getPairs("spot"); // 'spot' // } ``` -### Get Orion Bridge history +### Get Lumia Stream Bridge history ```ts const bridgeHistory = await orion.bridge.getHistory( @@ -722,7 +717,7 @@ switch (data.type) { ``` ## PMM -PMM allows institutional traders to request RFQ orders from Orion and then fill them. +PMM allows institutional traders to request RFQ orders from Lumia Stream and then fill them. RFQ order allows trader to fix the price for a certain time interval (up to 90 seconds, including the order settlement time interval on blockchain). From 9afda4260b5d88d33db063039f8ed01e9480e972 Mon Sep 17 00:00:00 2001 From: KS Date: Thu, 4 Apr 2024 17:32:37 +0300 Subject: [PATCH 037/114] removed crypto-js dependency --- src/services/Aggregator/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index 1077a53..09966bf 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -19,8 +19,9 @@ import httpToWS from '../../utils/httpToWS.js'; import { ethers } from 'ethers'; import orderSchema from './schemas/orderSchema.js'; import { fetchWithValidation } from 'simple-typed-fetch'; -import hmacSHA256 from "crypto-js/hmac-sha256"; -import Hex from "crypto-js/enc-hex"; +// import hmacSHA256 from "crypto-js/hmac-sha256"; +// import Hex from "crypto-js/enc-hex"; +const crypto = require('crypto') import {pmmOrderSchema} from "../../Unit/Pmm/schemas/order"; class Aggregator { @@ -379,10 +380,9 @@ class Aggregator { } private sign(message : string, key: string) { - return hmacSHA256( - this.encode_utf8(message), - this.encode_utf8(key) - ).toString(Hex); + return crypto.createHmac('sha256', this.encode_utf8(key)) + .update(this.encode_utf8(message)) + .digest('hex'); } private generateHeaders(body : any, method : string, path : string, timestamp : number, apiKey : string, secretKey : string) { From b6370c97aa569f2b36227053db7bb46d255637d6 Mon Sep 17 00:00:00 2001 From: KS Date: Thu, 4 Apr 2024 17:34:53 +0300 Subject: [PATCH 038/114] increased version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a307337..ace8c14 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc1", + "version": "0.20.80-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 7b463dc82346e0b95d3cc4ba303a0417f0e93643 Mon Sep 17 00:00:00 2001 From: kigastu Date: Thu, 4 Apr 2024 17:58:03 +0300 Subject: [PATCH 039/114] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 910785d..7b806e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.80-rc1", + "version": "0.20.80", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 5e1922411489bd3292fbb3e38f07173d3e60600a Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Thu, 4 Apr 2024 18:54:33 +0300 Subject: [PATCH 040/114] fix: build --- package-lock.json | 17 ++--------------- package.json | 2 +- src/services/Aggregator/index.ts | 20 +++++++++++--------- 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9e4bc27..3e9a96b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79", + "version": "0.20.81", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.79", + "version": "0.20.81", "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -40,7 +40,6 @@ "@babel/plugin-syntax-import-assertions": "^7.20.0", "@tsconfig/esm": "^1.0.4", "@tsconfig/strictest": "^2.0.1", - "@types/crypto-js": "^4.2.2", "@types/express": "^4.17.17", "@types/jest": "^29.5.1", "@types/node": "^20.5.1", @@ -2547,12 +2546,6 @@ "@types/node": "*" } }, - "node_modules/@types/crypto-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", - "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==", - "dev": true - }, "node_modules/@types/eslint": { "version": "8.44.2", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", @@ -13617,12 +13610,6 @@ "@types/node": "*" } }, - "@types/crypto-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", - "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==", - "dev": true - }, "@types/eslint": { "version": "8.44.2", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz", diff --git a/package.json b/package.json index 7b806e5..bf41f6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.80", + "version": "0.20.81", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index dd8416f..0e505c6 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -19,10 +19,10 @@ import httpToWS from '../../utils/httpToWS.js'; import { ethers } from 'ethers'; import orderSchema from './schemas/orderSchema.js'; import { fetchWithValidation } from 'simple-typed-fetch'; +import { pmmOrderSchema } from '../../Unit/Pmm/schemas/order'; // import hmacSHA256 from "crypto-js/hmac-sha256"; // import Hex from "crypto-js/enc-hex"; -const crypto = require('crypto') -import {pmmOrderSchema} from "../../Unit/Pmm/schemas/order"; +// const crypto = require('crypto') class Aggregator { private readonly apiUrl: string; @@ -379,14 +379,16 @@ class Aggregator { return fetchWithValidation(url.toString(), atomicSwapHistorySchema, { headers: this.basicAuthHeaders }); }; - private encode_utf8(s: string) { - return unescape(encodeURIComponent(s)); - } + // private encode_utf8(s: string) { + // return unescape(encodeURIComponent(s)); + // } - private sign(message : string, key: string) { - return crypto.createHmac('sha256', this.encode_utf8(key)) - .update(this.encode_utf8(message)) - .digest('hex'); + // @ts-expect-error: TODO: please remove this line! + private sign(message: string, key: string) { + // return crypto.createHmac('sha256', this.encode_utf8(key)) + // .update(this.encode_utf8(message)) + // .digest('hex'); + return ''; } private generateHeaders(body: any, method: string, path: string, timestamp: number, apiKey: string, secretKey: string) { From 515888a268b594e6ace470d57301724eb46f3e90 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Mon, 8 Apr 2024 15:33:45 +0300 Subject: [PATCH 041/114] getStableCoins --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Aggregator/index.ts | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3e9a96b..239694a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.81", + "version": "0.20.82", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.81", + "version": "0.20.82", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index bf41f6f..15ace9e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.81", + "version": "0.20.82-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index 0e505c6..fd7fec8 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -61,6 +61,7 @@ class Aggregator { this.getPairsList = this.getPairsList.bind(this); this.getSwapInfo = this.getSwapInfo.bind(this); this.getTradeProfits = this.getTradeProfits.bind(this); + this.getStableCoins = this.getStableCoins.bind(this); this.placeAtomicSwap = this.placeAtomicSwap.bind(this); this.placeOrder = this.placeOrder.bind(this); this.cancelOrder = this.cancelOrder.bind(this); @@ -340,6 +341,16 @@ class Aggregator { ); }; + getStableCoins = () => { + const url = new URL(`${this.apiUrl}/api/v1/tokens/stable/`); + return fetchWithValidation( + url.toString(), + z.array(z.string()), + { headers: this.basicAuthHeaders }, + errorSchema, + ); + }; + /** * Placing atomic swap. Placement must take place on the target chain. * @param secretHash Secret hash From b1920c91b9b8d1165775e454d4a3e1678b10a97e Mon Sep 17 00:00:00 2001 From: kigastu Date: Mon, 8 Apr 2024 15:52:32 +0300 Subject: [PATCH 042/114] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 15ace9e..e2cb3dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.82-rc1", + "version": "0.20.82", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From b2809ee8f2a16ba3269cadc1cf314718f694c422 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Mon, 15 Apr 2024 13:00:31 +0300 Subject: [PATCH 043/114] fix: test text --- src/Unit/Exchange/generateSwapCalldata.ts | 130 +++++++++++----------- src/Unit/Exchange/index.ts | 8 +- 2 files changed, 73 insertions(+), 65 deletions(-) diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index 68f5f90..58836cc 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -1,49 +1,51 @@ -import type { LibValidator } from "@orionprotocol/contracts/lib/ethers-v6/Exchange.js"; -import { ethers, ZeroAddress } from "ethers"; -import type { AddressLike, JsonRpcProvider, BigNumberish, BytesLike } from "ethers"; -import cloneDeep from "lodash.clonedeep"; -import { safeGet, SafeArray } from "../../utils/safeGetters.js"; -import { simpleFetch } from "simple-typed-fetch"; -import type Unit from "../index.js"; -import { generateUni2Calls, generateUni2Call } from "./callGenerators/uniswapV2.js"; +import type { LibValidator } from '@orionprotocol/contracts/lib/ethers-v6/Exchange.js'; +import { ethers, ZeroAddress } from 'ethers'; +import type { AddressLike, JsonRpcProvider, BigNumberish, BytesLike } from 'ethers'; +import cloneDeep from 'lodash.clonedeep'; +import { safeGet, SafeArray } from '../../utils/safeGetters.js'; +import { simpleFetch } from 'simple-typed-fetch'; +import type Unit from '../index.js'; +import { generateUni2Calls, generateUni2Call } from './callGenerators/uniswapV2.js'; import { generateUni3Calls, generateOrion3Calls, generateUni3Call, generateOrion3Call, -} from "./callGenerators/uniswapV3.js"; -import { exchangeToNativeDecimals, generateCalls, pathCallWithBalance } from "./callGenerators/utils.js"; -import { generateTransferCall } from "./callGenerators/erc20.js"; -import { generateCurveStableSwapCall } from "./callGenerators/curve.js"; -import type { SingleSwap } from "../../types.js"; -import { addressLikeToString } from "../../utils/addressLikeToString.js"; -import { generateUnwrapAndTransferCall, generateWrapAndTransferCall } from "./callGenerators/weth.js"; -import { getExchangeAllowance, getTotalBalance } from "../../utils/getBalance.js"; -import { generateFeePaymentCall } from "./callGenerators/feePayment.js"; +} from './callGenerators/uniswapV3.js'; +import { exchangeToNativeDecimals, generateCalls, pathCallWithBalance } from './callGenerators/utils.js'; +import { generateTransferCall } from './callGenerators/erc20.js'; +import { generateCurveStableSwapCall } from './callGenerators/curve.js'; +import type { SingleSwap } from '../../types.js'; +import { addressLikeToString } from '../../utils/addressLikeToString.js'; +import { generateUnwrapAndTransferCall, generateWrapAndTransferCall } from './callGenerators/weth.js'; +import { getExchangeAllowance, getTotalBalance } from '../../utils/getBalance.js'; +import { generateFeePaymentCall } from './callGenerators/feePayment.js'; -export type Factory = "UniswapV2" | "UniswapV3" | "Curve" | "OrionV2" | "OrionV3"; +export type Factory = 'UniswapV2' | 'UniswapV3' | 'Curve' | 'OrionV2' | 'OrionV3'; type BaseGenerateSwapCalldataParams = { - amount: BigNumberish; - minReturnAmount: BigNumberish; - initiatorAddress: string; - receiverAddress: string; - path: ArrayLike; - matcher?: AddressLike, - feeToken?: AddressLike, - fee?: BigNumberish; + amount: BigNumberish + minReturnAmount: BigNumberish + initiatorAddress: string + receiverAddress: string + path: ArrayLike + matcher?: AddressLike + feeToken?: AddressLike + fee?: BigNumberish } export type GenerateSwapCalldataWithUnitParams = BaseGenerateSwapCalldataParams & { - unit: Unit; + unit: Unit + logger?: ((message: string) => void) | undefined }; export type GenerateSwapCalldataParams = BaseGenerateSwapCalldataParams & { - exchangeContractAddress: AddressLike; - wethAddress: AddressLike; - curveRegistryAddress: AddressLike; - swapExecutorContractAddress: AddressLike; - provider: JsonRpcProvider; + exchangeContractAddress: AddressLike + wethAddress: AddressLike + curveRegistryAddress: AddressLike + swapExecutorContractAddress: AddressLike + provider: JsonRpcProvider + logger?: ((message: string) => void) | undefined }; export async function generateSwapCalldataWithUnit({ @@ -57,15 +59,15 @@ export async function generateSwapCalldataWithUnit({ fee = 0, unit, }: GenerateSwapCalldataWithUnitParams): Promise<{ - calldata: string; - swapDescription: LibValidator.SwapDescriptionStruct; - value: bigint; + calldata: string + swapDescription: LibValidator.SwapDescriptionStruct + value: bigint }> { if (arrayLikePath == undefined || arrayLikePath.length == 0) { - throw new Error("Empty path"); + throw new Error('Empty path'); } - const wethAddress = safeGet(unit.contracts, "WETH"); - const curveRegistryAddress = safeGet(unit.contracts, "curveRegistry"); + const wethAddress = safeGet(unit.contracts, 'WETH'); + const curveRegistryAddress = safeGet(unit.contracts, 'curveRegistry'); const { swapExecutorContractAddress, exchangeContractAddress } = await simpleFetch( unit.blockchainService.getInfo )(); @@ -110,22 +112,23 @@ export async function generateSwapCalldata({ curveRegistryAddress: curveRegistryAddressLike, swapExecutorContractAddress: swapExecutorContractAddressLike, provider, + logger, }: GenerateSwapCalldataParams): Promise<{ - calldata: string; - swapDescription: LibValidator.SwapDescriptionStruct; - value: bigint; + calldata: string + swapDescription: LibValidator.SwapDescriptionStruct + value: bigint }> { const wethAddress = await addressLikeToString(wethAddressLike); console.log('wethAddress', wethAddress); const curveRegistryAddress = await addressLikeToString(curveRegistryAddressLike); - console.log('curveRegistryAddress', curveRegistryAddress); + logger?.(`curveRegistryAddress: ${curveRegistryAddress}`); const swapExecutorContractAddress = await addressLikeToString(swapExecutorContractAddressLike); - console.log('swapExecutorContractAddress', swapExecutorContractAddress); + logger?.(`swapExecutorContractAddress, ${swapExecutorContractAddress}`); const feeToken = await addressLikeToString(feeTokenAddressLike); - console.log('feeToken', feeToken); + logger?.(`feeToken, ${feeToken}`); const matcher = await addressLikeToString(matcherAddressLike); - console.log('matcher', matcher); - console.log('arrayLikePath', arrayLikePath); + logger?.(`matcher: ${matcher}`); + logger?.(`arrayLikePath: ${arrayLikePath}`); let path = SafeArray.from(arrayLikePath).map((swapInfo) => { console.log('swapInfo', swapInfo); swapInfo.assetIn = swapInfo.assetIn.toLowerCase() @@ -230,7 +233,7 @@ async function processSwaps( )); } - ({swapDescription, calls} = await payFeeToMatcher(matcher, feeToken, fee, calls, swapDescription)); + ({ swapDescription, calls } = await payFeeToMatcher(matcher, feeToken, fee, calls, swapDescription)); ({ swapDescription, calls } = wrapOrUnwrapIfNeeded( amount, @@ -254,27 +257,27 @@ async function processSingleFactorySwaps( ) { let calls: BytesLike[] = []; switch (factory) { - case "OrionV2": { + case 'OrionV2': { swapDescription.srcReceiver = path.first().pool; calls = await generateUni2Calls(path, swapExecutorContractAddress); break; } - case "UniswapV2": { + case 'UniswapV2': { swapDescription.srcReceiver = path.first().pool; calls = await generateUni2Calls(path, swapExecutorContractAddress); break; } - case "UniswapV3": { + case 'UniswapV3': { calls = await generateUni3Calls(path, amount, swapExecutorContractAddress, provider); break; } - case "OrionV3": { + case 'OrionV3': { calls = await generateOrion3Calls(path, amount, swapExecutorContractAddress, provider); break; } - case "Curve": { + case 'Curve': { if (path.length > 1) { - throw new Error("Supporting only single stable swap on curve"); + throw new Error('Supporting only single stable swap on curve'); } calls = await generateCurveStableSwapCall( amount, @@ -301,37 +304,37 @@ async function processMultiFactorySwaps( curveRegistryAddress: string, provider: JsonRpcProvider ) { - let calls: BytesLike[] = []; + const calls: BytesLike[] = []; for (const swap of path) { switch (swap.factory) { - case "OrionV2": { + case 'OrionV2': { let transferCall = generateTransferCall(swap.assetIn, swap.pool, 0); transferCall = pathCallWithBalance(transferCall, swap.assetIn); const uni2Call = generateUni2Call(swap.pool, swap.assetIn, swap.assetOut, swapExecutorContractAddress); calls.push(transferCall, uni2Call); break; } - case "UniswapV2": { + case 'UniswapV2': { let transferCall = generateTransferCall(swap.assetIn, swap.pool, 0); transferCall = pathCallWithBalance(transferCall, swap.assetIn); const uni2Call = generateUni2Call(swap.pool, swap.assetIn, swap.assetOut, swapExecutorContractAddress); calls.push(transferCall, uni2Call); break; } - case "UniswapV3": { + case 'UniswapV3': { let uni3Call = await generateUni3Call(swap, 0, swapExecutorContractAddress, provider); uni3Call = pathCallWithBalance(uni3Call, swap.assetIn); calls.push(uni3Call); break; } - case "OrionV3": { + case 'OrionV3': { let orion3Call = await generateOrion3Call(swap, 0, swapExecutorContractAddress, provider); orion3Call = pathCallWithBalance(orion3Call, swap.assetIn); calls.push(orion3Call); break; } - case "Curve": { - let curveCalls = await generateCurveStableSwapCall( + case 'Curve': { + const curveCalls = await generateCurveStableSwapCall( amount, swapExecutorContractAddress, swap, @@ -362,7 +365,7 @@ async function payFeeToMatcher( const feePaymentCall = generateFeePaymentCall(matcher, feeToken, feeAmount) calls.push(feePaymentCall) } - return {swapDescription, calls} + return { swapDescription, calls } } function wrapOrUnwrapIfNeeded( @@ -372,7 +375,7 @@ function wrapOrUnwrapIfNeeded( swapExecutorContractAddress: string, wethAddress: string ) { - const {dstReceiver, srcReceiver, srcToken, dstToken} = swapDescription; + const { dstReceiver, srcReceiver, srcToken, dstToken } = swapDescription; if (srcToken === ZeroAddress) { const wrapCall = generateWrapAndTransferCall(srcReceiver, { value: amount }); swapDescription.srcReceiver = swapExecutorContractAddress; @@ -403,11 +406,12 @@ async function shouldUseExchangeBalance( exchangeContractAddress, provider ); + const exchangeAllowance = await getExchangeAllowance(srcToken, initiatorAddress, exchangeContractAddress, provider); if (walletBalance + exchangeBalance < amount) { throw new Error( - `Not enough balance to make swap, totalBalance - ${walletBalance + exchangeBalance} swapAmount - ${amount}` + `Not enough balance to make swap, walletBalance: ${walletBalance} exchangeBalance: ${exchangeBalance} totalBalance - ${walletBalance + exchangeBalance} swapAmount - ${amount}` ); } let useExchangeBalance = true; diff --git a/src/Unit/Exchange/index.ts b/src/Unit/Exchange/index.ts index 217afb3..d8afd47 100644 --- a/src/Unit/Exchange/index.ts +++ b/src/Unit/Exchange/index.ts @@ -18,8 +18,11 @@ type PureSwapMarketParams = Omit export default class Exchange { private readonly unit: Unit; - constructor(unit: Unit) { + public logger: ((message: string) => void) | undefined + + constructor(unit: Unit, logger?: ((message: string) => void) | undefined) { this.unit = unit; + this.logger = logger; } public getSwapInfo(params: PureGetSwapMarketInfoParams) { @@ -47,7 +50,8 @@ export default class Exchange { public generateSwapCalldata(params: PureGenerateSwapCalldataParams) { return generateSwapCalldataWithUnit({ ...params, - unit: this.unit + unit: this.unit, + logger: this.logger }) } From dc1519f26c1a61d5bcc166666baf32e69475ab49 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Mon, 15 Apr 2024 13:08:49 +0300 Subject: [PATCH 044/114] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 32f7e9e..33a2c3e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc105", + "version": "0.20.76-rc106", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 39f5287ea440ad3f4ee196109e2ec64de73d46f0 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Mon, 15 Apr 2024 15:38:54 +0300 Subject: [PATCH 045/114] fix: logger --- package.json | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 33 ++++++++++++----------- src/Unit/Exchange/index.ts | 6 +---- 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 33a2c3e..a07086d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc106", + "version": "0.20.76-rc107", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index 58836cc..de5e307 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -36,7 +36,6 @@ type BaseGenerateSwapCalldataParams = { export type GenerateSwapCalldataWithUnitParams = BaseGenerateSwapCalldataParams & { unit: Unit - logger?: ((message: string) => void) | undefined }; export type GenerateSwapCalldataParams = BaseGenerateSwapCalldataParams & { @@ -95,6 +94,7 @@ export async function generateSwapCalldataWithUnit({ curveRegistryAddress, swapExecutorContractAddress, provider: unit.provider, + logger: unit.logger, }); } @@ -119,7 +119,7 @@ export async function generateSwapCalldata({ value: bigint }> { const wethAddress = await addressLikeToString(wethAddressLike); - console.log('wethAddress', wethAddress); + logger?.(`wethAddress: ${wethAddress}`); const curveRegistryAddress = await addressLikeToString(curveRegistryAddressLike); logger?.(`curveRegistryAddress: ${curveRegistryAddress}`); const swapExecutorContractAddress = await addressLikeToString(swapExecutorContractAddressLike); @@ -130,7 +130,7 @@ export async function generateSwapCalldata({ logger?.(`matcher: ${matcher}`); logger?.(`arrayLikePath: ${arrayLikePath}`); let path = SafeArray.from(arrayLikePath).map((swapInfo) => { - console.log('swapInfo', swapInfo); + logger?.(`swapInfo: ${swapInfo}`); swapInfo.assetIn = swapInfo.assetIn.toLowerCase() swapInfo.assetOut = swapInfo.assetOut.toLowerCase() return swapInfo; @@ -149,18 +149,18 @@ export async function generateSwapCalldata({ minReturnAmount, flags: 0, }; - console.log('swapDescription', swapDescription); + logger?.(`swapDescription: ${swapDescription}`); const amountNativeDecimals = await exchangeToNativeDecimals(srcToken, amount, provider); - console.log('amountNativeDecimals', amountNativeDecimals); + logger?.(`amountNativeDecimals: ${amountNativeDecimals}`); const feeNativeDecimals = await exchangeToNativeDecimals(feeToken, fee, provider) - console.log('feeNativeDecimals', feeNativeDecimals); + logger?.(`feeNativeDecimals: ${feeNativeDecimals}`); path = SafeArray.from(arrayLikePath).map((singleSwap) => { if (singleSwap.assetIn == ethers.ZeroAddress) singleSwap.assetIn = wethAddress; if (singleSwap.assetOut == ethers.ZeroAddress) singleSwap.assetOut = wethAddress; return singleSwap; }); - console.log('path2', path); + logger?.(`path2: ${path}`); let calls: BytesLike[]; ({ swapDescription, calls } = await processSwaps( @@ -175,25 +175,26 @@ export async function generateSwapCalldata({ curveRegistryAddress, provider )); - console.log('swapDescription', swapDescription); - console.log('calls', calls); + logger?.(`swapDescription: ${swapDescription}`); + logger?.(`calls: ${calls}`); const calldata = generateCalls(calls); - console.log('calldata', calldata); + logger?.(`calldata: ${calldata}`); const { useExchangeBalance, additionalTransferAmount } = await shouldUseExchangeBalance( srcToken, initiatorAddress, exchangeContractAddress, amountNativeDecimals, - provider + provider, + logger ); - console.log('useExchangeBalance', useExchangeBalance); - console.log('additionalTransferAmount', additionalTransferAmount); + logger?.(`useExchangeBalance: ${useExchangeBalance}`); + logger?.(`additionalTransferAmount: ${additionalTransferAmount}`); if (useExchangeBalance) { swapDescription.flags = 1n << 255n; } const value = srcToken == ZeroAddress ? additionalTransferAmount : 0n; - console.log('value', value); + logger?.(`value: ${value}`); return { swapDescription, calldata, value }; } @@ -398,7 +399,8 @@ async function shouldUseExchangeBalance( initiatorAddress: AddressLike, exchangeContractAddress: AddressLike, amount: bigint, - provider: JsonRpcProvider + provider: JsonRpcProvider, + logger?: ((message: string) => void) | undefined ) { const { walletBalance, exchangeBalance } = await getTotalBalance( srcToken, @@ -408,6 +410,7 @@ async function shouldUseExchangeBalance( ); const exchangeAllowance = await getExchangeAllowance(srcToken, initiatorAddress, exchangeContractAddress, provider); + logger?.('test_123'); if (walletBalance + exchangeBalance < amount) { throw new Error( diff --git a/src/Unit/Exchange/index.ts b/src/Unit/Exchange/index.ts index d8afd47..7b84666 100644 --- a/src/Unit/Exchange/index.ts +++ b/src/Unit/Exchange/index.ts @@ -18,11 +18,8 @@ type PureSwapMarketParams = Omit export default class Exchange { private readonly unit: Unit; - public logger: ((message: string) => void) | undefined - - constructor(unit: Unit, logger?: ((message: string) => void) | undefined) { + constructor(unit: Unit) { this.unit = unit; - this.logger = logger; } public getSwapInfo(params: PureGetSwapMarketInfoParams) { @@ -51,7 +48,6 @@ export default class Exchange { return generateSwapCalldataWithUnit({ ...params, unit: this.unit, - logger: this.logger }) } From 9705ce013182129d7a56ac78de09d6f574b4b263 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Wed, 17 Apr 2024 16:15:47 +0100 Subject: [PATCH 046/114] feat: updated new changes from frontage --- package.json | 2 +- src/services/Frontage/index.ts | 28 ++++++++++++++++++- .../Frontage/schemas/tickers-schema.ts | 6 ++-- src/types.ts | 2 +- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index bc32648..0960beb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc7", + "version": "0.20.79-rc8", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index 6217b85..edc82c1 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -10,6 +10,7 @@ export class Frontage { this.searchTickers = this.searchTickers.bind(this); this.getTickers = this.getTickers.bind(this); + this.getFavorites = this.getFavorites.bind(this); } searchTickers = ({ @@ -57,7 +58,32 @@ export class Frontage { ].filter(Boolean).join('&'); return fetchWithValidation( - `${this.apiUrl}/api/v1/tickers/get?${queryParams}`, + `${this.apiUrl}/api/v1/tickers/get/category?${queryParams}`, + tickersSchema + ); + }; + + getFavorites = ({ + tickers, + currentNetwork, + targetNetwork, + sortBy, + sortType, + offset, + limit, + }: { tickers: string } & TickersBaseSearchParams) => { + const queryParams = [ + `tickers=${encodeURIComponent(tickers)}`, + currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork).toUpperCase()}` : '', + targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork).toUpperCase()}` : '', + sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', + sortType !== undefined ? `&sortType=${encodeURIComponent(sortType)}` : '', + offset !== undefined ? `&offset=${offset}` : '', + limit !== undefined ? `&limit=${limit}` : '', + ].filter(Boolean).join('&'); + + return fetchWithValidation( + `${this.apiUrl}/api/v1/tickers/get/favourites?${queryParams}`, tickersSchema ); }; diff --git a/src/services/Frontage/schemas/tickers-schema.ts b/src/services/Frontage/schemas/tickers-schema.ts index 46f894f..a55410a 100644 --- a/src/services/Frontage/schemas/tickers-schema.ts +++ b/src/services/Frontage/schemas/tickers-schema.ts @@ -1,9 +1,11 @@ import { z } from 'zod'; -export const tickersSchema = z.array(z.object({ +export const tickerSchema = z.object({ pair: z.string(), volume24: z.number(), change24: z.number(), lastPrice: z.number(), networks: z.array(z.string()), -})); +}); + +export const tickersSchema = z.array(tickerSchema); diff --git a/src/types.ts b/src/types.ts index 7cf26f1..c877620 100644 --- a/src/types.ts +++ b/src/types.ts @@ -465,7 +465,7 @@ export type OrderSource = 'TERMINAL_MARKET' | 'TERMINAL_LIMIT' | 'SWAP_UI' | 'WI // Frontage export type NetworkCode = typeof networkCodes[number]; -export type TickersCategories = 'USD' | 'ORN' | 'BNB' | 'ALTS'; +export type TickersCategories = 'USD' | 'ORN' | 'NATIVE' | 'ALTS'; export type TickersSortBy = 'PRICE' | 'CHANGE' | 'VOLUME'; From 96d7216939c814bcabac02793adc61e62c074af9 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 19 Apr 2024 10:15:15 +0100 Subject: [PATCH 047/114] feat: added new base chain --- src/config/chains.json | 13 ++++++++ src/config/envs.json | 42 +++++++++++++++++++++++-- src/constants/chains.ts | 1 + src/constants/networkCodes.ts | 2 +- src/constants/uppercasedNetworkCodes.ts | 2 +- src/types.ts | 3 +- 6 files changed, 57 insertions(+), 6 deletions(-) diff --git a/src/config/chains.json b/src/config/chains.json index 9d21aae..3fecfd8 100644 --- a/src/config/chains.json +++ b/src/config/chains.json @@ -232,5 +232,18 @@ "WETH": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", "curveRegistry": "" } + }, + "8453": { + "chainId": "8453", + "label": "Base", + "shortName": "BASE", + "code": "base", + "baseCurrencyName": "ETH", + "rpc": "https://mainnet.base.org/", + "explorer": "https://basescan.org/", + "contracts": { + "WETH": "0x4200000000000000000000000000000000000006", + "curveRegistry": "" + } } } diff --git a/src/config/envs.json b/src/config/envs.json index a6c3988..12e87f9 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -182,6 +182,24 @@ "http": "/orion-indexer/" } } + }, + "8453": { + "api": "https://trade.orion.xyz/base-mainnet", + "services": { + "aggregator": { + "http": "/backend", + "ws": "/v1" + }, + "blockchain": { + "http": "" + }, + "priceFeed": { + "all": "/price-feed" + }, + "indexer": { + "http": "/orion-indexer/" + } + } } } }, @@ -429,7 +447,7 @@ } }, "2525": { - "api": "https://trade.orion.xyz/inevm-mainnet", + "api": "https://staging.orion.xyz/inevm-mainnet", "services": { "aggregator": { "http": "/backend", @@ -447,7 +465,7 @@ } }, "59144": { - "api": "https://trade.orion.xyz/linea-mainnet", + "api": "https://staging.orion.xyz/linea-mainnet", "services": { "aggregator": { "http": "/backend", @@ -465,7 +483,25 @@ } }, "43114": { - "api": "https://trade.orion.xyz/avalanche-c-chain", + "api": "https://staging.orion.xyz/avalanche-c-chain", + "services": { + "aggregator": { + "http": "/backend", + "ws": "/v1" + }, + "blockchain": { + "http": "" + }, + "priceFeed": { + "all": "/price-feed" + }, + "indexer": { + "http": "/orion-indexer/" + } + } + }, + "8453": { + "api": "https://staging.orion.xyz/base-mainnet", "services": { "aggregator": { "http": "/backend", diff --git a/src/constants/chains.ts b/src/constants/chains.ts index aac8213..1fb8ff3 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -20,4 +20,5 @@ export const productionChains = [ SupportedChainId.INEVM, SupportedChainId.LINEA, SupportedChainId.AVAX, + SupportedChainId.BASE, ]; diff --git a/src/constants/networkCodes.ts b/src/constants/networkCodes.ts index c3a5dad..498e149 100644 --- a/src/constants/networkCodes.ts +++ b/src/constants/networkCodes.ts @@ -1 +1 @@ -export default ['ftm', 'bsc', 'eth', 'polygon', 'okc', 'arb', 'drip', 'opbnb', 'inevm', 'linea', 'avax'] as const; +export default ['ftm', 'bsc', 'eth', 'polygon', 'okc', 'arb', 'drip', 'opbnb', 'inevm', 'linea', 'avax', 'base'] as const; diff --git a/src/constants/uppercasedNetworkCodes.ts b/src/constants/uppercasedNetworkCodes.ts index 6b8e312..e69605f 100644 --- a/src/constants/uppercasedNetworkCodes.ts +++ b/src/constants/uppercasedNetworkCodes.ts @@ -1 +1 @@ -export default ['FTM', 'BSC', 'ETH', 'POLYGON', 'OKC', 'ARB', 'OPBNB', 'INEVM', 'LINEA', 'AVAX'] as const; +export default ['FTM', 'BSC', 'ETH', 'POLYGON', 'OKC', 'ARB', 'OPBNB', 'INEVM', 'LINEA', 'AVAX', 'BASE'] as const; diff --git a/src/types.ts b/src/types.ts index 5828296..eacf494 100644 --- a/src/types.ts +++ b/src/types.ts @@ -3,7 +3,7 @@ import type factories from './constants/factories.js'; import type { BigNumber } from 'bignumber.js'; import type subOrderStatuses from './constants/subOrderStatuses.js'; import type positionStatuses from './constants/positionStatuses.js'; -import type { knownEnvs } from './config/schemas/index.js'; +import type { knownEnvs } from './config/schemas'; import type getHistory from './Orion/bridge/getHistory.js'; export type DeepPartial = T extends object ? { @@ -91,6 +91,7 @@ export enum SupportedChainId { INEVM = '2525', LINEA = '59144', AVAX = '43114', + BASE = '8453', POLYGON_TESTNET = '80001', FANTOM_TESTNET = '4002', From 6ddfbafb27e71b9c3b352d6643d012f4aaa18556 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 19 Apr 2024 10:15:49 +0100 Subject: [PATCH 048/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e2cb3dc..4b51774 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.82", + "version": "0.20.83", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 5e73e853ca2b7b86d259adb90e5f7c1797312a35 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Fri, 19 Apr 2024 17:07:44 +0300 Subject: [PATCH 049/114] auto slippage --- package.json | 2 +- src/services/Aggregator/schemas/swapInfoSchema.ts | 1 + src/services/Aggregator/ws/index.ts | 1 + src/services/Aggregator/ws/schemas/swapInfoSchema.ts | 1 + src/types.ts | 1 + 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4b51774..e643eea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.83", + "version": "0.20.84-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/schemas/swapInfoSchema.ts b/src/services/Aggregator/schemas/swapInfoSchema.ts index ecbd440..aed6d09 100644 --- a/src/services/Aggregator/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/schemas/swapInfoSchema.ts @@ -49,6 +49,7 @@ const swapInfoBase = z.object({ mi: z.number().optional(), // market amount in, USD d: z.string().optional(), // difference in available amount in/out (USD) and market amount out/in (USD) in percentage }).optional(), + autoSlippage: z.number().optional(), }); const swapInfoByAmountIn = swapInfoBase.extend({ diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index f0f0e8f..fb1f88a 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -541,6 +541,7 @@ class AggregatorWS { marketAmountIn: json.usd.mi, difference: json.usd.d, }, + autoSlippage: json.sl, }; switch (json.k) { // kind diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index 3c8a5d4..eb23200 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -48,6 +48,7 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ mi: z.number().optional(), // market amount in, USD d: z.string().optional(), // difference in available amount in/out (USD) and market amount out/in (USD) in percentage }).optional(), + sl: z.number().optional(), }); const swapInfoSchemaByAmountIn = swapInfoSchemaBase.extend({ diff --git a/src/types.ts b/src/types.ts index eacf494..6a3513a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -210,6 +210,7 @@ export type SwapInfoBase = { marketAmountIn: number | undefined difference: string | undefined } | undefined + autoSlippage: number | undefined } export type SwapInfoByAmountIn = SwapInfoBase & { From 1a7bbb5b164fc300a6b368d47ef3394271965ce8 Mon Sep 17 00:00:00 2001 From: kigastu Date: Fri, 19 Apr 2024 17:31:57 +0300 Subject: [PATCH 050/114] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e643eea..1249c89 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.84-rc1", + "version": "0.20.84", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From e3fc4ace19e8ba7a7a4d62dfeae71dce5eed3b5a Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 25 Apr 2024 11:57:50 +0100 Subject: [PATCH 051/114] feat: tickers schema was updated --- package.json | 2 +- src/services/Frontage/schemas/tickers-schema.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0960beb..3431899 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc8", + "version": "0.20.79-rc9", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/schemas/tickers-schema.ts b/src/services/Frontage/schemas/tickers-schema.ts index a55410a..9835803 100644 --- a/src/services/Frontage/schemas/tickers-schema.ts +++ b/src/services/Frontage/schemas/tickers-schema.ts @@ -5,7 +5,7 @@ export const tickerSchema = z.object({ volume24: z.number(), change24: z.number(), lastPrice: z.number(), - networks: z.array(z.string()), + networks: z.array(z.number()), }); export const tickersSchema = z.array(tickerSchema); From 704bcbca1b5eef912601b76c24b7effae115a66c Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 25 Apr 2024 12:15:53 +0100 Subject: [PATCH 052/114] feat: tickers schema was updated --- package.json | 2 +- src/services/Frontage/schemas/tickers-schema.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 3431899..bfa5120 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc9", + "version": "0.20.79-rc10", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/schemas/tickers-schema.ts b/src/services/Frontage/schemas/tickers-schema.ts index 9835803..41384ed 100644 --- a/src/services/Frontage/schemas/tickers-schema.ts +++ b/src/services/Frontage/schemas/tickers-schema.ts @@ -1,11 +1,12 @@ import { z } from 'zod'; +import { SupportedChainId } from '../../../types'; export const tickerSchema = z.object({ pair: z.string(), volume24: z.number(), change24: z.number(), lastPrice: z.number(), - networks: z.array(z.number()), + networks: z.array(z.nativeEnum(SupportedChainId)), }); export const tickersSchema = z.array(tickerSchema); From 54e0ab8e76e8d7bd83bde4d2d9de556140561211 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 25 Apr 2024 12:31:34 +0100 Subject: [PATCH 053/114] feat: tickers schema was updated --- package.json | 2 +- src/services/Frontage/schemas/tickers-schema.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index bfa5120..c282af1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc10", + "version": "0.20.79-rc11", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/schemas/tickers-schema.ts b/src/services/Frontage/schemas/tickers-schema.ts index 41384ed..c66f885 100644 --- a/src/services/Frontage/schemas/tickers-schema.ts +++ b/src/services/Frontage/schemas/tickers-schema.ts @@ -1,12 +1,19 @@ import { z } from 'zod'; import { SupportedChainId } from '../../../types'; +const preprocessToEnum = (value: unknown) => { + if (typeof value === 'number') { + return String(value); + } + return value; +}; + export const tickerSchema = z.object({ pair: z.string(), volume24: z.number(), change24: z.number(), lastPrice: z.number(), - networks: z.array(z.nativeEnum(SupportedChainId)), + networks: z.array(z.preprocess(preprocessToEnum, z.nativeEnum(SupportedChainId))), }); export const tickersSchema = z.array(tickerSchema); From ffe714d4b22150a9efcc699b482396a9de9870fa Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 25 Apr 2024 14:07:48 +0100 Subject: [PATCH 054/114] feat: getTickers method was updated --- package.json | 2 +- src/services/Frontage/index.ts | 11 ++++++++--- src/types.ts | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c282af1..1927574 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc11", + "version": "0.20.79-rc12", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index edc82c1..b08b88d 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -46,9 +46,10 @@ export class Frontage { sortType, offset, limit, - }: { category: TickersCategories } & TickersBaseSearchParams) => { + tickers, + }: { category: TickersCategories, tickers?: string } & TickersBaseSearchParams) => { const queryParams = [ - `category=${encodeURIComponent(category)}`, + category === 'FAVORITES' && tickers !== undefined ? `tickers=${encodeURIComponent(tickers)}` : `category=${encodeURIComponent(category)}`, currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork).toUpperCase()}` : '', targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork).toUpperCase()}` : '', sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', @@ -57,8 +58,12 @@ export class Frontage { limit !== undefined ? `&limit=${limit}` : '', ].filter(Boolean).join('&'); + const url = category === 'FAVORITES' && tickers !== undefined + ? `${this.apiUrl}/api/v1/tickers/get/favourites?${queryParams}` + : `${this.apiUrl}/api/v1/tickers/get/category?${queryParams}`; + return fetchWithValidation( - `${this.apiUrl}/api/v1/tickers/get/category?${queryParams}`, + url, tickersSchema ); }; diff --git a/src/types.ts b/src/types.ts index c877620..b20b874 100644 --- a/src/types.ts +++ b/src/types.ts @@ -465,7 +465,7 @@ export type OrderSource = 'TERMINAL_MARKET' | 'TERMINAL_LIMIT' | 'SWAP_UI' | 'WI // Frontage export type NetworkCode = typeof networkCodes[number]; -export type TickersCategories = 'USD' | 'ORN' | 'NATIVE' | 'ALTS'; +export type TickersCategories = 'FAVORITES' | 'USD' | 'ORN' | 'NATIVE' | 'ALTS'; export type TickersSortBy = 'PRICE' | 'CHANGE' | 'VOLUME'; From 565a22d93416ac5b91bbfbfbd67c769da3e38a06 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Thu, 2 May 2024 11:12:30 +0300 Subject: [PATCH 055/114] bump ethers --- package-lock.json | 101 ++++++++++++++++++++++++---------------------- package.json | 4 +- 2 files changed, 54 insertions(+), 51 deletions(-) diff --git a/package-lock.json b/package-lock.json index 239694a..bbc2a0b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.82", + "version": "0.20.85", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.82", + "version": "0.20.85", "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -19,7 +19,7 @@ "bson-objectid": "^2.0.4", "buffer": "^6.0.3", "crypto-js": "^4.2.0", - "ethers": "^6.7.1", + "ethers": "^6.12.0", "express": "^4.18.2", "isomorphic-ws": "^5.0.0", "just-clone": "^6.2.0", @@ -81,9 +81,9 @@ } }, "node_modules/@adraffy/ens-normalize": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz", - "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==" + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" }, "node_modules/@ampproject/remapping": { "version": "2.2.1", @@ -2364,27 +2364,27 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@noble/hashes": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", - "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "node_modules/@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -5531,9 +5531,9 @@ } }, "node_modules/ethers": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.7.1.tgz", - "integrity": "sha512-qX5kxIFMfg1i+epfgb0xF4WM7IqapIIu50pOJ17aebkxxa4BacW5jFrQRmCJpDEg2ZK2oNtR5QjrQ1WDBF29dA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", "funding": [ { "type": "individual", @@ -5545,9 +5545,9 @@ } ], "dependencies": { - "@adraffy/ens-normalize": "1.9.2", - "@noble/hashes": "1.1.2", - "@noble/secp256k1": "1.7.1", + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", "@types/node": "18.15.13", "aes-js": "4.0.0-beta.5", "tslib": "2.4.0", @@ -11951,9 +11951,9 @@ "dev": true }, "@adraffy/ens-normalize": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz", - "integrity": "sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==" + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==" }, "@ampproject/remapping": { "version": "2.2.1", @@ -13449,15 +13449,18 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@noble/hashes": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", - "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==" + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } }, - "@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" }, "@nodelib/fs.scandir": { "version": "2.1.5", @@ -15801,13 +15804,13 @@ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, "ethers": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.7.1.tgz", - "integrity": "sha512-qX5kxIFMfg1i+epfgb0xF4WM7IqapIIu50pOJ17aebkxxa4BacW5jFrQRmCJpDEg2ZK2oNtR5QjrQ1WDBF29dA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.12.1.tgz", + "integrity": "sha512-j6wcVoZf06nqEcBbDWkKg8Fp895SS96dSnTCjiXT+8vt2o02raTn4Lo9ERUuIVU5bAjoPYeA+7ytQFexFmLuVw==", "requires": { - "@adraffy/ens-normalize": "1.9.2", - "@noble/hashes": "1.1.2", - "@noble/secp256k1": "1.7.1", + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", "@types/node": "18.15.13", "aes-js": "4.0.0-beta.5", "tslib": "2.4.0", diff --git a/package.json b/package.json index 1249c89..89b5956 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.84", + "version": "0.20.85", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", @@ -94,7 +94,7 @@ "bson-objectid": "^2.0.4", "buffer": "^6.0.3", "crypto-js": "^4.2.0", - "ethers": "^6.7.1", + "ethers": "^6.12.0", "express": "^4.18.2", "isomorphic-ws": "^5.0.0", "just-clone": "^6.2.0", From cf6dd964c9e64c4010b7dc1c011272d2d8e7ed7f Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Thu, 2 May 2024 15:09:03 +0300 Subject: [PATCH 056/114] getIsCexLiquidityAvailable --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Aggregator/index.ts | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index bbc2a0b..7ab175b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.85", + "version": "0.20.86", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.85", + "version": "0.20.86", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 89b5956..6161bf5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.85", + "version": "0.20.86", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index fd7fec8..9a1d53a 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -72,6 +72,7 @@ class Aggregator { this.getPoolReserves = this.getPoolReserves.bind(this); this.getVersion = this.getVersion.bind(this); this.getPrices = this.getPrices.bind(this); + this.getIsCexLiquidityAvailable = this.getIsCexLiquidityAvailable.bind(this); } get basicAuthHeaders() { @@ -390,6 +391,20 @@ class Aggregator { return fetchWithValidation(url.toString(), atomicSwapHistorySchema, { headers: this.basicAuthHeaders }); }; + getIsCexLiquidityAvailable = ( + assetIn: string, + assetOut: string, + ) => { + const url = new URL(`${this.apiUrl}/api/v1/pairs/cex/liquidity/${assetIn}/${assetOut}`); + + return fetchWithValidation( + url.toString(), + z.boolean(), + { headers: this.basicAuthHeaders }, + errorSchema, + ); + }; + // private encode_utf8(s: string) { // return unescape(encodeURIComponent(s)); // } From f9f849a84e1e6990f26e4719a7fbc8459cc9d2af Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 6 May 2024 17:35:09 +0100 Subject: [PATCH 057/114] feat: tickers schema was updated --- package.json | 2 +- src/services/Frontage/schemas/tickers-schema.ts | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 4151622..6d2b78b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc13", + "version": "0.20.79-rc14", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/schemas/tickers-schema.ts b/src/services/Frontage/schemas/tickers-schema.ts index c66f885..41384ed 100644 --- a/src/services/Frontage/schemas/tickers-schema.ts +++ b/src/services/Frontage/schemas/tickers-schema.ts @@ -1,19 +1,12 @@ import { z } from 'zod'; import { SupportedChainId } from '../../../types'; -const preprocessToEnum = (value: unknown) => { - if (typeof value === 'number') { - return String(value); - } - return value; -}; - export const tickerSchema = z.object({ pair: z.string(), volume24: z.number(), change24: z.number(), lastPrice: z.number(), - networks: z.array(z.preprocess(preprocessToEnum, z.nativeEnum(SupportedChainId))), + networks: z.array(z.nativeEnum(SupportedChainId)), }); export const tickersSchema = z.array(tickerSchema); From 3a12373b4852df5a27ab5658af1c62aea4a4b117 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 6 May 2024 17:57:26 +0100 Subject: [PATCH 058/114] feat: tickers schema was updated --- package.json | 2 +- src/services/Frontage/schemas/tickers-schema.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 6d2b78b..2c0dfc3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc14", + "version": "0.20.79-rc15", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/schemas/tickers-schema.ts b/src/services/Frontage/schemas/tickers-schema.ts index 41384ed..a50b742 100644 --- a/src/services/Frontage/schemas/tickers-schema.ts +++ b/src/services/Frontage/schemas/tickers-schema.ts @@ -6,6 +6,7 @@ export const tickerSchema = z.object({ volume24: z.number(), change24: z.number(), lastPrice: z.number(), + pricePrecision: z.number(), networks: z.array(z.nativeEnum(SupportedChainId)), }); From ed9fe7651e72056db26454d2c92a087843840354 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Mon, 13 May 2024 15:19:31 +0300 Subject: [PATCH 059/114] remove exactReceive --- package.json | 2 +- src/Unit/Exchange/getSwapInfo.ts | 17 ++---------- src/Unit/Exchange/swapLimit.ts | 21 +++------------ src/Unit/Exchange/swapMarket.ts | 16 +++--------- src/services/Aggregator/index.ts | 8 ++---- .../Aggregator/schemas/swapInfoSchema.ts | 17 ++---------- src/services/Aggregator/ws/index.ts | 26 ++++--------------- .../Aggregator/ws/schemas/swapInfoSchema.ts | 17 ++---------- src/types.ts | 9 +------ src/utils/parseExchangeTradeTransaction.ts | 2 -- 10 files changed, 22 insertions(+), 113 deletions(-) diff --git a/package.json b/package.json index 6161bf5..0f66d98 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.86", + "version": "0.20.87-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/getSwapInfo.ts b/src/Unit/Exchange/getSwapInfo.ts index 02cd26d..aa1f5c5 100644 --- a/src/Unit/Exchange/getSwapInfo.ts +++ b/src/Unit/Exchange/getSwapInfo.ts @@ -8,7 +8,6 @@ import type { BlockchainService } from '../../services/BlockchainService/index.j import { calculateFeeInFeeAsset, denormalizeNumber, getNativeCryptocurrencyName } from '../../utils/index.js'; export type GetSwapInfoParams = { - type: 'exactSpend' | 'exactReceive' assetIn: string assetOut: string amount: BigNumber.Value @@ -18,12 +17,11 @@ export type GetSwapInfoParams = { options?: { instantSettlement?: boolean poolOnly?: boolean - }, - walletAddress?: string, + } + walletAddress?: string } export default async function getSwapInfo({ - type, assetIn, assetOut, amount, @@ -61,7 +59,6 @@ export default async function getSwapInfo({ } const swapInfo = await simpleFetch(aggregator.getSwapInfo)( - type, assetIn, assetOut, amountBN.toString(), @@ -76,16 +73,6 @@ export default async function getSwapInfo({ const poolExchangesList = factories !== undefined ? Object.keys(factories) : []; const [firstSwapExchange] = swapExchanges; - // if (swapInfo.type === 'exactReceive' && amountBN.lt(swapInfo.minAmountOut)) { - // throw new Error(`Amount is too low. Min amountOut is ${swapInfo.minAmountOut} ${assetOut}`); - // } - - // if (swapInfo.type === 'exactSpend' && amountBN.lt(swapInfo.minAmountIn)) { - // throw new Error(`Amount is too low. Min amountIn is ${swapInfo.minAmountIn} ${assetIn}`); - // } - - // if (swapInfo.orderInfo === null) throw new Error(swapInfo.executionInfo); - let route: 'pool' | 'aggregator'; if (options?.poolOnly !== undefined && options.poolOnly) { route = 'pool'; diff --git a/src/Unit/Exchange/swapLimit.ts b/src/Unit/Exchange/swapLimit.ts index 6c9f4c8..a0ddd81 100644 --- a/src/Unit/Exchange/swapLimit.ts +++ b/src/Unit/Exchange/swapLimit.ts @@ -18,7 +18,6 @@ import type { SingleSwap } from '../../types.js'; import { must, safeGet } from '../../utils/safeGetters.js'; export type SwapLimitParams = { - type: 'exactSpend' | 'exactReceive' assetIn: string assetOut: string price: BigNumber.Value @@ -58,7 +57,6 @@ const isValidSingleSwap = (singleSwap: Omit & { factory: } export default async function swapLimit({ - type, assetIn, assetOut, price, @@ -138,7 +136,6 @@ export default async function swapLimit({ ); const swapInfo = await simpleFetch(aggregator.getSwapInfo)( - type, assetIn, assetOut, amountBN.toString(), @@ -154,11 +151,7 @@ export default async function swapLimit({ if (swapExchanges.length > 0) options?.logger?.(`Swap exchanges: ${swapExchanges.join(', ')}`); - if (swapInfo.type === 'exactReceive' && amountBN.lt(swapInfo.minAmountOut)) { - throw new Error(`Amount is too low. Min amountOut is ${swapInfo.minAmountOut} ${assetOut}`); - } - - if (swapInfo.type === 'exactSpend' && amountBN.lt(swapInfo.minAmountIn)) { + if (amountBN.lt(swapInfo.minAmountIn)) { throw new Error(`Amount is too low. Min amountIn is ${swapInfo.minAmountIn} ${assetIn}`); } @@ -200,9 +193,7 @@ export default async function swapLimit({ options?.logger?.(`Safe price is ${swapInfo.orderInfo.safePrice} ${quoteAssetName}`); // BTEMP — better than or equal market price - const priceIsBTEMP = type === 'exactSpend' - ? priceBN.lte(swapInfo.orderInfo.safePrice) - : priceBN.gte(swapInfo.orderInfo.safePrice); + const priceIsBTEMP = priceBN.lte(swapInfo.orderInfo.safePrice); options?.logger?.(`Your price ${priceBN.toString()} is ${priceIsBTEMP ? 'better than or equal' : 'worse than'} market price ${swapInfo.orderInfo.safePrice}`); @@ -246,9 +237,7 @@ export default async function swapLimit({ if (factoryAddress !== undefined) options?.logger?.(`Factory address is ${factoryAddress}. Exchange is ${firstSwapExchange}`); } - const amountSpend = swapInfo.type === 'exactSpend' - ? swapInfo.amountIn - : new BigNumber(swapInfo.orderInfo.amount).multipliedBy(swapInfo.orderInfo.safePrice) + const amountSpend = swapInfo.amountIn; balanceGuard.registerRequirement({ reason: 'Amount spend', @@ -261,9 +250,7 @@ export default async function swapLimit({ sources: getAvailableSources('amount', assetInAddress, 'pool'), }); - const amountReceive = swapInfo.type === 'exactReceive' - ? swapInfo.amountOut - : new BigNumber(swapInfo.orderInfo.amount).multipliedBy(swapInfo.orderInfo.safePrice) + const amountReceive = new BigNumber(swapInfo.orderInfo.amount).multipliedBy(swapInfo.orderInfo.safePrice) const amountSpendBlockchainParam = normalizeNumber( amountSpend, INTERNAL_PROTOCOL_PRECISION, diff --git a/src/Unit/Exchange/swapMarket.ts b/src/Unit/Exchange/swapMarket.ts index c4c0b05..21bf775 100644 --- a/src/Unit/Exchange/swapMarket.ts +++ b/src/Unit/Exchange/swapMarket.ts @@ -43,7 +43,6 @@ const isValidSingleSwap = (singleSwap: Omit & { factory: } export default async function swapMarket({ - type, assetIn, assetOut, amount, @@ -125,7 +124,6 @@ export default async function swapMarket({ ); const swapInfo = await simpleFetch(aggregator.getSwapInfo)( - type, assetIn, assetOut, amountBN.toString(), @@ -141,11 +139,7 @@ export default async function swapMarket({ if (swapExchanges.length > 0) options?.logger?.(`Swap exchanges: ${swapExchanges.join(', ')}`); - if (swapInfo.type === 'exactReceive' && amountBN.lt(swapInfo.minAmountOut)) { - throw new Error(`Amount is too low. Min amountOut is ${swapInfo.minAmountOut} ${assetOut}`); - } - - if (swapInfo.type === 'exactSpend' && amountBN.lt(swapInfo.minAmountIn)) { + if (amountBN.lt(swapInfo.minAmountIn)) { throw new Error(`Amount is too low. Min amountIn is ${swapInfo.minAmountIn} ${assetIn}`); } @@ -199,11 +193,8 @@ export default async function swapMarket({ const amountOutWithSlippage = new BigNumber(swapInfo.amountOut) .multipliedBy(new BigNumber(1).minus(percent)) .toString(); - const amountInWithSlippage = new BigNumber(swapInfo.amountIn) - .multipliedBy(new BigNumber(1).plus(percent)) - .toString(); - const amountSpend = swapInfo.type === 'exactSpend' ? swapInfo.amountIn : amountInWithSlippage; + const amountSpend = swapInfo.amountIn; balanceGuard.registerRequirement({ reason: 'Amount spend', @@ -216,14 +207,13 @@ export default async function swapMarket({ sources: getAvailableSources('amount', assetInAddress, 'pool'), }); - const amountReceive = swapInfo.type === 'exactReceive' ? swapInfo.amountOut : amountOutWithSlippage; const amountSpendBlockchainParam = normalizeNumber( amountSpend, INTERNAL_PROTOCOL_PRECISION, BigNumber.ROUND_CEIL, ); const amountReceiveBlockchainParam = normalizeNumber( - amountReceive, + amountOutWithSlippage, INTERNAL_PROTOCOL_PRECISION, BigNumber.ROUND_FLOOR, ); diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index 9a1d53a..93869f9 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -263,7 +263,6 @@ class Aggregator { ); getSwapInfo = ( - type: 'exactSpend' | 'exactReceive', assetIn: string, assetOut: string, amount: string, @@ -273,11 +272,8 @@ class Aggregator { const url = new URL(`${this.apiUrl}/api/v1/swap`); url.searchParams.append('assetIn', assetIn); url.searchParams.append('assetOut', assetOut); - if (type === 'exactSpend') { - url.searchParams.append('amountIn', amount); - } else { - url.searchParams.append('amountOut', amount); - } + url.searchParams.append('amountIn', amount); + if (exchanges !== undefined) { if (Array.isArray(exchanges)) { exchanges.forEach((exchange) => { diff --git a/src/services/Aggregator/schemas/swapInfoSchema.ts b/src/services/Aggregator/schemas/swapInfoSchema.ts index aed6d09..792149f 100644 --- a/src/services/Aggregator/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/schemas/swapInfoSchema.ts @@ -57,21 +57,8 @@ const swapInfoByAmountIn = swapInfoBase.extend({ availableAmountIn: z.number(), marketAmountOut: z.number().nullable(), marketAmountIn: z.null(), -}).transform((val) => ({ - ...val, - type: 'exactSpend' as const, -})); +}); -const swapInfoByAmountOut = swapInfoBase.extend({ - availableAmountOut: z.number(), - availableAmountIn: z.null(), - marketAmountOut: z.null(), - marketAmountIn: z.number().nullable(), -}).transform((val) => ({ - ...val, - type: 'exactReceive' as const, -})); - -const swapInfoSchema = swapInfoByAmountIn.or(swapInfoByAmountOut); +const swapInfoSchema = swapInfoByAmountIn; export default swapInfoSchema; diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index fb1f88a..34a19a5 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -544,27 +544,11 @@ class AggregatorWS { autoSlippage: json.sl, }; - switch (json.k) { // kind - case 'exactSpend': - this.subscriptions[SubscriptionType.SWAP_SUBSCRIBE]?.[json.S]?.callback({ - kind: json.k, - marketAmountOut: json.mo, - availableAmountIn: json.aa, - ...baseSwapInfo, - }); - - break; - case 'exactReceive': - this.subscriptions[SubscriptionType.SWAP_SUBSCRIBE]?.[json.S]?.callback({ - kind: json.k, - ...baseSwapInfo, - marketAmountIn: json.mi, - availableAmountOut: json.aao, - }); - break; - default: - break; - } + this.subscriptions[SubscriptionType.SWAP_SUBSCRIBE]?.[json.S]?.callback({ + marketAmountOut: json.mo, + availableAmountIn: json.aa, + ...baseSwapInfo, + }); } break; case MessageType.INITIALIZATION: diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index eb23200..32f7fc1 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -54,22 +54,9 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ const swapInfoSchemaByAmountIn = swapInfoSchemaBase.extend({ mo: z.number().optional(), // market amount out aa: z.number(), // available amount in -}).transform((content) => ({ - ...content, - k: 'exactSpend' as const, -})); +}); -const swapInfoSchemaByAmountOut = swapInfoSchemaBase.extend({ - mi: z.number().optional(), // market amount in - aao: z.number(), // available amount out -}).transform((content) => ({ - ...content, - k: 'exactReceive' as const, -})); -const swapInfoSchema = z.union([ - swapInfoSchemaByAmountIn, - swapInfoSchemaByAmountOut, -]); +const swapInfoSchema = swapInfoSchemaByAmountIn; export default swapInfoSchema; diff --git a/src/types.ts b/src/types.ts index 6a3513a..edbbff6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -214,18 +214,11 @@ export type SwapInfoBase = { } export type SwapInfoByAmountIn = SwapInfoBase & { - kind: 'exactSpend' availableAmountIn?: number | undefined marketAmountOut?: number | undefined } -export type SwapInfoByAmountOut = SwapInfoBase & { - kind: 'exactReceive' - marketAmountIn?: number | undefined - availableAmountOut?: number | undefined -} - -export type SwapInfo = SwapInfoByAmountIn | SwapInfoByAmountOut; +export type SwapInfo = SwapInfoByAmountIn; export enum HistoryTransactionStatus { PENDING = 'Pending', diff --git a/src/utils/parseExchangeTradeTransaction.ts b/src/utils/parseExchangeTradeTransaction.ts index efd0235..9b59093 100644 --- a/src/utils/parseExchangeTradeTransaction.ts +++ b/src/utils/parseExchangeTradeTransaction.ts @@ -8,7 +8,6 @@ const swapThroughOrionPoolSchema = z.object({ z.bigint(), // amount_spend z.bigint(), // amount_receive z.string().refine(ethers.isAddress).array().nonempty(), // path - z.boolean(), // is_exact_spend ]), }).transform((data) => ({ name: data.name, @@ -16,7 +15,6 @@ const swapThroughOrionPoolSchema = z.object({ amount_spend: data.args[0], amount_receive: data.args[1], path: data.args[2], - is_exact_spend: data.args[3], }, })); From 71ba0ca5fca5ff40fd066fc708bf102502d57028 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Mon, 13 May 2024 15:22:05 +0300 Subject: [PATCH 060/114] fix version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0f66d98..98968f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.87-rc1", + "version": "0.20.88-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 1521032eb3d8d4f1fc3136d87635f926aa8131f7 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 13 May 2024 13:31:45 +0100 Subject: [PATCH 061/114] feat: Frontage service context define was removed --- package.json | 2 +- src/services/Frontage/index.ts | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/package.json b/package.json index 2c0dfc3..0dcf55b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc15", + "version": "0.20.79-rc16", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index b08b88d..a3f5720 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -7,10 +7,6 @@ export class Frontage { constructor(apiUrl: string) { this.apiUrl = apiUrl; - - this.searchTickers = this.searchTickers.bind(this); - this.getTickers = this.getTickers.bind(this); - this.getFavorites = this.getFavorites.bind(this); } searchTickers = ({ From a8f168228c020c53bf89311ec48fdec975c4b394 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 13 May 2024 13:58:26 +0100 Subject: [PATCH 062/114] feat: Frontage service code review --- package.json | 2 +- src/services/Frontage/index.ts | 61 ++++++++++------------------------ 2 files changed, 19 insertions(+), 44 deletions(-) diff --git a/package.json b/package.json index 0dcf55b..5108a1b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc16", + "version": "0.20.79-rc17", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index a3f5720..939f3a4 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -18,15 +18,15 @@ export class Frontage { offset, limit, }: { searchValue: string } & TickersBaseSearchParams) => { - const queryParams = [ - `searchValue=${encodeURIComponent(searchValue)}`, - currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork).toUpperCase()}` : '', - targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork).toUpperCase()}` : '', - sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', - sortType !== undefined ? `&sortType=${encodeURIComponent(sortType)}` : '', - offset !== undefined ? `&offset=${offset}` : '', - limit !== undefined ? `&limit=${limit}` : '', - ].filter(Boolean).join('&'); + const queryParams = new URLSearchParams({ + searchValue: encodeURIComponent(searchValue), + currentNetwork: currentNetwork !== undefined ? encodeURIComponent(currentNetwork).toUpperCase() : '', + targetNetwork: targetNetwork !== undefined ? encodeURIComponent(targetNetwork).toUpperCase() : '', + sortBy: sortBy !== undefined ? encodeURIComponent(sortBy) : '', + sortType: sortType !== undefined ? encodeURIComponent(sortType) : '', + offset: offset !== undefined ? offset.toString() : '', + limit: limit !== undefined ? limit.toString() : '', + }).toString(); return fetchWithValidation( `${this.apiUrl}/api/v1/tickers/search?${queryParams}`, @@ -44,15 +44,15 @@ export class Frontage { limit, tickers, }: { category: TickersCategories, tickers?: string } & TickersBaseSearchParams) => { - const queryParams = [ - category === 'FAVORITES' && tickers !== undefined ? `tickers=${encodeURIComponent(tickers)}` : `category=${encodeURIComponent(category)}`, - currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork).toUpperCase()}` : '', - targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork).toUpperCase()}` : '', - sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', - sortType !== undefined ? `&sortType=${encodeURIComponent(sortType)}` : '', - offset !== undefined ? `&offset=${offset}` : '', - limit !== undefined ? `&limit=${limit}` : '', - ].filter(Boolean).join('&'); + const queryParams = new URLSearchParams({ + category: category === 'FAVORITES' && tickers !== undefined ? `tickers=${encodeURIComponent(tickers)}` : `category=${encodeURIComponent(category)}`, + currentNetwork: currentNetwork !== undefined ? encodeURIComponent(currentNetwork).toUpperCase() : '', + targetNetwork: targetNetwork !== undefined ? encodeURIComponent(targetNetwork).toUpperCase() : '', + sortBy: sortBy !== undefined ? encodeURIComponent(sortBy) : '', + sortType: sortType !== undefined ? encodeURIComponent(sortType) : '', + offset: offset !== undefined ? offset.toString() : '', + limit: limit !== undefined ? limit.toString() : '', + }).toString(); const url = category === 'FAVORITES' && tickers !== undefined ? `${this.apiUrl}/api/v1/tickers/get/favourites?${queryParams}` @@ -63,31 +63,6 @@ export class Frontage { tickersSchema ); }; - - getFavorites = ({ - tickers, - currentNetwork, - targetNetwork, - sortBy, - sortType, - offset, - limit, - }: { tickers: string } & TickersBaseSearchParams) => { - const queryParams = [ - `tickers=${encodeURIComponent(tickers)}`, - currentNetwork !== undefined ? `¤tNetwork=${encodeURIComponent(currentNetwork).toUpperCase()}` : '', - targetNetwork !== undefined ? `&targetNetwork=${encodeURIComponent(targetNetwork).toUpperCase()}` : '', - sortBy !== undefined ? `&sortBy=${encodeURIComponent(sortBy)}` : '', - sortType !== undefined ? `&sortType=${encodeURIComponent(sortType)}` : '', - offset !== undefined ? `&offset=${offset}` : '', - limit !== undefined ? `&limit=${limit}` : '', - ].filter(Boolean).join('&'); - - return fetchWithValidation( - `${this.apiUrl}/api/v1/tickers/get/favourites?${queryParams}`, - tickersSchema - ); - }; } export * as schemas from './schemas/index.js'; From d676d59f22136ecac225124a278bb38627da3bca Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 13 May 2024 14:07:11 +0100 Subject: [PATCH 063/114] feat: Frontage service code review --- package.json | 2 +- src/services/Frontage/index.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 5108a1b..494099d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc17", + "version": "0.20.79-rc18", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index 939f3a4..a7bfb9d 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -45,7 +45,8 @@ export class Frontage { tickers, }: { category: TickersCategories, tickers?: string } & TickersBaseSearchParams) => { const queryParams = new URLSearchParams({ - category: category === 'FAVORITES' && tickers !== undefined ? `tickers=${encodeURIComponent(tickers)}` : `category=${encodeURIComponent(category)}`, + tickers: category === 'FAVORITES' && tickers !== undefined ? encodeURIComponent(tickers) : '', + category: category !== 'FAVORITES' && tickers !== undefined ? encodeURIComponent(category) : '', currentNetwork: currentNetwork !== undefined ? encodeURIComponent(currentNetwork).toUpperCase() : '', targetNetwork: targetNetwork !== undefined ? encodeURIComponent(targetNetwork).toUpperCase() : '', sortBy: sortBy !== undefined ? encodeURIComponent(sortBy) : '', From 04d187f03b6ec9d1404c85e03120060d6d5fc38b Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 13 May 2024 14:48:23 +0100 Subject: [PATCH 064/114] feat: Frontage service code review --- package.json | 2 +- src/services/Frontage/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 494099d..ddb40c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc18", + "version": "0.20.79-rc19", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index a7bfb9d..e870445 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -46,7 +46,7 @@ export class Frontage { }: { category: TickersCategories, tickers?: string } & TickersBaseSearchParams) => { const queryParams = new URLSearchParams({ tickers: category === 'FAVORITES' && tickers !== undefined ? encodeURIComponent(tickers) : '', - category: category !== 'FAVORITES' && tickers !== undefined ? encodeURIComponent(category) : '', + category: category !== 'FAVORITES' ? encodeURIComponent(category) : '', currentNetwork: currentNetwork !== undefined ? encodeURIComponent(currentNetwork).toUpperCase() : '', targetNetwork: targetNetwork !== undefined ? encodeURIComponent(targetNetwork).toUpperCase() : '', sortBy: sortBy !== undefined ? encodeURIComponent(sortBy) : '', From 275547340e726a6630ffc19eb474db730c204d49 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Mon, 13 May 2024 17:21:51 +0300 Subject: [PATCH 065/114] fix schemas --- package-lock.json | 4 ++-- package.json | 2 +- src/services/Aggregator/schemas/swapInfoSchema.ts | 4 +--- src/services/Aggregator/ws/schemas/swapInfoSchema.ts | 5 +---- src/types.ts | 4 +--- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ab175b..182ba5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.86", + "version": "0.20.88-rc2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.86", + "version": "0.20.88-rc2", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 98968f5..0cf52dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc1", + "version": "0.20.88-rc2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/schemas/swapInfoSchema.ts b/src/services/Aggregator/schemas/swapInfoSchema.ts index 792149f..ad1219d 100644 --- a/src/services/Aggregator/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/schemas/swapInfoSchema.ts @@ -52,13 +52,11 @@ const swapInfoBase = z.object({ autoSlippage: z.number().optional(), }); -const swapInfoByAmountIn = swapInfoBase.extend({ +const swapInfoSchema = swapInfoBase.extend({ availableAmountOut: z.null(), availableAmountIn: z.number(), marketAmountOut: z.number().nullable(), marketAmountIn: z.null(), }); -const swapInfoSchema = swapInfoByAmountIn; - export default swapInfoSchema; diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index 32f7fc1..38eeae9 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -51,12 +51,9 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ sl: z.number().optional(), }); -const swapInfoSchemaByAmountIn = swapInfoSchemaBase.extend({ +const swapInfoSchema = swapInfoSchemaBase.extend({ mo: z.number().optional(), // market amount out aa: z.number(), // available amount in }); - -const swapInfoSchema = swapInfoSchemaByAmountIn; - export default swapInfoSchema; diff --git a/src/types.ts b/src/types.ts index edbbff6..5329925 100644 --- a/src/types.ts +++ b/src/types.ts @@ -213,13 +213,11 @@ export type SwapInfoBase = { autoSlippage: number | undefined } -export type SwapInfoByAmountIn = SwapInfoBase & { +export type SwapInfo = SwapInfoBase & { availableAmountIn?: number | undefined marketAmountOut?: number | undefined } -export type SwapInfo = SwapInfoByAmountIn; - export enum HistoryTransactionStatus { PENDING = 'Pending', DONE = 'Done', From 2936b198450d5ba78a8522b1add358f72477a66a Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 14 May 2024 08:48:49 +0100 Subject: [PATCH 066/114] feat: Frontage service code review --- package.json | 2 +- src/services/Frontage/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ddb40c9..8d97e07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc19", + "version": "0.20.79-rc20", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index e870445..a7d51c5 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -45,7 +45,7 @@ export class Frontage { tickers, }: { category: TickersCategories, tickers?: string } & TickersBaseSearchParams) => { const queryParams = new URLSearchParams({ - tickers: category === 'FAVORITES' && tickers !== undefined ? encodeURIComponent(tickers) : '', + tickers: category === 'FAVORITES' && tickers !== undefined ? tickers : '', category: category !== 'FAVORITES' ? encodeURIComponent(category) : '', currentNetwork: currentNetwork !== undefined ? encodeURIComponent(currentNetwork).toUpperCase() : '', targetNetwork: targetNetwork !== undefined ? encodeURIComponent(targetNetwork).toUpperCase() : '', From 7877aba22c17526a3ee6c4af600061d7f59b5747 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 14 May 2024 09:33:30 +0100 Subject: [PATCH 067/114] feat: switched to URL constructor --- package.json | 2 +- src/services/Frontage/index.ts | 57 ++++++++++++++++++++-------------- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 8d97e07..bb4738b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc20", + "version": "0.20.79-rc21", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index a7d51c5..d1ac04e 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -18,18 +18,22 @@ export class Frontage { offset, limit, }: { searchValue: string } & TickersBaseSearchParams) => { - const queryParams = new URLSearchParams({ - searchValue: encodeURIComponent(searchValue), - currentNetwork: currentNetwork !== undefined ? encodeURIComponent(currentNetwork).toUpperCase() : '', - targetNetwork: targetNetwork !== undefined ? encodeURIComponent(targetNetwork).toUpperCase() : '', - sortBy: sortBy !== undefined ? encodeURIComponent(sortBy) : '', - sortType: sortType !== undefined ? encodeURIComponent(sortType) : '', - offset: offset !== undefined ? offset.toString() : '', - limit: limit !== undefined ? limit.toString() : '', - }).toString(); + const url = new URL(this.apiUrl); + const params = new URLSearchParams(); + + params.set('searchValue', encodeURIComponent(searchValue)); + if (currentNetwork !== undefined) params.set('currentNetwork', encodeURIComponent(currentNetwork).toUpperCase()); + if (targetNetwork !== undefined) params.set('targetNetwork', encodeURIComponent(targetNetwork).toUpperCase()); + if (sortBy !== undefined) params.set('sortBy', encodeURIComponent(sortBy)); + if (sortType !== undefined) params.set('sortType', encodeURIComponent(sortType)); + if (offset !== undefined) params.set('offset', offset.toString()); + if (limit !== undefined) params.set('limit', limit.toString()); + + url.pathname = '/api/v1/tickers/search'; + url.search = params.toString(); return fetchWithValidation( - `${this.apiUrl}/api/v1/tickers/search?${queryParams}`, + url.toString(), tickersSchema ); }; @@ -44,23 +48,28 @@ export class Frontage { limit, tickers, }: { category: TickersCategories, tickers?: string } & TickersBaseSearchParams) => { - const queryParams = new URLSearchParams({ - tickers: category === 'FAVORITES' && tickers !== undefined ? tickers : '', - category: category !== 'FAVORITES' ? encodeURIComponent(category) : '', - currentNetwork: currentNetwork !== undefined ? encodeURIComponent(currentNetwork).toUpperCase() : '', - targetNetwork: targetNetwork !== undefined ? encodeURIComponent(targetNetwork).toUpperCase() : '', - sortBy: sortBy !== undefined ? encodeURIComponent(sortBy) : '', - sortType: sortType !== undefined ? encodeURIComponent(sortType) : '', - offset: offset !== undefined ? offset.toString() : '', - limit: limit !== undefined ? limit.toString() : '', - }).toString(); + const url = new URL(this.apiUrl); + const params = new URLSearchParams(); - const url = category === 'FAVORITES' && tickers !== undefined - ? `${this.apiUrl}/api/v1/tickers/get/favourites?${queryParams}` - : `${this.apiUrl}/api/v1/tickers/get/category?${queryParams}`; + if (category === 'FAVORITES' && tickers !== undefined) params.set('tickers', tickers); + if (category !== 'FAVORITES') params.set('category', category); + if (currentNetwork !== undefined) params.set('currentNetwork', encodeURIComponent(currentNetwork).toUpperCase()); + if (targetNetwork !== undefined) params.set('targetNetwork', encodeURIComponent(targetNetwork).toUpperCase()); + if (sortBy !== undefined) params.set('sortBy', encodeURIComponent(sortBy)); + if (sortType !== undefined) params.set('sortType', encodeURIComponent(sortType)); + if (offset !== undefined) params.set('offset', offset.toString()); + if (limit !== undefined) params.set('limit', limit.toString()); + + if (category === 'FAVORITES' && tickers !== undefined) { + url.pathname = '/api/v1/tickers/get/favourites'; + } else { + url.pathname = '/api/v1/tickers/get/category'; + } + + url.search = params.toString(); return fetchWithValidation( - url, + url.toString(), tickersSchema ); }; From 4d4030c6e544ffbb2b730216ccf1b40b0e6b4b04 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 14 May 2024 09:46:48 +0100 Subject: [PATCH 068/114] feat: switched to URL constructor --- package.json | 2 +- src/services/Frontage/index.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index bb4738b..2c3528e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc21", + "version": "0.20.79-rc22", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index d1ac04e..a0835e5 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -29,7 +29,7 @@ export class Frontage { if (offset !== undefined) params.set('offset', offset.toString()); if (limit !== undefined) params.set('limit', limit.toString()); - url.pathname = '/api/v1/tickers/search'; + url.pathname += 'api/v1/tickers/search'; url.search = params.toString(); return fetchWithValidation( @@ -61,9 +61,9 @@ export class Frontage { if (limit !== undefined) params.set('limit', limit.toString()); if (category === 'FAVORITES' && tickers !== undefined) { - url.pathname = '/api/v1/tickers/get/favourites'; + url.pathname += 'api/v1/tickers/get/favourites'; } else { - url.pathname = '/api/v1/tickers/get/category'; + url.pathname += 'api/v1/tickers/get/category'; } url.search = params.toString(); From d80599eef2d9549461ff0ab27ded1104a5058bf4 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 14 May 2024 09:51:58 +0100 Subject: [PATCH 069/114] feat: switched to URL constructor --- package.json | 2 +- src/services/Frontage/index.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2c3528e..b157f60 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc22", + "version": "0.20.79-rc23", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Frontage/index.ts b/src/services/Frontage/index.ts index a0835e5..1d597c8 100644 --- a/src/services/Frontage/index.ts +++ b/src/services/Frontage/index.ts @@ -29,7 +29,7 @@ export class Frontage { if (offset !== undefined) params.set('offset', offset.toString()); if (limit !== undefined) params.set('limit', limit.toString()); - url.pathname += 'api/v1/tickers/search'; + url.pathname += '/api/v1/tickers/search'; url.search = params.toString(); return fetchWithValidation( @@ -61,9 +61,9 @@ export class Frontage { if (limit !== undefined) params.set('limit', limit.toString()); if (category === 'FAVORITES' && tickers !== undefined) { - url.pathname += 'api/v1/tickers/get/favourites'; + url.pathname += '/api/v1/tickers/get/favourites'; } else { - url.pathname += 'api/v1/tickers/get/category'; + url.pathname += '/api/v1/tickers/get/category'; } url.search = params.toString(); From 5cc56e4300b831219d75d66509549da1ffe5e9ad Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 14 May 2024 10:05:05 +0100 Subject: [PATCH 070/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b157f60..8271dc8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.79-rc23", + "version": "0.21.0", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 642d7f26631569448118b9557ad8b677d7fa3142 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 15 May 2024 16:09:08 +0300 Subject: [PATCH 071/114] update package-lock.json --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7ab175b..3176675 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.86", + "version": "0.20.76-rc110", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.86", + "version": "0.20.76-rc110", "hasInstallScript": true, "license": "ISC", "dependencies": { From b44a42dd28c8f82f95980bbb9bb7db13ac9eacf9 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Wed, 15 May 2024 16:58:17 +0300 Subject: [PATCH 072/114] update package-lock.json --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 182ba5a..b7ab572 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc2", + "version": "0.20.88-rc3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc2", + "version": "0.20.88-rc3", "hasInstallScript": true, "license": "ISC", "dependencies": { From 3e5e7565e34921c6ef24cb258fcbb51872fbf25b Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 17 May 2024 13:07:02 +0100 Subject: [PATCH 073/114] feat: added Sepolia network --- src/config/chains.json | 13 +++++++++++++ src/config/envs.json | 4 ++-- src/constants/chains.ts | 1 + src/types.ts | 5 +++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/config/chains.json b/src/config/chains.json index 3fecfd8..3607a21 100644 --- a/src/config/chains.json +++ b/src/config/chains.json @@ -77,6 +77,19 @@ "curveRegistry": "" } }, + "11155111": { + "chainId": "11155111", + "explorer": "https://sepolia.etherscan.io/", + "label": "Sepolia", + "shortName": "ETH-Sepolia", + "code": "eth", + "rpc": "https://gateway.tenderly.co/public/sepolia", + "baseCurrencyName": "ETH", + "contracts": { + "WETH": "", + "curveRegistry": "" + } + }, "421613": { "chainId": "421613", "explorer": "https://goerli.arbiscan.io/", diff --git a/src/config/envs.json b/src/config/envs.json index 12e87f9..73f8b12 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -225,8 +225,8 @@ }, "liquidityMigratorAddress": "0x01b10dds12478C88A5E18e2707E729906bC25CfF6" }, - "5": { - "api": "https://testing.orion.xyz/eth-goerli", + "11155111": { + "api": "https://testing.orion.xyz/eth-sepolia", "services": { "aggregator": { "http": "/backend", diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 1fb8ff3..df0bd2f 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -4,6 +4,7 @@ export const developmentChains = [ SupportedChainId.BSC_TESTNET, SupportedChainId.ROPSTEN, SupportedChainId.GOERLI, + SupportedChainId.SEPOLIA, SupportedChainId.ARBITRUM_GOERLI, SupportedChainId.FANTOM_TESTNET, SupportedChainId.POLYGON_TESTNET, diff --git a/src/types.ts b/src/types.ts index 6a3513a..461d318 100644 --- a/src/types.ts +++ b/src/types.ts @@ -81,8 +81,6 @@ export type Pair = { export enum SupportedChainId { MAINNET = '1', - ROPSTEN = '3', - GOERLI = '5', ARBITRUM = '42161', FANTOM_OPERA = '250', POLYGON = '137', @@ -93,6 +91,9 @@ export enum SupportedChainId { AVAX = '43114', BASE = '8453', + ROPSTEN = '3', + GOERLI = '5', + SEPOLIA = '11155111', POLYGON_TESTNET = '80001', FANTOM_TESTNET = '4002', BSC = '56', From 7a832a8686f3054036cc2f73c4d8bfe302fed76f Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 17 May 2024 13:13:36 +0100 Subject: [PATCH 074/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8271dc8..bcb98ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.21.0", + "version": "0.21.1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From f4bf91eb36517a2eb5996ba60ede33848eb21f73 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 20 May 2024 15:14:01 +0100 Subject: [PATCH 075/114] feat: small updates in Swap info schema --- package.json | 2 +- src/services/Aggregator/ws/schemas/swapInfoSchema.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 6fc106a..bc92500 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc111", + "version": "0.20.76-rc112", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index 48abe19..9b385ad 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -40,8 +40,8 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ ai: z.string().toUpperCase(), // asset in ao: z.string().toUpperCase(), // asset out f: factorySchema, // factory - aai: z.string(), // asset address in - aao: z.string(), // asset address out + aai: z.string().optional(), // asset address in + aao: z.string().optional(), // asset address out })), usd: z.object({ // USD info of this swap, nullable aa: z.number().optional(), // available amount in, USD From ac90d4981c3db0d97bba9c29874409eddfba7aba Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 20 May 2024 15:27:29 +0100 Subject: [PATCH 076/114] Revert "feat: small updates in Swap info schema" This reverts commit f4bf91eb36517a2eb5996ba60ede33848eb21f73. --- package.json | 2 +- src/services/Aggregator/ws/schemas/swapInfoSchema.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index bc92500..6fc106a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc112", + "version": "0.20.76-rc111", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index 9b385ad..48abe19 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -40,8 +40,8 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ ai: z.string().toUpperCase(), // asset in ao: z.string().toUpperCase(), // asset out f: factorySchema, // factory - aai: z.string().optional(), // asset address in - aao: z.string().optional(), // asset address out + aai: z.string(), // asset address in + aao: z.string(), // asset address out })), usd: z.object({ // USD info of this swap, nullable aa: z.number().optional(), // available amount in, USD From 4c63f330b856bfd46356c681bb9007038357c412 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Wed, 22 May 2024 18:14:39 +0300 Subject: [PATCH 077/114] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index debd4e6..29de681 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc4", + "version": "0.20.88-rc5", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 32836a2bde03ba784978bac0aea8d6ca97b20482 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Wed, 22 May 2024 22:09:11 +0300 Subject: [PATCH 078/114] is exact receive --- package.json | 2 +- src/Unit/Exchange/getSwapInfo.ts | 3 +++ src/Unit/Exchange/swapLimit.ts | 21 ++++++++++++--- src/Unit/Exchange/swapMarket.ts | 17 +++++++++--- src/services/Aggregator/index.ts | 7 ++++- .../Aggregator/schemas/swapInfoSchema.ts | 19 ++++++++++++-- src/services/Aggregator/ws/index.ts | 26 +++++++++++++++---- .../Aggregator/ws/schemas/swapInfoSchema.ts | 20 ++++++++++++-- src/types.ts | 11 +++++++- 9 files changed, 106 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 29de681..ecc901c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc5", + "version": "0.20.88-rc6", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/getSwapInfo.ts b/src/Unit/Exchange/getSwapInfo.ts index aa1f5c5..33a2756 100644 --- a/src/Unit/Exchange/getSwapInfo.ts +++ b/src/Unit/Exchange/getSwapInfo.ts @@ -19,6 +19,7 @@ export type GetSwapInfoParams = { poolOnly?: boolean } walletAddress?: string + isExactReceive?: boolean } export default async function getSwapInfo({ @@ -30,6 +31,7 @@ export default async function getSwapInfo({ aggregator, options, walletAddress, + isExactReceive = false, }: GetSwapInfoParams) { if (amount === '') throw new Error('Amount can not be empty'); if (assetIn === '') throw new Error('AssetIn can not be empty'); @@ -66,6 +68,7 @@ export default async function getSwapInfo({ options?.poolOnly !== undefined && options.poolOnly ? 'pools' : undefined, + isExactReceive, ); const { exchanges: swapExchanges } = swapInfo; diff --git a/src/Unit/Exchange/swapLimit.ts b/src/Unit/Exchange/swapLimit.ts index a0ddd81..c914f1a 100644 --- a/src/Unit/Exchange/swapLimit.ts +++ b/src/Unit/Exchange/swapLimit.ts @@ -34,6 +34,7 @@ export type SwapLimitParams = { route?: 'aggregator' | 'pool' } } + isExactReceive?: boolean } type AggregatorOrder = { @@ -65,6 +66,7 @@ export default async function swapLimit({ signer, unit, options, + isExactReceive = false, }: SwapLimitParams): Promise { if (options?.developer) options.logger?.('YOU SPECIFIED A DEVELOPER OPTIONS. BE CAREFUL!'); if (amount === '') throw new Error('Amount can not be empty'); @@ -143,6 +145,7 @@ export default async function swapLimit({ options?.poolOnly !== undefined && options.poolOnly ? 'pools' : undefined, + isExactReceive, ); const { exchanges: swapExchanges, exchangeContractPath } = swapInfo; @@ -151,7 +154,11 @@ export default async function swapLimit({ if (swapExchanges.length > 0) options?.logger?.(`Swap exchanges: ${swapExchanges.join(', ')}`); - if (amountBN.lt(swapInfo.minAmountIn)) { + if (swapInfo?.isExactReceive && amountBN.lt(swapInfo.minAmountOut)) { + throw new Error(`Amount is too low. Min amountOut is ${swapInfo.minAmountOut} ${assetOut}`); + } + + if (!(swapInfo?.isExactReceive) && amountBN.lt(swapInfo.minAmountIn)) { throw new Error(`Amount is too low. Min amountIn is ${swapInfo.minAmountIn} ${assetIn}`); } @@ -193,7 +200,9 @@ export default async function swapLimit({ options?.logger?.(`Safe price is ${swapInfo.orderInfo.safePrice} ${quoteAssetName}`); // BTEMP — better than or equal market price - const priceIsBTEMP = priceBN.lte(swapInfo.orderInfo.safePrice); + const priceIsBTEMP = isExactReceive + ? priceBN.gte(swapInfo.orderInfo.safePrice) + : priceBN.lte(swapInfo.orderInfo.safePrice); options?.logger?.(`Your price ${priceBN.toString()} is ${priceIsBTEMP ? 'better than or equal' : 'worse than'} market price ${swapInfo.orderInfo.safePrice}`); @@ -237,7 +246,9 @@ export default async function swapLimit({ if (factoryAddress !== undefined) options?.logger?.(`Factory address is ${factoryAddress}. Exchange is ${firstSwapExchange}`); } - const amountSpend = swapInfo.amountIn; + const amountSpend = !(swapInfo?.isExactReceive) + ? swapInfo.amountIn + : new BigNumber(swapInfo.orderInfo.amount).multipliedBy(swapInfo.orderInfo.safePrice) balanceGuard.registerRequirement({ reason: 'Amount spend', @@ -250,7 +261,9 @@ export default async function swapLimit({ sources: getAvailableSources('amount', assetInAddress, 'pool'), }); - const amountReceive = new BigNumber(swapInfo.orderInfo.amount).multipliedBy(swapInfo.orderInfo.safePrice) + const amountReceive = swapInfo?.isExactReceive + ? swapInfo.amountOut + : new BigNumber(swapInfo.orderInfo.amount).multipliedBy(swapInfo.orderInfo.safePrice) const amountSpendBlockchainParam = normalizeNumber( amountSpend, INTERNAL_PROTOCOL_PRECISION, diff --git a/src/Unit/Exchange/swapMarket.ts b/src/Unit/Exchange/swapMarket.ts index 21bf775..4253bc7 100644 --- a/src/Unit/Exchange/swapMarket.ts +++ b/src/Unit/Exchange/swapMarket.ts @@ -37,7 +37,6 @@ type PoolSwap = { export type Swap = AggregatorOrder | PoolSwap; - const isValidSingleSwap = (singleSwap: Omit & { factory: string }): singleSwap is SingleSwap => { return isValidFactory(singleSwap.factory); } @@ -51,6 +50,7 @@ export default async function swapMarket({ signer, unit, options, + isExactReceive = false, }: SwapMarketParams): Promise { if (options?.developer) options.logger?.('YOU SPECIFIED A DEVELOPER OPTIONS. BE CAREFUL!'); @@ -131,6 +131,7 @@ export default async function swapMarket({ options?.poolOnly !== undefined && options.poolOnly ? 'pools' : undefined, + isExactReceive, ); const { exchanges: swapExchanges, exchangeContractPath } = swapInfo; @@ -139,7 +140,11 @@ export default async function swapMarket({ if (swapExchanges.length > 0) options?.logger?.(`Swap exchanges: ${swapExchanges.join(', ')}`); - if (amountBN.lt(swapInfo.minAmountIn)) { + if (swapInfo?.isExactReceive && amountBN.lt(swapInfo.minAmountOut)) { + throw new Error(`Amount is too low. Min amountOut is ${swapInfo.minAmountOut} ${assetOut}`); + } + + if (!(swapInfo?.isExactReceive) && amountBN.lt(swapInfo.minAmountIn)) { throw new Error(`Amount is too low. Min amountIn is ${swapInfo.minAmountIn} ${assetIn}`); } @@ -193,8 +198,11 @@ export default async function swapMarket({ const amountOutWithSlippage = new BigNumber(swapInfo.amountOut) .multipliedBy(new BigNumber(1).minus(percent)) .toString(); + const amountInWithSlippage = new BigNumber(swapInfo.amountIn) + .multipliedBy(new BigNumber(1).plus(percent)) + .toString(); - const amountSpend = swapInfo.amountIn; + const amountSpend = swapInfo?.isExactReceive ? amountInWithSlippage : swapInfo.amountIn; balanceGuard.registerRequirement({ reason: 'Amount spend', @@ -207,13 +215,14 @@ export default async function swapMarket({ sources: getAvailableSources('amount', assetInAddress, 'pool'), }); + const amountReceive = swapInfo?.isExactReceive ? amountOutWithSlippage : swapInfo.amountOut; const amountSpendBlockchainParam = normalizeNumber( amountSpend, INTERNAL_PROTOCOL_PRECISION, BigNumber.ROUND_CEIL, ); const amountReceiveBlockchainParam = normalizeNumber( - amountOutWithSlippage, + amountReceive, INTERNAL_PROTOCOL_PRECISION, BigNumber.ROUND_FLOOR, ); diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index 93869f9..8ed790f 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -268,11 +268,16 @@ class Aggregator { amount: string, instantSettlement?: boolean, exchanges?: string[] | 'cex' | 'pools', + isExactReceive?: boolean, ) => { const url = new URL(`${this.apiUrl}/api/v1/swap`); url.searchParams.append('assetIn', assetIn); url.searchParams.append('assetOut', assetOut); - url.searchParams.append('amountIn', amount); + if (isExactReceive !== true) { + url.searchParams.append('amountIn', amount); + } else { + url.searchParams.append('amountOut', amount); + } if (exchanges !== undefined) { if (Array.isArray(exchanges)) { diff --git a/src/services/Aggregator/schemas/swapInfoSchema.ts b/src/services/Aggregator/schemas/swapInfoSchema.ts index ad1219d..59de289 100644 --- a/src/services/Aggregator/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/schemas/swapInfoSchema.ts @@ -52,11 +52,26 @@ const swapInfoBase = z.object({ autoSlippage: z.number().optional(), }); -const swapInfoSchema = swapInfoBase.extend({ +const swapInfoByAmountIn = swapInfoBase.extend({ availableAmountOut: z.null(), availableAmountIn: z.number(), marketAmountOut: z.number().nullable(), marketAmountIn: z.null(), -}); +}).transform((val) => ({ + ...val, + isExactReceive: false as const, +})); + +const swapInfoByAmountOut = swapInfoBase.extend({ + availableAmountOut: z.number(), + availableAmountIn: z.null(), + marketAmountOut: z.null(), + marketAmountIn: z.number().nullable(), +}).transform((val) => ({ + ...val, + isExactReceive: true as const, +})); + +const swapInfoSchema = swapInfoByAmountIn.or(swapInfoByAmountOut); export default swapInfoSchema; diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index 34a19a5..d654e22 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -544,11 +544,27 @@ class AggregatorWS { autoSlippage: json.sl, }; - this.subscriptions[SubscriptionType.SWAP_SUBSCRIBE]?.[json.S]?.callback({ - marketAmountOut: json.mo, - availableAmountIn: json.aa, - ...baseSwapInfo, - }); + switch (json.er) { // exactReceive + case false: + this.subscriptions[SubscriptionType.SWAP_SUBSCRIBE]?.[json.S]?.callback({ + isExactReceive: false, + marketAmountOut: json.mo, + availableAmountIn: json.aa, + ...baseSwapInfo, + }); + + break; + case true: + this.subscriptions[SubscriptionType.SWAP_SUBSCRIBE]?.[json.S]?.callback({ + isExactReceive: true, + ...baseSwapInfo, + marketAmountIn: json.mi, + availableAmountOut: json.aao, + }); + break; + default: + break; + } } break; case MessageType.INITIALIZATION: diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index 38eeae9..828f6a1 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -51,9 +51,25 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ sl: z.number().optional(), }); -const swapInfoSchema = swapInfoSchemaBase.extend({ +const swapInfoSchemaByAmountIn = swapInfoSchemaBase.extend({ mo: z.number().optional(), // market amount out aa: z.number(), // available amount in -}); +}).transform((content) => ({ + ...content, + er: false as const, +})); + +const swapInfoSchemaByAmountOut = swapInfoSchemaBase.extend({ + mi: z.number().optional(), // market amount in + aao: z.number(), // available amount out +}).transform((content) => ({ + ...content, + er: true as const, +})); + +const swapInfoSchema = z.union([ + swapInfoSchemaByAmountIn, + swapInfoSchemaByAmountOut, +]); export default swapInfoSchema; diff --git a/src/types.ts b/src/types.ts index 946675a..1a03fcd 100644 --- a/src/types.ts +++ b/src/types.ts @@ -215,11 +215,20 @@ export type SwapInfoBase = { autoSlippage: number | undefined } -export type SwapInfo = SwapInfoBase & { +export type SwapInfoByAmountIn = SwapInfoBase & { + isExactReceive: false availableAmountIn?: number | undefined marketAmountOut?: number | undefined } +export type SwapInfoByAmountOut = SwapInfoBase & { + isExactReceive: true + marketAmountIn?: number | undefined + availableAmountOut?: number | undefined +} + +export type SwapInfo = SwapInfoByAmountIn | SwapInfoByAmountOut; + export enum HistoryTransactionStatus { PENDING = 'Pending', DONE = 'Done', From ac6b331eca459741a36013d4fb36116d86b3f090 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Wed, 22 May 2024 22:51:03 +0300 Subject: [PATCH 079/114] is trade buy --- package.json | 2 +- src/Unit/Exchange/getSwapInfo.ts | 6 +++--- src/Unit/Exchange/swapLimit.ts | 16 ++++++++-------- src/Unit/Exchange/swapMarket.ts | 12 ++++++------ src/services/Aggregator/index.ts | 4 ++-- .../Aggregator/schemas/swapInfoSchema.ts | 4 ++-- src/services/Aggregator/ws/index.ts | 6 +++--- .../Aggregator/ws/schemas/swapInfoSchema.ts | 4 ++-- src/types.ts | 4 ++-- 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index ecc901c..8de0c64 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc6", + "version": "0.20.88-rc7", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/getSwapInfo.ts b/src/Unit/Exchange/getSwapInfo.ts index 33a2756..0be8b87 100644 --- a/src/Unit/Exchange/getSwapInfo.ts +++ b/src/Unit/Exchange/getSwapInfo.ts @@ -19,7 +19,7 @@ export type GetSwapInfoParams = { poolOnly?: boolean } walletAddress?: string - isExactReceive?: boolean + isTradeBuy?: boolean } export default async function getSwapInfo({ @@ -31,7 +31,7 @@ export default async function getSwapInfo({ aggregator, options, walletAddress, - isExactReceive = false, + isTradeBuy = false, }: GetSwapInfoParams) { if (amount === '') throw new Error('Amount can not be empty'); if (assetIn === '') throw new Error('AssetIn can not be empty'); @@ -68,7 +68,7 @@ export default async function getSwapInfo({ options?.poolOnly !== undefined && options.poolOnly ? 'pools' : undefined, - isExactReceive, + isTradeBuy, ); const { exchanges: swapExchanges } = swapInfo; diff --git a/src/Unit/Exchange/swapLimit.ts b/src/Unit/Exchange/swapLimit.ts index c914f1a..19ae300 100644 --- a/src/Unit/Exchange/swapLimit.ts +++ b/src/Unit/Exchange/swapLimit.ts @@ -34,7 +34,7 @@ export type SwapLimitParams = { route?: 'aggregator' | 'pool' } } - isExactReceive?: boolean + isTradeBuy?: boolean } type AggregatorOrder = { @@ -66,7 +66,7 @@ export default async function swapLimit({ signer, unit, options, - isExactReceive = false, + isTradeBuy = false, }: SwapLimitParams): Promise { if (options?.developer) options.logger?.('YOU SPECIFIED A DEVELOPER OPTIONS. BE CAREFUL!'); if (amount === '') throw new Error('Amount can not be empty'); @@ -145,7 +145,7 @@ export default async function swapLimit({ options?.poolOnly !== undefined && options.poolOnly ? 'pools' : undefined, - isExactReceive, + isTradeBuy, ); const { exchanges: swapExchanges, exchangeContractPath } = swapInfo; @@ -154,11 +154,11 @@ export default async function swapLimit({ if (swapExchanges.length > 0) options?.logger?.(`Swap exchanges: ${swapExchanges.join(', ')}`); - if (swapInfo?.isExactReceive && amountBN.lt(swapInfo.minAmountOut)) { + if (swapInfo?.isTradeBuy && amountBN.lt(swapInfo.minAmountOut)) { throw new Error(`Amount is too low. Min amountOut is ${swapInfo.minAmountOut} ${assetOut}`); } - if (!(swapInfo?.isExactReceive) && amountBN.lt(swapInfo.minAmountIn)) { + if (!(swapInfo?.isTradeBuy) && amountBN.lt(swapInfo.minAmountIn)) { throw new Error(`Amount is too low. Min amountIn is ${swapInfo.minAmountIn} ${assetIn}`); } @@ -200,7 +200,7 @@ export default async function swapLimit({ options?.logger?.(`Safe price is ${swapInfo.orderInfo.safePrice} ${quoteAssetName}`); // BTEMP — better than or equal market price - const priceIsBTEMP = isExactReceive + const priceIsBTEMP = isTradeBuy ? priceBN.gte(swapInfo.orderInfo.safePrice) : priceBN.lte(swapInfo.orderInfo.safePrice); @@ -246,7 +246,7 @@ export default async function swapLimit({ if (factoryAddress !== undefined) options?.logger?.(`Factory address is ${factoryAddress}. Exchange is ${firstSwapExchange}`); } - const amountSpend = !(swapInfo?.isExactReceive) + const amountSpend = !(swapInfo?.isTradeBuy) ? swapInfo.amountIn : new BigNumber(swapInfo.orderInfo.amount).multipliedBy(swapInfo.orderInfo.safePrice) @@ -261,7 +261,7 @@ export default async function swapLimit({ sources: getAvailableSources('amount', assetInAddress, 'pool'), }); - const amountReceive = swapInfo?.isExactReceive + const amountReceive = swapInfo?.isTradeBuy ? swapInfo.amountOut : new BigNumber(swapInfo.orderInfo.amount).multipliedBy(swapInfo.orderInfo.safePrice) const amountSpendBlockchainParam = normalizeNumber( diff --git a/src/Unit/Exchange/swapMarket.ts b/src/Unit/Exchange/swapMarket.ts index 4253bc7..934e2bb 100644 --- a/src/Unit/Exchange/swapMarket.ts +++ b/src/Unit/Exchange/swapMarket.ts @@ -50,7 +50,7 @@ export default async function swapMarket({ signer, unit, options, - isExactReceive = false, + isTradeBuy = false, }: SwapMarketParams): Promise { if (options?.developer) options.logger?.('YOU SPECIFIED A DEVELOPER OPTIONS. BE CAREFUL!'); @@ -131,7 +131,7 @@ export default async function swapMarket({ options?.poolOnly !== undefined && options.poolOnly ? 'pools' : undefined, - isExactReceive, + isTradeBuy, ); const { exchanges: swapExchanges, exchangeContractPath } = swapInfo; @@ -140,11 +140,11 @@ export default async function swapMarket({ if (swapExchanges.length > 0) options?.logger?.(`Swap exchanges: ${swapExchanges.join(', ')}`); - if (swapInfo?.isExactReceive && amountBN.lt(swapInfo.minAmountOut)) { + if (swapInfo?.isTradeBuy && amountBN.lt(swapInfo.minAmountOut)) { throw new Error(`Amount is too low. Min amountOut is ${swapInfo.minAmountOut} ${assetOut}`); } - if (!(swapInfo?.isExactReceive) && amountBN.lt(swapInfo.minAmountIn)) { + if (!(swapInfo?.isTradeBuy) && amountBN.lt(swapInfo.minAmountIn)) { throw new Error(`Amount is too low. Min amountIn is ${swapInfo.minAmountIn} ${assetIn}`); } @@ -202,7 +202,7 @@ export default async function swapMarket({ .multipliedBy(new BigNumber(1).plus(percent)) .toString(); - const amountSpend = swapInfo?.isExactReceive ? amountInWithSlippage : swapInfo.amountIn; + const amountSpend = swapInfo?.isTradeBuy ? amountInWithSlippage : swapInfo.amountIn; balanceGuard.registerRequirement({ reason: 'Amount spend', @@ -215,7 +215,7 @@ export default async function swapMarket({ sources: getAvailableSources('amount', assetInAddress, 'pool'), }); - const amountReceive = swapInfo?.isExactReceive ? amountOutWithSlippage : swapInfo.amountOut; + const amountReceive = swapInfo?.isTradeBuy ? amountOutWithSlippage : swapInfo.amountOut; const amountSpendBlockchainParam = normalizeNumber( amountSpend, INTERNAL_PROTOCOL_PRECISION, diff --git a/src/services/Aggregator/index.ts b/src/services/Aggregator/index.ts index 8ed790f..876fc26 100644 --- a/src/services/Aggregator/index.ts +++ b/src/services/Aggregator/index.ts @@ -268,12 +268,12 @@ class Aggregator { amount: string, instantSettlement?: boolean, exchanges?: string[] | 'cex' | 'pools', - isExactReceive?: boolean, + isTradeBuy?: boolean, ) => { const url = new URL(`${this.apiUrl}/api/v1/swap`); url.searchParams.append('assetIn', assetIn); url.searchParams.append('assetOut', assetOut); - if (isExactReceive !== true) { + if (isTradeBuy !== true) { url.searchParams.append('amountIn', amount); } else { url.searchParams.append('amountOut', amount); diff --git a/src/services/Aggregator/schemas/swapInfoSchema.ts b/src/services/Aggregator/schemas/swapInfoSchema.ts index 59de289..758e7af 100644 --- a/src/services/Aggregator/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/schemas/swapInfoSchema.ts @@ -59,7 +59,7 @@ const swapInfoByAmountIn = swapInfoBase.extend({ marketAmountIn: z.null(), }).transform((val) => ({ ...val, - isExactReceive: false as const, + isTradeBuy: false as const, })); const swapInfoByAmountOut = swapInfoBase.extend({ @@ -69,7 +69,7 @@ const swapInfoByAmountOut = swapInfoBase.extend({ marketAmountIn: z.number().nullable(), }).transform((val) => ({ ...val, - isExactReceive: true as const, + isTradeBuy: true as const, })); const swapInfoSchema = swapInfoByAmountIn.or(swapInfoByAmountOut); diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index d654e22..98629a1 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -544,10 +544,10 @@ class AggregatorWS { autoSlippage: json.sl, }; - switch (json.er) { // exactReceive + switch (json.tb) { // isTradeBuy case false: this.subscriptions[SubscriptionType.SWAP_SUBSCRIBE]?.[json.S]?.callback({ - isExactReceive: false, + isTradeBuy: false, marketAmountOut: json.mo, availableAmountIn: json.aa, ...baseSwapInfo, @@ -556,7 +556,7 @@ class AggregatorWS { break; case true: this.subscriptions[SubscriptionType.SWAP_SUBSCRIBE]?.[json.S]?.callback({ - isExactReceive: true, + isTradeBuy: true, ...baseSwapInfo, marketAmountIn: json.mi, availableAmountOut: json.aao, diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index 828f6a1..8e37fd8 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -56,7 +56,7 @@ const swapInfoSchemaByAmountIn = swapInfoSchemaBase.extend({ aa: z.number(), // available amount in }).transform((content) => ({ ...content, - er: false as const, + tb: false as const, // isTradeBuy })); const swapInfoSchemaByAmountOut = swapInfoSchemaBase.extend({ @@ -64,7 +64,7 @@ const swapInfoSchemaByAmountOut = swapInfoSchemaBase.extend({ aao: z.number(), // available amount out }).transform((content) => ({ ...content, - er: true as const, + tb: true as const, // isTradeBuy })); const swapInfoSchema = z.union([ diff --git a/src/types.ts b/src/types.ts index 1a03fcd..8696dec 100644 --- a/src/types.ts +++ b/src/types.ts @@ -216,13 +216,13 @@ export type SwapInfoBase = { } export type SwapInfoByAmountIn = SwapInfoBase & { - isExactReceive: false + isTradeBuy: false availableAmountIn?: number | undefined marketAmountOut?: number | undefined } export type SwapInfoByAmountOut = SwapInfoBase & { - isExactReceive: true + isTradeBuy: true marketAmountIn?: number | undefined availableAmountOut?: number | undefined } From 495313546de11ff6669affdc27816262504e8db9 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 23 May 2024 10:13:22 +0100 Subject: [PATCH 080/114] feat: added fee to eps in swapInfoSchema.ts --- package.json | 2 +- src/services/Aggregator/ws/schemas/swapInfoSchema.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 6fc106a..bc92500 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc111", + "version": "0.20.76-rc112", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index 48abe19..efd2cf0 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -42,6 +42,7 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ f: factorySchema, // factory aai: z.string(), // asset address in aao: z.string(), // asset address out + fee: z.number(), // fee })), usd: z.object({ // USD info of this swap, nullable aa: z.number().optional(), // available amount in, USD From eed05bd8303ad15abf5a1d494d020d645253834b Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 23 May 2024 10:42:11 +0100 Subject: [PATCH 081/114] feat: updated generateSwapCalldata with custom fee from the path --- package.json | 2 +- src/Unit/Exchange/callGenerators/uniswapV2.ts | 5 +++-- src/Unit/Exchange/generateSwapCalldata.ts | 4 ++-- src/services/Aggregator/ws/schemas/swapInfoSchema.ts | 2 +- src/types.ts | 1 + 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index bc92500..2048146 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc112", + "version": "0.20.76-rc113", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/callGenerators/uniswapV2.ts b/src/Unit/Exchange/callGenerators/uniswapV2.ts index 4526fca..9742895 100644 --- a/src/Unit/Exchange/callGenerators/uniswapV2.ts +++ b/src/Unit/Exchange/callGenerators/uniswapV2.ts @@ -19,7 +19,8 @@ export async function generateUni2Calls( currentSwap.pool, currentSwap.assetIn, currentSwap.assetOut, - nextSwap.pool + nextSwap.pool, + nextSwap.fee ) calls.push(call) } @@ -51,4 +52,4 @@ export function generateUni2Call( ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [concat([toBeHex(fee), recipient])]), ]) return addCallParams(calldata) -} \ No newline at end of file +} diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index de5e307..a600947 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -311,14 +311,14 @@ async function processMultiFactorySwaps( case 'OrionV2': { let transferCall = generateTransferCall(swap.assetIn, swap.pool, 0); transferCall = pathCallWithBalance(transferCall, swap.assetIn); - const uni2Call = generateUni2Call(swap.pool, swap.assetIn, swap.assetOut, swapExecutorContractAddress); + const uni2Call = generateUni2Call(swap.pool, swap.assetIn, swap.assetOut, swapExecutorContractAddress, swap.fee); calls.push(transferCall, uni2Call); break; } case 'UniswapV2': { let transferCall = generateTransferCall(swap.assetIn, swap.pool, 0); transferCall = pathCallWithBalance(transferCall, swap.assetIn); - const uni2Call = generateUni2Call(swap.pool, swap.assetIn, swap.assetOut, swapExecutorContractAddress); + const uni2Call = generateUni2Call(swap.pool, swap.assetIn, swap.assetOut, swapExecutorContractAddress, swap.fee); calls.push(transferCall, uni2Call); break; } diff --git a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts index efd2cf0..f153a9f 100644 --- a/src/services/Aggregator/ws/schemas/swapInfoSchema.ts +++ b/src/services/Aggregator/ws/schemas/swapInfoSchema.ts @@ -42,7 +42,7 @@ const swapInfoSchemaBase = baseMessageSchema.extend({ f: factorySchema, // factory aai: z.string(), // asset address in aao: z.string(), // asset address out - fee: z.number(), // fee + fee: z.number().optional(), // fee })), usd: z.object({ // USD info of this swap, nullable aa: z.number().optional(), // available amount in, USD diff --git a/src/types.ts b/src/types.ts index 69c5608..e19940f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -181,6 +181,7 @@ export type SingleSwap = { factory: Factory assetAddressIn: string assetAddressOut: string + fee?: number } export type SwapInfoBase = { From cec0688c8ebf45b8d093446af60358388911d5e7 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Thu, 23 May 2024 11:01:03 +0100 Subject: [PATCH 082/114] feat: updated fee type --- package.json | 2 +- src/services/Aggregator/ws/index.ts | 1 + src/types.ts | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 2048146..9aa6c78 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc113", + "version": "0.20.76-rc114", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Aggregator/ws/index.ts b/src/services/Aggregator/ws/index.ts index c7de84e..ee64bd3 100644 --- a/src/services/Aggregator/ws/index.ts +++ b/src/services/Aggregator/ws/index.ts @@ -516,6 +516,7 @@ class AggregatorWS { factory: path.f, assetAddressIn: path.aai, assetAddressOut: path.aao, + fee: path.fee, })), poolOptimal: json.po, ...(json.oi) && { diff --git a/src/types.ts b/src/types.ts index e19940f..f26da80 100644 --- a/src/types.ts +++ b/src/types.ts @@ -181,7 +181,7 @@ export type SingleSwap = { factory: Factory assetAddressIn: string assetAddressOut: string - fee?: number + fee?: number | undefined } export type SwapInfoBase = { From a1455bdda9f3b39525b0462ae27d1d235a239074 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 27 May 2024 11:51:18 +0100 Subject: [PATCH 083/114] feat: moved to swapUniV2Scaled function --- package.json | 2 +- src/Unit/Exchange/callGenerators/uniswapV2.ts | 23 +++++++++++++++---- src/Unit/Exchange/generateSwapCalldata.ts | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 9aa6c78..638a0f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc114", + "version": "0.20.76-rc115", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Unit/Exchange/callGenerators/uniswapV2.ts b/src/Unit/Exchange/callGenerators/uniswapV2.ts index 9742895..86778bc 100644 --- a/src/Unit/Exchange/callGenerators/uniswapV2.ts +++ b/src/Unit/Exchange/callGenerators/uniswapV2.ts @@ -3,6 +3,15 @@ import { SafeArray } from "../../../utils/safeGetters.js" import { type BytesLike, type BigNumberish, concat, ethers, toBeHex } from "ethers" import { addCallParams } from "./utils.js" import type { SingleSwap } from "../../../types.js" +import { BigNumber } from 'bignumber.js'; + +const BILLION = 1000000000; +const TEN_THOUSANDS = 10000; + +function countScaledFee(fee: string) { + // The count is needed for the swapUniV2Scaled function, where the denominator is one billion + return new BigNumber(fee).multipliedBy(BILLION).div(TEN_THOUSANDS).toNumber(); +} export async function generateUni2Calls( path: SafeArray, @@ -20,17 +29,20 @@ export async function generateUni2Calls( currentSwap.assetIn, currentSwap.assetOut, nextSwap.pool, - nextSwap.fee + currentSwap.fee ) calls.push(call) } } + const lastSwap = path.last(); - const calldata = executorInterface.encodeFunctionData('swapUniV2', [ + const fee = lastSwap.fee ?? 3; + const scaledFee = countScaledFee(fee.toString()); + const calldata = executorInterface.encodeFunctionData('swapUniV2Scaled', [ lastSwap.pool, lastSwap.assetIn, lastSwap.assetOut, - ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [concat(['0x03', recipient])]), + ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [concat([toBeHex(scaledFee), recipient])]), ]) calls.push(addCallParams(calldata)) @@ -45,11 +57,12 @@ export function generateUni2Call( fee: BigNumberish = 3, ) { const executorInterface = SwapExecutor__factory.createInterface() - const calldata = executorInterface.encodeFunctionData('swapUniV2', [ + const scaledFee = countScaledFee(fee.toString()); + const calldata = executorInterface.encodeFunctionData('swapUniV2Scaled', [ pool, assetIn, assetOut, - ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [concat([toBeHex(fee), recipient])]), + ethers.AbiCoder.defaultAbiCoder().encode(['uint256'], [concat([toBeHex(scaledFee), recipient])]), ]) return addCallParams(calldata) } diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index a600947..d58a68a 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -135,7 +135,7 @@ export async function generateSwapCalldata({ swapInfo.assetOut = swapInfo.assetOut.toLowerCase() return swapInfo; }); - console.log('path', path); + logger?.(`path: ${path}`); const { assetIn: srcToken } = path.first(); const { assetOut: dstToken } = path.last(); From 143bc2dc38140dfc933226545d27963da6e332c4 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 27 May 2024 15:27:19 +0100 Subject: [PATCH 084/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 638a0f8..2f7a719 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.76-rc115", + "version": "0.21.2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 3572aba81393c6b511440c37216ac643a9d4657c Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 28 May 2024 15:12:35 +0100 Subject: [PATCH 085/114] feat: changed default fee --- src/Unit/Exchange/callGenerators/uniswapV2.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Unit/Exchange/callGenerators/uniswapV2.ts b/src/Unit/Exchange/callGenerators/uniswapV2.ts index 86778bc..4fa1566 100644 --- a/src/Unit/Exchange/callGenerators/uniswapV2.ts +++ b/src/Unit/Exchange/callGenerators/uniswapV2.ts @@ -36,7 +36,7 @@ export async function generateUni2Calls( } const lastSwap = path.last(); - const fee = lastSwap.fee ?? 3; + const fee = lastSwap.fee ?? 30; const scaledFee = countScaledFee(fee.toString()); const calldata = executorInterface.encodeFunctionData('swapUniV2Scaled', [ lastSwap.pool, @@ -54,7 +54,7 @@ export function generateUni2Call( assetIn: string, assetOut: string, recipient: string, - fee: BigNumberish = 3, + fee: BigNumberish = 30, ) { const executorInterface = SwapExecutor__factory.createInterface() const scaledFee = countScaledFee(fee.toString()); From 4ccfce8efa9f4a42b5e635e497ac44104b650f1b Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 28 May 2024 15:13:16 +0100 Subject: [PATCH 086/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2f7a719..769c078 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.21.2", + "version": "0.21.3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From f9e8443e8c202188d2300d47e6d48b967c140549 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Thu, 30 May 2024 15:49:40 +0300 Subject: [PATCH 087/114] bump version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b166e41..6c7095a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc8", + "version": "0.21.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc8", + "version": "0.21.4", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index afeddfe..e6dd48b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.20.88-rc9", + "version": "0.21.4", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 2c89b2ec4c721988e0e9a758f829de966ae38acc Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Thu, 30 May 2024 16:12:01 +0300 Subject: [PATCH 088/114] bump version --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c7095a..72ed395 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.21.4", + "version": "0.22.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.21.4", + "version": "0.22.0", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index e6dd48b..e4fd701 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.21.4", + "version": "0.22.0", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 0d20d804c3796e1b034a0fb992e4ea92650f26ca Mon Sep 17 00:00:00 2001 From: Den Great Date: Tue, 11 Jun 2024 18:45:13 +0800 Subject: [PATCH 089/114] aero --- .gitignore | 1 + package-lock.json | 14 +++++----- package.json | 2 +- src/BalanceGuard.ts | 2 +- src/Unit/Exchange/callGenerators/aero.ts | 27 +++++++++++++++++++ src/Unit/Exchange/callGenerators/curve.ts | 4 +-- src/Unit/Exchange/callGenerators/erc20.ts | 6 ++--- .../Exchange/callGenerators/feePayment.ts | 4 +-- src/Unit/Exchange/callGenerators/uniswapV2.ts | 2 +- src/Unit/Exchange/callGenerators/uniswapV3.ts | 2 +- src/Unit/Exchange/callGenerators/utils.ts | 2 +- src/Unit/Exchange/callGenerators/weth.ts | 6 ++--- src/Unit/Exchange/deposit.ts | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 9 +++++-- src/Unit/Exchange/swapLimit.ts | 2 +- src/Unit/Exchange/swapMarket.ts | 2 +- src/Unit/Exchange/withdraw.ts | 2 +- src/Unit/Pmm/index.ts | 2 +- src/constants/factories.ts | 2 +- src/utils/checkIsToken.ts | 2 +- src/utils/getBalance.ts | 4 +-- src/utils/getBalances.ts | 2 +- src/utils/parseExchangeTradeTransaction.ts | 2 +- 23 files changed, 68 insertions(+), 35 deletions(-) create mode 100644 src/Unit/Exchange/callGenerators/aero.ts diff --git a/.gitignore b/.gitignore index b095e41..60f9c3c 100644 --- a/.gitignore +++ b/.gitignore @@ -132,3 +132,4 @@ lib .pnp.* src/artifacts/contracts/ +.DS_store \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 72ed395..40ff5cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@babel/runtime": "^7.21.0", "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/providers": "^5.7.2", - "@orionprotocol/contracts": "1.23.3", + "@orionprotocol/contracts": "^1.23.9", "@types/lodash.clonedeep": "^4.5.9", "bignumber.js": "^9.1.1", "bson-objectid": "^2.0.4", @@ -2422,9 +2422,9 @@ } }, "node_modules/@orionprotocol/contracts": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/@orionprotocol/contracts/-/contracts-1.23.3.tgz", - "integrity": "sha512-3PBnuiUe//v7COArcm/dzFx71vxW+a9emU4PHi1zBdow+OUAa4WNb+NmNZ3AOjnx2AZKK+gWJY+zKo1zSfAOHQ==" + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/@orionprotocol/contracts/-/contracts-1.23.9.tgz", + "integrity": "sha512-tx21XokSK8kBYmuzfYrXoDattirm6yaG3dslrOKZTHgGP1wC6c6SbQF69pVCCAnPNGvQCt4lw0I/8fxm9Cx23Q==" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -13489,9 +13489,9 @@ } }, "@orionprotocol/contracts": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/@orionprotocol/contracts/-/contracts-1.23.3.tgz", - "integrity": "sha512-3PBnuiUe//v7COArcm/dzFx71vxW+a9emU4PHi1zBdow+OUAa4WNb+NmNZ3AOjnx2AZKK+gWJY+zKo1zSfAOHQ==" + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/@orionprotocol/contracts/-/contracts-1.23.9.tgz", + "integrity": "sha512-tx21XokSK8kBYmuzfYrXoDattirm6yaG3dslrOKZTHgGP1wC6c6SbQF69pVCCAnPNGvQCt4lw0I/8fxm9Cx23Q==" }, "@sinclair/typebox": { "version": "0.27.8", diff --git a/package.json b/package.json index e4fd701..cebc429 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@babel/runtime": "^7.21.0", "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/providers": "^5.7.2", - "@orionprotocol/contracts": "1.23.3", + "@orionprotocol/contracts": "^1.23.9", "@types/lodash.clonedeep": "^4.5.9", "bignumber.js": "^9.1.1", "bson-objectid": "^2.0.4", diff --git a/src/BalanceGuard.ts b/src/BalanceGuard.ts index 9d0b881..2308313 100644 --- a/src/BalanceGuard.ts +++ b/src/BalanceGuard.ts @@ -1,7 +1,7 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; import clone from 'just-clone'; -import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import { APPROVE_ERC20_GAS_LIMIT, NATIVE_CURRENCY_PRECISION } from './constants/index.js'; import type { AggregatedBalanceRequirement, ApproveFix, Asset, BalanceIssue, BalanceRequirement, Source, diff --git a/src/Unit/Exchange/callGenerators/aero.ts b/src/Unit/Exchange/callGenerators/aero.ts new file mode 100644 index 0000000..fc235fd --- /dev/null +++ b/src/Unit/Exchange/callGenerators/aero.ts @@ -0,0 +1,27 @@ +import { SwapExecutor__factory, AeroPool__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" +import { type BigNumberish, JsonRpcProvider } from "ethers" +import { SafeArray } from "../../../utils/safeGetters.js" +import { addCallParams } from "./utils.js" +import type { SingleSwap } from "../../../types.js" + +export async function generateAeroCalls( + path: SafeArray, + amount: BigNumberish, + recipient: string, + provider: JsonRpcProvider +) { + const pools: string[] = []; + const direct: boolean[] = []; + for (const swap of path) { + pools.push(swap.pool); + + const token0 = await AeroPool__factory.connect(swap.pool, provider).token0(); + direct.push(swap.assetIn.toLowerCase() === token0.toLowerCase()); + } + + const executorInterface = SwapExecutor__factory.createInterface() + let calldata = executorInterface.encodeFunctionData('swapAeroMulti', [pools, direct, amount, recipient]); + calldata = addCallParams(calldata) + + return [calldata] +} diff --git a/src/Unit/Exchange/callGenerators/curve.ts b/src/Unit/Exchange/callGenerators/curve.ts index 69eeb2d..596854e 100644 --- a/src/Unit/Exchange/callGenerators/curve.ts +++ b/src/Unit/Exchange/callGenerators/curve.ts @@ -2,7 +2,7 @@ import { SwapExecutor__factory, CurveRegistry__factory, ERC20__factory, -} from "@orionprotocol/contracts/lib/ethers-v6/index.js"; +} from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js"; import { MaxUint256, type BigNumberish, type JsonRpcProvider } from "ethers"; import { addCallParams, pathCallWithBalance } from "./utils.js"; import type { SingleSwap } from "../../../types.js"; @@ -45,5 +45,5 @@ export async function generateCurveStableSwapCall( } calls.push(calldata) - return calls + return calls } diff --git a/src/Unit/Exchange/callGenerators/erc20.ts b/src/Unit/Exchange/callGenerators/erc20.ts index bd54dd2..cc823d6 100644 --- a/src/Unit/Exchange/callGenerators/erc20.ts +++ b/src/Unit/Exchange/callGenerators/erc20.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" +import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" import type { BigNumberish, AddressLike } from "ethers" import { type CallParams, addCallParams } from "./utils.js" @@ -15,7 +15,7 @@ export function generateTransferCall( target, amount ]) - + return addCallParams(calldata, callParams) } @@ -31,6 +31,6 @@ export function generateApproveCall( target, amount ]) - + return addCallParams(calldata, callParams) } \ No newline at end of file diff --git a/src/Unit/Exchange/callGenerators/feePayment.ts b/src/Unit/Exchange/callGenerators/feePayment.ts index ee1eb29..ccff002 100644 --- a/src/Unit/Exchange/callGenerators/feePayment.ts +++ b/src/Unit/Exchange/callGenerators/feePayment.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" +import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" import type { BigNumberish, AddressLike } from "ethers" import { type CallParams, addCallParams } from "./utils.js" @@ -16,6 +16,6 @@ export function generateFeePaymentCall( token, amount ]) - + return addCallParams(calldata, callParams) } \ No newline at end of file diff --git a/src/Unit/Exchange/callGenerators/uniswapV2.ts b/src/Unit/Exchange/callGenerators/uniswapV2.ts index 4fa1566..53d26b5 100644 --- a/src/Unit/Exchange/callGenerators/uniswapV2.ts +++ b/src/Unit/Exchange/callGenerators/uniswapV2.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" +import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" import { SafeArray } from "../../../utils/safeGetters.js" import { type BytesLike, type BigNumberish, concat, ethers, toBeHex } from "ethers" import { addCallParams } from "./utils.js" diff --git a/src/Unit/Exchange/callGenerators/uniswapV3.ts b/src/Unit/Exchange/callGenerators/uniswapV3.ts index 67bfcec..2da58f1 100644 --- a/src/Unit/Exchange/callGenerators/uniswapV3.ts +++ b/src/Unit/Exchange/callGenerators/uniswapV3.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory, UniswapV3Pool__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" +import { SwapExecutor__factory, UniswapV3Pool__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" import { type BigNumberish , ethers, JsonRpcProvider } from "ethers" import { SafeArray } from "../../../utils/safeGetters.js" import { addCallParams } from "./utils.js" diff --git a/src/Unit/Exchange/callGenerators/utils.ts b/src/Unit/Exchange/callGenerators/utils.ts index b61dc4b..bf0c812 100644 --- a/src/Unit/Exchange/callGenerators/utils.ts +++ b/src/Unit/Exchange/callGenerators/utils.ts @@ -1,4 +1,4 @@ -import { ERC20__factory, SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" +import { ERC20__factory, SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" import type { AddressLike } from "ethers" import { type BytesLike, ethers, type BigNumberish } from "ethers" diff --git a/src/Unit/Exchange/callGenerators/weth.ts b/src/Unit/Exchange/callGenerators/weth.ts index 7aaf566..1e2b7e3 100644 --- a/src/Unit/Exchange/callGenerators/weth.ts +++ b/src/Unit/Exchange/callGenerators/weth.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" +import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" import type { BigNumberish } from "ethers" import { type CallParams, addCallParams } from "./utils.js" import type { AddressLike } from "ethers" @@ -12,7 +12,7 @@ export function generateWrapAndTransferCall( const calldata = executorInterface.encodeFunctionData('wrapAndTransfer', [ target, ]) - + return addCallParams(calldata, callParams) } @@ -27,6 +27,6 @@ export function generateUnwrapAndTransferCall( target, amount ]) - + return addCallParams(calldata, callParams) } \ No newline at end of file diff --git a/src/Unit/Exchange/deposit.ts b/src/Unit/Exchange/deposit.ts index d257244..93f4d71 100644 --- a/src/Unit/Exchange/deposit.ts +++ b/src/Unit/Exchange/deposit.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import type Unit from '../index.js'; diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index d58a68a..1b7b350 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -1,4 +1,4 @@ -import type { LibValidator } from '@orionprotocol/contracts/lib/ethers-v6/Exchange.js'; +import type { LibValidator } from '@orionprotocol/contracts/lib/ethers-v6-cjs/Exchange.js'; import { ethers, ZeroAddress } from 'ethers'; import type { AddressLike, JsonRpcProvider, BigNumberish, BytesLike } from 'ethers'; import cloneDeep from 'lodash.clonedeep'; @@ -20,8 +20,9 @@ import { addressLikeToString } from '../../utils/addressLikeToString.js'; import { generateUnwrapAndTransferCall, generateWrapAndTransferCall } from './callGenerators/weth.js'; import { getExchangeAllowance, getTotalBalance } from '../../utils/getBalance.js'; import { generateFeePaymentCall } from './callGenerators/feePayment.js'; +import { generateAeroCalls } from './callGenerators/aero.js'; -export type Factory = 'UniswapV2' | 'UniswapV3' | 'Curve' | 'OrionV2' | 'OrionV3'; +export type Factory = 'UniswapV2' | 'UniswapV3' | 'Curve' | 'OrionV2' | 'OrionV3' | 'Aero'; type BaseGenerateSwapCalldataParams = { amount: BigNumberish @@ -276,6 +277,10 @@ async function processSingleFactorySwaps( calls = await generateOrion3Calls(path, amount, swapExecutorContractAddress, provider); break; } + case "Aero": { + calls = await generateAeroCalls(path, amount, swapExecutorContractAddress, provider); + break; + } case 'Curve': { if (path.length > 1) { throw new Error('Supporting only single stable swap on curve'); diff --git a/src/Unit/Exchange/swapLimit.ts b/src/Unit/Exchange/swapLimit.ts index 19ae300..b2d4886 100644 --- a/src/Unit/Exchange/swapLimit.ts +++ b/src/Unit/Exchange/swapLimit.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import getAvailableSources from '../../utils/getAvailableFundsSources.js'; diff --git a/src/Unit/Exchange/swapMarket.ts b/src/Unit/Exchange/swapMarket.ts index 934e2bb..20a0d99 100644 --- a/src/Unit/Exchange/swapMarket.ts +++ b/src/Unit/Exchange/swapMarket.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import getAvailableSources from '../../utils/getAvailableFundsSources.js'; diff --git a/src/Unit/Exchange/withdraw.ts b/src/Unit/Exchange/withdraw.ts index 9b5d2d7..7e400d7 100644 --- a/src/Unit/Exchange/withdraw.ts +++ b/src/Unit/Exchange/withdraw.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import type Unit from '../index.js'; diff --git a/src/Unit/Pmm/index.ts b/src/Unit/Pmm/index.ts index d4f1c57..1c8b1f5 100644 --- a/src/Unit/Pmm/index.ts +++ b/src/Unit/Pmm/index.ts @@ -4,7 +4,7 @@ import {pmmOrderSchema} from "./schemas/order"; import {simpleFetch} from "simple-typed-fetch"; import {ethers, Wallet} from "ethers"; import {BigNumber} from "bignumber.js"; -import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import {orionRFQContractABI} from "./abi/OrionRFQ"; export default class Pmm { diff --git a/src/constants/factories.ts b/src/constants/factories.ts index 200d3e2..92bdc16 100644 --- a/src/constants/factories.ts +++ b/src/constants/factories.ts @@ -1 +1 @@ -export default ["UniswapV2", "UniswapV3", "Curve", "OrionV2", "OrionV3"] as const +export default ["UniswapV2", "UniswapV3", "Curve", "OrionV2", "OrionV3", "Aero"] as const diff --git a/src/utils/checkIsToken.ts b/src/utils/checkIsToken.ts index 5be176a..d55c45d 100644 --- a/src/utils/checkIsToken.ts +++ b/src/utils/checkIsToken.ts @@ -1,4 +1,4 @@ -import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import { ethers } from 'ethers'; import invariant from 'tiny-invariant'; diff --git a/src/utils/getBalance.ts b/src/utils/getBalance.ts index c863f65..10b3838 100644 --- a/src/utils/getBalance.ts +++ b/src/utils/getBalance.ts @@ -1,4 +1,4 @@ -import { ERC20__factory, Exchange__factory, type Exchange } from "@orionprotocol/contracts/lib/ethers-v6/index.js"; +import { ERC20__factory, Exchange__factory, type Exchange } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js"; import type { BigNumber } from "bignumber.js"; import { ZeroAddress, ethers } from "ethers"; import { INTERNAL_PROTOCOL_PRECISION, NATIVE_CURRENCY_PRECISION } from "../constants/index.js"; @@ -195,5 +195,5 @@ export async function getTotalBalance( walletBalance, exchangeBalance, totalBalance: walletBalance + exchangeBalance - } + } } diff --git a/src/utils/getBalances.ts b/src/utils/getBalances.ts index f9e5390..02527cc 100644 --- a/src/utils/getBalances.ts +++ b/src/utils/getBalances.ts @@ -1,4 +1,4 @@ -import type { Exchange } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import type { Exchange } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import type { BigNumber } from 'bignumber.js'; import type { ethers } from 'ethers'; import type { Aggregator } from '../services/Aggregator/index.js'; diff --git a/src/utils/parseExchangeTradeTransaction.ts b/src/utils/parseExchangeTradeTransaction.ts index 9b59093..7f63a85 100644 --- a/src/utils/parseExchangeTradeTransaction.ts +++ b/src/utils/parseExchangeTradeTransaction.ts @@ -1,4 +1,4 @@ -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import { ethers } from 'ethers'; import { z } from 'zod'; From 78c66fabe25532a4a23a7bb7cfdd81d039803b4b Mon Sep 17 00:00:00 2001 From: Den Great Date: Tue, 11 Jun 2024 18:49:37 +0800 Subject: [PATCH 090/114] 0.22.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 40ff5cc..70c5895 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.0", + "version": "0.22.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.22.0", + "version": "0.22.2", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index cebc429..81a2949 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.0", + "version": "0.22.2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 233718bb78974868baf534ee13c35b5ec2ec1048 Mon Sep 17 00:00:00 2001 From: Den Great Date: Tue, 11 Jun 2024 19:04:40 +0800 Subject: [PATCH 091/114] 0.22.3: esm contracts fix --- package-lock.json | 4 ++-- package.json | 2 +- src/Orion/bridge/swap.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 70c5895..aebbd2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.2", + "version": "0.22.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.22.2", + "version": "0.22.3", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 81a2949..539209a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.2", + "version": "0.22.3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/Orion/bridge/swap.ts b/src/Orion/bridge/swap.ts index 4bb8352..f527fbd 100644 --- a/src/Orion/bridge/swap.ts +++ b/src/Orion/bridge/swap.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import getAvailableSources from '../../utils/getAvailableFundsSources.js'; From f8b52aaa02e259c5e83f8e4b6adfa2bed1dbd25d Mon Sep 17 00:00:00 2001 From: Dmitry <35160421+TheJuze@users.noreply.github.com> Date: Tue, 11 Jun 2024 16:14:52 +0300 Subject: [PATCH 092/114] actualize testnet chains (#260) --- src/__tests__/basic.test.ts | 22 ++------- src/config/chains.json | 91 ------------------------------------- src/config/envs.json | 90 ------------------------------------ src/constants/chains.ts | 6 --- src/types.ts | 57 ++++++++++------------- 5 files changed, 30 insertions(+), 236 deletions(-) diff --git a/src/__tests__/basic.test.ts b/src/__tests__/basic.test.ts index d4de381..76fb063 100644 --- a/src/__tests__/basic.test.ts +++ b/src/__tests__/basic.test.ts @@ -81,7 +81,7 @@ describe('Orion', () => { test('Init Orion testing', () => { const orion = new Orion('testing'); expect(orion.referralSystem).toBeInstanceOf(ReferralSystem); - expect(orion.unitsArray.length).toBe(4); // eth, bsc, polygon, fantom + expect(orion.unitsArray.length).toBe(2); // eth, bsc const unitBSC = orion.units[SupportedChainId.BSC_TESTNET]; expect(unitBSC?.chainId).toBe(SupportedChainId.BSC_TESTNET); @@ -89,23 +89,11 @@ describe('Orion', () => { expect(orion.getSiblingsOf(SupportedChainId.BSC_TESTNET)).toHaveLength(3); expect(unitBSC?.networkCode).toBe('bsc'); - const unitRopsten = orion.units[SupportedChainId.ROPSTEN] - expect(unitRopsten?.chainId).toBe(SupportedChainId.ROPSTEN); + const unitSepolia = orion.units[SupportedChainId.SEPOLIA] + expect(unitSepolia?.chainId).toBe(SupportedChainId.SEPOLIA); // expect(unitRopsten?.env).toBe('testing'); - expect(orion.getSiblingsOf(SupportedChainId.ROPSTEN)).toHaveLength(3); - expect(unitRopsten?.networkCode).toBe('eth'); - - const unitPolygon = orion.units[SupportedChainId.POLYGON_TESTNET]; - expect(unitPolygon?.chainId).toBe(SupportedChainId.POLYGON_TESTNET); - // expect(unitPolygon?.env).toBe('testing'); - expect(orion.getSiblingsOf(SupportedChainId.POLYGON_TESTNET)).toHaveLength(3); - expect(unitPolygon?.networkCode).toBe('polygon'); - - const unitFantom = orion.units[SupportedChainId.FANTOM_TESTNET]; - expect(unitFantom?.chainId).toBe(SupportedChainId.FANTOM_TESTNET); - // expect(unitFantom?.env).toBe('testing'); - expect(orion.getSiblingsOf(SupportedChainId.FANTOM_TESTNET)).toHaveLength(3); - expect(unitFantom?.networkCode).toBe('ftm'); + expect(orion.getSiblingsOf(SupportedChainId.SEPOLIA)).toHaveLength(3); + expect(unitSepolia?.networkCode).toBe('eth'); }); test('Init Orion production', () => { diff --git a/src/config/chains.json b/src/config/chains.json index 3607a21..4afb939 100644 --- a/src/config/chains.json +++ b/src/config/chains.json @@ -51,32 +51,6 @@ "curveRegistry": "" } }, - "3": { - "chainId": "3", - "explorer": "https://ropsten.etherscan.io/", - "label": "Ropsten", - "shortName": "ETH-Ropsten", - "code": "eth", - "rpc": "https://testing.orion.xyz/eth-ropsten/rpc", - "baseCurrencyName": "ETH", - "contracts": { - "WETH": "", - "curveRegistry": "" - } - }, - "5": { - "chainId": "5", - "explorer": "https://goerli.etherscan.io/", - "label": "Goerli", - "shortName": "ETH-Goerli", - "code": "eth", - "rpc": "https://testing.orion.xyz/eth-goerli/rpc", - "baseCurrencyName": "ETH", - "contracts": { - "WETH": "", - "curveRegistry": "" - } - }, "11155111": { "chainId": "11155111", "explorer": "https://sepolia.etherscan.io/", @@ -90,19 +64,6 @@ "curveRegistry": "" } }, - "421613": { - "chainId": "421613", - "explorer": "https://goerli.arbiscan.io/", - "label": "Arbitrum Goerli", - "shortName": "Arbitrum Goerli", - "code": "arb", - "rpc": "https://goerli-rollup.arbitrum.io/rpc", - "baseCurrencyName": "ETH", - "contracts": { - "WETH": "", - "curveRegistry": "" - } - }, "42161": { "chainId": "42161", "explorer": "https://arbiscan.io/", @@ -116,19 +77,6 @@ "curveRegistry": "0x445FE580eF8d70FF569aB36e80c647af338db351" } }, - "4002": { - "chainId": "4002", - "explorer": "https://testnet.ftmscan.com/", - "label": "Fantom Testnet", - "shortName": "FTM-Testnet", - "code": "ftm", - "rpc": "https://rpc.testnet.fantom.network/", - "baseCurrencyName": "FTM", - "contracts": { - "WETH": "", - "curveRegistry": "" - } - }, "250": { "chainId": "250", "explorer": "https://ftmscan.com/", @@ -155,19 +103,6 @@ "curveRegistry": "0x094d12e5b541784701FD8d65F11fc0598FBC6332" } }, - "80001": { - "chainId": "80001", - "label": "Polygon Mumbai", - "shortName": "Polygon Mumbai", - "code": "polygon", - "baseCurrencyName": "MATIC", - "rpc": "https://rpc.ankr.com/polygon_mumbai", - "explorer": "https://mumbai.polygonscan.com/", - "contracts": { - "WETH": "", - "curveRegistry": "" - } - }, "66": { "chainId": "66", "explorer": "https://www.oklink.com/okc/", @@ -181,32 +116,6 @@ "curveRegistry": "" } }, - "65": { - "chainId": "65", - "explorer": "https://www.oklink.com/okc-test/", - "label": "OKC Testnet", - "shortName": "OKC-Testnet", - "code": "okc", - "rpc": "https://exchaintestrpc.okex.org/", - "baseCurrencyName": "OKT", - "contracts": { - "WETH": "", - "curveRegistry": "" - } - }, - "56303": { - "chainId": "56303", - "label": "DRIP Chain", - "shortName": "DRIP Chain", - "code": "drip", - "baseCurrencyName": "DRIP", - "rpc": "https://testnet.1d.rip/", - "explorer": "https://explorer-testnet.1d.rip/", - "contracts": { - "WETH": "", - "curveRegistry": "" - } - }, "2525": { "chainId": "2525", "label": "inEVM", diff --git a/src/config/envs.json b/src/config/envs.json index adaf1ce..445649e 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -244,78 +244,6 @@ "http": "/orion-indexer/" } } - }, - "421613": { - "api": "https://testing.orion.xyz/arbitrum-goerli", - "services": { - "aggregator": { - "http": "/backend", - "ws": "/v1" - }, - "blockchain": { - "http": "" - }, - "priceFeed": { - "all": "/price-feed" - }, - "indexer": { - "http": "/orion-indexer/" - } - } - }, - "4002": { - "api": "https://testing.orion.xyz/ftm-testnet", - "services": { - "aggregator": { - "http": "/backend", - "ws": "/v1" - }, - "blockchain": { - "http": "" - }, - "priceFeed": { - "all": "/price-feed" - }, - "indexer": { - "http": "/orion-indexer/" - } - } - }, - "80001": { - "api": "https://testing.orion.xyz/polygon-mumbai", - "services": { - "aggregator": { - "http": "/backend", - "ws": "/v1" - }, - "blockchain": { - "http": "" - }, - "priceFeed": { - "all": "/price-feed" - }, - "indexer": { - "http": "/orion-indexer/" - } - } - }, - "56303": { - "api": "https://testing.orion.xyz/drip-testnet", - "services": { - "aggregator": { - "http": "/backend", - "ws": "/v1" - }, - "blockchain": { - "http": "" - }, - "priceFeed": { - "all": "/price-feed" - }, - "indexer": { - "http": "/orion-indexer/" - } - } } } }, @@ -544,24 +472,6 @@ "http": "/orion-indexer/" } } - }, - "3": { - "api": "https://dn-dev.orion.xyz/eth-ropsten", - "services": { - "aggregator": { - "http": "/backend", - "ws": "/v1" - }, - "blockchain": { - "http": "" - }, - "priceFeed": { - "all": "/price-feed" - }, - "indexer": { - "http": "/orion-indexer/" - } - } } } }, diff --git a/src/constants/chains.ts b/src/constants/chains.ts index df0bd2f..621b947 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -2,13 +2,7 @@ import { SupportedChainId } from '../types.js'; export const developmentChains = [ SupportedChainId.BSC_TESTNET, - SupportedChainId.ROPSTEN, - SupportedChainId.GOERLI, SupportedChainId.SEPOLIA, - SupportedChainId.ARBITRUM_GOERLI, - SupportedChainId.FANTOM_TESTNET, - SupportedChainId.POLYGON_TESTNET, - SupportedChainId.OKC_TESTNET, ]; export const productionChains = [ SupportedChainId.MAINNET, diff --git a/src/types.ts b/src/types.ts index c02bc8f..72ec8dc 100644 --- a/src/types.ts +++ b/src/types.ts @@ -82,26 +82,19 @@ export type Pair = { export enum SupportedChainId { MAINNET = '1', - ARBITRUM = '42161', - FANTOM_OPERA = '250', - POLYGON = '137', - OKC = '66', - OPBNB = '204', - INEVM = '2525', - LINEA = '59144', - AVAX = '43114', - BASE = '8453', - - ROPSTEN = '3', - GOERLI = '5', - SEPOLIA = '11155111', - POLYGON_TESTNET = '80001', - FANTOM_TESTNET = '4002', BSC = '56', + OKC = '66', + POLYGON = '137', + OPBNB = '204', + FANTOM_OPERA = '250', + INEVM = '2525', + BASE = '8453', + ARBITRUM = '42161', + AVAX = '43114', + LINEA = '59144', + BSC_TESTNET = '97', - OKC_TESTNET = '65', - DRIP_TESTNET = '56303', - ARBITRUM_GOERLI = '421613', + SEPOLIA = '11155111', // For testing and debug purpose // BROKEN = '0', @@ -291,22 +284,22 @@ export type EnvConfig = { referralAPI: string frontageAPI: string networks: Partial< - Record< - SupportedChainId, - VerboseUnitConfig + Record< + SupportedChainId, + VerboseUnitConfig + > > - > } export type AggregatedAssets = Partial< - Record< - string, - Partial< - Record + Record< + string, + Partial< + Record + > > - > - >; +>; export type RedeemOrder = { sender: string @@ -446,9 +439,9 @@ type BridgeHistory = Awaited>; type BridgeHistoryItem = NonNullable; export type AtomicSwap = Partial< - Omit + Omit > & Partial< - Omit + Omit > & { sourceChainId: SupportedChainId targetChainId: SupportedChainId From bdbac70be6f93dc5b0e74b9ea600be09253fb6b7 Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 11 Jun 2024 16:15:33 +0300 Subject: [PATCH 093/114] bump v --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index aebbd2f..b0d5b2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.3", + "version": "0.22.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.22.3", + "version": "0.22.4", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 539209a..0be1c52 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.3", + "version": "0.22.4", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From d93578d03f7d48c8b600388b06d173c6d5ccc274 Mon Sep 17 00:00:00 2001 From: Den Great Date: Tue, 11 Jun 2024 21:57:54 +0800 Subject: [PATCH 094/114] cjs -> esm --- src/BalanceGuard.ts | 2 +- src/Orion/bridge/swap.ts | 2 +- src/Unit/Exchange/callGenerators/aero.ts | 2 +- src/Unit/Exchange/callGenerators/curve.ts | 2 +- src/Unit/Exchange/callGenerators/erc20.ts | 2 +- src/Unit/Exchange/callGenerators/feePayment.ts | 2 +- src/Unit/Exchange/callGenerators/uniswapV2.ts | 2 +- src/Unit/Exchange/callGenerators/uniswapV3.ts | 2 +- src/Unit/Exchange/callGenerators/utils.ts | 2 +- src/Unit/Exchange/callGenerators/weth.ts | 2 +- src/Unit/Exchange/deposit.ts | 2 +- src/Unit/Exchange/generateSwapCalldata.ts | 2 +- src/Unit/Exchange/swapLimit.ts | 2 +- src/Unit/Exchange/swapMarket.ts | 2 +- src/Unit/Exchange/withdraw.ts | 2 +- src/Unit/Pmm/index.ts | 2 +- src/utils/checkIsToken.ts | 2 +- src/utils/getBalance.ts | 2 +- src/utils/getBalances.ts | 2 +- src/utils/parseExchangeTradeTransaction.ts | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/BalanceGuard.ts b/src/BalanceGuard.ts index 2308313..9d0b881 100644 --- a/src/BalanceGuard.ts +++ b/src/BalanceGuard.ts @@ -1,7 +1,7 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; import clone from 'just-clone'; -import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import { APPROVE_ERC20_GAS_LIMIT, NATIVE_CURRENCY_PRECISION } from './constants/index.js'; import type { AggregatedBalanceRequirement, ApproveFix, Asset, BalanceIssue, BalanceRequirement, Source, diff --git a/src/Orion/bridge/swap.ts b/src/Orion/bridge/swap.ts index f527fbd..4bb8352 100644 --- a/src/Orion/bridge/swap.ts +++ b/src/Orion/bridge/swap.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import getAvailableSources from '../../utils/getAvailableFundsSources.js'; diff --git a/src/Unit/Exchange/callGenerators/aero.ts b/src/Unit/Exchange/callGenerators/aero.ts index fc235fd..755c49a 100644 --- a/src/Unit/Exchange/callGenerators/aero.ts +++ b/src/Unit/Exchange/callGenerators/aero.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory, AeroPool__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" +import { SwapExecutor__factory, AeroPool__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" import { type BigNumberish, JsonRpcProvider } from "ethers" import { SafeArray } from "../../../utils/safeGetters.js" import { addCallParams } from "./utils.js" diff --git a/src/Unit/Exchange/callGenerators/curve.ts b/src/Unit/Exchange/callGenerators/curve.ts index 596854e..6b9de2b 100644 --- a/src/Unit/Exchange/callGenerators/curve.ts +++ b/src/Unit/Exchange/callGenerators/curve.ts @@ -2,7 +2,7 @@ import { SwapExecutor__factory, CurveRegistry__factory, ERC20__factory, -} from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js"; +} from "@orionprotocol/contracts/lib/ethers-v6/index.js"; import { MaxUint256, type BigNumberish, type JsonRpcProvider } from "ethers"; import { addCallParams, pathCallWithBalance } from "./utils.js"; import type { SingleSwap } from "../../../types.js"; diff --git a/src/Unit/Exchange/callGenerators/erc20.ts b/src/Unit/Exchange/callGenerators/erc20.ts index cc823d6..b32efce 100644 --- a/src/Unit/Exchange/callGenerators/erc20.ts +++ b/src/Unit/Exchange/callGenerators/erc20.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" +import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" import type { BigNumberish, AddressLike } from "ethers" import { type CallParams, addCallParams } from "./utils.js" diff --git a/src/Unit/Exchange/callGenerators/feePayment.ts b/src/Unit/Exchange/callGenerators/feePayment.ts index ccff002..a16f4b1 100644 --- a/src/Unit/Exchange/callGenerators/feePayment.ts +++ b/src/Unit/Exchange/callGenerators/feePayment.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" +import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" import type { BigNumberish, AddressLike } from "ethers" import { type CallParams, addCallParams } from "./utils.js" diff --git a/src/Unit/Exchange/callGenerators/uniswapV2.ts b/src/Unit/Exchange/callGenerators/uniswapV2.ts index 53d26b5..4fa1566 100644 --- a/src/Unit/Exchange/callGenerators/uniswapV2.ts +++ b/src/Unit/Exchange/callGenerators/uniswapV2.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" +import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" import { SafeArray } from "../../../utils/safeGetters.js" import { type BytesLike, type BigNumberish, concat, ethers, toBeHex } from "ethers" import { addCallParams } from "./utils.js" diff --git a/src/Unit/Exchange/callGenerators/uniswapV3.ts b/src/Unit/Exchange/callGenerators/uniswapV3.ts index 2da58f1..67bfcec 100644 --- a/src/Unit/Exchange/callGenerators/uniswapV3.ts +++ b/src/Unit/Exchange/callGenerators/uniswapV3.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory, UniswapV3Pool__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" +import { SwapExecutor__factory, UniswapV3Pool__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" import { type BigNumberish , ethers, JsonRpcProvider } from "ethers" import { SafeArray } from "../../../utils/safeGetters.js" import { addCallParams } from "./utils.js" diff --git a/src/Unit/Exchange/callGenerators/utils.ts b/src/Unit/Exchange/callGenerators/utils.ts index bf0c812..b61dc4b 100644 --- a/src/Unit/Exchange/callGenerators/utils.ts +++ b/src/Unit/Exchange/callGenerators/utils.ts @@ -1,4 +1,4 @@ -import { ERC20__factory, SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" +import { ERC20__factory, SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" import type { AddressLike } from "ethers" import { type BytesLike, ethers, type BigNumberish } from "ethers" diff --git a/src/Unit/Exchange/callGenerators/weth.ts b/src/Unit/Exchange/callGenerators/weth.ts index 1e2b7e3..059e3c7 100644 --- a/src/Unit/Exchange/callGenerators/weth.ts +++ b/src/Unit/Exchange/callGenerators/weth.ts @@ -1,4 +1,4 @@ -import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js" +import { SwapExecutor__factory } from "@orionprotocol/contracts/lib/ethers-v6/index.js" import type { BigNumberish } from "ethers" import { type CallParams, addCallParams } from "./utils.js" import type { AddressLike } from "ethers" diff --git a/src/Unit/Exchange/deposit.ts b/src/Unit/Exchange/deposit.ts index 93f4d71..d257244 100644 --- a/src/Unit/Exchange/deposit.ts +++ b/src/Unit/Exchange/deposit.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import type Unit from '../index.js'; diff --git a/src/Unit/Exchange/generateSwapCalldata.ts b/src/Unit/Exchange/generateSwapCalldata.ts index 1b7b350..94d53d9 100644 --- a/src/Unit/Exchange/generateSwapCalldata.ts +++ b/src/Unit/Exchange/generateSwapCalldata.ts @@ -1,4 +1,4 @@ -import type { LibValidator } from '@orionprotocol/contracts/lib/ethers-v6-cjs/Exchange.js'; +import type { LibValidator } from '@orionprotocol/contracts/lib/ethers-v6/Exchange.js'; import { ethers, ZeroAddress } from 'ethers'; import type { AddressLike, JsonRpcProvider, BigNumberish, BytesLike } from 'ethers'; import cloneDeep from 'lodash.clonedeep'; diff --git a/src/Unit/Exchange/swapLimit.ts b/src/Unit/Exchange/swapLimit.ts index b2d4886..19ae300 100644 --- a/src/Unit/Exchange/swapLimit.ts +++ b/src/Unit/Exchange/swapLimit.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import getAvailableSources from '../../utils/getAvailableFundsSources.js'; diff --git a/src/Unit/Exchange/swapMarket.ts b/src/Unit/Exchange/swapMarket.ts index 20a0d99..934e2bb 100644 --- a/src/Unit/Exchange/swapMarket.ts +++ b/src/Unit/Exchange/swapMarket.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import getAvailableSources from '../../utils/getAvailableFundsSources.js'; diff --git a/src/Unit/Exchange/withdraw.ts b/src/Unit/Exchange/withdraw.ts index 7e400d7..9b5d2d7 100644 --- a/src/Unit/Exchange/withdraw.ts +++ b/src/Unit/Exchange/withdraw.ts @@ -1,6 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { ethers } from 'ethers'; -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import getBalances from '../../utils/getBalances.js'; import BalanceGuard from '../../BalanceGuard.js'; import type Unit from '../index.js'; diff --git a/src/Unit/Pmm/index.ts b/src/Unit/Pmm/index.ts index 1c8b1f5..d4f1c57 100644 --- a/src/Unit/Pmm/index.ts +++ b/src/Unit/Pmm/index.ts @@ -4,7 +4,7 @@ import {pmmOrderSchema} from "./schemas/order"; import {simpleFetch} from "simple-typed-fetch"; import {ethers, Wallet} from "ethers"; import {BigNumber} from "bignumber.js"; -import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import {orionRFQContractABI} from "./abi/OrionRFQ"; export default class Pmm { diff --git a/src/utils/checkIsToken.ts b/src/utils/checkIsToken.ts index d55c45d..5be176a 100644 --- a/src/utils/checkIsToken.ts +++ b/src/utils/checkIsToken.ts @@ -1,4 +1,4 @@ -import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { ERC20__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import { ethers } from 'ethers'; import invariant from 'tiny-invariant'; diff --git a/src/utils/getBalance.ts b/src/utils/getBalance.ts index 10b3838..91ab443 100644 --- a/src/utils/getBalance.ts +++ b/src/utils/getBalance.ts @@ -1,4 +1,4 @@ -import { ERC20__factory, Exchange__factory, type Exchange } from "@orionprotocol/contracts/lib/ethers-v6-cjs/index.js"; +import { ERC20__factory, Exchange__factory, type Exchange } from "@orionprotocol/contracts/lib/ethers-v6/index.js"; import type { BigNumber } from "bignumber.js"; import { ZeroAddress, ethers } from "ethers"; import { INTERNAL_PROTOCOL_PRECISION, NATIVE_CURRENCY_PRECISION } from "../constants/index.js"; diff --git a/src/utils/getBalances.ts b/src/utils/getBalances.ts index 02527cc..f9e5390 100644 --- a/src/utils/getBalances.ts +++ b/src/utils/getBalances.ts @@ -1,4 +1,4 @@ -import type { Exchange } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import type { Exchange } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import type { BigNumber } from 'bignumber.js'; import type { ethers } from 'ethers'; import type { Aggregator } from '../services/Aggregator/index.js'; diff --git a/src/utils/parseExchangeTradeTransaction.ts b/src/utils/parseExchangeTradeTransaction.ts index 7f63a85..9b59093 100644 --- a/src/utils/parseExchangeTradeTransaction.ts +++ b/src/utils/parseExchangeTradeTransaction.ts @@ -1,4 +1,4 @@ -import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6-cjs/index.js'; +import { Exchange__factory } from '@orionprotocol/contracts/lib/ethers-v6/index.js'; import { ethers } from 'ethers'; import { z } from 'zod'; From 1263edc3d24d69e9808f04ba602d300cff4ac22f Mon Sep 17 00:00:00 2001 From: TheJuze Date: Tue, 11 Jun 2024 17:23:45 +0300 Subject: [PATCH 095/114] bump v --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b0d5b2c..6d92660 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.4", + "version": "0.22.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.22.4", + "version": "0.22.5", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index 0be1c52..f628cfe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.4", + "version": "0.22.5", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From b7217c958b355ee94e6254e9acc9db7e0f21e601 Mon Sep 17 00:00:00 2001 From: Slava Startsev Date: Tue, 18 Jun 2024 15:14:54 +0300 Subject: [PATCH 096/114] Add event horizon test network (#261) * feat: add event horizon test network * chore: bump v --- package.json | 2 +- src/config/chains.json | 13 +++++++++++++ src/config/envs.json | 18 ++++++++++++++++++ src/constants/chains.ts | 1 + src/types.ts | 1 + 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index f628cfe..50a3770 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.5", + "version": "0.22.6", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/config/chains.json b/src/config/chains.json index 4afb939..5d2b030 100644 --- a/src/config/chains.json +++ b/src/config/chains.json @@ -64,6 +64,19 @@ "curveRegistry": "" } }, + "123420000034": { + "chainId": "123420000034", + "explorer": "https://blockscout-123420000034.raas-testnet.gelato.digital/", + "label": "Event Horizon Testnet", + "shortName": "EH-Testnet", + "code": "eth", + "rpc": "https://rpc-123420000034.raas-testnet.gelato.digital/", + "baseCurrencyName": "ETH", + "contracts": { + "WETH": "0x4200000000000000000000000000000000000006", + "curveRegistry": "" + } + }, "42161": { "chainId": "42161", "explorer": "https://arbiscan.io/", diff --git a/src/config/envs.json b/src/config/envs.json index 445649e..442f771 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -244,6 +244,24 @@ "http": "/orion-indexer/" } } + }, + "123420000034": { + "api": "https://testing.orion.xyz/event-horizon", + "services": { + "aggregator": { + "http": "/backend", + "ws": "/v1" + }, + "blockchain": { + "http": "" + }, + "priceFeed": { + "all": "/price-feed" + }, + "indexer": { + "http": "/orion-indexer/" + } + } } } }, diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 621b947..d875c3f 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -3,6 +3,7 @@ import { SupportedChainId } from '../types.js'; export const developmentChains = [ SupportedChainId.BSC_TESTNET, SupportedChainId.SEPOLIA, + SupportedChainId.EVENT_HORIZON, ]; export const productionChains = [ SupportedChainId.MAINNET, diff --git a/src/types.ts b/src/types.ts index 72ec8dc..54fdbf4 100644 --- a/src/types.ts +++ b/src/types.ts @@ -95,6 +95,7 @@ export enum SupportedChainId { BSC_TESTNET = '97', SEPOLIA = '11155111', + EVENT_HORIZON = '123420000034', // For testing and debug purpose // BROKEN = '0', From 8dead845d1ff511f948cebc0f483eaa49b95f569 Mon Sep 17 00:00:00 2001 From: Slava Startsev Date: Tue, 18 Jun 2024 18:26:17 +0300 Subject: [PATCH 097/114] Update to event horizon testnet (#262) * chore: update EH variable name for tn * chore: bump v --- package.json | 2 +- src/constants/chains.ts | 2 +- src/types.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 50a3770..670c303 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.6", + "version": "0.22.7", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/constants/chains.ts b/src/constants/chains.ts index d875c3f..969f15d 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -3,7 +3,7 @@ import { SupportedChainId } from '../types.js'; export const developmentChains = [ SupportedChainId.BSC_TESTNET, SupportedChainId.SEPOLIA, - SupportedChainId.EVENT_HORIZON, + SupportedChainId.EVENT_HORIZON_TESTNET, ]; export const productionChains = [ SupportedChainId.MAINNET, diff --git a/src/types.ts b/src/types.ts index 54fdbf4..f9639e6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -95,7 +95,7 @@ export enum SupportedChainId { BSC_TESTNET = '97', SEPOLIA = '11155111', - EVENT_HORIZON = '123420000034', + EVENT_HORIZON_TESTNET = '123420000034', // For testing and debug purpose // BROKEN = '0', From 0cc989b41308719636d5c566b518ab875e6bd6cd Mon Sep 17 00:00:00 2001 From: Slava Startsev Date: Tue, 18 Jun 2024 18:57:03 +0300 Subject: [PATCH 098/114] New event horizon api url (#263) * chore: update api url for event horizon * chore: bump v --- package.json | 2 +- src/config/envs.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 670c303..7e330bb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.7", + "version": "0.22.9", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/config/envs.json b/src/config/envs.json index 442f771..112577e 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -246,7 +246,7 @@ } }, "123420000034": { - "api": "https://testing.orion.xyz/event-horizon", + "api": "https://testing.orion.xyz/event-horizon-testnet", "services": { "aggregator": { "http": "/backend", From b5d0e3f6c6568375834f02204ffd85a837504f7d Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Wed, 19 Jun 2024 10:33:19 +0300 Subject: [PATCH 099/114] indexer update --- package.json | 2 +- src/services/Indexer/index.ts | 40 +++++++++++++++++++ .../Indexer/schemas/get-points-at-schema.ts | 15 +++++++ .../Indexer/schemas/get-points-info-schema.ts | 27 +++++++++++++ src/services/Indexer/schemas/index.ts | 2 + 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/services/Indexer/schemas/get-points-at-schema.ts create mode 100644 src/services/Indexer/schemas/get-points-info-schema.ts diff --git a/package.json b/package.json index 7e330bb..edd013e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.9", + "version": "0.22.10-rc1", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Indexer/index.ts b/src/services/Indexer/index.ts index 2791f8a..d1fce85 100644 --- a/src/services/Indexer/index.ts +++ b/src/services/Indexer/index.ts @@ -1,5 +1,7 @@ import { environmentResponseSchema, + getPointsAtResponseSchema, + getPointsInfoResponseSchema, getPoolResponseSchema, listAmountResponseSchema, listNFTOrderResponseSchema, @@ -51,6 +53,18 @@ type VeORNInfoPayload = BasePayload & { params: [string] }; +type GetPointsInfoPayload = BasePayload & { + model: 'veORN' + method: 'pointsInfo' + params: [string] +}; + +type GetPointsAtPayload = BasePayload & { + model: 'veORN' + method: 'pointsInfo' + params: [number, number, number] +}; + type ListAmountPayload = BasePayload & { model: string method: 'listAmount' @@ -68,6 +82,8 @@ type Payload = | GetPoolInfoPayload | ListPoolPayload | VeORNInfoPayload + | GetPointsInfoPayload + | GetPointsAtPayload | ListAmountPayload | GetAmountByORNPayload; @@ -92,6 +108,8 @@ class IndexerService { this.poolV2Info = this.poolV2Info.bind(this); this.listPoolV3 = this.listPoolV3.bind(this); this.veORNInfo = this.veORNInfo.bind(this); + this.getPointsInfo = this.getPointsInfo.bind(this); + this.getPointsAt = this.getPointsAt.bind(this); this.listAmount = this.listAmount.bind(this); this.getAmountByORN = this.getAmountByORN.bind(this); this.getAmountAt = this.getAmountAt.bind(this); @@ -118,6 +136,28 @@ class IndexerService { }); }; + readonly getPointsInfo = (address: string) => { + return fetchWithValidation(this.apiUrl, getPointsInfoResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'veORN', + method: 'pointsInfo', + params: [address], + }), + }); + }; + + readonly getPointsAt = (timestamp = Date.now(), page?: number, pageSize?: number) => { + return fetchWithValidation(this.apiUrl, getPointsAtResponseSchema, { + method: 'POST', + body: this.makeRPCPayload({ + model: 'veORN', + method: 'pointsAt', + params: [timestamp, page, pageSize], + }), + }); + }; + /** * @param {number} amount - amount * @param {number} [timestamp = Date.now()] - timestamp, defaults to current time diff --git a/src/services/Indexer/schemas/get-points-at-schema.ts b/src/services/Indexer/schemas/get-points-at-schema.ts new file mode 100644 index 0000000..ce25e3d --- /dev/null +++ b/src/services/Indexer/schemas/get-points-at-schema.ts @@ -0,0 +1,15 @@ +import { z } from 'zod'; +import infoSchema from './info-schema.js'; + +const getPointsAtResultSchema = z.object({ + points: z.record(z.string(), z.number()), + pageSize: z.number(), + totalElements: z.number(), +}); + +const getPointsAtSchema = z.object({ + result: getPointsAtResultSchema, + info: infoSchema, +}).nullable(); + +export default getPointsAtSchema; diff --git a/src/services/Indexer/schemas/get-points-info-schema.ts b/src/services/Indexer/schemas/get-points-info-schema.ts new file mode 100644 index 0000000..38e37c8 --- /dev/null +++ b/src/services/Indexer/schemas/get-points-info-schema.ts @@ -0,0 +1,27 @@ +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; +import infoSchema from './info-schema.js'; + +const getPointsResultSchema = z.object({ + avgAPR: z.number(), + minAPR: z.number(), + maxAPR: z.number(), + veTokenAddress: evmAddressSchema, + totalPointsLocked: z.number(), + totalPoints: z.number(), + weeklyReward: z.number(), + userAPR: z.number(), + userPoints: z.number(), + userPointsLocked: z.number(), + userLockEndDate: z.number(), + userReward: z.number(), + userWeeklyReward: z.number(), + userMinLockPeriod: z.number(), +}); + +const getPointsInfoSchema = z.object({ + result: getPointsResultSchema, + info: infoSchema, +}).nullable(); + +export default getPointsInfoSchema; diff --git a/src/services/Indexer/schemas/index.ts b/src/services/Indexer/schemas/index.ts index 8690e93..911ddb2 100644 --- a/src/services/Indexer/schemas/index.ts +++ b/src/services/Indexer/schemas/index.ts @@ -9,3 +9,5 @@ export { default as veORNInfoResponseSchema } from './veORN-info-schema'; export { default as listAmountResponseSchema } from './list-amount-schema'; export { default as votingInfoResponseSchema } from './voting-info-schema'; export { default as testIncrementorSchema } from './test-incrementor-schema'; +export { default as getPointsInfoResponseSchema } from './get-points-info-schema'; +export { default as getPointsAtResponseSchema } from './get-points-at-schema'; From f91f87e376f000ac71de6ea062ffd6c19a08fab0 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Thu, 20 Jun 2024 13:21:45 +0300 Subject: [PATCH 100/114] update --- src/services/Indexer/index.ts | 22 +-------------- .../Indexer/schemas/get-points-info-schema.ts | 27 ------------------- src/services/Indexer/schemas/index.ts | 1 - .../Indexer/schemas/veORN-info-schema.ts | 8 +++--- 4 files changed, 6 insertions(+), 52 deletions(-) delete mode 100644 src/services/Indexer/schemas/get-points-info-schema.ts diff --git a/src/services/Indexer/index.ts b/src/services/Indexer/index.ts index d1fce85..2d13be7 100644 --- a/src/services/Indexer/index.ts +++ b/src/services/Indexer/index.ts @@ -1,7 +1,6 @@ import { environmentResponseSchema, getPointsAtResponseSchema, - getPointsInfoResponseSchema, getPoolResponseSchema, listAmountResponseSchema, listNFTOrderResponseSchema, @@ -53,12 +52,6 @@ type VeORNInfoPayload = BasePayload & { params: [string] }; -type GetPointsInfoPayload = BasePayload & { - model: 'veORN' - method: 'pointsInfo' - params: [string] -}; - type GetPointsAtPayload = BasePayload & { model: 'veORN' method: 'pointsInfo' @@ -82,7 +75,6 @@ type Payload = | GetPoolInfoPayload | ListPoolPayload | VeORNInfoPayload - | GetPointsInfoPayload | GetPointsAtPayload | ListAmountPayload | GetAmountByORNPayload; @@ -108,7 +100,6 @@ class IndexerService { this.poolV2Info = this.poolV2Info.bind(this); this.listPoolV3 = this.listPoolV3.bind(this); this.veORNInfo = this.veORNInfo.bind(this); - this.getPointsInfo = this.getPointsInfo.bind(this); this.getPointsAt = this.getPointsAt.bind(this); this.listAmount = this.listAmount.bind(this); this.getAmountByORN = this.getAmountByORN.bind(this); @@ -136,18 +127,7 @@ class IndexerService { }); }; - readonly getPointsInfo = (address: string) => { - return fetchWithValidation(this.apiUrl, getPointsInfoResponseSchema, { - method: 'POST', - body: this.makeRPCPayload({ - model: 'veORN', - method: 'pointsInfo', - params: [address], - }), - }); - }; - - readonly getPointsAt = (timestamp = Date.now(), page?: number, pageSize?: number) => { + readonly getPointsAt = (timestamp = Date.now(), page = 1, pageSize = 1000) => { return fetchWithValidation(this.apiUrl, getPointsAtResponseSchema, { method: 'POST', body: this.makeRPCPayload({ diff --git a/src/services/Indexer/schemas/get-points-info-schema.ts b/src/services/Indexer/schemas/get-points-info-schema.ts deleted file mode 100644 index 38e37c8..0000000 --- a/src/services/Indexer/schemas/get-points-info-schema.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { z } from 'zod'; -import { evmAddressSchema } from './util-schemas.js'; -import infoSchema from './info-schema.js'; - -const getPointsResultSchema = z.object({ - avgAPR: z.number(), - minAPR: z.number(), - maxAPR: z.number(), - veTokenAddress: evmAddressSchema, - totalPointsLocked: z.number(), - totalPoints: z.number(), - weeklyReward: z.number(), - userAPR: z.number(), - userPoints: z.number(), - userPointsLocked: z.number(), - userLockEndDate: z.number(), - userReward: z.number(), - userWeeklyReward: z.number(), - userMinLockPeriod: z.number(), -}); - -const getPointsInfoSchema = z.object({ - result: getPointsResultSchema, - info: infoSchema, -}).nullable(); - -export default getPointsInfoSchema; diff --git a/src/services/Indexer/schemas/index.ts b/src/services/Indexer/schemas/index.ts index 911ddb2..deec8a5 100644 --- a/src/services/Indexer/schemas/index.ts +++ b/src/services/Indexer/schemas/index.ts @@ -9,5 +9,4 @@ export { default as veORNInfoResponseSchema } from './veORN-info-schema'; export { default as listAmountResponseSchema } from './list-amount-schema'; export { default as votingInfoResponseSchema } from './voting-info-schema'; export { default as testIncrementorSchema } from './test-incrementor-schema'; -export { default as getPointsInfoResponseSchema } from './get-points-info-schema'; export { default as getPointsAtResponseSchema } from './get-points-at-schema'; diff --git a/src/services/Indexer/schemas/veORN-info-schema.ts b/src/services/Indexer/schemas/veORN-info-schema.ts index 5c4d018..f3f9dba 100644 --- a/src/services/Indexer/schemas/veORN-info-schema.ts +++ b/src/services/Indexer/schemas/veORN-info-schema.ts @@ -1,6 +1,6 @@ -import { z } from 'zod'; -import { evmAddressSchema } from './util-schemas.js'; -import infoSchema from './info-schema.js'; +import { z } from "zod"; +import { evmAddressSchema } from "./util-schemas.js"; +import infoSchema from "./info-schema.js"; const veORNResultSchema = z.object({ avgAPR: z.number(), @@ -17,6 +17,8 @@ const veORNResultSchema = z.object({ userReward: z.number(), userWeeklyReward: z.number(), userMinLockPeriod: z.number(), + dropLock: z.boolean(), + pointsReward: z.number(), }); const veORNInfoSchema = z.object({ From fad890eeab77a5a7e2a5f87885ec5efe57a28b46 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Fri, 21 Jun 2024 10:01:37 +0300 Subject: [PATCH 101/114] update --- package.json | 2 +- src/services/Indexer/schemas/get-points-at-schema.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index edd013e..53cccf4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.10-rc1", + "version": "0.22.10-rc2", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Indexer/schemas/get-points-at-schema.ts b/src/services/Indexer/schemas/get-points-at-schema.ts index ce25e3d..34a71c1 100644 --- a/src/services/Indexer/schemas/get-points-at-schema.ts +++ b/src/services/Indexer/schemas/get-points-at-schema.ts @@ -2,8 +2,8 @@ import { z } from 'zod'; import infoSchema from './info-schema.js'; const getPointsAtResultSchema = z.object({ - points: z.record(z.string(), z.number()), - pageSize: z.number(), + pointsObject: z.record(z.string(), z.number()), + currentPage: z.number(), totalElements: z.number(), }); From 6db981dc797f715f9f186bc9c31085fc7bb90db1 Mon Sep 17 00:00:00 2001 From: Kirill Litvinov Date: Fri, 21 Jun 2024 10:38:58 +0300 Subject: [PATCH 102/114] update --- package.json | 2 +- src/services/Indexer/index.ts | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 53cccf4..92e5983 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.10-rc2", + "version": "0.22.10-rc3", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/Indexer/index.ts b/src/services/Indexer/index.ts index 2d13be7..607d641 100644 --- a/src/services/Indexer/index.ts +++ b/src/services/Indexer/index.ts @@ -55,7 +55,7 @@ type VeORNInfoPayload = BasePayload & { type GetPointsAtPayload = BasePayload & { model: 'veORN' method: 'pointsInfo' - params: [number, number, number] + params: [number, number] }; type ListAmountPayload = BasePayload & { @@ -127,13 +127,17 @@ class IndexerService { }); }; - readonly getPointsAt = (timestamp = Date.now(), page = 1, pageSize = 1000) => { + /** + * @param {number} page - current page + * @param {number} [pageSize] - amount of items on one page + */ + readonly getPointsAt = (page = 1, pageSize = 1000) => { return fetchWithValidation(this.apiUrl, getPointsAtResponseSchema, { method: 'POST', body: this.makeRPCPayload({ model: 'veORN', method: 'pointsAt', - params: [timestamp, page, pageSize], + params: [page, pageSize], }), }); }; From e5a41aada6d0f74431fbc1a8364fb63640acfe8a Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Wed, 3 Jul 2024 17:09:19 +0100 Subject: [PATCH 103/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 92e5983..670c303 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.10-rc3", + "version": "0.22.7", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 208db5cf47f815ab0c61d0979fd68835b61851cf Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Wed, 3 Jul 2024 17:45:10 +0100 Subject: [PATCH 104/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 670c303..4e1b3a5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.7", + "version": "0.22.10", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 4feb13fc695852f596f86933e523a6febdffea90 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 5 Jul 2024 14:24:03 +0100 Subject: [PATCH 105/114] feat: updated infoSchema --- src/services/BlockchainService/schemas/infoSchema.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/services/BlockchainService/schemas/infoSchema.ts b/src/services/BlockchainService/schemas/infoSchema.ts index 472a895..257b0b7 100644 --- a/src/services/BlockchainService/schemas/infoSchema.ts +++ b/src/services/BlockchainService/schemas/infoSchema.ts @@ -1,5 +1,5 @@ import { z } from 'zod'; -import { makePartial } from '../../../utils/index.js'; +import { makePartial } from '../../../utils'; const internalFeeAssetSchema = z.object({ type: z.enum(['percent', 'plain']), @@ -10,8 +10,9 @@ const internalFeeAssetSchema = z.object({ const infoSchema = z.object({ chainId: z.number(), chainName: z.string(), - exchangeContractAddress: z.string(), swapExecutorContractAddress: z.string(), + libValidatorContractAddress: z.string(), + exchangeContractAddress: z.string(), oracleContractAddress: z.string(), matcherAddress: z.string(), orderFeePercent: z.number(), From 68fc41afbd2eb889a28d7c9b63ab3e214ce54f5c Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Fri, 5 Jul 2024 14:29:42 +0100 Subject: [PATCH 106/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4e1b3a5..094ba50 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.10", + "version": "0.22.11", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 99650e9e7f53e33595211dbe9dcacacb7f1dbc82 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 8 Jul 2024 10:17:24 +0100 Subject: [PATCH 107/114] feat: fix bugs that may appear on production if a release needs to be rolled out --- .../BlockchainService/schemas/infoSchema.ts | 2 +- src/services/Indexer/schemas/veORN-info-schema.ts | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/services/BlockchainService/schemas/infoSchema.ts b/src/services/BlockchainService/schemas/infoSchema.ts index 257b0b7..c2c2e3b 100644 --- a/src/services/BlockchainService/schemas/infoSchema.ts +++ b/src/services/BlockchainService/schemas/infoSchema.ts @@ -11,7 +11,7 @@ const infoSchema = z.object({ chainId: z.number(), chainName: z.string(), swapExecutorContractAddress: z.string(), - libValidatorContractAddress: z.string(), + libValidatorContractAddress: z.string().optional(), exchangeContractAddress: z.string(), oracleContractAddress: z.string(), matcherAddress: z.string(), diff --git a/src/services/Indexer/schemas/veORN-info-schema.ts b/src/services/Indexer/schemas/veORN-info-schema.ts index f3f9dba..38fb6ee 100644 --- a/src/services/Indexer/schemas/veORN-info-schema.ts +++ b/src/services/Indexer/schemas/veORN-info-schema.ts @@ -1,6 +1,6 @@ -import { z } from "zod"; -import { evmAddressSchema } from "./util-schemas.js"; -import infoSchema from "./info-schema.js"; +import { z } from 'zod'; +import { evmAddressSchema } from './util-schemas.js'; +import infoSchema from './info-schema.js'; const veORNResultSchema = z.object({ avgAPR: z.number(), @@ -12,14 +12,15 @@ const veORNResultSchema = z.object({ weeklyReward: z.number(), userAPR: z.number(), userVeORN: z.number(), + userVeORNBalance: z.number(), userORNLocked: z.number(), userLockEndDate: z.number(), userReward: z.number(), userWeeklyReward: z.number(), userMinLockPeriod: z.number(), - dropLock: z.boolean(), - pointsReward: z.number(), -}); + dropLock: z.boolean().optional(), + pointsReward: z.number().optional(), +}).passthrough(); const veORNInfoSchema = z.object({ result: veORNResultSchema, From 7664409aae18cac37a79eef2f4bc2c52703a8b42 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 8 Jul 2024 10:17:57 +0100 Subject: [PATCH 108/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 094ba50..2286c17 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.11", + "version": "0.22.12", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 1c4e05c9d1ae3585e28fed6c531c838e5dfff849 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 15 Jul 2024 15:23:14 +0100 Subject: [PATCH 109/114] feat: added Lumia Testnet network --- src/config/chains.json | 13 +++++++++++++ src/config/envs.json | 18 ++++++++++++++++++ src/constants/chains.ts | 1 + src/constants/networkCodes.ts | 2 +- src/constants/uppercasedNetworkCodes.ts | 2 +- src/types.ts | 1 + 6 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/config/chains.json b/src/config/chains.json index 5d2b030..3b673ed 100644 --- a/src/config/chains.json +++ b/src/config/chains.json @@ -77,6 +77,19 @@ "curveRegistry": "" } }, + "1952959480": { + "chainId": "1952959480", + "explorer": "https://testnet-explorer.lumia.org/", + "label": "Lumia Testnet", + "shortName": "Lumia Testnet", + "code": "lumia", + "rpc": "https://testnet-rpc.lumia.org", + "baseCurrencyName": "LUMIA", + "contracts": { + "WETH": "0x1a1aF9C78704D3a0Ab9e031C92E7bd808711A582", + "curveRegistry": "" + } + }, "42161": { "chainId": "42161", "explorer": "https://arbiscan.io/", diff --git a/src/config/envs.json b/src/config/envs.json index 112577e..789cb5c 100644 --- a/src/config/envs.json +++ b/src/config/envs.json @@ -262,6 +262,24 @@ "http": "/orion-indexer/" } } + }, + "1952959480": { + "api": "https://testing.orion.xyz/lumia-testnet", + "services": { + "aggregator": { + "http": "/backend", + "ws": "/v1" + }, + "blockchain": { + "http": "" + }, + "priceFeed": { + "all": "/price-feed" + }, + "indexer": { + "http": "/orion-indexer/" + } + } } } }, diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 969f15d..0219047 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -4,6 +4,7 @@ export const developmentChains = [ SupportedChainId.BSC_TESTNET, SupportedChainId.SEPOLIA, SupportedChainId.EVENT_HORIZON_TESTNET, + SupportedChainId.LUMIA_TESTNET, ]; export const productionChains = [ SupportedChainId.MAINNET, diff --git a/src/constants/networkCodes.ts b/src/constants/networkCodes.ts index 498e149..76e0d93 100644 --- a/src/constants/networkCodes.ts +++ b/src/constants/networkCodes.ts @@ -1 +1 @@ -export default ['ftm', 'bsc', 'eth', 'polygon', 'okc', 'arb', 'drip', 'opbnb', 'inevm', 'linea', 'avax', 'base'] as const; +export default ['ftm', 'bsc', 'eth', 'polygon', 'okc', 'arb', 'drip', 'opbnb', 'inevm', 'linea', 'avax', 'base', 'lumia'] as const; diff --git a/src/constants/uppercasedNetworkCodes.ts b/src/constants/uppercasedNetworkCodes.ts index e69605f..9c8e9f2 100644 --- a/src/constants/uppercasedNetworkCodes.ts +++ b/src/constants/uppercasedNetworkCodes.ts @@ -1 +1 @@ -export default ['FTM', 'BSC', 'ETH', 'POLYGON', 'OKC', 'ARB', 'OPBNB', 'INEVM', 'LINEA', 'AVAX', 'BASE'] as const; +export default ['FTM', 'BSC', 'ETH', 'POLYGON', 'OKC', 'ARB', 'OPBNB', 'INEVM', 'LINEA', 'AVAX', 'BASE', 'LUMIA'] as const; diff --git a/src/types.ts b/src/types.ts index f9639e6..602f593 100644 --- a/src/types.ts +++ b/src/types.ts @@ -96,6 +96,7 @@ export enum SupportedChainId { BSC_TESTNET = '97', SEPOLIA = '11155111', EVENT_HORIZON_TESTNET = '123420000034', + LUMIA_TESTNET = '1952959480', // For testing and debug purpose // BROKEN = '0', From 6728e104d399296947b1bd06c0712a8d54daca91 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Mon, 15 Jul 2024 15:24:18 +0100 Subject: [PATCH 110/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2286c17..8588ce6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.12", + "version": "0.22.13", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From d6848864ee19ebf7357f9768e6c2f03799f62601 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 16 Jul 2024 09:52:06 +0100 Subject: [PATCH 111/114] feat: removed Drip network --- src/constants/networkCodes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants/networkCodes.ts b/src/constants/networkCodes.ts index 76e0d93..74a3dae 100644 --- a/src/constants/networkCodes.ts +++ b/src/constants/networkCodes.ts @@ -1 +1 @@ -export default ['ftm', 'bsc', 'eth', 'polygon', 'okc', 'arb', 'drip', 'opbnb', 'inevm', 'linea', 'avax', 'base', 'lumia'] as const; +export default ['ftm', 'bsc', 'eth', 'polygon', 'okc', 'arb', 'opbnb', 'inevm', 'linea', 'avax', 'base', 'lumia'] as const; From 0fa1c2552bd6ca1e67aef9569d68b75c69a49b65 Mon Sep 17 00:00:00 2001 From: Mikhail Gladchenko Date: Tue, 16 Jul 2024 09:53:10 +0100 Subject: [PATCH 112/114] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8588ce6..bd57f9f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.13", + "version": "0.22.14", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", From 41af32985c444a09ff05ce1b0794330863428e8e Mon Sep 17 00:00:00 2001 From: Slava Startsev Date: Thu, 15 Aug 2024 18:49:31 +0300 Subject: [PATCH 113/114] feat: add spv contract field to info --- package.json | 2 +- src/services/BlockchainService/schemas/infoSchema.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index bd57f9f..dc2f31e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.14", + "version": "0.22.14-rc1000", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js", diff --git a/src/services/BlockchainService/schemas/infoSchema.ts b/src/services/BlockchainService/schemas/infoSchema.ts index c2c2e3b..0294e8a 100644 --- a/src/services/BlockchainService/schemas/infoSchema.ts +++ b/src/services/BlockchainService/schemas/infoSchema.ts @@ -13,6 +13,7 @@ const infoSchema = z.object({ swapExecutorContractAddress: z.string(), libValidatorContractAddress: z.string().optional(), exchangeContractAddress: z.string(), + spvContractAddress: z.string(), oracleContractAddress: z.string(), matcherAddress: z.string(), orderFeePercent: z.number(), From 04f1e8210de860161050204dbae6559c4fb31cce Mon Sep 17 00:00:00 2001 From: Olga Kanishcheva Date: Mon, 30 Sep 2024 10:28:53 +0400 Subject: [PATCH 114/114] Update package.json --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d92660..2428d55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.5", + "version": "0.22.15", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.22.5", + "version": "0.22.15", "hasInstallScript": true, "license": "ISC", "dependencies": { diff --git a/package.json b/package.json index dc2f31e..a640a6c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.22.14-rc1000", + "version": "0.22.15", "description": "Orion Protocol SDK", "main": "./lib/index.cjs", "module": "./lib/index.js",