rubic-sdk 6.0.0-alpha.ton.88 → 6.0.0-alpha.ton.89
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/models/dedust-api-types.d.ts +8 -2
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/models/dedust-api-types.js.map +1 -1
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-api-service.d.ts +2 -2
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-api-service.js +5 -1
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-api-service.js.map +1 -1
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-swap-service.d.ts +3 -2
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-swap-service.js +40 -32
- package/lib/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-swap-service.js.map +1 -1
- package/package.json +1 -1
@@ -1,5 +1,6 @@
|
|
1
|
-
|
2
|
-
export
|
1
|
+
import { Address } from '@ton/core';
|
2
|
+
export type DedustPoolsResponse = [DedustApiPoolInfo[]];
|
3
|
+
interface DedustApiPoolInfo {
|
3
4
|
pool: {
|
4
5
|
address: string;
|
5
6
|
isStable: boolean;
|
@@ -12,6 +13,11 @@ export interface DedustPoolInfo {
|
|
12
13
|
amountIn: string;
|
13
14
|
amountOut: string;
|
14
15
|
}
|
16
|
+
export interface DedustTxStep {
|
17
|
+
poolAddress: Address;
|
18
|
+
amountOut: string;
|
19
|
+
}
|
20
|
+
export {};
|
15
21
|
/**
|
16
22
|
[
|
17
23
|
[
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dedust-api-types.js","sourceRoot":"","sources":["../../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/models/dedust-api-types.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"dedust-api-types.js","sourceRoot":"","sources":["../../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/models/dedust-api-types.ts"],"names":[],"mappings":";;AAuBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { PriceTokenAmount, Token } from '../../../../../../../common/tokens';
|
2
|
-
import {
|
2
|
+
import { DedustTxStep } from '../models/dedust-api-types';
|
3
3
|
export declare class DedustApiService {
|
4
4
|
private static readonly apiUrl;
|
5
|
-
static findBestPools(from: PriceTokenAmount, to: Token): Promise<
|
5
|
+
static findBestPools(from: PriceTokenAmount, to: Token): Promise<DedustTxStep[]>;
|
6
6
|
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.DedustApiService = void 0;
|
4
|
+
const core_1 = require("@ton/core");
|
4
5
|
const ton_web3_pure_1 = require("../../../../../../../core/blockchain/web3-pure/typed-web3-pure/ton-web3-pure/ton-web3-pure");
|
5
6
|
const injector_1 = require("../../../../../../../core/injector/injector");
|
6
7
|
class DedustApiService {
|
@@ -16,7 +17,10 @@ class DedustApiService {
|
|
16
17
|
to: toRawAddress,
|
17
18
|
amount: from.stringWeiAmount
|
18
19
|
});
|
19
|
-
return pools
|
20
|
+
return pools.map(p => ({
|
21
|
+
amountOut: p.amountOut,
|
22
|
+
poolAddress: core_1.Address.parse(p.pool.address)
|
23
|
+
}));
|
20
24
|
}
|
21
25
|
}
|
22
26
|
exports.DedustApiService = DedustApiService;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dedust-api-service.js","sourceRoot":"","sources":["../../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-api-service.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"dedust-api-service.js","sourceRoot":"","sources":["../../../../../../../../src/features/on-chain/calculation-manager/providers/aggregators/dedust/services/dedust-api-service.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AAEpC,6GAAwG;AACxG,yDAAsD;AAItD,MAAa,gBAAgB;IAGlB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAsB,EAAE,EAAS;QAC/D,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnD,2BAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;YAChD,2BAAW,CAAC,sBAAsB,CAAC,EAAE,CAAC,OAAO,CAAC;SACjD,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,aAAa,CAAC,QAAQ,EAAE,CAAC;QACrF,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,WAAW,CAAC,QAAQ,EAAE,CAAC;QAE/E,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,mBAAQ,CAAC,UAAU,CAAC,IAAI,CAC1C,GAAG,IAAI,CAAC,MAAM,eAAe,EAC7B;YACI,IAAI,EAAE,cAAc;YACpB,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,IAAI,CAAC,eAAe;SAC/B,CACJ,CAAC;QAEF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,WAAW,EAAE,cAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC,CAAC;IACR,CAAC;;AAzBL,4CA0BC;AAzB2B,uBAAM,GAAG,0BAA0B,CAAC"}
|
@@ -3,7 +3,7 @@ export declare class DedustSwapService {
|
|
3
3
|
private static instance;
|
4
4
|
private readonly factory;
|
5
5
|
private readonly tonClient;
|
6
|
-
private
|
6
|
+
private txSteps;
|
7
7
|
static getInstance(): DedustSwapService;
|
8
8
|
private get mainnetFactoryAddress();
|
9
9
|
private constructor();
|
@@ -29,7 +29,7 @@ export declare class DedustSwapService {
|
|
29
29
|
/**
|
30
30
|
* Stores found pools in calcOutputAmount method and reuses its in sendTransaction methods
|
31
31
|
*/
|
32
|
-
private
|
32
|
+
private cacheStepsOnCalculation;
|
33
33
|
/**
|
34
34
|
* maybe uses more than 1 pool
|
35
35
|
*/
|
@@ -40,4 +40,5 @@ export declare class DedustSwapService {
|
|
40
40
|
private swapTonToJetton;
|
41
41
|
private swapJettonToTon;
|
42
42
|
private swapJettonToJetton;
|
43
|
+
private makeSwapPayloadParams;
|
43
44
|
}
|
@@ -1,9 +1,13 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
6
|
exports.DedustSwapService = void 0;
|
4
7
|
const sdk_1 = require("@dedust/sdk");
|
5
8
|
const core_1 = require("@ton/core");
|
6
9
|
const ton_1 = require("@ton/ton");
|
10
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
7
11
|
const errors_1 = require("../../../../../../../common/errors");
|
8
12
|
const blockchain_name_1 = require("../../../../../../../core/blockchain/models/blockchain-name");
|
9
13
|
const injector_1 = require("../../../../../../../core/injector/injector");
|
@@ -21,7 +25,7 @@ class DedustSwapService {
|
|
21
25
|
return core_1.Address.parse('EQBfBWT7X2BHg9tXAxzhz2aKiNTU1tpt5NsiK0uSDW_YAJ67');
|
22
26
|
}
|
23
27
|
constructor() {
|
24
|
-
this.
|
28
|
+
this.txSteps = [];
|
25
29
|
this.tonClient = new ton_1.TonClient({
|
26
30
|
endpoint: 'https://toncenter.com/api/v2/jsonRPC',
|
27
31
|
apiKey: '44176ed3735504c6fb1ed3b91715ba5272cdd2bbb304f78d1ae6de6aed47d284'
|
@@ -51,17 +55,19 @@ class DedustSwapService {
|
|
51
55
|
if (!pools.length) {
|
52
56
|
throw new errors_1.RubicSdkError('[DedustSwapService_calcOutputAmount] Pools are not found!');
|
53
57
|
}
|
54
|
-
this.
|
58
|
+
this.cacheStepsOnCalculation(pools);
|
55
59
|
const outputWeiAmountString = pools.at(-1).amountOut;
|
56
60
|
return outputWeiAmountString;
|
57
61
|
}
|
58
62
|
const fromAsset = this.getTokenAsset(from);
|
59
63
|
const pool = await this.getPool(from, to);
|
60
|
-
this.cachePoolsOnCalculation([pool]);
|
61
64
|
const { amountOut } = await pool.getEstimatedSwapOut({
|
62
65
|
assetIn: fromAsset,
|
63
66
|
amountIn: BigInt(from.stringWeiAmount)
|
64
67
|
});
|
68
|
+
this.cacheStepsOnCalculation([
|
69
|
+
{ amountOut: amountOut.toString(), poolAddress: pool.address }
|
70
|
+
]);
|
65
71
|
return amountOut.toString();
|
66
72
|
}
|
67
73
|
async sendTransaction(from, to, walletAddress, slippage, onHash) {
|
@@ -76,7 +82,7 @@ class DedustSwapService {
|
|
76
82
|
await this.swapJettonToTon(from, sender, minAmountOut);
|
77
83
|
}
|
78
84
|
else {
|
79
|
-
await this.swapJettonToJetton(from, sender);
|
85
|
+
await this.swapJettonToJetton(from, sender, slippage);
|
80
86
|
}
|
81
87
|
}
|
82
88
|
catch (err) {
|
@@ -86,16 +92,8 @@ class DedustSwapService {
|
|
86
92
|
/**
|
87
93
|
* Stores found pools in calcOutputAmount method and reuses its in sendTransaction methods
|
88
94
|
*/
|
89
|
-
|
90
|
-
|
91
|
-
this.pools = poolsData;
|
92
|
-
}
|
93
|
-
else {
|
94
|
-
this.pools = poolsData.map(poolInfo => {
|
95
|
-
const parsedAddress = core_1.Address.parse(poolInfo.pool.address);
|
96
|
-
return this.tonClient.open(sdk_1.Pool.createFromAddress(parsedAddress));
|
97
|
-
});
|
98
|
-
}
|
95
|
+
cacheStepsOnCalculation(steps) {
|
96
|
+
this.txSteps = steps;
|
99
97
|
}
|
100
98
|
/**
|
101
99
|
* maybe uses more than 1 pool
|
@@ -144,18 +142,18 @@ class DedustSwapService {
|
|
144
142
|
return jettonVault;
|
145
143
|
}
|
146
144
|
async swapTonToJetton(from, sender, minAmountOut) {
|
147
|
-
const
|
145
|
+
const poolAddress = this.txSteps[0].poolAddress;
|
148
146
|
const nativeVault = await this.getVault(from);
|
149
147
|
const fromAmount = (0, core_1.toNano)(from.tokenAmount.toFixed());
|
150
148
|
await nativeVault.sendSwap(sender, {
|
151
|
-
poolAddress
|
149
|
+
poolAddress,
|
152
150
|
amount: fromAmount,
|
153
151
|
limit: minAmountOut,
|
154
152
|
gasAmount: (0, core_1.toNano)(dedust_gas_1.DEDUST_GAS)
|
155
153
|
});
|
156
154
|
}
|
157
155
|
async swapJettonToTon(from, sender, minAmountOut) {
|
158
|
-
const
|
156
|
+
const poolAddress = this.txSteps[0].poolAddress;
|
159
157
|
const jettonVault = await this.getVault(from);
|
160
158
|
const parsedAddress = core_1.Address.parse(from.address);
|
161
159
|
const result = await this.tonClient.runMethod(parsedAddress, 'get_wallet_address', [
|
@@ -169,29 +167,22 @@ class DedustSwapService {
|
|
169
167
|
responseAddress: sender.address,
|
170
168
|
forwardAmount: (0, core_1.toNano)(0.25),
|
171
169
|
forwardPayload: sdk_1.VaultJetton.createSwapPayload({
|
172
|
-
poolAddress
|
170
|
+
poolAddress,
|
173
171
|
limit: minAmountOut
|
174
172
|
})
|
175
173
|
});
|
176
174
|
}
|
177
|
-
async swapJettonToJetton(from, sender) {
|
175
|
+
async swapJettonToJetton(from, sender, slippage) {
|
178
176
|
const jettonVault = await this.getVault(from);
|
179
177
|
const parsedAddress = core_1.Address.parse(from.address);
|
180
178
|
const jettonRoot = this.tonClient.open(sdk_1.JettonRoot.createFromAddress(parsedAddress));
|
181
179
|
const jettonWallet = this.tonClient.open(await jettonRoot.getWallet(sender.address));
|
182
|
-
const
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
for (let i = 0; i < index; i++) {
|
189
|
-
next.poolAddress = pool.address;
|
190
|
-
next.next = {};
|
191
|
-
next = next.next;
|
192
|
-
}
|
193
|
-
return acc;
|
194
|
-
}, {});
|
180
|
+
const initParams = {
|
181
|
+
poolAddress: this.txSteps[0].poolAddress,
|
182
|
+
limit: BigInt(this.txSteps[0].amountOut),
|
183
|
+
next: {}
|
184
|
+
};
|
185
|
+
const swapPayloadParams = this.makeSwapPayloadParams(initParams, initParams.next, this.txSteps, slippage);
|
195
186
|
await jettonWallet.sendTransfer(sender, (0, core_1.toNano)(dedust_gas_1.DEDUST_GAS), {
|
196
187
|
amount: BigInt(from.stringWeiAmount),
|
197
188
|
destination: jettonVault.address,
|
@@ -200,6 +191,23 @@ class DedustSwapService {
|
|
200
191
|
forwardPayload: sdk_1.VaultJetton.createSwapPayload(swapPayloadParams)
|
201
192
|
});
|
202
193
|
}
|
194
|
+
makeSwapPayloadParams(payloadParams, next, txSteps, slippage) {
|
195
|
+
if (!txSteps.length)
|
196
|
+
return payloadParams;
|
197
|
+
const step = txSteps[0];
|
198
|
+
const minAmountOut = BigInt(new bignumber_js_1.default(step.amountOut).multipliedBy(1 - slippage).toFixed());
|
199
|
+
if (txSteps.length === this.txSteps.length) {
|
200
|
+
payloadParams.poolAddress = step.poolAddress;
|
201
|
+
payloadParams.limit = minAmountOut;
|
202
|
+
}
|
203
|
+
else {
|
204
|
+
next.poolAddress = step.poolAddress;
|
205
|
+
next.limit = minAmountOut;
|
206
|
+
next.next = {};
|
207
|
+
next = next.next;
|
208
|
+
}
|
209
|
+
return this.makeSwapPayloadParams(payloadParams, next, txSteps.slice(1), slippage);
|
210
|
+
}
|
203
211
|
}
|
204
212
|
exports.DedustSwapService = DedustSwapService;
|
205
213
|
//# sourceMappingURL=dedust-swap-service.js.map
|
@@ -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":"
|
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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"}
|