@shapeshiftoss/swapper 17.6.10 → 17.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/constants.js +11 -10
- package/dist/cjs/cowswap-utils/constants.js +3 -0
- package/dist/cjs/cowswap-utils/index.js +6 -0
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/solana-utils/getUnsignedSolanaTransaction.js +4 -2
- package/dist/cjs/swappers/AcrossSwapper/constant.js +2 -0
- package/dist/cjs/swappers/AcrossSwapper/utils/getTrade.js +15 -1
- package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +12 -1
- package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeRate.js +9 -0
- package/dist/cjs/swappers/BebopSwapper/BebopSwapper.js +2 -0
- package/dist/cjs/swappers/BebopSwapper/endpoints.js +35 -2
- package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
- package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.js +47 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +91 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +88 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
- package/dist/cjs/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
- package/dist/cjs/swappers/BebopSwapper/types.d.ts +49 -1
- package/dist/cjs/swappers/BebopSwapper/types.js +9 -2
- package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
- package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +86 -1
- package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.d.ts +13 -1
- package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.js +47 -1
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +17 -1
- package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.js +10 -0
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +10 -0
- package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeRate.js +10 -0
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
- package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +1 -1
- package/dist/cjs/swappers/ChainflipSwapper/constants.js +7 -3
- package/dist/cjs/swappers/ChainflipSwapper/endpoints.js +14 -4
- package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/cjs/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +17 -0
- package/dist/cjs/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +10 -0
- package/dist/cjs/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +9 -0
- package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
- package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.js +7 -0
- package/dist/cjs/swappers/DebridgeSwapper/constant.d.ts +5 -0
- package/dist/cjs/swappers/DebridgeSwapper/constant.js +36 -0
- package/dist/cjs/swappers/{JupiterSwapper → DebridgeSwapper}/endpoints.d.ts +1 -1
- package/dist/cjs/swappers/DebridgeSwapper/endpoints.js +217 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +31 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +19 -0
- package/dist/cjs/swappers/DebridgeSwapper/index.d.ts +1 -0
- package/dist/cjs/swappers/DebridgeSwapper/index.js +5 -0
- package/dist/cjs/swappers/{JupiterSwapper/utils/jupiterService.d.ts → DebridgeSwapper/utils/debridgeService.d.ts} +1 -1
- package/dist/cjs/swappers/DebridgeSwapper/utils/debridgeService.js +17 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +23 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +29 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.js +367 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
- package/dist/cjs/swappers/DebridgeSwapper/utils/types.js +9 -0
- package/dist/cjs/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +12 -0
- package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +12 -0
- package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
- package/dist/cjs/swappers/RelaySwapper/constant.js +7 -10
- package/dist/cjs/swappers/RelaySwapper/endpoints.js +1 -1
- package/dist/cjs/swappers/RelaySwapper/utils/getTrade.js +56 -7
- package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +22 -7
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +12 -1
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeRate.js +10 -0
- package/dist/cjs/swappers/SunioSwapper/utils/getQuoteOrRate.js +10 -0
- package/dist/cjs/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
- package/dist/cjs/swappers/ThorchainSwapper/endpoints.js +2 -0
- package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
- package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
- package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +10 -0
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
- package/dist/cjs/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
- package/dist/cjs/swappers/utils/affiliateFee.d.ts +17 -0
- package/dist/cjs/swappers/utils/affiliateFee.js +43 -0
- package/dist/cjs/thorchain-utils/getL1RateOrQuote.js +57 -4
- package/dist/cjs/thorchain-utils/index.d.ts +2 -1
- package/dist/cjs/thorchain-utils/index.js +2 -1
- package/dist/cjs/thorchain-utils/solana/constants.d.ts +1 -0
- package/dist/cjs/thorchain-utils/solana/constants.js +6 -0
- package/dist/cjs/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
- package/dist/cjs/thorchain-utils/solana/getSolanaTransactionFees.js +41 -0
- package/dist/cjs/thorchain-utils/solana/getThorTxData.d.ts +12 -0
- package/dist/cjs/thorchain-utils/solana/getThorTxData.js +14 -0
- package/dist/cjs/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
- package/dist/cjs/thorchain-utils/solana/getUnsignedSolanaTransaction.js +64 -0
- package/dist/cjs/thorchain-utils/solana/index.d.ts +3 -0
- package/dist/cjs/{swappers/JupiterSwapper → thorchain-utils/solana}/index.js +3 -2
- package/dist/cjs/tron-utils/getUnsignedTronTransaction.js +16 -0
- package/dist/cjs/types.d.ts +47 -11
- package/dist/cjs/types.js +1 -1
- package/dist/cjs/utils.d.ts +3 -0
- package/dist/cjs/utils.js +9 -3
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +11 -10
- package/dist/esm/cowswap-utils/constants.js +3 -0
- package/dist/esm/cowswap-utils/index.js +6 -0
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/solana-utils/getUnsignedSolanaTransaction.js +3 -1
- package/dist/esm/swappers/AcrossSwapper/constant.js +4 -2
- package/dist/esm/swappers/AcrossSwapper/utils/getTrade.js +15 -1
- package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +12 -1
- package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeRate.js +9 -0
- package/dist/esm/swappers/BebopSwapper/BebopSwapper.js +2 -0
- package/dist/esm/swappers/BebopSwapper/endpoints.js +36 -3
- package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
- package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.js +40 -0
- package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
- package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +87 -0
- package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
- package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +84 -0
- package/dist/esm/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
- package/dist/esm/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
- package/dist/esm/swappers/BebopSwapper/types.d.ts +49 -1
- package/dist/esm/swappers/BebopSwapper/types.js +8 -1
- package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
- package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +85 -2
- package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.d.ts +13 -1
- package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.js +44 -1
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +17 -1
- package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.js +10 -0
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +10 -0
- package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeRate.js +10 -0
- package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
- package/dist/esm/swappers/CetusSwapper/utils/helpers.js +1 -1
- package/dist/esm/swappers/ChainflipSwapper/constants.js +8 -4
- package/dist/esm/swappers/ChainflipSwapper/endpoints.js +14 -4
- package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
- package/dist/esm/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +17 -0
- package/dist/esm/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +10 -0
- package/dist/esm/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +9 -0
- package/dist/esm/swappers/{JupiterSwapper/JupiterSwapper.d.ts → DebridgeSwapper/DebridgeSwapper.d.ts} +1 -1
- package/dist/esm/swappers/DebridgeSwapper/DebridgeSwapper.js +4 -0
- package/dist/esm/swappers/DebridgeSwapper/constant.d.ts +5 -0
- package/dist/esm/swappers/DebridgeSwapper/constant.js +30 -0
- package/dist/esm/swappers/{JupiterSwapper → DebridgeSwapper}/endpoints.d.ts +1 -1
- package/dist/esm/swappers/DebridgeSwapper/endpoints.js +211 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +27 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +15 -0
- package/dist/esm/swappers/DebridgeSwapper/index.d.ts +1 -0
- package/dist/esm/swappers/DebridgeSwapper/index.js +1 -0
- package/dist/esm/swappers/{JupiterSwapper/utils/jupiterService.d.ts → DebridgeSwapper/utils/debridgeService.d.ts} +1 -1
- package/dist/esm/swappers/DebridgeSwapper/utils/debridgeService.js +11 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +19 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +25 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.js +360 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
- package/dist/esm/swappers/DebridgeSwapper/utils/types.js +5 -0
- package/dist/esm/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +14 -2
- package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +14 -2
- package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
- package/dist/esm/swappers/RelaySwapper/constant.js +9 -12
- package/dist/esm/swappers/RelaySwapper/endpoints.js +2 -2
- package/dist/esm/swappers/RelaySwapper/utils/getTrade.js +59 -10
- package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +22 -7
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +12 -1
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeRate.js +10 -0
- package/dist/esm/swappers/SunioSwapper/utils/getQuoteOrRate.js +10 -0
- package/dist/esm/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
- package/dist/esm/swappers/ThorchainSwapper/endpoints.js +3 -1
- package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
- package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
- package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
- package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +11 -1
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
- package/dist/esm/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
- package/dist/esm/swappers/utils/affiliateFee.d.ts +17 -0
- package/dist/esm/swappers/utils/affiliateFee.js +39 -0
- package/dist/esm/thorchain-utils/getL1RateOrQuote.js +57 -4
- package/dist/esm/thorchain-utils/index.d.ts +2 -1
- package/dist/esm/thorchain-utils/index.js +1 -0
- package/dist/esm/thorchain-utils/solana/constants.d.ts +1 -0
- package/dist/esm/thorchain-utils/solana/constants.js +3 -0
- package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
- package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.js +37 -0
- package/dist/esm/thorchain-utils/solana/getThorTxData.d.ts +12 -0
- package/dist/esm/thorchain-utils/solana/getThorTxData.js +10 -0
- package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
- package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.js +60 -0
- package/dist/esm/thorchain-utils/solana/index.d.ts +3 -0
- package/dist/esm/thorchain-utils/solana/index.js +3 -0
- package/dist/esm/tron-utils/getUnsignedTronTransaction.js +16 -0
- package/dist/esm/types.d.ts +47 -11
- package/dist/esm/types.js +1 -1
- package/dist/esm/utils.d.ts +3 -0
- package/dist/esm/utils.js +7 -2
- package/package.json +19 -19
- package/dist/cjs/swappers/JupiterSwapper/JupiterSwapper.d.ts +0 -2
- package/dist/cjs/swappers/JupiterSwapper/JupiterSwapper.js +0 -27
- package/dist/cjs/swappers/JupiterSwapper/endpoints.js +0 -15
- package/dist/cjs/swappers/JupiterSwapper/errorPatterns.d.ts +0 -15
- package/dist/cjs/swappers/JupiterSwapper/errorPatterns.js +0 -29
- package/dist/cjs/swappers/JupiterSwapper/idls/referral.d.ts +0 -739
- package/dist/cjs/swappers/JupiterSwapper/idls/referral.js +0 -741
- package/dist/cjs/swappers/JupiterSwapper/index.d.ts +0 -2
- package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +0 -191
- package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeRate.js +0 -172
- package/dist/cjs/swappers/JupiterSwapper/utils/constants.d.ts +0 -9
- package/dist/cjs/swappers/JupiterSwapper/utils/constants.js +0 -14
- package/dist/cjs/swappers/JupiterSwapper/utils/helpers.d.ts +0 -56
- package/dist/cjs/swappers/JupiterSwapper/utils/helpers.js +0 -178
- package/dist/cjs/swappers/JupiterSwapper/utils/jupiterService.js +0 -15
- package/dist/esm/swappers/JupiterSwapper/JupiterSwapper.js +0 -24
- package/dist/esm/swappers/JupiterSwapper/endpoints.js +0 -12
- package/dist/esm/swappers/JupiterSwapper/errorPatterns.d.ts +0 -15
- package/dist/esm/swappers/JupiterSwapper/errorPatterns.js +0 -25
- package/dist/esm/swappers/JupiterSwapper/idls/referral.d.ts +0 -739
- package/dist/esm/swappers/JupiterSwapper/idls/referral.js +0 -738
- package/dist/esm/swappers/JupiterSwapper/index.d.ts +0 -2
- package/dist/esm/swappers/JupiterSwapper/index.js +0 -2
- package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +0 -187
- package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeRate.js +0 -168
- package/dist/esm/swappers/JupiterSwapper/utils/constants.d.ts +0 -9
- package/dist/esm/swappers/JupiterSwapper/utils/constants.js +0 -11
- package/dist/esm/swappers/JupiterSwapper/utils/helpers.d.ts +0 -56
- package/dist/esm/swappers/JupiterSwapper/utils/helpers.js +0 -169
- package/dist/esm/swappers/JupiterSwapper/utils/jupiterService.js +0 -12
- /package/dist/cjs/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeQuote}/getTradeQuote.d.ts +0 -0
- /package/dist/cjs/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeRate}/getTradeRate.d.ts +0 -0
- /package/dist/esm/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeQuote}/getTradeQuote.d.ts +0 -0
- /package/dist/esm/swappers/{JupiterSwapper/swapperApi → DebridgeSwapper/getTradeRate}/getTradeRate.d.ts +0 -0
|
@@ -14,6 +14,7 @@ const viem_1 = require("viem");
|
|
|
14
14
|
const types_1 = require("../../../types");
|
|
15
15
|
const utils_2 = require("../../../utils");
|
|
16
16
|
const tenderly_1 = require("../../../utils/tenderly");
|
|
17
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
17
18
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
18
19
|
const constant_1 = require("../constant");
|
|
19
20
|
const getRelayAssetAddress_1 = require("../utils/getRelayAssetAddress");
|
|
@@ -396,7 +397,7 @@ async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
396
397
|
// Fallback to Relay's gas amount
|
|
397
398
|
return quote.fees.gas.amount;
|
|
398
399
|
})();
|
|
399
|
-
const steps = swapSteps.map((quoteStep) => {
|
|
400
|
+
const steps = await Promise.all(swapSteps.map(async (quoteStep) => {
|
|
400
401
|
const selectedItem = quoteStep.items?.[0];
|
|
401
402
|
if (!selectedItem)
|
|
402
403
|
throw new Error('Relay quote step contains no items');
|
|
@@ -406,7 +407,7 @@ async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
406
407
|
.plus(relayerFeesBuyAssetCryptoBaseUnit)
|
|
407
408
|
.plus(appFeesBaseUnit)
|
|
408
409
|
.toFixed();
|
|
409
|
-
const { allowanceContract, relayTransactionMetadata, solanaTransactionMetadata } = (() => {
|
|
410
|
+
const { allowanceContract, relayTransactionMetadata, solanaTransactionMetadata } = await (async () => {
|
|
410
411
|
if (!selectedItem.data)
|
|
411
412
|
throw new Error('Relay quote step contains no data');
|
|
412
413
|
if ((0, types_2.isRelayQuoteUtxoItemData)(selectedItem.data)) {
|
|
@@ -445,11 +446,38 @@ async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
445
446
|
};
|
|
446
447
|
}
|
|
447
448
|
if ((0, types_2.isRelayQuoteSolanaItemData)(selectedItem.data)) {
|
|
449
|
+
const solanaInstructions = selectedItem.data?.instructions?.map(convertSolanaInstruction);
|
|
450
|
+
const addressLookupTableAddresses = selectedItem.data?.addressLookupTableAddresses;
|
|
451
|
+
// Build a trial VersionedTransaction to check if it exceeds the 1232-byte Solana tx size limit
|
|
452
|
+
const isOversized = await (async () => {
|
|
453
|
+
if (!solanaInstructions?.length || !sendAddress)
|
|
454
|
+
return false;
|
|
455
|
+
try {
|
|
456
|
+
const adapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
|
|
457
|
+
const lookupTableInfos = await adapter.getAddressLookupTableAccounts(addressLookupTableAddresses);
|
|
458
|
+
const lookupTableAccounts = lookupTableInfos.map(info => new web3_js_1.AddressLookupTableAccount({
|
|
459
|
+
key: new web3_js_1.PublicKey(info.key),
|
|
460
|
+
state: web3_js_1.AddressLookupTableAccount.deserialize(new Uint8Array(info.data)),
|
|
461
|
+
}));
|
|
462
|
+
const messageV0 = web3_js_1.MessageV0.compile({
|
|
463
|
+
payerKey: new web3_js_1.PublicKey(sendAddress),
|
|
464
|
+
instructions: solanaInstructions,
|
|
465
|
+
recentBlockhash: web3_js_1.PublicKey.default.toString(),
|
|
466
|
+
addressLookupTableAccounts: lookupTableAccounts,
|
|
467
|
+
});
|
|
468
|
+
const txBytes = new web3_js_1.VersionedTransaction(messageV0).serialize();
|
|
469
|
+
return txBytes.length > 1232;
|
|
470
|
+
}
|
|
471
|
+
catch {
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
474
|
+
})();
|
|
448
475
|
return {
|
|
449
476
|
allowanceContract: '',
|
|
450
477
|
solanaTransactionMetadata: {
|
|
451
|
-
addressLookupTableAddresses
|
|
452
|
-
instructions:
|
|
478
|
+
addressLookupTableAddresses,
|
|
479
|
+
instructions: solanaInstructions,
|
|
480
|
+
isOversized,
|
|
453
481
|
},
|
|
454
482
|
relayTransactionMetadata: {
|
|
455
483
|
relayId: quote.steps[0].requestId,
|
|
@@ -458,13 +486,23 @@ async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
458
486
|
};
|
|
459
487
|
}
|
|
460
488
|
if ((0, types_2.isRelayQuoteTronItemData)(selectedItem.data)) {
|
|
489
|
+
const contractAddress = selectedItem.data.parameter?.contract_address;
|
|
490
|
+
const callData = selectedItem.data.parameter?.data;
|
|
491
|
+
const isTronToken = (0, utils_1.isToken)(sellAsset.assetId);
|
|
492
|
+
if (isTronToken && !contractAddress) {
|
|
493
|
+
throw new Error('Missing Relay Tron contract address');
|
|
494
|
+
}
|
|
495
|
+
if (isTronToken && !callData) {
|
|
496
|
+
throw new Error('Missing Relay Tron transaction data');
|
|
497
|
+
}
|
|
461
498
|
return {
|
|
462
|
-
allowanceContract: '',
|
|
499
|
+
allowanceContract: contractAddress ?? '',
|
|
463
500
|
solanaTransactionMetadata: undefined,
|
|
464
501
|
relayTransactionMetadata: {
|
|
465
502
|
relayId: quote.steps[0].requestId,
|
|
466
503
|
orderId,
|
|
467
|
-
to:
|
|
504
|
+
to: contractAddress,
|
|
505
|
+
data: callData,
|
|
468
506
|
},
|
|
469
507
|
};
|
|
470
508
|
}
|
|
@@ -494,8 +532,19 @@ async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
494
532
|
estimatedExecutionTimeMs: timeEstimate * 1000,
|
|
495
533
|
solanaTransactionMetadata,
|
|
496
534
|
relayTransactionMetadata,
|
|
535
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
536
|
+
strategy: 'fixed_asset',
|
|
537
|
+
affiliateBps,
|
|
538
|
+
sellAsset,
|
|
539
|
+
buyAsset,
|
|
540
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
541
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
542
|
+
fixedAssetId: (0, utils_1.chainIdToFeeAssetId)(caip_1.baseChainId),
|
|
543
|
+
fixedAsset: deps.assetsById[(0, utils_1.chainIdToFeeAssetId)(caip_1.baseChainId)],
|
|
544
|
+
isEstimate: true,
|
|
545
|
+
}),
|
|
497
546
|
};
|
|
498
|
-
});
|
|
547
|
+
}));
|
|
499
548
|
const baseQuoteOrRate = {
|
|
500
549
|
id: quote.steps[0].requestId,
|
|
501
550
|
rate,
|
|
@@ -112,11 +112,6 @@ const relayTokenToAssetId = (relayToken) => {
|
|
|
112
112
|
assetReference: caip_1.ASSET_REFERENCE.Plasma,
|
|
113
113
|
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
114
114
|
};
|
|
115
|
-
case caip_1.CHAIN_REFERENCE.PlumeMainnet:
|
|
116
|
-
return {
|
|
117
|
-
assetReference: caip_1.ASSET_REFERENCE.Plume,
|
|
118
|
-
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
119
|
-
};
|
|
120
115
|
case caip_1.CHAIN_REFERENCE.MantleMainnet:
|
|
121
116
|
return {
|
|
122
117
|
assetReference: caip_1.ASSET_REFERENCE.Mantle,
|
|
@@ -142,9 +137,9 @@ const relayTokenToAssetId = (relayToken) => {
|
|
|
142
137
|
assetReference: caip_1.ASSET_REFERENCE.Katana,
|
|
143
138
|
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
144
139
|
};
|
|
145
|
-
case caip_1.CHAIN_REFERENCE.
|
|
140
|
+
case caip_1.CHAIN_REFERENCE.EtherealMainnet:
|
|
146
141
|
return {
|
|
147
|
-
assetReference: caip_1.ASSET_REFERENCE.
|
|
142
|
+
assetReference: caip_1.ASSET_REFERENCE.Ethereal,
|
|
148
143
|
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
149
144
|
};
|
|
150
145
|
case caip_1.CHAIN_REFERENCE.CeloMainnet:
|
|
@@ -152,6 +147,16 @@ const relayTokenToAssetId = (relayToken) => {
|
|
|
152
147
|
assetReference: caip_1.ASSET_REFERENCE.Celo,
|
|
153
148
|
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
154
149
|
};
|
|
150
|
+
case caip_1.CHAIN_REFERENCE.FlowEvmMainnet:
|
|
151
|
+
return {
|
|
152
|
+
assetReference: caip_1.ASSET_REFERENCE.FlowEvm,
|
|
153
|
+
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
154
|
+
};
|
|
155
|
+
case caip_1.CHAIN_REFERENCE.PlumeMainnet:
|
|
156
|
+
return {
|
|
157
|
+
assetReference: caip_1.ASSET_REFERENCE.Plume,
|
|
158
|
+
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
159
|
+
};
|
|
155
160
|
case caip_1.CHAIN_REFERENCE.StoryMainnet:
|
|
156
161
|
return {
|
|
157
162
|
assetReference: caip_1.ASSET_REFERENCE.Story,
|
|
@@ -217,6 +222,16 @@ const relayTokenToAssetId = (relayToken) => {
|
|
|
217
222
|
assetReference: caip_1.ASSET_REFERENCE.Soneium,
|
|
218
223
|
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
219
224
|
};
|
|
225
|
+
case caip_1.CHAIN_REFERENCE.SeiMainnet:
|
|
226
|
+
return {
|
|
227
|
+
assetReference: caip_1.ASSET_REFERENCE.Sei,
|
|
228
|
+
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
229
|
+
};
|
|
230
|
+
case caip_1.CHAIN_REFERENCE.AbstractMainnet:
|
|
231
|
+
return {
|
|
232
|
+
assetReference: caip_1.ASSET_REFERENCE.Abstract,
|
|
233
|
+
assetNamespace: caip_1.ASSET_NAMESPACE.slip44,
|
|
234
|
+
};
|
|
220
235
|
default:
|
|
221
236
|
throw Error(`chainId '${relayToken.chainId}' not supported`);
|
|
222
237
|
}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getTradeQuote = void 0;
|
|
4
|
+
const caip_1 = require("@shapeshiftoss/caip");
|
|
4
5
|
const monads_1 = require("@sniptt/monads");
|
|
5
6
|
const omniston_sdk_1 = require("@ston-fi/omniston-sdk");
|
|
6
7
|
const types_1 = require("../../../types");
|
|
7
8
|
const utils_1 = require("../../../utils");
|
|
9
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
8
10
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
9
11
|
const constants_1 = require("../utils/constants");
|
|
10
12
|
const helpers_2 = require("../utils/helpers");
|
|
@@ -39,7 +41,7 @@ const getTradeQuote = async (input) => {
|
|
|
39
41
|
try {
|
|
40
42
|
const slippageBps = (0, helpers_2.slippageDecimalToBps)(slippageTolerancePercentageDecimal, constants_1.STONFI_DEFAULT_SLIPPAGE_BPS);
|
|
41
43
|
const referrerFeeBps = (0, helpers_2.affiliateBpsToNumber)(affiliateBps);
|
|
42
|
-
const tonTreasuryAddress = (0, helpers_1.getTreasuryAddressFromChainId)(
|
|
44
|
+
const tonTreasuryAddress = (0, helpers_1.getTreasuryAddressFromChainId)(caip_1.tonChainId);
|
|
43
45
|
const referrerAddress = (0, helpers_2.tonAddressToOmnistonAddress)(tonTreasuryAddress);
|
|
44
46
|
const quoteResult = await (0, helpers_2.waitForQuote)(omniston, {
|
|
45
47
|
settlementMethods: [omniston_sdk_1.SettlementMethod.SETTLEMENT_METHOD_SWAP],
|
|
@@ -103,6 +105,15 @@ const getTradeQuote = async (input) => {
|
|
|
103
105
|
allowanceContract: '0x0',
|
|
104
106
|
estimatedExecutionTimeMs: 30000,
|
|
105
107
|
stonfiSpecific: buildStonfiSpecific(quote, bidAssetAddress, askAssetAddress),
|
|
108
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
109
|
+
strategy: 'buy_asset',
|
|
110
|
+
affiliateBps,
|
|
111
|
+
sellAsset,
|
|
112
|
+
buyAsset,
|
|
113
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
114
|
+
buyAmountCryptoBaseUnit,
|
|
115
|
+
isEstimate: true,
|
|
116
|
+
}),
|
|
106
117
|
},
|
|
107
118
|
],
|
|
108
119
|
};
|
|
@@ -5,6 +5,7 @@ const monads_1 = require("@sniptt/monads");
|
|
|
5
5
|
const omniston_sdk_1 = require("@ston-fi/omniston-sdk");
|
|
6
6
|
const types_1 = require("../../../types");
|
|
7
7
|
const utils_1 = require("../../../utils");
|
|
8
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
8
9
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
9
10
|
const constants_1 = require("../utils/constants");
|
|
10
11
|
const helpers_2 = require("../utils/helpers");
|
|
@@ -89,6 +90,15 @@ const getTradeRate = async (input) => {
|
|
|
89
90
|
allowanceContract: '0x0000000000000000000000000000000000000000',
|
|
90
91
|
estimatedExecutionTimeMs: 30000,
|
|
91
92
|
stonfiSpecific: buildStonfiSpecific(quote, bidAssetAddress, askAssetAddress),
|
|
93
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
94
|
+
strategy: 'buy_asset',
|
|
95
|
+
affiliateBps,
|
|
96
|
+
sellAsset,
|
|
97
|
+
buyAsset,
|
|
98
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
99
|
+
buyAmountCryptoBaseUnit,
|
|
100
|
+
isEstimate: true,
|
|
101
|
+
}),
|
|
92
102
|
},
|
|
93
103
|
],
|
|
94
104
|
};
|
|
@@ -7,6 +7,7 @@ const monads_1 = require("@sniptt/monads");
|
|
|
7
7
|
const tronweb_1 = require("tronweb");
|
|
8
8
|
const types_1 = require("../../../types");
|
|
9
9
|
const utils_2 = require("../../../utils");
|
|
10
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
10
11
|
const constants_1 = require("./constants");
|
|
11
12
|
const fetchFromSunio_1 = require("./fetchFromSunio");
|
|
12
13
|
const helpers_1 = require("./helpers/helpers");
|
|
@@ -187,6 +188,15 @@ async function getQuoteOrRate(input, deps) {
|
|
|
187
188
|
route: bestRoute,
|
|
188
189
|
},
|
|
189
190
|
}),
|
|
191
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
192
|
+
strategy: 'buy_asset',
|
|
193
|
+
affiliateBps,
|
|
194
|
+
sellAsset,
|
|
195
|
+
buyAsset,
|
|
196
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
197
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
198
|
+
isEstimate: true,
|
|
199
|
+
}),
|
|
190
200
|
},
|
|
191
201
|
],
|
|
192
202
|
swapperName: types_1.SwapperName.Sunio,
|
|
@@ -10,6 +10,9 @@ exports.thorchainSwapper = {
|
|
|
10
10
|
executeUtxoTransaction: (txToSign, { signAndBroadcastTransaction }) => {
|
|
11
11
|
return signAndBroadcastTransaction(txToSign);
|
|
12
12
|
},
|
|
13
|
+
executeSolanaTransaction: (txToSign, { signAndBroadcastTransaction }) => {
|
|
14
|
+
return signAndBroadcastTransaction(txToSign);
|
|
15
|
+
},
|
|
13
16
|
executeTronTransaction: (txToSign, { signAndBroadcastTransaction }) => {
|
|
14
17
|
return signAndBroadcastTransaction(txToSign);
|
|
15
18
|
},
|
|
@@ -15,6 +15,8 @@ exports.thorchainApi = {
|
|
|
15
15
|
getEvmTransactionFees: input => thorchain_utils_1.evm.getEvmTransactionFees(input, swapperName),
|
|
16
16
|
getUnsignedUtxoTransaction: input => thorchain_utils_1.utxo.getUnsignedUtxoTransaction(input, swapperName),
|
|
17
17
|
getUtxoTransactionFees: input => thorchain_utils_1.utxo.getUtxoTransactionFees(input, swapperName),
|
|
18
|
+
getUnsignedSolanaTransaction: input => thorchain_utils_1.solana.getUnsignedSolanaTransaction(input, swapperName),
|
|
19
|
+
getSolanaTransactionFees: input => thorchain_utils_1.solana.getSolanaTransactionFees(input, swapperName),
|
|
18
20
|
getUnsignedTronTransaction: input => thorchain_utils_1.tron.getUnsignedTronTransaction(input, swapperName),
|
|
19
21
|
getTronTransactionFees: input => thorchain_utils_1.tron.getTronTransactionFees(input, swapperName),
|
|
20
22
|
getUnsignedCosmosSdkTransaction: async ({ tradeQuote, stepIndex, from, config, assertGetCosmosSdkChainAdapter, }) => {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"ETH.YFI-0X0BC529C00C6401AEF6D220BE8C6EA1667F6AD93E": "eip155:1/erc20:0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e",
|
|
38
38
|
"GAIA.ATOM": "cosmos:cosmoshub-4/slip44:118",
|
|
39
39
|
"LTC.LTC": "bip122:12a765e31ffd4059bada1e25190f6e98/slip44:2",
|
|
40
|
+
"SOL.SOL": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501",
|
|
40
41
|
"THOR.RUJI": "cosmos:thorchain-1/slip44:ruji",
|
|
41
42
|
"THOR.TCY": "cosmos:thorchain-1/slip44:tcy",
|
|
42
43
|
"TRON.TRX": "tron:0x2b6653dc/slip44:195",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AssetId } from '@shapeshiftoss/caip';
|
|
2
|
-
export declare const assetIdToThorPoolAssetIdMap:
|
|
2
|
+
export declare const assetIdToThorPoolAssetIdMap: Record<string, string>;
|
|
3
3
|
export declare const thorPoolAssetIdToAssetId: (id: string) => AssetId | undefined;
|
|
4
4
|
export declare const assetIdToThorPoolAssetId: ({ assetId }: {
|
|
5
5
|
assetId: AssetId;
|
|
@@ -8,7 +8,8 @@ const invert_1 = __importDefault(require("lodash/invert"));
|
|
|
8
8
|
const generatedTradableAssetMap_json_1 = __importDefault(require("../../generated/generatedTradableAssetMap.json"));
|
|
9
9
|
const thorPoolIdAssetIdSymbolMap = generatedTradableAssetMap_json_1.default;
|
|
10
10
|
exports.assetIdToThorPoolAssetIdMap = (0, invert_1.default)(thorPoolIdAssetIdSymbolMap);
|
|
11
|
+
const assetIdToThorPoolAssetIdMapLower = Object.fromEntries(Object.entries(exports.assetIdToThorPoolAssetIdMap).map(([k, v]) => [k.toLowerCase(), v]));
|
|
11
12
|
const thorPoolAssetIdToAssetId = (id) => thorPoolIdAssetIdSymbolMap[id.toUpperCase()];
|
|
12
13
|
exports.thorPoolAssetIdToAssetId = thorPoolAssetIdToAssetId;
|
|
13
|
-
const assetIdToThorPoolAssetId = ({ assetId }) =>
|
|
14
|
+
const assetIdToThorPoolAssetId = ({ assetId }) => assetIdToThorPoolAssetIdMapLower[assetId.toLowerCase()];
|
|
14
15
|
exports.assetIdToThorPoolAssetId = assetIdToThorPoolAssetId;
|
|
@@ -18,6 +18,10 @@ const poolAssetHelpers_1 = require("./poolAssetHelpers");
|
|
|
18
18
|
const result = (0, poolAssetHelpers_1.thorPoolAssetIdToAssetId)('ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48');
|
|
19
19
|
(0, vitest_1.expect)(result).toEqual(usdcAssetId);
|
|
20
20
|
});
|
|
21
|
+
(0, vitest_1.it)('returns Solana assetId when poolAssetId is SOL.SOL', () => {
|
|
22
|
+
const result = (0, poolAssetHelpers_1.thorPoolAssetIdToAssetId)('SOL.SOL');
|
|
23
|
+
(0, vitest_1.expect)(result).toEqual(caip_1.solAssetId);
|
|
24
|
+
});
|
|
21
25
|
(0, vitest_1.it)('returns undefined for an asset we dont support', () => {
|
|
22
26
|
const result = (0, poolAssetHelpers_1.thorPoolAssetIdToAssetId)('BNB.AVA-645');
|
|
23
27
|
(0, vitest_1.expect)(result).toEqual(undefined);
|
|
@@ -46,6 +50,12 @@ const poolAssetHelpers_1 = require("./poolAssetHelpers");
|
|
|
46
50
|
const poolAssetId = 'ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48';
|
|
47
51
|
(0, vitest_1.expect)(result).toEqual(poolAssetId);
|
|
48
52
|
});
|
|
53
|
+
(0, vitest_1.it)('returns SOL pool when assetId is solAssetId (base58 case-sensitive)', () => {
|
|
54
|
+
const assetId = caip_1.solAssetId;
|
|
55
|
+
const result = (0, poolAssetHelpers_1.assetIdToThorPoolAssetId)({ assetId });
|
|
56
|
+
const poolAssetId = 'SOL.SOL';
|
|
57
|
+
(0, vitest_1.expect)(result).toEqual(poolAssetId);
|
|
58
|
+
});
|
|
49
59
|
(0, vitest_1.it)('returns undefined for an unsupported asset', () => {
|
|
50
60
|
const assetId = 'foobar';
|
|
51
61
|
const result = (0, poolAssetHelpers_1.assetIdToThorPoolAssetId)({ assetId });
|
|
@@ -9,6 +9,7 @@ const uuid_1 = require("uuid");
|
|
|
9
9
|
const constants_1 = require("../../../constants");
|
|
10
10
|
const types_1 = require("../../../types");
|
|
11
11
|
const utils_2 = require("../../../utils");
|
|
12
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
12
13
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
13
14
|
const fetchFromZrx_1 = require("../utils/fetchFromZrx");
|
|
14
15
|
const helpers_2 = require("../utils/helpers/helpers");
|
|
@@ -99,6 +100,14 @@ async function getZrxTradeQuote(input, assertGetEvmChainAdapter, assetsById, zrx
|
|
|
99
100
|
buyAmountAfterFeesCryptoBaseUnit: buyAmount,
|
|
100
101
|
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
101
102
|
source: types_1.SwapperName.Zrx,
|
|
103
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
104
|
+
strategy: 'buy_asset',
|
|
105
|
+
affiliateBps,
|
|
106
|
+
sellAsset,
|
|
107
|
+
buyAsset,
|
|
108
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
109
|
+
buyAmountCryptoBaseUnit: buyAmount,
|
|
110
|
+
}),
|
|
102
111
|
permit2Eip712: permit2Eip712,
|
|
103
112
|
zrxTransactionMetadata: transactionMetadata,
|
|
104
113
|
},
|
|
@@ -6,6 +6,7 @@ const monads_1 = require("@sniptt/monads");
|
|
|
6
6
|
const uuid_1 = require("uuid");
|
|
7
7
|
const constants_1 = require("../../../constants");
|
|
8
8
|
const types_1 = require("../../../types");
|
|
9
|
+
const affiliateFee_1 = require("../../utils/affiliateFee");
|
|
9
10
|
const helpers_1 = require("../../utils/helpers/helpers");
|
|
10
11
|
const fetchFromZrx_1 = require("../utils/fetchFromZrx");
|
|
11
12
|
const helpers_2 = require("../utils/helpers/helpers");
|
|
@@ -65,6 +66,14 @@ async function getZrxTradeRate(input, assetsById, zrxBaseUrl) {
|
|
|
65
66
|
buyAmountAfterFeesCryptoBaseUnit: buyAmount,
|
|
66
67
|
sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
67
68
|
source: types_1.SwapperName.Zrx,
|
|
69
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
70
|
+
strategy: 'buy_asset',
|
|
71
|
+
affiliateBps,
|
|
72
|
+
sellAsset,
|
|
73
|
+
buyAsset,
|
|
74
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
75
|
+
buyAmountCryptoBaseUnit: buyAmount,
|
|
76
|
+
}),
|
|
68
77
|
},
|
|
69
78
|
],
|
|
70
79
|
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AssetId } from '@shapeshiftoss/caip';
|
|
2
|
+
import type { Asset } from '@shapeshiftoss/types';
|
|
3
|
+
import type { AffiliateFee } from '../../types';
|
|
4
|
+
export type AffiliateFeeStrategy = 'buy_asset' | 'sell_asset' | 'fixed_asset';
|
|
5
|
+
type BuildAffiliateFeeParams = {
|
|
6
|
+
strategy: AffiliateFeeStrategy;
|
|
7
|
+
affiliateBps: string;
|
|
8
|
+
sellAsset: Asset;
|
|
9
|
+
buyAsset: Asset;
|
|
10
|
+
sellAmountCryptoBaseUnit: string;
|
|
11
|
+
buyAmountCryptoBaseUnit: string;
|
|
12
|
+
fixedAsset?: Asset;
|
|
13
|
+
fixedAssetId?: AssetId;
|
|
14
|
+
isEstimate?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export declare const buildAffiliateFee: (params: BuildAffiliateFeeParams) => AffiliateFee | undefined;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildAffiliateFee = void 0;
|
|
4
|
+
const utils_1 = require("@shapeshiftoss/utils");
|
|
5
|
+
const buildAffiliateFee = (params) => {
|
|
6
|
+
const { strategy, affiliateBps, sellAsset, buyAsset, sellAmountCryptoBaseUnit, buyAmountCryptoBaseUnit, fixedAsset, fixedAssetId, isEstimate, } = params;
|
|
7
|
+
if ((0, utils_1.bnOrZero)(affiliateBps).lte(0))
|
|
8
|
+
return undefined;
|
|
9
|
+
const bpsDecimal = (0, utils_1.bn)(affiliateBps).div(10000);
|
|
10
|
+
switch (strategy) {
|
|
11
|
+
case 'buy_asset': {
|
|
12
|
+
const feeAmount = (0, utils_1.bnOrZero)(buyAmountCryptoBaseUnit).times(bpsDecimal).toFixed(0);
|
|
13
|
+
return {
|
|
14
|
+
assetId: buyAsset.assetId,
|
|
15
|
+
amountCryptoBaseUnit: feeAmount,
|
|
16
|
+
asset: buyAsset,
|
|
17
|
+
isEstimate,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
case 'sell_asset': {
|
|
21
|
+
const feeAmount = (0, utils_1.bnOrZero)(sellAmountCryptoBaseUnit).times(bpsDecimal).toFixed(0);
|
|
22
|
+
return {
|
|
23
|
+
assetId: sellAsset.assetId,
|
|
24
|
+
amountCryptoBaseUnit: feeAmount,
|
|
25
|
+
asset: sellAsset,
|
|
26
|
+
isEstimate,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
case 'fixed_asset': {
|
|
30
|
+
if (!fixedAsset || !fixedAssetId)
|
|
31
|
+
return undefined;
|
|
32
|
+
return {
|
|
33
|
+
assetId: fixedAssetId,
|
|
34
|
+
amountCryptoBaseUnit: '0',
|
|
35
|
+
asset: fixedAsset,
|
|
36
|
+
isEstimate: true,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
default:
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.buildAffiliateFee = buildAffiliateFee;
|
|
@@ -28,21 +28,25 @@ const caip_1 = require("@shapeshiftoss/caip");
|
|
|
28
28
|
const adapters = __importStar(require("@shapeshiftoss/chain-adapters"));
|
|
29
29
|
const utils_1 = require("@shapeshiftoss/utils");
|
|
30
30
|
const monads_1 = require("@sniptt/monads");
|
|
31
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
31
32
|
const tronweb_1 = require("tronweb");
|
|
32
33
|
const uuid_1 = require("uuid");
|
|
33
34
|
const index_1 = require("../index");
|
|
35
|
+
const affiliateFee_1 = require("../swappers/utils/affiliateFee");
|
|
34
36
|
const types_1 = require("../types");
|
|
35
37
|
const utils_2 = require("../utils");
|
|
36
38
|
const evm = __importStar(require("./evm"));
|
|
37
39
|
const getLimitWithManualSlippage_1 = require("./getLimitWithManualSlippage/getLimitWithManualSlippage");
|
|
38
40
|
const getQuote_1 = require("./getQuote");
|
|
39
41
|
const index_2 = require("./index");
|
|
42
|
+
const solana = __importStar(require("./solana"));
|
|
40
43
|
const tron = __importStar(require("./tron"));
|
|
41
44
|
const utxo = __importStar(require("./utxo"));
|
|
42
45
|
const SAFE_GAS_LIMIT = '100000'; // depositWithExpiry()
|
|
46
|
+
const SOLANA_MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
|
|
43
47
|
const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapperName) => {
|
|
44
48
|
const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit: sellAmountCryptoBaseUnit, accountNumber, receiveAddress, affiliateBps: requestedAffiliateBps, } = input;
|
|
45
|
-
const { config, assertGetEvmChainAdapter, assertGetUtxoChainAdapter, assertGetCosmosSdkChainAdapter, } = deps;
|
|
49
|
+
const { config, assertGetEvmChainAdapter, assertGetUtxoChainAdapter, assertGetCosmosSdkChainAdapter, assertGetSolanaChainAdapter, } = deps;
|
|
46
50
|
// "NativePrecision" is intended to indicate the base unit precision of the asset
|
|
47
51
|
// for the corresponding swapper network (THORChain or MAYAChain)
|
|
48
52
|
// (CACAO = 10, everything else = 8)
|
|
@@ -193,6 +197,14 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
|
|
|
193
197
|
accountNumber,
|
|
194
198
|
allowanceContract,
|
|
195
199
|
feeData,
|
|
200
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
201
|
+
strategy: 'buy_asset',
|
|
202
|
+
affiliateBps: route.affiliateBps,
|
|
203
|
+
sellAsset,
|
|
204
|
+
buyAsset,
|
|
205
|
+
sellAmountCryptoBaseUnit,
|
|
206
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
207
|
+
}),
|
|
196
208
|
thorchainSpecific: {
|
|
197
209
|
maxStreamingQuantity: route.quote.max_streaming_quantity,
|
|
198
210
|
},
|
|
@@ -305,10 +317,51 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
|
|
|
305
317
|
}));
|
|
306
318
|
}
|
|
307
319
|
case caip_1.CHAIN_NAMESPACE.Solana: {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
320
|
+
const adapter = assertGetSolanaChainAdapter(sellAsset.chainId);
|
|
321
|
+
const sendAddress = input.sendAddress;
|
|
322
|
+
const maybeRoutes = await Promise.allSettled(perRouteValues.map(async (route) => {
|
|
323
|
+
const memo = getMemo(route);
|
|
324
|
+
const protocolFees = getProtocolFees(route.quote);
|
|
325
|
+
const feeData = await (async () => {
|
|
326
|
+
if (!sendAddress)
|
|
327
|
+
return { networkFeeCryptoBaseUnit: undefined, protocolFees };
|
|
328
|
+
const { vault } = await solana.getThorTxData({ sellAsset, config, swapperName });
|
|
329
|
+
const memoInstruction = new web3_js_1.TransactionInstruction({
|
|
330
|
+
keys: [],
|
|
331
|
+
programId: new web3_js_1.PublicKey(SOLANA_MEMO_PROGRAM_ID),
|
|
332
|
+
data: Buffer.from(memo, 'utf8'),
|
|
333
|
+
});
|
|
334
|
+
const transferInstruction = web3_js_1.SystemProgram.transfer({
|
|
335
|
+
fromPubkey: new web3_js_1.PublicKey(sendAddress),
|
|
336
|
+
toPubkey: new web3_js_1.PublicKey(vault),
|
|
337
|
+
lamports: BigInt(sellAmountCryptoBaseUnit),
|
|
338
|
+
});
|
|
339
|
+
const { fast } = await adapter.getFeeData({
|
|
340
|
+
to: vault,
|
|
341
|
+
value: '0',
|
|
342
|
+
chainSpecific: {
|
|
343
|
+
from: sendAddress,
|
|
344
|
+
tokenId: (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId),
|
|
345
|
+
instructions: [memoInstruction, transferInstruction],
|
|
346
|
+
},
|
|
347
|
+
});
|
|
348
|
+
return { networkFeeCryptoBaseUnit: fast.txFee, protocolFees };
|
|
349
|
+
})();
|
|
350
|
+
return makeThorTradeRateOrQuote({
|
|
351
|
+
route,
|
|
352
|
+
allowanceContract: '0x0',
|
|
353
|
+
memo,
|
|
354
|
+
feeData,
|
|
355
|
+
});
|
|
311
356
|
}));
|
|
357
|
+
const routes = maybeRoutes.filter(utils_1.isFulfilled).map(r => r.value);
|
|
358
|
+
if (!routes.length)
|
|
359
|
+
return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
|
|
360
|
+
message: 'Unable to create any routes',
|
|
361
|
+
code: types_1.TradeQuoteError.UnsupportedTradePair,
|
|
362
|
+
cause: maybeRoutes.filter(utils_1.isRejected).map(r => r.reason),
|
|
363
|
+
}));
|
|
364
|
+
return (0, monads_1.Ok)(routes);
|
|
312
365
|
}
|
|
313
366
|
case caip_1.CHAIN_NAMESPACE.Tron: {
|
|
314
367
|
const maybeRoutes = await Promise.allSettled(perRouteValues.map(async (route) => {
|
|
@@ -13,6 +13,7 @@ export * from './getL1RateOrQuote';
|
|
|
13
13
|
export * from './getPoolDetails';
|
|
14
14
|
export * as cosmossdk from './cosmossdk';
|
|
15
15
|
export * as evm from './evm';
|
|
16
|
+
export * as solana from './solana';
|
|
16
17
|
export * as tron from './tron';
|
|
17
18
|
export * as utxo from './utxo';
|
|
18
19
|
export declare const getChainIdBySwapper: (swapperName: SwapperName) => import("@shapeshiftoss/caip").ChainId;
|
|
@@ -21,7 +22,7 @@ export declare const isThorTradeQuote: (quote: TradeQuote | undefined) => quote
|
|
|
21
22
|
export declare const getDaemonUrl: (config: SwapperConfig, swapperName: SwapperName) => string;
|
|
22
23
|
export declare const getMidgardUrl: (config: SwapperConfig, swapperName: SwapperName) => string;
|
|
23
24
|
export declare const isNativeAsset: (assetId: AssetId, swapperName: SwapperName) => boolean;
|
|
24
|
-
export declare const getNativePrecision: (assetId: AssetId, swapperName: SwapperName) =>
|
|
25
|
+
export declare const getNativePrecision: (assetId: AssetId, swapperName: SwapperName) => 8 | 10;
|
|
25
26
|
export declare const getNativeFee: (swapperName: SwapperName) => "2000000" | "2000000000";
|
|
26
27
|
export declare const getAffiliate: (swapperName: SwapperName) => "ss" | "ssmaya";
|
|
27
28
|
export declare const getPoolAssetId: ({ assetId, swapperName, }: {
|
|
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
26
26
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.getSwapSource = exports.getPoolAssetId = exports.getAffiliate = exports.getNativeFee = exports.getNativePrecision = exports.isNativeAsset = exports.getMidgardUrl = exports.getDaemonUrl = exports.isThorTradeQuote = exports.isThorTradeRate = exports.getChainIdBySwapper = exports.utxo = exports.tron = exports.evm = exports.cosmossdk = void 0;
|
|
29
|
+
exports.getSwapSource = exports.getPoolAssetId = exports.getAffiliate = exports.getNativeFee = exports.getNativePrecision = exports.isNativeAsset = exports.getMidgardUrl = exports.getDaemonUrl = exports.isThorTradeQuote = exports.isThorTradeRate = exports.getChainIdBySwapper = exports.utxo = exports.tron = exports.solana = exports.evm = exports.cosmossdk = void 0;
|
|
30
30
|
const caip_1 = require("@shapeshiftoss/caip");
|
|
31
31
|
const adapters = __importStar(require("@shapeshiftoss/chain-adapters"));
|
|
32
32
|
const MayachainSwapper_1 = require("../swappers/MayachainSwapper");
|
|
@@ -43,6 +43,7 @@ __exportStar(require("./getL1RateOrQuote"), exports);
|
|
|
43
43
|
__exportStar(require("./getPoolDetails"), exports);
|
|
44
44
|
exports.cosmossdk = __importStar(require("./cosmossdk"));
|
|
45
45
|
exports.evm = __importStar(require("./evm"));
|
|
46
|
+
exports.solana = __importStar(require("./solana"));
|
|
46
47
|
exports.tron = __importStar(require("./tron"));
|
|
47
48
|
exports.utxo = __importStar(require("./utxo"));
|
|
48
49
|
const getChainIdBySwapper = (swapperName) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSolanaTransactionFees = void 0;
|
|
4
|
+
const utils_1 = require("@shapeshiftoss/utils");
|
|
5
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
6
|
+
const utils_2 = require("../../utils");
|
|
7
|
+
const getThorTxData_1 = require("./getThorTxData");
|
|
8
|
+
const MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
|
|
9
|
+
const getSolanaTransactionFees = async (args, swapperName) => {
|
|
10
|
+
const { tradeQuote, stepIndex, from, assertGetSolanaChainAdapter, config } = args;
|
|
11
|
+
if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
|
|
12
|
+
throw new Error('Unable to execute a trade rate quote');
|
|
13
|
+
const { memo } = tradeQuote;
|
|
14
|
+
if (!memo)
|
|
15
|
+
throw new Error('Memo is required');
|
|
16
|
+
const step = (0, utils_2.getExecutableTradeStep)(tradeQuote, stepIndex);
|
|
17
|
+
const { sellAmountIncludingProtocolFeesCryptoBaseUnit, sellAsset } = step;
|
|
18
|
+
const { vault } = await (0, getThorTxData_1.getThorTxData)({ sellAsset, config, swapperName });
|
|
19
|
+
const adapter = assertGetSolanaChainAdapter(sellAsset.chainId);
|
|
20
|
+
const memoInstruction = new web3_js_1.TransactionInstruction({
|
|
21
|
+
keys: [],
|
|
22
|
+
programId: new web3_js_1.PublicKey(MEMO_PROGRAM_ID),
|
|
23
|
+
data: Buffer.from(memo, 'utf8'),
|
|
24
|
+
});
|
|
25
|
+
const transferInstruction = web3_js_1.SystemProgram.transfer({
|
|
26
|
+
fromPubkey: new web3_js_1.PublicKey(from),
|
|
27
|
+
toPubkey: new web3_js_1.PublicKey(vault),
|
|
28
|
+
lamports: BigInt(sellAmountIncludingProtocolFeesCryptoBaseUnit),
|
|
29
|
+
});
|
|
30
|
+
const { fast } = await adapter.getFeeData({
|
|
31
|
+
to: vault,
|
|
32
|
+
value: '0',
|
|
33
|
+
chainSpecific: {
|
|
34
|
+
from,
|
|
35
|
+
tokenId: (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId),
|
|
36
|
+
instructions: [memoInstruction, transferInstruction],
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
return fast.txFee;
|
|
40
|
+
};
|
|
41
|
+
exports.getSolanaTransactionFees = getSolanaTransactionFees;
|