@shapeshiftoss/swapper 17.6.10 → 17.6.11
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 +29 -18
- 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 -0
- package/dist/cjs/index.js +1 -0
- 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 +9 -0
- 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/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/DebridgeSwapper/endpoints.d.ts +2 -0
- package/dist/cjs/swappers/DebridgeSwapper/endpoints.js +217 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +31 -0
- package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.d.ts +3 -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/DebridgeSwapper/utils/debridgeService.d.ts +5 -0
- 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 +369 -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/JupiterSwapper/swapperApi/getTradeQuote.js +32 -0
- package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeRate.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 +4 -3
- package/dist/cjs/swappers/RelaySwapper/utils/getTrade.js +44 -5
- package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +17 -7
- package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +10 -0
- 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/thorchain-utils/solana/index.js +19 -0
- package/dist/cjs/types.d.ts +44 -5
- package/dist/cjs/types.js +1 -0
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/constants.js +11 -0
- 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 -0
- package/dist/esm/index.js +1 -0
- 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 +9 -0
- 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/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/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
- 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/DebridgeSwapper/endpoints.d.ts +2 -0
- package/dist/esm/swappers/DebridgeSwapper/endpoints.js +211 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +27 -0
- package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.d.ts +3 -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/DebridgeSwapper/utils/debridgeService.d.ts +5 -0
- 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 +362 -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/JupiterSwapper/swapperApi/getTradeQuote.js +33 -1
- package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeRate.js +9 -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 +6 -5
- package/dist/esm/swappers/RelaySwapper/utils/getTrade.js +47 -8
- package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +17 -7
- package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +10 -0
- 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/types.d.ts +44 -5
- package/dist/esm/types.js +1 -0
- package/package.json +19 -18
|
@@ -9,6 +9,7 @@ const viem_1 = require("viem");
|
|
|
9
9
|
const __1 = require("../../..");
|
|
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 constants_1 = require("../constants");
|
|
14
15
|
const fetchPortalsTradeOrder_1 = require("../utils/fetchPortalsTradeOrder");
|
|
@@ -204,6 +205,15 @@ async function getPortalsTradeQuote(input, assertGetEvmChainAdapter, swapperConf
|
|
|
204
205
|
steps: portalsTradeOrderResponse.context.steps,
|
|
205
206
|
route: portalsTradeOrderResponse.context.route,
|
|
206
207
|
},
|
|
208
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
209
|
+
strategy: 'buy_asset',
|
|
210
|
+
affiliateBps,
|
|
211
|
+
sellAsset,
|
|
212
|
+
buyAsset,
|
|
213
|
+
sellAmountCryptoBaseUnit: input.sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
214
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
215
|
+
isEstimate: true,
|
|
216
|
+
}),
|
|
207
217
|
},
|
|
208
218
|
],
|
|
209
219
|
};
|
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.relayErrorCodeToTradeQuoteError = exports.MAXIMUM_SUPPORTED_RELAY_STEPS = exports.DEFAULT_RELAY_TRON_USER_ADDRESS = exports.DEFAULT_RELAY_SOLANA_USER_ADDRESS = exports.DEFAULT_RELAY_BTC_USER_ADDRESS = exports.DEFAULT_RELAY_EVM_USER_ADDRESS = exports.RELAY_TRON_TOKEN_ADDRESS = exports.RELAY_SOLANA_TOKEN_ADDRESS = exports.RELAY_BTC_TOKEN_ADDRESS = exports.DEFAULT_RELAY_EVM_TOKEN_ADDRESS = exports.relayChainIdToChainId = exports.RelayStatusMessage = exports.chainIdToRelayChainId = void 0;
|
|
7
7
|
const caip_1 = require("@shapeshiftoss/caip");
|
|
8
|
-
const contracts_1 = require("@shapeshiftoss/contracts");
|
|
9
8
|
const invert_1 = __importDefault(require("lodash/invert"));
|
|
10
9
|
const viem_1 = require("viem");
|
|
11
10
|
const chains_1 = require("viem/chains");
|
|
@@ -35,10 +34,11 @@ exports.chainIdToRelayChainId = {
|
|
|
35
34
|
[caip_1.inkChainId]: chains_1.ink.id,
|
|
36
35
|
[caip_1.megaethChainId]: 4326,
|
|
37
36
|
[caip_1.plasmaChainId]: chains_1.plasma.id,
|
|
38
|
-
[caip_1.plumeChainId]: chains_1.plumeMainnet.id,
|
|
39
37
|
[caip_1.katanaChainId]: chains_1.katana.id,
|
|
40
|
-
[caip_1.
|
|
38
|
+
[caip_1.etherealChainId]: 5064014,
|
|
41
39
|
[caip_1.celoChainId]: chains_1.celo.id,
|
|
40
|
+
[caip_1.flowEvmChainId]: chains_1.flowMainnet.id,
|
|
41
|
+
[caip_1.plumeChainId]: chains_1.plumeMainnet.id,
|
|
42
42
|
[caip_1.storyChainId]: chains_1.story.id,
|
|
43
43
|
[caip_1.zkSyncEraChainId]: chains_1.zksync.id,
|
|
44
44
|
[caip_1.blastChainId]: chains_1.blast.id,
|
|
@@ -53,6 +53,7 @@ exports.chainIdToRelayChainId = {
|
|
|
53
53
|
[caip_1.bobChainId]: chains_1.bob.id,
|
|
54
54
|
[caip_1.modeChainId]: chains_1.mode.id,
|
|
55
55
|
[caip_1.soneiumChainId]: chains_1.soneium.id,
|
|
56
|
+
[caip_1.seiChainId]: chains_1.sei.id,
|
|
56
57
|
};
|
|
57
58
|
var RelayStatusMessage;
|
|
58
59
|
(function (RelayStatusMessage) {
|
|
@@ -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,
|
|
@@ -494,8 +522,19 @@ async function getTrade({ input, deps, relayChainMap, }) {
|
|
|
494
522
|
estimatedExecutionTimeMs: timeEstimate * 1000,
|
|
495
523
|
solanaTransactionMetadata,
|
|
496
524
|
relayTransactionMetadata,
|
|
525
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
526
|
+
strategy: 'fixed_asset',
|
|
527
|
+
affiliateBps,
|
|
528
|
+
sellAsset,
|
|
529
|
+
buyAsset,
|
|
530
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
531
|
+
buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
|
|
532
|
+
fixedAssetId: (0, utils_1.chainIdToFeeAssetId)(caip_1.baseChainId),
|
|
533
|
+
fixedAsset: deps.assetsById[(0, utils_1.chainIdToFeeAssetId)(caip_1.baseChainId)],
|
|
534
|
+
isEstimate: true,
|
|
535
|
+
}),
|
|
497
536
|
};
|
|
498
|
-
});
|
|
537
|
+
}));
|
|
499
538
|
const baseQuoteOrRate = {
|
|
500
539
|
id: quote.steps[0].requestId,
|
|
501
540
|
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,11 @@ 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
|
+
};
|
|
220
230
|
default:
|
|
221
231
|
throw Error(`chainId '${relayToken.chainId}' not supported`);
|
|
222
232
|
}
|
|
@@ -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");
|
|
@@ -103,6 +104,15 @@ const getTradeQuote = async (input) => {
|
|
|
103
104
|
allowanceContract: '0x0',
|
|
104
105
|
estimatedExecutionTimeMs: 30000,
|
|
105
106
|
stonfiSpecific: buildStonfiSpecific(quote, bidAssetAddress, askAssetAddress),
|
|
107
|
+
affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
|
|
108
|
+
strategy: 'buy_asset',
|
|
109
|
+
affiliateBps,
|
|
110
|
+
sellAsset,
|
|
111
|
+
buyAsset,
|
|
112
|
+
sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
|
|
113
|
+
buyAmountCryptoBaseUnit,
|
|
114
|
+
isEstimate: true,
|
|
115
|
+
}),
|
|
106
116
|
},
|
|
107
117
|
],
|
|
108
118
|
};
|
|
@@ -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";
|