rubic-sdk 6.0.0-alpha.ton.59 → 6.0.0-alpha.ton.60
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/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-provider.js +2 -8
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-provider.js.map +1 -1
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-trade.d.ts +1 -1
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-trade.js +3 -11
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-trade.js.map +1 -1
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-swap-service.d.ts +14 -5
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-swap-service.js +98 -31
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-swap-service.js.map +1 -1
- package/package.json +1 -1
@@ -24,16 +24,10 @@ class DedustOnChainProvider extends aggregator_on_chain_provider_abstract_1.Aggr
|
|
24
24
|
async calculate(from, toToken, options) {
|
25
25
|
try {
|
26
26
|
const { fromWithoutFee, proxyFeeInfo } = await this.handleProxyContract(from, options);
|
27
|
-
const
|
28
|
-
const toAsset = this.dedustSwapService.getTokenAsset(toToken);
|
29
|
-
const pool = await this.dedustSwapService.getPool(fromAsset, toAsset);
|
30
|
-
const { amountOut } = await pool.getEstimatedSwapOut({
|
31
|
-
assetIn: fromAsset,
|
32
|
-
amountIn: BigInt(fromWithoutFee.stringWeiAmount)
|
33
|
-
});
|
27
|
+
const toStringWeiAmount = await this.dedustSwapService.calcOutputAmount(from, toToken);
|
34
28
|
const to = new tokens_1.PriceTokenAmount({
|
35
29
|
...toToken.asStruct,
|
36
|
-
weiAmount: new bignumber_js_1.default(
|
30
|
+
weiAmount: new bignumber_js_1.default(toStringWeiAmount)
|
37
31
|
});
|
38
32
|
return new dedust_on_chain_trade_1.DedustOnChainTrade({
|
39
33
|
from,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dedust-on-chain-provider.js","sourceRoot":"","sources":["../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-provider.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AACrC,8CAAiE;AACjE,gFAIoD;AAIpD,iFAA8E;AAC9E,kIAAmH;AAGnH,uDAAoD;AACpD,mEAA6D;AAC7D,wEAAmE;AAEnE,MAAa,qBAAsB,SAAQ,iEAAyB;IAApE;;QACW,cAAS,GAAG,yCAAmB,CAAC,MAAM,CAAC;QAE7B,sBAAiB,GAAG,IAAI,uCAAiB,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"dedust-on-chain-provider.js","sourceRoot":"","sources":["../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-provider.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAqC;AACrC,8CAAiE;AACjE,gFAIoD;AAIpD,iFAA8E;AAC9E,kIAAmH;AAGnH,uDAAoD;AACpD,mEAA6D;AAC7D,wEAAmE;AAEnE,MAAa,qBAAsB,SAAQ,iEAAyB;IAApE;;QACW,cAAS,GAAG,yCAAmB,CAAC,MAAM,CAAC;QAE7B,sBAAiB,GAAG,IAAI,uCAAiB,EAAE,CAAC;IAiDjE,CAAC;IA/CU,qBAAqB,CAAC,UAA0B;QACnD,OAAO,UAAU,KAAK,iCAAe,CAAC,GAAG,CAAC;IAC9C,CAAC;IAEM,KAAK,CAAC,SAAS,CAClB,IAAyC,EACzC,OAAsC,EACtC,OAA0C;QAE1C,IAAI;YACA,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAEvF,MAAM,EAAE,GAAG,IAAI,yBAAgB,CAAC;gBAC5B,GAAG,OAAO,CAAC,QAAQ;gBACnB,SAAS,EAAE,IAAI,sBAAS,CAAC,iBAAiB,CAAC;aAC9C,CAAC,CAAC;YAEH,OAAO,IAAI,0CAAkB,CACzB;gBACI,IAAI;gBACJ,EAAE;gBACF,UAAU,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE;gBACtC,cAAc;gBACd,YAAY;gBACZ,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,QAAQ,EAAE,KAAK;gBACf,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;gBACtC,iBAAiB,EAAE,KAAK;aAC3B,EACD,OAAO,CAAC,eAAe,CAC1B,CAAC;SACL;QAAC,OAAO,GAAG,EAAE;YACV,OAAO;gBACH,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,KAAK,EAAE,GAAG;aACb,CAAC;SACL;IACL,CAAC;IAES,KAAK,CAAC,aAAa;QACzB,OAAO;YACH,QAAQ,EAAE,IAAI,sBAAS,CAAC,CAAC,CAAC;YAC1B,QAAQ,EAAE,IAAI,sBAAS,CAAC,uBAAU,CAAC;SACtC,CAAC;IACN,CAAC;CACJ;AApDD,sDAoDC"}
|
@@ -7,6 +7,6 @@ export declare class DedustOnChainTrade extends TonOnChainTrade<undefined> {
|
|
7
7
|
type: OnChainTradeType;
|
8
8
|
private readonly dedustSwapService;
|
9
9
|
constructor(tradeStruct: DedustOnChainTradeStruct, providerAddress: string);
|
10
|
-
protected calculateOutputAmount(_options: EncodeTransactionOptions): Promise<string>;
|
11
10
|
swap(options?: SwapTransactionOptions): Promise<string | never>;
|
11
|
+
protected calculateOutputAmount(_options: EncodeTransactionOptions): Promise<string>;
|
12
12
|
}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.DedustOnChainTrade = void 0;
|
4
|
-
const core_1 = require("@ton/core");
|
5
4
|
const errors_1 = require("../../../../../../common/utils/errors");
|
6
5
|
const on_chain_trade_type_1 = require("../../common/models/on-chain-trade-type");
|
7
6
|
const ton_on_chain_trade_1 = require("../../common/on-chain-trade/ton-on-chain-trade/ton-on-chain-trade");
|
@@ -12,16 +11,6 @@ class DedustOnChainTrade extends ton_on_chain_trade_1.TonOnChainTrade {
|
|
12
11
|
this.type = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.DEDUST;
|
13
12
|
this.dedustSwapService = new dedust_swap_service_1.DedustSwapService();
|
14
13
|
}
|
15
|
-
async calculateOutputAmount(_options) {
|
16
|
-
const fromAsset = this.dedustSwapService.getTokenAsset(this.from);
|
17
|
-
const toAsset = this.dedustSwapService.getTokenAsset(this.to);
|
18
|
-
const pool = await this.dedustSwapService.getPool(fromAsset, toAsset);
|
19
|
-
const { amountOut } = await pool.getEstimatedSwapOut({
|
20
|
-
assetIn: fromAsset,
|
21
|
-
amountIn: (0, core_1.toNano)(this.fromWithoutFee.tokenAmount.toFixed())
|
22
|
-
});
|
23
|
-
return amountOut.toString();
|
24
|
-
}
|
25
14
|
async swap(options = {}) {
|
26
15
|
await this.checkWalletState(options?.testMode);
|
27
16
|
let txHash;
|
@@ -45,6 +34,9 @@ class DedustOnChainTrade extends ton_on_chain_trade_1.TonOnChainTrade {
|
|
45
34
|
throw (0, errors_1.parseError)(err);
|
46
35
|
}
|
47
36
|
}
|
37
|
+
calculateOutputAmount(_options) {
|
38
|
+
return this.dedustSwapService.calcOutputAmount(this.from, this.to);
|
39
|
+
}
|
48
40
|
}
|
49
41
|
exports.DedustOnChainTrade = DedustOnChainTrade;
|
50
42
|
//# sourceMappingURL=dedust-on-chain-trade.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dedust-on-chain-trade.js","sourceRoot":"","sources":["../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-trade.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"dedust-on-chain-trade.js","sourceRoot":"","sources":["../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/dedust-on-chain-trade.ts"],"names":[],"mappings":";;;AAAA,oDAAqD;AAIrD,iFAAgG;AAChG,0GAAoG;AAEpG,wEAAmE;AAEnE,MAAa,kBAAmB,SAAQ,oCAA0B;IAK9D,YAAY,WAAqC,EAAE,eAAuB;QACtE,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QALjC,SAAI,GAAqB,yCAAmB,CAAC,MAAM,CAAC;QAE1C,sBAAiB,GAAG,IAAI,uCAAiB,EAAE,CAAC;IAI7D,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,UAAkC,EAAE;QAClD,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE/C,IAAI,MAAc,CAAC;QACnB,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;YACvC,IAAI,OAAO,CAAC,SAAS,EAAE;gBACnB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC3B;YACD,MAAM,GAAG,IAAI,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,iBAAiB,CAAC;YACzB,WAAW,EAAE,IAAI,CAAC,aAAa;YAC/B,eAAe,EAAE,IAAI,CAAC,aAAa;YACnC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;SAC5D,CAAC,CAAC;QAEH,IAAI;YACA,MAAM,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACxC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,iBAAiB,EACtB,iBAAiB,CACpB,CAAC;YACF,OAAO,MAAO,CAAC;SAClB;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;SACzB;IACL,CAAC;IAES,qBAAqB,CAAC,QAAkC;QAC9D,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;CACJ;AA5CD,gDA4CC"}
|
@@ -1,13 +1,22 @@
|
|
1
|
-
import { Asset, Pool } from '@dedust/sdk';
|
2
|
-
import { OpenedContract } from '@ton/core';
|
3
1
|
import { PriceToken, PriceTokenAmount } from '../../../../../../../common/tokens';
|
4
2
|
export declare class DedustSwapService {
|
5
3
|
private readonly factory;
|
6
4
|
private readonly tonClient;
|
7
5
|
private get mainnetFactoryAddress();
|
8
6
|
constructor();
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
/**
|
8
|
+
* @returns weiAmount in BigNumber format
|
9
|
+
*/
|
10
|
+
calcOutputAmount(from: PriceTokenAmount, to: PriceToken): Promise<string>;
|
12
11
|
sendTransaction(from: PriceTokenAmount, to: PriceTokenAmount, walletAddress: string, slippage: number, onHash: (hash: string) => void): Promise<void>;
|
12
|
+
/**
|
13
|
+
* uses more than 1 pool
|
14
|
+
*/
|
15
|
+
private isMultihopSwap;
|
16
|
+
private getPool;
|
17
|
+
private getTokenAsset;
|
18
|
+
private getVault;
|
19
|
+
private swapTonToJetton;
|
20
|
+
private swapJettonToTon;
|
21
|
+
private swapJettonsWithMultihop;
|
13
22
|
}
|
@@ -5,6 +5,8 @@ const sdk_1 = require("@dedust/sdk");
|
|
5
5
|
const core_1 = require("@ton/core");
|
6
6
|
const ton_1 = require("@ton/ton");
|
7
7
|
const errors_1 = require("../../../../../../../common/errors");
|
8
|
+
const native_tokens_1 = require("../../../../../../../common/tokens/constants/native-tokens");
|
9
|
+
const blockchain_name_1 = require("../../../../../../../core/blockchain/models/blockchain-name");
|
8
10
|
const dedust_gas_1 = require("../constants/dedust-gas");
|
9
11
|
const dedust_sender_class_1 = require("./dedust-sender-class");
|
10
12
|
class DedustSwapService {
|
@@ -12,15 +14,63 @@ class DedustSwapService {
|
|
12
14
|
return core_1.Address.parse('EQBfBWT7X2BHg9tXAxzhz2aKiNTU1tpt5NsiK0uSDW_YAJ67');
|
13
15
|
}
|
14
16
|
constructor() {
|
15
|
-
// this.tonClient = Injector.web3PrivateService.getWeb3Private(CHAIN_TYPE.TON).tonClient;
|
16
17
|
this.tonClient = new ton_1.TonClient({
|
17
18
|
endpoint: 'https://toncenter.com/api/v2/jsonRPC',
|
18
19
|
apiKey: '44176ed3735504c6fb1ed3b91715ba5272cdd2bbb304f78d1ae6de6aed47d284'
|
19
20
|
});
|
20
21
|
this.factory = this.tonClient.open(sdk_1.Factory.createFromAddress(this.mainnetFactoryAddress));
|
21
22
|
}
|
22
|
-
|
23
|
+
/**
|
24
|
+
* @returns weiAmount in BigNumber format
|
25
|
+
*/
|
26
|
+
async calcOutputAmount(from, to) {
|
27
|
+
if (this.isMultihopSwap(from, to)) {
|
28
|
+
const ton = native_tokens_1.nativeTokensList[blockchain_name_1.BLOCKCHAIN_NAME.TON];
|
29
|
+
const firstPoolSrcAsset = this.getTokenAsset(from);
|
30
|
+
const secondPoolSrcAsset = this.getTokenAsset(ton);
|
31
|
+
const firstPool = await this.getPool(from, ton);
|
32
|
+
const secondPool = await this.getPool(ton, to);
|
33
|
+
const { amountOut: firstPoolAmountOut } = await firstPool.getEstimatedSwapOut({
|
34
|
+
assetIn: firstPoolSrcAsset,
|
35
|
+
amountIn: (0, core_1.toNano)(from.tokenAmount.toFixed())
|
36
|
+
});
|
37
|
+
const { amountOut } = await secondPool.getEstimatedSwapOut({
|
38
|
+
assetIn: secondPoolSrcAsset,
|
39
|
+
amountIn: firstPoolAmountOut
|
40
|
+
});
|
41
|
+
return amountOut.toString();
|
42
|
+
}
|
43
|
+
const fromAsset = this.getTokenAsset(from);
|
44
|
+
const pool = await this.getPool(from, to);
|
45
|
+
const { amountOut } = await pool.getEstimatedSwapOut({
|
46
|
+
assetIn: fromAsset,
|
47
|
+
amountIn: (0, core_1.toNano)(from.tokenAmount.toFixed())
|
48
|
+
});
|
49
|
+
return amountOut.toString();
|
50
|
+
}
|
51
|
+
async sendTransaction(from, to, walletAddress, slippage, onHash) {
|
52
|
+
const sender = new dedust_sender_class_1.DedustTxSender(walletAddress, onHash);
|
53
|
+
const minAmountOut = BigInt(to.tokenAmount.multipliedBy(1 - slippage).toFixed());
|
54
|
+
if (from.isNative) {
|
55
|
+
await this.swapTonToJetton(from, to, sender, minAmountOut);
|
56
|
+
}
|
57
|
+
else if (to.isNative) {
|
58
|
+
await this.swapJettonToTon(from, to, sender, minAmountOut);
|
59
|
+
}
|
60
|
+
else {
|
61
|
+
await this.swapJettonsWithMultihop(from, to, sender, minAmountOut);
|
62
|
+
}
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* uses more than 1 pool
|
66
|
+
*/
|
67
|
+
isMultihopSwap(from, to) {
|
68
|
+
return !from.isNative && !to.isNative;
|
69
|
+
}
|
70
|
+
async getPool(from, to) {
|
23
71
|
try {
|
72
|
+
const fromAsset = this.getTokenAsset(from);
|
73
|
+
const toAsset = this.getTokenAsset(to);
|
24
74
|
const poolAddress = await this.factory.getPoolAddress({
|
25
75
|
poolType: sdk_1.PoolType.VOLATILE,
|
26
76
|
assets: [fromAsset, toAsset]
|
@@ -57,38 +107,55 @@ class DedustSwapService {
|
|
57
107
|
}
|
58
108
|
return jettonVault;
|
59
109
|
}
|
60
|
-
async
|
61
|
-
const
|
62
|
-
const
|
63
|
-
const pool = await this.getPool(fromAsset, toAsset);
|
110
|
+
async swapTonToJetton(from, to, sender, minAmountOut) {
|
111
|
+
const pool = await this.getPool(from, to);
|
112
|
+
const nativeVault = await this.getVault(from);
|
64
113
|
const fromAmount = (0, core_1.toNano)(from.tokenAmount.toFixed());
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
114
|
+
await nativeVault.sendSwap(sender, {
|
115
|
+
poolAddress: pool.address,
|
116
|
+
amount: fromAmount,
|
117
|
+
limit: minAmountOut,
|
118
|
+
gasAmount: (0, core_1.toNano)(dedust_gas_1.DEDUST_GAS)
|
119
|
+
});
|
120
|
+
}
|
121
|
+
async swapJettonToTon(from, to, sender, minAmountOut) {
|
122
|
+
const pool = await this.getPool(from, to);
|
123
|
+
const jettonVault = await this.getVault(from);
|
124
|
+
const parsedAddress = core_1.Address.parse(from.address);
|
125
|
+
const jettonRoot = this.tonClient.open(sdk_1.JettonRoot.createFromAddress(parsedAddress));
|
126
|
+
const jettonWallet = this.tonClient.open(await jettonRoot.getWallet(sender.address));
|
127
|
+
await jettonWallet.sendTransfer(sender, (0, core_1.toNano)(0.3), {
|
128
|
+
amount: (0, core_1.toNano)(from.tokenAmount.toFixed()),
|
129
|
+
destination: jettonVault.address,
|
130
|
+
responseAddress: sender.address,
|
131
|
+
forwardAmount: (0, core_1.toNano)(0.25),
|
132
|
+
forwardPayload: sdk_1.VaultJetton.createSwapPayload({
|
70
133
|
poolAddress: pool.address,
|
71
|
-
|
134
|
+
limit: minAmountOut
|
135
|
+
})
|
136
|
+
});
|
137
|
+
}
|
138
|
+
async swapJettonsWithMultihop(from, to, sender, minAmountOut) {
|
139
|
+
const ton = native_tokens_1.nativeTokensList[blockchain_name_1.BLOCKCHAIN_NAME.TON];
|
140
|
+
const firstPool = await this.getPool(from, ton);
|
141
|
+
const secondPool = await this.getPool(ton, to);
|
142
|
+
const jettonVault = await this.getVault(from);
|
143
|
+
const parsedAddress = core_1.Address.parse(from.address);
|
144
|
+
const jettonRoot = this.tonClient.open(sdk_1.JettonRoot.createFromAddress(parsedAddress));
|
145
|
+
const jettonWallet = this.tonClient.open(await jettonRoot.getWallet(sender.address));
|
146
|
+
await jettonWallet.sendTransfer(sender, (0, core_1.toNano)('0.3'), {
|
147
|
+
amount: (0, core_1.toNano)(from.tokenAmount.toFixed()),
|
148
|
+
destination: jettonVault.address,
|
149
|
+
responseAddress: sender.address,
|
150
|
+
forwardAmount: (0, core_1.toNano)('0.25'),
|
151
|
+
forwardPayload: sdk_1.VaultJetton.createSwapPayload({
|
152
|
+
poolAddress: firstPool.address,
|
72
153
|
limit: minAmountOut,
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
const parsedAddress = core_1.Address.parse(from.address);
|
79
|
-
const jettonRoot = this.tonClient.open(sdk_1.JettonRoot.createFromAddress(parsedAddress));
|
80
|
-
const jettonWallet = this.tonClient.open(await jettonRoot.getWallet(sender.address));
|
81
|
-
await jettonWallet.sendTransfer(sender, (0, core_1.toNano)(0.3), {
|
82
|
-
amount: fromAmount,
|
83
|
-
destination: jettonVault.address,
|
84
|
-
responseAddress: sender.address,
|
85
|
-
forwardAmount: (0, core_1.toNano)(0.25),
|
86
|
-
forwardPayload: sdk_1.VaultJetton.createSwapPayload({
|
87
|
-
poolAddress: pool.address,
|
88
|
-
limit: minAmountOut
|
89
|
-
})
|
90
|
-
});
|
91
|
-
}
|
154
|
+
next: {
|
155
|
+
poolAddress: secondPool.address
|
156
|
+
}
|
157
|
+
})
|
158
|
+
});
|
92
159
|
}
|
93
160
|
}
|
94
161
|
exports.DedustSwapService = DedustSwapService;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dedust-swap-service.js","sourceRoot":"","sources":["../../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-swap-service.ts"],"names":[],"mappings":";;;AAAA,qCASqB;AACrB,oCAAoE;AACpE,kCAAqC;AACrC,8CAAkD;
|
1
|
+
{"version":3,"file":"dedust-swap-service.js","sourceRoot":"","sources":["../../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-swap-service.ts"],"names":[],"mappings":"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"}
|