@kaspacom/swap-sdk 1.0.5 → 1.0.6
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/dist/{controllers → cjs/controllers}/swap-sdk.controller.d.ts +1 -0
- package/dist/cjs/controllers/swap-sdk.controller.d.ts.map +1 -0
- package/dist/cjs/controllers/swap-sdk.controller.js +181 -0
- package/dist/cjs/controllers/swap-sdk.controller.js.map +1 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +53 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/{services → cjs/services}/swap.service.d.ts +7 -1
- package/dist/cjs/services/swap.service.d.ts.map +1 -0
- package/dist/cjs/services/swap.service.js +568 -0
- package/dist/cjs/services/swap.service.js.map +1 -0
- package/dist/cjs/services/wallet.service.d.ts.map +1 -0
- package/dist/cjs/services/wallet.service.js +144 -0
- package/dist/cjs/services/wallet.service.js.map +1 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/index.js +10 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/networks.d.ts.map +1 -0
- package/dist/cjs/types/networks.js +23 -0
- package/dist/cjs/types/networks.js.map +1 -0
- package/dist/esm/controllers/swap-sdk.controller.d.ts +27 -0
- package/dist/esm/controllers/swap-sdk.controller.d.ts.map +1 -0
- package/dist/{controllers → esm/controllers}/swap-sdk.controller.js +8 -0
- package/dist/esm/controllers/swap-sdk.controller.js.map +1 -0
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/services/swap.service.d.ts +109 -0
- package/dist/esm/services/swap.service.d.ts.map +1 -0
- package/dist/{services → esm/services}/swap.service.js +17 -3
- package/dist/esm/services/swap.service.js.map +1 -0
- package/dist/esm/services/wallet.service.d.ts +21 -0
- package/dist/esm/services/wallet.service.d.ts.map +1 -0
- package/dist/esm/services/wallet.service.js.map +1 -0
- package/dist/esm/types/index.d.ts +71 -0
- package/dist/esm/types/index.d.ts.map +1 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/networks.d.ts +14 -0
- package/dist/esm/types/networks.d.ts.map +1 -0
- package/dist/esm/types/networks.js.map +1 -0
- package/package.json +14 -6
- package/dist/controllers/swap-sdk.controller.d.ts.map +0 -1
- package/dist/controllers/swap-sdk.controller.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/services/swap.service.d.ts.map +0 -1
- package/dist/services/swap.service.js.map +0 -1
- package/dist/services/wallet.service.d.ts.map +0 -1
- package/dist/services/wallet.service.js.map +0 -1
- package/dist/swap-sdk.js +0 -33099
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/networks.d.ts.map +0 -1
- package/dist/types/networks.js.map +0 -1
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{services → cjs/services}/wallet.service.d.ts +0 -0
- /package/dist/{types → cjs/types}/index.d.ts +0 -0
- /package/dist/{types → cjs/types}/networks.d.ts +0 -0
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{services → esm/services}/wallet.service.js +0 -0
- /package/dist/{types → esm/types}/index.js +0 -0
- /package/dist/{types → esm/types}/networks.js +0 -0
|
@@ -17,6 +17,7 @@ export declare class SwapSdkController {
|
|
|
17
17
|
private get settings();
|
|
18
18
|
calculateQuoteIfNeeded(): Promise<void>;
|
|
19
19
|
setData(input: Partial<SwapControllerInput>): Promise<SwapControllerOutput>;
|
|
20
|
+
isNeedApproval(): Promise<boolean>;
|
|
20
21
|
approveIfNeeded(): Promise<string | undefined>;
|
|
21
22
|
swap(): Promise<string>;
|
|
22
23
|
getPartnerFee(): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap-sdk.controller.d.ts","sourceRoot":"","sources":["../../../src/controllers/swap-sdk.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EAEpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,eAAO,MAAM,gBAAgB,EAAE,YAG9B,CAAA;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,WAAW,CAA0B;IAE7C,OAAO,CAAC,KAAK,CAEX;IAIF,OAAO,CAAC,KAAK,CAMX;IAIF,OAAO,CAAC,OAAO,CAAiB;gBAEpB,OAAO,EAAE,cAAc;IAMnC,OAAO,CAAC,YAAY;YAaN,SAAS;IAWjB,aAAa,CAAC,gBAAgB,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAOxE,gBAAgB,IAAI,IAAI;IAKxB,QAAQ,IAAI,oBAAoB;IAIhC,OAAO,KAAK,QAAQ,GAKnB;IAGK,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BvC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAY3E,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAOlC,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmC9C,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IA2DvB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhC,kBAAkB,CAAC,KAAK,GAAE,MAAY,EAAE,MAAM,CAAC,EAAE,MAAM;IAQ7D,IAAI,oBAAoB,IAAI,oBAAoB,CAE/C;CACF"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SwapSdkController = exports.DEFAULT_SETTINGS = void 0;
|
|
4
|
+
const wallet_service_1 = require("../services/wallet.service");
|
|
5
|
+
const swap_service_1 = require("../services/swap.service");
|
|
6
|
+
const types_1 = require("../types");
|
|
7
|
+
exports.DEFAULT_SETTINGS = {
|
|
8
|
+
maxSlippage: '0.5',
|
|
9
|
+
swapDeadline: 20,
|
|
10
|
+
};
|
|
11
|
+
class SwapSdkController {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.state = {
|
|
14
|
+
loader: null,
|
|
15
|
+
};
|
|
16
|
+
this.input = {
|
|
17
|
+
fromToken: null,
|
|
18
|
+
toToken: null,
|
|
19
|
+
amount: undefined,
|
|
20
|
+
isOutputAmount: false,
|
|
21
|
+
settings: exports.DEFAULT_SETTINGS,
|
|
22
|
+
};
|
|
23
|
+
this.options = options;
|
|
24
|
+
this.initServices();
|
|
25
|
+
}
|
|
26
|
+
initServices() {
|
|
27
|
+
this.walletService = new wallet_service_1.WalletService(this.options.networkConfig, this.options.walletProvider);
|
|
28
|
+
this.swapService = new swap_service_1.SwapService(this.walletService.getProvider(), this.options.networkConfig, this.options);
|
|
29
|
+
}
|
|
30
|
+
async setChange(patch) {
|
|
31
|
+
const next = {
|
|
32
|
+
...this.state,
|
|
33
|
+
...patch,
|
|
34
|
+
};
|
|
35
|
+
this.state = next;
|
|
36
|
+
if (typeof this.options.onChange === 'function') {
|
|
37
|
+
await this.options.onChange(next, patch);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async connectWallet(injectedProvider) {
|
|
41
|
+
const address = await this.walletService.connect(injectedProvider);
|
|
42
|
+
const signer = this.walletService.getSigner();
|
|
43
|
+
if (signer)
|
|
44
|
+
this.swapService.setSigner(signer);
|
|
45
|
+
return address;
|
|
46
|
+
}
|
|
47
|
+
disconnectWallet() {
|
|
48
|
+
this.walletService.disconnect();
|
|
49
|
+
this.swapService.setSigner(null);
|
|
50
|
+
}
|
|
51
|
+
getState() {
|
|
52
|
+
return this.state;
|
|
53
|
+
}
|
|
54
|
+
get settings() {
|
|
55
|
+
return {
|
|
56
|
+
...exports.DEFAULT_SETTINGS,
|
|
57
|
+
...(this.input.settings || {}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async calculateQuoteIfNeeded() {
|
|
61
|
+
const { fromToken, toToken, amount, isOutputAmount } = this.input;
|
|
62
|
+
if (!fromToken || !toToken || !amount || amount <= 0) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Set loader to calculating
|
|
66
|
+
await this.setChange({ loader: types_1.LoaderStatuses.CALCULATING_QUOTE, error: undefined });
|
|
67
|
+
try {
|
|
68
|
+
// Use the calculateTrade method which returns both trade and computed amounts
|
|
69
|
+
const tradeResult = await this.swapService.calculateTrade(fromToken, toToken, String(amount), isOutputAmount == true, // isOutputAmount: true for input amount, false for output amount
|
|
70
|
+
this.settings.maxSlippage);
|
|
71
|
+
await this.setChange({
|
|
72
|
+
computed: tradeResult.computed,
|
|
73
|
+
tradeInfo: tradeResult.trade,
|
|
74
|
+
loader: null,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
await this.setChange({ error: error?.message || String(error), loader: null });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async setData(input) {
|
|
82
|
+
// Merge input and settings
|
|
83
|
+
this.input = {
|
|
84
|
+
...this.input,
|
|
85
|
+
...input,
|
|
86
|
+
};
|
|
87
|
+
await this.calculateQuoteIfNeeded();
|
|
88
|
+
return this.getState();
|
|
89
|
+
}
|
|
90
|
+
async isNeedApproval() {
|
|
91
|
+
if (!this.input || !this.walletService.isConnected() || !this.swapService)
|
|
92
|
+
throw new Error('Wallet not connected or input missing');
|
|
93
|
+
const { fromToken, amount } = this.input;
|
|
94
|
+
if (!fromToken || amount === undefined || !this.state.computed?.amountInRaw)
|
|
95
|
+
throw new Error('fromToken or amount missing');
|
|
96
|
+
return (await this.swapService.isApprovalNeeded(fromToken, BigInt(this.state.computed.amountInRaw))).isApprovalNeeded;
|
|
97
|
+
}
|
|
98
|
+
async approveIfNeeded() {
|
|
99
|
+
if (!this.input || !this.walletService.isConnected())
|
|
100
|
+
throw new Error('Wallet not connected or input missing');
|
|
101
|
+
const { fromToken, amount } = this.input;
|
|
102
|
+
if (!fromToken || amount === undefined || !this.state.computed?.amountInRaw)
|
|
103
|
+
throw new Error('fromToken or amount missing');
|
|
104
|
+
await this.setChange({ loader: types_1.LoaderStatuses.APPROVING });
|
|
105
|
+
try {
|
|
106
|
+
const tx = await this.swapService?.approveIfNeedApproval(fromToken, BigInt(this.state.computed.amountInRaw));
|
|
107
|
+
let receipt;
|
|
108
|
+
if (tx) {
|
|
109
|
+
await this.setChange({ approveTxHash: tx.hash });
|
|
110
|
+
receipt = await tx.wait();
|
|
111
|
+
if (!receipt) {
|
|
112
|
+
throw new Error("Receipt not found, Please try again");
|
|
113
|
+
}
|
|
114
|
+
if (receipt.status != 1) {
|
|
115
|
+
throw new Error("Transaction Rejected");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return receipt?.hash;
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
await this.setChange({ error: error?.message || String(error), loader: null });
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async swap() {
|
|
126
|
+
try {
|
|
127
|
+
await this.setChange({
|
|
128
|
+
txHash: undefined,
|
|
129
|
+
approveTxHash: undefined,
|
|
130
|
+
});
|
|
131
|
+
const { fromToken, toToken, amount } = this.input;
|
|
132
|
+
if (!fromToken || !toToken || amount === undefined)
|
|
133
|
+
throw new Error('Tokens or amount not set');
|
|
134
|
+
await this.approveIfNeeded();
|
|
135
|
+
await this.setChange({ loader: types_1.LoaderStatuses.SWAPPING });
|
|
136
|
+
// Get the trade path from the tradeInfo
|
|
137
|
+
const trade = this.state.tradeInfo;
|
|
138
|
+
if (!trade)
|
|
139
|
+
throw new Error('Trade info missing - calculate quote first');
|
|
140
|
+
// Extract path from the trade route
|
|
141
|
+
const path = trade.route.path.map(token => token.address);
|
|
142
|
+
if (path.length === 0)
|
|
143
|
+
throw new Error('Trade path missing');
|
|
144
|
+
// Use the computed amounts for the swap
|
|
145
|
+
const computed = this.state.computed;
|
|
146
|
+
if (!computed)
|
|
147
|
+
throw new Error('Computed amounts missing');
|
|
148
|
+
const transaction = await this.swapService.swapTokens(fromToken, toToken, computed.maxAmountInRaw || computed.amountInRaw, computed.minAmountOutRaw || computed.amountOutRaw, path, this.input.isOutputAmount == true, this.settings.swapDeadline);
|
|
149
|
+
await this.setChange({ txHash: transaction.hash });
|
|
150
|
+
const receipt = await transaction.wait();
|
|
151
|
+
if (!receipt) {
|
|
152
|
+
throw new Error("Receipt not found, Please try again");
|
|
153
|
+
}
|
|
154
|
+
if (receipt.status != 1) {
|
|
155
|
+
throw new Error("Transaction Rejected");
|
|
156
|
+
}
|
|
157
|
+
await this.setChange({
|
|
158
|
+
loader: null,
|
|
159
|
+
});
|
|
160
|
+
return receipt.hash;
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
await this.setChange({ error: error?.message || String(error), loader: null });
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async getPartnerFee() {
|
|
168
|
+
return Number(await this.swapService.loadPartnerFee()) / Number(swap_service_1.PARTNER_FEE_BPS_DIVISOR);
|
|
169
|
+
}
|
|
170
|
+
async getTokensFromGraph(limit = 100, search) {
|
|
171
|
+
if (!this.swapService) {
|
|
172
|
+
throw new Error('Swap Service not exists');
|
|
173
|
+
}
|
|
174
|
+
return await this.swapService.getTokensFromGraph(limit, search);
|
|
175
|
+
}
|
|
176
|
+
get currentNetworkConfig() {
|
|
177
|
+
return this.options.networkConfig;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.SwapSdkController = SwapSdkController;
|
|
181
|
+
//# sourceMappingURL=swap-sdk.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap-sdk.controller.js","sourceRoot":"","sources":["../../../src/controllers/swap-sdk.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAE3C,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE9F;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,CAWvF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.DEFAULT_SWAP_SETTINGS = exports.NETWORKS = exports.SwapSdkController = exports.SwapService = exports.WalletService = void 0;
|
|
18
|
+
exports.createKaspaComSwapController = createKaspaComSwapController;
|
|
19
|
+
// Export types
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
|
+
// Export services
|
|
22
|
+
var wallet_service_1 = require("./services/wallet.service");
|
|
23
|
+
Object.defineProperty(exports, "WalletService", { enumerable: true, get: function () { return wallet_service_1.WalletService; } });
|
|
24
|
+
var swap_service_1 = require("./services/swap.service");
|
|
25
|
+
Object.defineProperty(exports, "SwapService", { enumerable: true, get: function () { return swap_service_1.SwapService; } });
|
|
26
|
+
// Export headless controller only
|
|
27
|
+
const swap_sdk_controller_1 = require("./controllers/swap-sdk.controller");
|
|
28
|
+
var swap_sdk_controller_2 = require("./controllers/swap-sdk.controller");
|
|
29
|
+
Object.defineProperty(exports, "SwapSdkController", { enumerable: true, get: function () { return swap_sdk_controller_2.SwapSdkController; } });
|
|
30
|
+
const networks_1 = require("./types/networks");
|
|
31
|
+
var networks_2 = require("./types/networks");
|
|
32
|
+
Object.defineProperty(exports, "NETWORKS", { enumerable: true, get: function () { return networks_2.NETWORKS; } });
|
|
33
|
+
var swap_sdk_controller_3 = require("./controllers/swap-sdk.controller");
|
|
34
|
+
Object.defineProperty(exports, "DEFAULT_SWAP_SETTINGS", { enumerable: true, get: function () { return swap_sdk_controller_3.DEFAULT_SETTINGS; } });
|
|
35
|
+
/**
|
|
36
|
+
* Create a new headless swap controller
|
|
37
|
+
* @param options Configuration options for the controller
|
|
38
|
+
* @returns SwapSdkController instance
|
|
39
|
+
*/
|
|
40
|
+
function createKaspaComSwapController(options) {
|
|
41
|
+
let resolvedOptions;
|
|
42
|
+
if ('networkConfig' in options && typeof options.networkConfig === 'string') {
|
|
43
|
+
const networkConfig = networks_1.NETWORKS[options.networkConfig];
|
|
44
|
+
if (!networkConfig)
|
|
45
|
+
throw new Error(`Unknown network key: ${options.networkConfig}`);
|
|
46
|
+
resolvedOptions = { ...options, networkConfig };
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
resolvedOptions = options;
|
|
50
|
+
}
|
|
51
|
+
return new swap_sdk_controller_1.SwapSdkController(resolvedOptions);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAuBA,oEAWC;AAlCD,eAAe;AACf,0CAAwB;AAExB,kBAAkB;AAClB,4DAA0D;AAAjD,+GAAA,aAAa,OAAA;AACtB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AAEpB,kCAAkC;AAClC,2EAAsE;AACtE,yEAAsE;AAA7D,wHAAA,iBAAiB,OAAA;AAI1B,+CAA4C;AAC5C,6CAA2C;AAAlC,oGAAA,QAAQ,OAAA;AAEjB,yEAA8F;AAArF,4HAAA,gBAAgB,OAAyB;AAElD;;;;GAIG;AACH,SAAgB,4BAA4B,CAAC,OAAuB;IAClE,IAAI,eAA+B,CAAC;IACpC,IAAI,eAAe,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC5E,MAAM,aAAa,GAAG,mBAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACrF,eAAe,GAAG,EAAE,GAAG,OAAO,EAAE,aAAa,EAAE,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,OAAyB,CAAC;IAC9C,CAAC;IAED,OAAO,IAAI,uCAAiB,CAAC,eAAe,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Signer, BrowserProvider, JsonRpcProvider, ContractTransactionResponse, TransactionResponse } from 'ethers';
|
|
1
|
+
import { Contract, Signer, BrowserProvider, JsonRpcProvider, ContractTransactionResponse, TransactionResponse } from 'ethers';
|
|
2
2
|
import { Currency, Token, TradeType } from '@uniswap/sdk-core';
|
|
3
3
|
import { Trade, Pair } from '@uniswap/v2-sdk';
|
|
4
4
|
import { ComputedAmounts, Erc20Token, SwapSdkOptions } from '../types';
|
|
@@ -80,6 +80,12 @@ export declare class SwapService {
|
|
|
80
80
|
computed: ComputedAmounts;
|
|
81
81
|
}>;
|
|
82
82
|
checkApproval(tokenAddress: string, amount: string, spenderAddress: string): Promise<boolean>;
|
|
83
|
+
isApprovalNeeded(fromToken: Erc20Token, amountInWei: bigint): Promise<{
|
|
84
|
+
isApprovalNeeded: boolean;
|
|
85
|
+
tokenContract?: Contract;
|
|
86
|
+
signerAddress?: string;
|
|
87
|
+
allowanceTo?: string;
|
|
88
|
+
}>;
|
|
83
89
|
approveIfNeedApproval(fromToken: Erc20Token, amountInWei: bigint): Promise<ContractTransactionResponse | null>;
|
|
84
90
|
swapTokens(fromToken: Erc20Token, toToken: Erc20Token, amountInWei: string, amountOutWei: string, path: string[], isOutputAmount: boolean, deadline: number): Promise<TransactionResponse>;
|
|
85
91
|
getPairAddress(tokenA: string, tokenB: string): Promise<string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.service.d.ts","sourceRoot":"","sources":["../../../src/services/swap.service.ts"],"names":[],"mappings":"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"}
|