@openocean.finance/openocean-sdk 0.1.72 → 0.1.73

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.
Files changed (57) hide show
  1. package/lib/api/index.js +136 -0
  2. package/lib/api/vo/RequestVo.js +401 -0
  3. package/lib/asset/abi/ERC20_abi.js +119 -0
  4. package/lib/asset/abi/aggregator.js +391 -0
  5. package/lib/config/Chains.js +508 -0
  6. package/lib/config/Wallets.js +81 -0
  7. package/lib/config/index.js +11 -0
  8. package/lib/index.js +20 -2
  9. package/lib/swapSdk/Approve.js +227 -0
  10. package/lib/swapSdk/ConnectWallet.js +311 -0
  11. package/lib/swapSdk/NotoMobile.js +141 -0
  12. package/lib/swapSdk/RequestVo.js +94 -0
  13. package/lib/swapSdk/Swap.js +739 -0
  14. package/lib/swapSdk/getAllowance.js +97 -0
  15. package/lib/swapSdk/getBalance.js +220 -0
  16. package/lib/swapSdk/index.js +277 -0
  17. package/lib/swapSdk/limitOrder.js +234 -0
  18. package/lib/swapSdk/qrcode.d.ts +6 -0
  19. package/lib/swapSdk/qrcode.js +969 -0
  20. package/lib/utils/ajx.js +150 -0
  21. package/lib/utils/index.js +91 -0
  22. package/lib/utils/limit-order-sdk/connector/private-key-provider.connector.d.ts +10 -0
  23. package/lib/utils/limit-order-sdk/connector/private-key-provider.connector.js +36 -0
  24. package/lib/utils/limit-order-sdk/connector/provider.connector.d.ts +1 -0
  25. package/lib/utils/limit-order-sdk/connector/provider.connector.js +2 -0
  26. package/lib/utils/limit-order-sdk/connector/web3-provider.connector.d.ts +9 -0
  27. package/lib/utils/limit-order-sdk/connector/web3-provider.connector.js +38 -0
  28. package/lib/utils/limit-order-sdk/erc20.facade.d.ts +7 -0
  29. package/lib/utils/limit-order-sdk/erc20.facade.js +19 -0
  30. package/lib/utils/limit-order-sdk/index.d.ts +1 -0
  31. package/lib/utils/limit-order-sdk/index.js +14 -0
  32. package/lib/utils/limit-order-sdk/limit-order-predicate.builder.d.ts +12 -0
  33. package/lib/utils/limit-order-sdk/limit-order-predicate.builder.js +60 -0
  34. package/lib/utils/limit-order-sdk/limit-order-protocol.const.d.ts +18 -0
  35. package/lib/utils/limit-order-sdk/limit-order-protocol.const.js +45 -0
  36. package/lib/utils/limit-order-sdk/limit-order-protocol.facade.d.ts +26 -0
  37. package/lib/utils/limit-order-sdk/limit-order-protocol.facade.js +180 -0
  38. package/lib/utils/limit-order-sdk/limit-order.builder.d.ts +101 -0
  39. package/lib/utils/limit-order-sdk/limit-order.builder.js +120 -0
  40. package/lib/utils/limit-order-sdk/model/abi.model.d.ts +1 -0
  41. package/lib/utils/limit-order-sdk/model/abi.model.js +2 -0
  42. package/lib/utils/limit-order-sdk/model/eip712.model.d.ts +1 -0
  43. package/lib/utils/limit-order-sdk/model/eip712.model.js +2 -0
  44. package/lib/utils/limit-order-sdk/model/limit-order-protocol.model.d.ts +3 -0
  45. package/lib/utils/limit-order-sdk/model/limit-order-protocol.model.js +38 -0
  46. package/lib/utils/limit-order-sdk/utils/get-rpc-code.d.ts +2 -0
  47. package/lib/utils/limit-order-sdk/utils/get-rpc-code.js +28 -0
  48. package/lib/utils/limit-order-sdk/utils/limit-order-rfq.const.d.ts +89 -0
  49. package/lib/utils/limit-order-sdk/utils/limit-order-rfq.const.js +140 -0
  50. package/lib/utils/limit-order-sdk/utils/limit-order-rfq.helpers.d.ts +10 -0
  51. package/lib/utils/limit-order-sdk/utils/limit-order-rfq.helpers.js +254 -0
  52. package/lib/utils/limit-order-sdk/utils/limit-order-rfq.model.d.ts +1 -0
  53. package/lib/utils/limit-order-sdk/utils/limit-order-rfq.model.js +2 -0
  54. package/lib/utils/limit-order-sdk/utils/limit-order-rfq.utils.d.ts +2 -0
  55. package/lib/utils/limit-order-sdk/utils/limit-order-rfq.utils.js +82 -0
  56. package/lib/utils/web3.js +9 -0
  57. package/package.json +2 -2
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.Approve = void 0;
43
+ var web3_1 = __importDefault(require("web3"));
44
+ var Approve = /** @class */ (function () {
45
+ function Approve(contract, wallet) {
46
+ this.errorCallback = function () { };
47
+ this.transactionHashCallback = function () { };
48
+ this.receiptCallback = function () { };
49
+ this.successCallback = function () { };
50
+ this.contract = contract;
51
+ this.wallet = wallet;
52
+ }
53
+ Approve.prototype.send = function (reqApproveVo, address) {
54
+ return __awaiter(this, void 0, void 0, function () {
55
+ var web3, data, safeTxHash, e_1, _a, _b, gasAmount, error_1, json;
56
+ var _this = this;
57
+ return __generator(this, function (_c) {
58
+ switch (_c.label) {
59
+ case 0:
60
+ this.account = address;
61
+ this.key = 0;
62
+ this.contractAddress = reqApproveVo.contractAddress;
63
+ this.tokenAddress = reqApproveVo.tokenAddress;
64
+ if (!(this.wallet.key === "GnosisSafeWallet")) return [3 /*break*/, 5];
65
+ web3 = new web3_1.default();
66
+ data = web3.eth.abi.encodeFunctionCall({
67
+ "inputs": [
68
+ {
69
+ "name": "spender",
70
+ "type": "address"
71
+ },
72
+ {
73
+ "name": "value",
74
+ "type": "uint256"
75
+ }
76
+ ],
77
+ "name": "approve",
78
+ "type": "function"
79
+ }, [this.contractAddress, reqApproveVo.amount]);
80
+ console.log('data', this.contractAddress, reqApproveVo.amount, data);
81
+ _c.label = 1;
82
+ case 1:
83
+ _c.trys.push([1, 3, , 4]);
84
+ return [4 /*yield*/, this.wallet.sdk.txs.send({
85
+ txs: [
86
+ {
87
+ to: this.tokenAddress,
88
+ value: 0,
89
+ data: data
90
+ },
91
+ ],
92
+ })];
93
+ case 2:
94
+ safeTxHash = (_c.sent()).safeTxHash;
95
+ console.log('safeTxHash', safeTxHash);
96
+ setTimeout(function () {
97
+ console.log('successCallback');
98
+ _this.successCallback(1);
99
+ }, 3000);
100
+ return [3 /*break*/, 4];
101
+ case 3:
102
+ e_1 = _c.sent();
103
+ setTimeout(function () {
104
+ _this.errorCallback(e_1);
105
+ }, 500);
106
+ return [3 /*break*/, 4];
107
+ case 4: return [3 /*break*/, 14];
108
+ case 5:
109
+ if (!!reqApproveVo.amount) return [3 /*break*/, 7];
110
+ _a = reqApproveVo;
111
+ return [4 /*yield*/, this.contract.methods.totalSupply().call()];
112
+ case 6:
113
+ _a.amount = _c.sent();
114
+ _c.label = 7;
115
+ case 7:
116
+ if (!(this.tokenAddress === "0xfa17b330bcc4e7f3e2456996d89a5a54ab044831")) return [3 /*break*/, 9];
117
+ _b = reqApproveVo;
118
+ return [4 /*yield*/, this.contract.methods.balanceOf(this.account).call()];
119
+ case 8:
120
+ _b.amount = _c.sent();
121
+ if (Number(reqApproveVo.amount) == 0) {
122
+ this.errorCallback('Insufficient Balance.');
123
+ return [2 /*return*/];
124
+ }
125
+ _c.label = 9;
126
+ case 9:
127
+ this.amount = reqApproveVo.amount + '';
128
+ gasAmount = '80000';
129
+ _c.label = 10;
130
+ case 10:
131
+ _c.trys.push([10, 12, , 13]);
132
+ return [4 /*yield*/, this.contract.methods
133
+ .approve(this.contractAddress, this.amount)
134
+ .estimateGas({
135
+ from: this.account,
136
+ })];
137
+ case 11:
138
+ gasAmount = _c.sent();
139
+ return [3 /*break*/, 13];
140
+ case 12:
141
+ error_1 = _c.sent();
142
+ setTimeout(function () {
143
+ _this.errorCallback(error_1);
144
+ }, 500);
145
+ return [2 /*return*/];
146
+ case 13:
147
+ json = {
148
+ from: address,
149
+ };
150
+ if (reqApproveVo.gasPrice) {
151
+ json.gasPrice = reqApproveVo.gasPrice;
152
+ }
153
+ try {
154
+ this.contract.methods.approve(this.contractAddress, this.amount)
155
+ .send(json, function (err, data) {
156
+ if (err) {
157
+ }
158
+ else {
159
+ }
160
+ })
161
+ .on('error', function (error) {
162
+ _this.errorCallback(error);
163
+ })
164
+ .on('transactionHash', function (transactionHash) {
165
+ _this.transactionHashCallback(transactionHash);
166
+ })
167
+ .on('receipt', function (receipt) {
168
+ _this.receiptCallback(receipt);
169
+ _this.getSuccess();
170
+ })
171
+ .then(function (receipt) {
172
+ })
173
+ .catch(function (err) {
174
+ });
175
+ }
176
+ catch (error) {
177
+ this.errorCallback(error);
178
+ }
179
+ _c.label = 14;
180
+ case 14: return [2 /*return*/];
181
+ }
182
+ });
183
+ });
184
+ };
185
+ Approve.prototype.on = function (events, callback) {
186
+ if (events === 'error') {
187
+ this.errorCallback = callback;
188
+ }
189
+ else if (events === 'transactionHash') {
190
+ this.transactionHashCallback = callback;
191
+ }
192
+ else if (events === 'receipt') {
193
+ this.receiptCallback = callback;
194
+ }
195
+ else if (events === 'success') {
196
+ this.successCallback = callback;
197
+ }
198
+ return this;
199
+ };
200
+ Approve.prototype.getSuccess = function () {
201
+ return __awaiter(this, void 0, void 0, function () {
202
+ var balance;
203
+ var _this = this;
204
+ return __generator(this, function (_a) {
205
+ switch (_a.label) {
206
+ case 0: return [4 /*yield*/, this.contract.methods.allowance(this.account, this.contractAddress).call()];
207
+ case 1:
208
+ balance = _a.sent();
209
+ this.key++;
210
+ if (this.key > 20)
211
+ return [2 /*return*/];
212
+ if (balance >= Number(this.amount)) {
213
+ this.successCallback(balance);
214
+ }
215
+ else {
216
+ setTimeout(function () {
217
+ _this.getSuccess();
218
+ }, 2000);
219
+ }
220
+ return [2 /*return*/];
221
+ }
222
+ });
223
+ });
224
+ };
225
+ return Approve;
226
+ }());
227
+ exports.Approve = Approve;
@@ -0,0 +1,311 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.ConnectWallet = void 0;
40
+ var Wallets_1 = require("../config/Wallets");
41
+ var utils_1 = require("../utils");
42
+ var web3_js_1 = require("@solana/web3.js");
43
+ var Chains_1 = require("../config/Chains");
44
+ var NotoMobile_1 = require("./NotoMobile");
45
+ var axios = require('axios');
46
+ var ConnectWallet = /** @class */ (function () {
47
+ function ConnectWallet() {
48
+ }
49
+ ConnectWallet.isChainIdEq = function (wallet, chainId, utilsEht, k) {
50
+ return __awaiter(this, void 0, void 0, function () {
51
+ var key, chainIdNow;
52
+ return __generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ key = k || 0;
56
+ return [4 /*yield*/, utils_1.utils.sleep(1000)];
57
+ case 1:
58
+ _a.sent();
59
+ chainIdNow = utilsEht.hexToNumber(wallet.sdk.currentProvider.chainId);
60
+ if (!(chainId == chainIdNow)) return [3 /*break*/, 2];
61
+ wallet.chainId = chainId;
62
+ return [2 /*return*/, true];
63
+ case 2:
64
+ if (!(key < 3)) return [3 /*break*/, 4];
65
+ return [4 /*yield*/, this.isChainIdEq(wallet, chainId, utilsEht, key + 1)];
66
+ case 3: return [2 /*return*/, _a.sent()];
67
+ case 4: throw new Error('User rejected the request.');
68
+ }
69
+ });
70
+ });
71
+ };
72
+ ConnectWallet.link = function (reqConnectWalletVo) {
73
+ return __awaiter(this, void 0, void 0, function () {
74
+ var wallet, chain, chainId, selectedChain, qrData, instance_1, account, res, res, account, res, res, _a, e_1, message, _b, currentProvider, utilsEht;
75
+ return __generator(this, function (_c) {
76
+ switch (_c.label) {
77
+ case 0:
78
+ wallet = Wallets_1.wallets.walletObj[reqConnectWalletVo.walletName];
79
+ if (!wallet)
80
+ wallet = Wallets_1.wallets.walletList.find(function (item) { return item.name == reqConnectWalletVo.walletName; });
81
+ chain = Chains_1.chains.chainObj[reqConnectWalletVo.chain];
82
+ if (!chain)
83
+ throw new Error('Chain error.');
84
+ chainId = chain.chainId;
85
+ selectedChain = chain.key;
86
+ _c.label = 1;
87
+ case 1:
88
+ _c.trys.push([1, 23, , 27]);
89
+ if (!(wallet.type === 'WalletConnect')) return [3 /*break*/, 3];
90
+ wallet.infuraId = '2c7c4d86c2c746c89de722551b606119';
91
+ return [4 /*yield*/, wallet.requestConnect(chainId)];
92
+ case 2:
93
+ _c.sent();
94
+ return [3 /*break*/, 22];
95
+ case 3:
96
+ if (!(wallet.key === 'OntoMobile')) return [3 /*break*/, 6];
97
+ return [4 /*yield*/, axios.get('https://ethapi.openocean.finance/v1/ont/login')];
98
+ case 4:
99
+ qrData = _c.sent();
100
+ wallet.qrData = qrData.data;
101
+ instance_1 = new NotoMobile_1.NotoMobile(qrData.data);
102
+ return [4 /*yield*/, new Promise(function (r, q) {
103
+ instance_1.$on('close', function (result, action, account) {
104
+ if (action === 'login' && result === 'success') {
105
+ r(account);
106
+ }
107
+ else {
108
+ q(action);
109
+ }
110
+ });
111
+ })];
112
+ case 5:
113
+ account = _c.sent();
114
+ wallet.address = account;
115
+ return [3 /*break*/, 22];
116
+ case 6:
117
+ if (!(selectedChain === 'terra')) return [3 /*break*/, 9];
118
+ if (!!wallet.sdk) return [3 /*break*/, 8];
119
+ return [4 /*yield*/, wallet.requestTerraConnect()];
120
+ case 7:
121
+ res = _c.sent();
122
+ if (res) {
123
+ // this.connect(wallet);
124
+ }
125
+ else {
126
+ // const message = {
127
+ // 'XDEFI Wallet': 'wallet_message_40018',
128
+ // 'Terra Station': 'wallet_message_40015'
129
+ // }[wallet.name];
130
+ // showToast(this.$t(message));
131
+ }
132
+ _c.label = 8;
133
+ case 8: return [3 /*break*/, 22];
134
+ case 9:
135
+ if (!(selectedChain === "solana")) return [3 /*break*/, 11];
136
+ return [4 /*yield*/, wallet.requestSolanaConnect()];
137
+ case 10:
138
+ res = _c.sent();
139
+ wallet.customPublicKey = new web3_js_1.PublicKey(res);
140
+ // "https://api.mainnet-beta.solana.com"
141
+ // "https://solana-mainnet.phantom.tech"
142
+ // "https://rpc.ankr.com/solana"
143
+ // https://solana-api.projectserum.com
144
+ // https://mercuria-fronten-1cd8.mainnet.rpcpool.com/
145
+ wallet.connection = new web3_js_1.Connection("https://solana-api.projectserum.com");
146
+ if (res) {
147
+ // this.connect(wallet);
148
+ }
149
+ else {
150
+ // const message = {
151
+ // 'Sollet': 'wallet_message_40010',
152
+ // 'Coin98 Wallet': 'wallet_message_40011',
153
+ // 'Phantom': 'wallet_message_40013',
154
+ // 'Clover Wallet': 'wallet_message_40017',
155
+ // 'Slope Wallet': 'wallet_message_40019',
156
+ // 'Solflare Wallet': 'wallet_message_40020',
157
+ // };
158
+ // return {
159
+ // code: 401,
160
+ // message: message
161
+ // }
162
+ }
163
+ return [3 /*break*/, 22];
164
+ case 11:
165
+ if (!(selectedChain === 'tron')) return [3 /*break*/, 16];
166
+ account = window.tronWeb.defaultAddress.base58;
167
+ if (!!account) return [3 /*break*/, 14];
168
+ return [4 /*yield*/, utils_1.utils.sleep(1000)];
169
+ case 12:
170
+ _c.sent();
171
+ return [4 /*yield*/, this.link(reqConnectWalletVo)];
172
+ case 13: return [2 /*return*/, _c.sent()];
173
+ case 14: return [4 /*yield*/, wallet.requestConnect()];
174
+ case 15:
175
+ res = _c.sent();
176
+ console.log('wallet.requestConnect', res, wallet);
177
+ return [3 /*break*/, 22];
178
+ case 16:
179
+ if (!chainId) return [3 /*break*/, 18];
180
+ return [4 /*yield*/, wallet.requestConnect(chainId)];
181
+ case 17:
182
+ _a = _c.sent();
183
+ return [3 /*break*/, 20];
184
+ case 18: return [4 /*yield*/, wallet.requestConnect()];
185
+ case 19:
186
+ _a = _c.sent();
187
+ _c.label = 20;
188
+ case 20:
189
+ res = _a;
190
+ console.log('wallet.requestConnect', res, wallet);
191
+ return [4 /*yield*/, utils_1.utils.sleep(200)];
192
+ case 21:
193
+ _c.sent();
194
+ if (res) {
195
+ // this.connect(wallet);
196
+ }
197
+ _c.label = 22;
198
+ case 22: return [2 /*return*/, { chain: chain, wallet: wallet }];
199
+ case 23:
200
+ e_1 = _c.sent();
201
+ message = e_1.message;
202
+ _b = wallet.sdk || {}, currentProvider = _b.currentProvider, utilsEht = _b.utils;
203
+ if (reqConnectWalletVo.noSwitch) {
204
+ throw new Error('No Switch');
205
+ }
206
+ if (!(message === "40006" && currentProvider)) return [3 /*break*/, 25];
207
+ return [4 /*yield*/, this.linkAddOrSwitch(reqConnectWalletVo, wallet, chain)];
208
+ case 24: return [2 /*return*/, _c.sent()];
209
+ case 25: throw new Error(message);
210
+ case 26: return [3 /*break*/, 27];
211
+ case 27: return [2 /*return*/];
212
+ }
213
+ });
214
+ });
215
+ };
216
+ ConnectWallet.linkAddOrSwitch = function (reqConnectWalletVo, wallet, chain) {
217
+ return __awaiter(this, void 0, void 0, function () {
218
+ var _a, currentProvider, utilsEht, chainId, params, address, address, switchError_1, address, address, address, address;
219
+ return __generator(this, function (_b) {
220
+ switch (_b.label) {
221
+ case 0:
222
+ _a = wallet.sdk || {}, currentProvider = _a.currentProvider, utilsEht = _a.utils;
223
+ chainId = chain.chainId;
224
+ params = Chains_1.chains.ethereumChainParams[reqConnectWalletVo.chain];
225
+ if (!params) return [3 /*break*/, 18];
226
+ _b.label = 1;
227
+ case 1:
228
+ _b.trys.push([1, 9, , 17]);
229
+ return [4 /*yield*/, currentProvider.request({
230
+ method: 'wallet_switchEthereumChain',
231
+ params: [{ chainId: params[0].chainId }],
232
+ })];
233
+ case 2:
234
+ _b.sent();
235
+ return [4 /*yield*/, this.isChainIdEq(wallet, chainId, utilsEht)];
236
+ case 3:
237
+ if (!_b.sent()) return [3 /*break*/, 8];
238
+ if (!(wallet.type === 'WalletConnect')) return [3 /*break*/, 5];
239
+ return [4 /*yield*/, wallet.sdk.eth.getAccounts()];
240
+ case 4:
241
+ address = (_b.sent())[0];
242
+ wallet.address = address;
243
+ return [3 /*break*/, 7];
244
+ case 5: return [4 /*yield*/, wallet.sdk.eth.requestAccounts()];
245
+ case 6:
246
+ address = (_b.sent())[0];
247
+ wallet.address = address;
248
+ _b.label = 7;
249
+ case 7: return [2 /*return*/, { chain: chain, wallet: wallet }];
250
+ case 8: return [3 /*break*/, 17];
251
+ case 9:
252
+ switchError_1 = _b.sent();
253
+ if (!(switchError_1.code === 4902)) return [3 /*break*/, 16];
254
+ return [4 /*yield*/, currentProvider.request({
255
+ method: "wallet_addEthereumChain",
256
+ params: params
257
+ })];
258
+ case 10:
259
+ _b.sent();
260
+ return [4 /*yield*/, this.isChainIdEq(wallet, chainId, utilsEht)];
261
+ case 11:
262
+ if (!_b.sent()) return [3 /*break*/, 16];
263
+ if (!(wallet.type === 'WalletConnect')) return [3 /*break*/, 13];
264
+ return [4 /*yield*/, wallet.sdk.eth.getAccounts()];
265
+ case 12:
266
+ address = (_b.sent())[0];
267
+ wallet.address = address;
268
+ return [3 /*break*/, 15];
269
+ case 13: return [4 /*yield*/, wallet.sdk.eth.requestAccounts()];
270
+ case 14:
271
+ address = (_b.sent())[0];
272
+ wallet.address = address;
273
+ _b.label = 15;
274
+ case 15: return [2 /*return*/, { chain: chain, wallet: wallet }];
275
+ case 16: return [3 /*break*/, 17];
276
+ case 17: return [3 /*break*/, 27];
277
+ case 18:
278
+ if (!(chainId == '1' || chainId == '3' || chainId == '4')) return [3 /*break*/, 26];
279
+ return [4 /*yield*/, currentProvider.request({
280
+ method: 'wallet_switchEthereumChain',
281
+ params: [{
282
+ chainId: utilsEht.toHex(chainId)
283
+ }],
284
+ })];
285
+ case 19:
286
+ _b.sent();
287
+ return [4 /*yield*/, this.isChainIdEq(wallet, chainId, utilsEht)];
288
+ case 20:
289
+ if (!_b.sent()) return [3 /*break*/, 25];
290
+ if (!(wallet.type === 'WalletConnect')) return [3 /*break*/, 22];
291
+ return [4 /*yield*/, wallet.sdk.eth.getAccounts()];
292
+ case 21:
293
+ address = (_b.sent())[0];
294
+ wallet.address = address;
295
+ return [3 /*break*/, 24];
296
+ case 22: return [4 /*yield*/, wallet.sdk.eth.requestAccounts()];
297
+ case 23:
298
+ address = (_b.sent())[0];
299
+ wallet.address = address;
300
+ _b.label = 24;
301
+ case 24: return [2 /*return*/, { chain: chain, wallet: wallet }];
302
+ case 25: return [3 /*break*/, 27];
303
+ case 26: throw new Error('Network error');
304
+ case 27: return [2 /*return*/];
305
+ }
306
+ });
307
+ });
308
+ };
309
+ return ConnectWallet;
310
+ }());
311
+ exports.ConnectWallet = ConnectWallet;