@reyaxyz/sdk 0.134.10 → 0.134.12

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/README.md CHANGED
@@ -6,5 +6,5 @@
6
6
 
7
7
  | Statements | Branches | Functions | Lines |
8
8
  | --------------------------- | ----------------------- | ------------------------- | ----------------- |
9
- | ![Statements](https://img.shields.io/badge/statements-8.04%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-5.12%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-3.79%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-7.73%25-red.svg?style=flat) |
9
+ | ![Statements](https://img.shields.io/badge/statements-9.16%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-5.75%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-4.1%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-8.81%25-red.svg?style=flat) |
10
10
 
@@ -22,5 +22,4 @@ __exportStar(require("./bridgeAndDepositExistingMA"), exports);
22
22
  __exportStar(require("./bridgeAndDepositNewMA"), exports);
23
23
  __exportStar(require("./transferMarginBetweenAccounts"), exports);
24
24
  __exportStar(require("./withdrawMAAndBridge"), exports);
25
- __exportStar(require("./rescueFundsFromEmbeddedWallet"), exports);
26
25
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["services/margin-accounts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,6CAA2B;AAC3B,+DAA6C;AAC7C,0DAAwC;AACxC,kEAAgD;AAChD,wDAAsC;AACtC,kEAAgD","sourcesContent":["export * from './types';\nexport * from './account';\nexport * from './deposit';\nexport * from './withdraw';\nexport * from './bridgeAndDepositExistingMA';\nexport * from './bridgeAndDepositNewMA';\nexport * from './transferMarginBetweenAccounts';\nexport * from './withdrawMAAndBridge';\nexport * from './rescueFundsFromEmbeddedWallet';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["services/margin-accounts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,4CAA0B;AAC1B,6CAA2B;AAC3B,+DAA6C;AAC7C,0DAAwC;AACxC,kEAAgD;AAChD,wDAAsC","sourcesContent":["export * from './types';\nexport * from './account';\nexport * from './deposit';\nexport * from './withdraw';\nexport * from './bridgeAndDepositExistingMA';\nexport * from './bridgeAndDepositNewMA';\nexport * from './transferMarginBetweenAccounts';\nexport * from './withdrawMAAndBridge';\n"]}
@@ -6,5 +6,4 @@ export * from './bridgeAndDepositExistingMA';
6
6
  export * from './bridgeAndDepositNewMA';
7
7
  export * from './transferMarginBetweenAccounts';
8
8
  export * from './withdrawMAAndBridge';
9
- export * from './rescueFundsFromEmbeddedWallet';
10
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["services/margin-accounts/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["services/margin-accounts/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/sdk",
3
- "version": "0.134.10",
3
+ "version": "0.134.12",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -29,11 +29,11 @@
29
29
  "generate:coverage-badges": "npx istanbul-badges-readme --silent"
30
30
  },
31
31
  "dependencies": {
32
- "@reyaxyz/common": "0.291.8",
32
+ "@reyaxyz/common": "0.291.9",
33
33
  "axios": "^1.6.2",
34
34
  "bignumber.js": "^9.1.2",
35
35
  "ethers": "6.9.0"
36
36
  },
37
37
  "packageManager": "pnpm@8.3.1",
38
- "gitHead": "bf535ce18c8216b972688a5254eb18113f9b7b43"
38
+ "gitHead": "6438674e51b74d423e6d918de5e77da954c6d648"
39
39
  }
@@ -6,4 +6,3 @@ export * from './bridgeAndDepositExistingMA';
6
6
  export * from './bridgeAndDepositNewMA';
7
7
  export * from './transferMarginBetweenAccounts';
8
8
  export * from './withdrawMAAndBridge';
9
- export * from './rescueFundsFromEmbeddedWallet';
@@ -1,221 +0,0 @@
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 (g && (g = 0, op[0] && (_ = 0)), _) 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.rescueFundsFromEmbeddedWallet = exports.isValidToRescueFundsFromEmbeddedWallet = void 0;
40
- var ethers_1 = require("ethers");
41
- var config_1 = require("../../config");
42
- var common_1 = require("@reyaxyz/common");
43
- var network_1 = require("../../utils/network");
44
- var CoreAbi = [
45
- "function deposit(uint128, address, uint256) external",
46
- "function execute(uint128, (uint8, bytes, uint128, uint128)[] calldata) external",
47
- "function getCollateralInfo(uint128, address) external view returns ((int256,int256,int256))",
48
- ];
49
- var Erc20Abi = [
50
- "function approve(address, uint256) external returns (bool)",
51
- "function balanceOf(address) external view returns (uint256)",
52
- ];
53
- var getAccountRusdAmount = function (embeddedWallet, accountId) { return __awaiter(void 0, void 0, void 0, function () {
54
- var reyaChainId, coreAddress, core, rusdAddress, result;
55
- return __generator(this, function (_a) {
56
- switch (_a.label) {
57
- case 0:
58
- reyaChainId = (0, config_1.getSdkConfig)().chain;
59
- coreAddress = (0, common_1.getAddress)(reyaChainId, common_1.ContractType.CORE_PROXY);
60
- core = new ethers_1.Contract(coreAddress, CoreAbi, embeddedWallet);
61
- rusdAddress = (0, common_1.getTokenInfoByName)('RUSD', reyaChainId).address;
62
- return [4 /*yield*/, core.getCollateralInfo(accountId, rusdAddress)];
63
- case 1:
64
- result = _a.sent();
65
- return [2 /*return*/, result[1].toString()];
66
- }
67
- });
68
- }); };
69
- var checkUserForRescueFundsFromEmbeddedWallet = function (_a) {
70
- var mainWallet = _a.mainWallet, embeddedWallet = _a.embeddedWallet;
71
- return __awaiter(void 0, void 0, void 0, function () {
72
- var reyaChainId, _b, embeddedWalletAddress, mainWalletAddress, fromAccountId, toAccountId, rusdAmount;
73
- return __generator(this, function (_c) {
74
- switch (_c.label) {
75
- case 0:
76
- reyaChainId = (0, config_1.getSdkConfig)().chain;
77
- return [4 /*yield*/, Promise.all([
78
- embeddedWallet.getAddress(),
79
- mainWallet.getAddress(),
80
- ])];
81
- case 1:
82
- _b = _c.sent(), embeddedWalletAddress = _b[0], mainWalletAddress = _b[1];
83
- fromAccountId = 0;
84
- toAccountId = 0;
85
- if (reyaChainId === common_1.ReyaChainId.reyaNetwork) {
86
- if (embeddedWalletAddress.toLowerCase() ===
87
- '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase() &&
88
- mainWalletAddress.toLowerCase() ===
89
- '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase()) {
90
- fromAccountId = 95928;
91
- toAccountId = 20135;
92
- }
93
- if (embeddedWalletAddress.toLowerCase() ===
94
- '0x07976A7DC83c4470859e391139785146E4b69B21'.toLowerCase() &&
95
- mainWalletAddress.toLowerCase() ===
96
- '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase()) {
97
- fromAccountId = 102993;
98
- toAccountId = 20135;
99
- }
100
- if (embeddedWalletAddress.toLowerCase() ===
101
- '0x105E50Dc1210F5fE3f00187fbD6b94F5f275D141'.toLowerCase() &&
102
- mainWalletAddress.toLowerCase() ===
103
- '0x800949e55f51AB7Ed905CE2b8CC50F205332C04f'.toLowerCase()) {
104
- fromAccountId = 101822;
105
- toAccountId = 102857;
106
- }
107
- }
108
- if (fromAccountId === 0) {
109
- return [2 /*return*/, {
110
- isValid: false,
111
- }];
112
- }
113
- return [4 /*yield*/, getAccountRusdAmount(embeddedWallet, fromAccountId)];
114
- case 2:
115
- rusdAmount = _c.sent();
116
- if (rusdAmount === '0') {
117
- return [2 /*return*/, {
118
- isValid: false,
119
- }];
120
- }
121
- return [2 /*return*/, {
122
- isValid: true,
123
- fromAccountId: fromAccountId,
124
- toAccountId: toAccountId,
125
- rusdAmount: rusdAmount,
126
- }];
127
- }
128
- });
129
- });
130
- };
131
- var isValidToRescueFundsFromEmbeddedWallet = function (params) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
132
- return [2 /*return*/, checkUserForRescueFundsFromEmbeddedWallet(params).then(function (r) { return r.isValid; })];
133
- }); }); };
134
- exports.isValidToRescueFundsFromEmbeddedWallet = isValidToRescueFundsFromEmbeddedWallet;
135
- var validateInputs = function (_a) {
136
- var embeddedWallet = _a.embeddedWallet, mainWallet = _a.mainWallet;
137
- return __awaiter(void 0, void 0, void 0, function () {
138
- var embeddedWalletProvider, mainWalletProvider, embeddedWalletChainId, _b, mainWalletChainId, _c, doChainIdsMatch, isConnectedToReya, result;
139
- return __generator(this, function (_d) {
140
- switch (_d.label) {
141
- case 0:
142
- embeddedWalletProvider = embeddedWallet.provider;
143
- mainWalletProvider = mainWallet.provider;
144
- if (!embeddedWalletProvider) {
145
- throw new Error('Embedded wallet provider not found');
146
- }
147
- if (!mainWalletProvider) {
148
- throw new Error('Main wallet provider not found');
149
- }
150
- _b = Number;
151
- return [4 /*yield*/, embeddedWalletProvider.getNetwork()];
152
- case 1:
153
- embeddedWalletChainId = _b.apply(void 0, [(_d.sent()).chainId]);
154
- _c = Number;
155
- return [4 /*yield*/, mainWalletProvider.getNetwork()];
156
- case 2:
157
- mainWalletChainId = _c.apply(void 0, [(_d.sent()).chainId]);
158
- doChainIdsMatch = embeddedWalletChainId === mainWalletChainId;
159
- if (!doChainIdsMatch) {
160
- throw new Error('Chain IDs do not match');
161
- }
162
- isConnectedToReya = embeddedWalletChainId === (0, config_1.getSdkConfig)().chain;
163
- if (!isConnectedToReya) {
164
- throw new Error("Wallet is not connected to Reya, ".concat(embeddedWalletChainId));
165
- }
166
- return [4 /*yield*/, checkUserForRescueFundsFromEmbeddedWallet({
167
- embeddedWallet: embeddedWallet,
168
- mainWallet: mainWallet,
169
- })];
170
- case 3:
171
- result = _d.sent();
172
- if (!result.isValid) {
173
- throw new Error('Invalid rescue funds from embedded wallet');
174
- }
175
- return [2 /*return*/, result];
176
- }
177
- });
178
- });
179
- };
180
- var rescueFundsFromEmbeddedWallet = function (params) { return __awaiter(void 0, void 0, void 0, function () {
181
- var _a, rusdAmount, fromAccountId, toAccountId, embeddedWallet, reyaChainId, coreAddress, core, rusdAddress, rusd, encodedInput, tx, tx, tx;
182
- return __generator(this, function (_b) {
183
- switch (_b.label) {
184
- case 0: return [4 /*yield*/, validateInputs(params)];
185
- case 1:
186
- _a = _b.sent(), rusdAmount = _a.rusdAmount, fromAccountId = _a.fromAccountId, toAccountId = _a.toAccountId;
187
- embeddedWallet = params.embeddedWallet;
188
- reyaChainId = (0, network_1.getReyaNetwork)();
189
- console.log('rusd amount', rusdAmount);
190
- coreAddress = (0, common_1.getAddress)(reyaChainId, common_1.ContractType.CORE_PROXY);
191
- core = new ethers_1.Contract(coreAddress, CoreAbi, embeddedWallet);
192
- rusdAddress = (0, common_1.getTokenInfoByName)('RUSD', reyaChainId).address;
193
- rusd = new ethers_1.Contract(rusdAddress, Erc20Abi, embeddedWallet);
194
- encodedInput = ethers_1.AbiCoder.defaultAbiCoder().encode(['address', 'uint256'], [rusdAddress, rusdAmount]);
195
- return [4 /*yield*/, core.execute(fromAccountId, [[1, encodedInput, 0, 0]])];
196
- case 2:
197
- tx = _b.sent();
198
- return [4 /*yield*/, tx.wait()];
199
- case 3:
200
- _b.sent();
201
- console.log('Withdrawal executed successfully.');
202
- return [4 /*yield*/, rusd.approve(coreAddress, rusdAmount)];
203
- case 4:
204
- tx = _b.sent();
205
- return [4 /*yield*/, tx.wait()];
206
- case 5:
207
- _b.sent();
208
- console.log('Approval executed successfully.');
209
- return [4 /*yield*/, core.deposit(toAccountId, rusdAddress, rusdAmount)];
210
- case 6:
211
- tx = _b.sent();
212
- return [4 /*yield*/, tx.wait()];
213
- case 7:
214
- _b.sent();
215
- console.log('Deposit executed successfully.');
216
- return [2 /*return*/];
217
- }
218
- });
219
- }); };
220
- exports.rescueFundsFromEmbeddedWallet = rescueFundsFromEmbeddedWallet;
221
- //# sourceMappingURL=rescueFundsFromEmbeddedWallet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rescueFundsFromEmbeddedWallet.js","sourceRoot":"/","sources":["services/margin-accounts/rescueFundsFromEmbeddedWallet.ts"],"names":[],"mappings":"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","sourcesContent":["import { AbiCoder, Contract, JsonRpcSigner, Signer } from 'ethers';\nimport { getSdkConfig } from '../../config';\nimport {\n ContractType,\n getAddress,\n getTokenInfoByName,\n ReyaChainId,\n} from '@reyaxyz/common';\nimport { getReyaNetwork } from '../../utils/network';\n\nexport type RescueFundsFromEmbeddedWalletParams = {\n embeddedWallet: JsonRpcSigner | Signer;\n mainWallet: JsonRpcSigner | Signer;\n};\n\nconst CoreAbi = [\n `function deposit(uint128, address, uint256) external`,\n `function execute(uint128, (uint8, bytes, uint128, uint128)[] calldata) external`,\n `function getCollateralInfo(uint128, address) external view returns ((int256,int256,int256))`,\n];\n\nconst Erc20Abi = [\n `function approve(address, uint256) external returns (bool)`,\n `function balanceOf(address) external view returns (uint256)`,\n];\n\nconst getAccountRusdAmount = async (\n embeddedWallet: JsonRpcSigner | Signer,\n accountId: number,\n): Promise<string> => {\n const reyaChainId = getSdkConfig().chain;\n const coreAddress = getAddress(reyaChainId, ContractType.CORE_PROXY);\n const core = new Contract(coreAddress, CoreAbi, embeddedWallet);\n const rusdAddress = getTokenInfoByName('RUSD', reyaChainId).address;\n const result = await core.getCollateralInfo(accountId, rusdAddress);\n return result[1].toString();\n};\n\nconst checkUserForRescueFundsFromEmbeddedWallet = async ({\n mainWallet,\n embeddedWallet,\n}: RescueFundsFromEmbeddedWalletParams): Promise<\n | {\n isValid: false;\n }\n | {\n isValid: true;\n fromAccountId: number;\n toAccountId: number;\n rusdAmount: string;\n }\n> => {\n const reyaChainId = getSdkConfig().chain;\n const [embeddedWalletAddress, mainWalletAddress] = await Promise.all([\n embeddedWallet.getAddress(),\n mainWallet.getAddress(),\n ]);\n\n let fromAccountId = 0;\n let toAccountId = 0;\n\n if (reyaChainId === ReyaChainId.reyaNetwork) {\n if (\n embeddedWalletAddress.toLowerCase() ===\n '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase() &&\n mainWalletAddress.toLowerCase() ===\n '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase()\n ) {\n fromAccountId = 95928;\n toAccountId = 20135;\n }\n\n if (\n embeddedWalletAddress.toLowerCase() ===\n '0x07976A7DC83c4470859e391139785146E4b69B21'.toLowerCase() &&\n mainWalletAddress.toLowerCase() ===\n '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase()\n ) {\n fromAccountId = 102993;\n toAccountId = 20135;\n }\n\n if (\n embeddedWalletAddress.toLowerCase() ===\n '0x105E50Dc1210F5fE3f00187fbD6b94F5f275D141'.toLowerCase() &&\n mainWalletAddress.toLowerCase() ===\n '0x800949e55f51AB7Ed905CE2b8CC50F205332C04f'.toLowerCase()\n ) {\n fromAccountId = 101822;\n toAccountId = 102857;\n }\n }\n\n if (fromAccountId === 0) {\n return {\n isValid: false,\n };\n }\n\n const rusdAmount = await getAccountRusdAmount(embeddedWallet, fromAccountId);\n\n if (rusdAmount === '0') {\n return {\n isValid: false,\n };\n }\n\n return {\n isValid: true,\n fromAccountId,\n toAccountId,\n rusdAmount,\n };\n};\n\nexport const isValidToRescueFundsFromEmbeddedWallet = async (\n params: RescueFundsFromEmbeddedWalletParams,\n) => checkUserForRescueFundsFromEmbeddedWallet(params).then((r) => r.isValid);\n\nconst validateInputs = async ({\n embeddedWallet,\n mainWallet,\n}: RescueFundsFromEmbeddedWalletParams): Promise<{\n rusdAmount: string;\n fromAccountId: number;\n toAccountId: number;\n}> => {\n const embeddedWalletProvider = embeddedWallet.provider;\n const mainWalletProvider = mainWallet.provider;\n\n if (!embeddedWalletProvider) {\n throw new Error('Embedded wallet provider not found');\n }\n\n if (!mainWalletProvider) {\n throw new Error('Main wallet provider not found');\n }\n\n const embeddedWalletChainId = Number(\n (await embeddedWalletProvider.getNetwork()).chainId,\n );\n const mainWalletChainId = Number(\n (await mainWalletProvider.getNetwork()).chainId,\n );\n\n const doChainIdsMatch = embeddedWalletChainId === mainWalletChainId;\n if (!doChainIdsMatch) {\n throw new Error('Chain IDs do not match');\n }\n\n const isConnectedToReya = embeddedWalletChainId === getSdkConfig().chain;\n\n if (!isConnectedToReya) {\n throw new Error(\n `Wallet is not connected to Reya, ${embeddedWalletChainId}`,\n );\n }\n\n const result = await checkUserForRescueFundsFromEmbeddedWallet({\n embeddedWallet,\n mainWallet,\n });\n\n if (!result.isValid) {\n throw new Error('Invalid rescue funds from embedded wallet');\n }\n\n return result;\n};\n\nexport const rescueFundsFromEmbeddedWallet = async (\n params: RescueFundsFromEmbeddedWalletParams,\n): Promise<void> => {\n const { rusdAmount, fromAccountId, toAccountId } =\n await validateInputs(params);\n const { embeddedWallet } = params;\n const reyaChainId = getReyaNetwork();\n\n console.log('rusd amount', rusdAmount);\n\n const coreAddress = getAddress(reyaChainId, ContractType.CORE_PROXY);\n\n const core = new Contract(coreAddress, CoreAbi, embeddedWallet);\n\n const rusdAddress = getTokenInfoByName('RUSD', reyaChainId).address;\n const rusd = new Contract(rusdAddress, Erc20Abi, embeddedWallet);\n\n {\n const encodedInput = AbiCoder.defaultAbiCoder().encode(\n ['address', 'uint256'],\n [rusdAddress, rusdAmount],\n );\n\n const tx = await core.execute(fromAccountId, [[1, encodedInput, 0, 0]]);\n\n await tx.wait();\n\n console.log('Withdrawal executed successfully.');\n }\n\n {\n const tx = await rusd.approve(coreAddress, rusdAmount);\n await tx.wait();\n\n console.log('Approval executed successfully.');\n }\n\n {\n const tx = await core.deposit(toAccountId, rusdAddress, rusdAmount);\n\n await tx.wait();\n\n console.log('Deposit executed successfully.');\n }\n};\n"]}
@@ -1,8 +0,0 @@
1
- import { JsonRpcSigner, Signer } from 'ethers';
2
- export type RescueFundsFromEmbeddedWalletParams = {
3
- embeddedWallet: JsonRpcSigner | Signer;
4
- mainWallet: JsonRpcSigner | Signer;
5
- };
6
- export declare const isValidToRescueFundsFromEmbeddedWallet: (params: RescueFundsFromEmbeddedWalletParams) => Promise<boolean>;
7
- export declare const rescueFundsFromEmbeddedWallet: (params: RescueFundsFromEmbeddedWalletParams) => Promise<void>;
8
- //# sourceMappingURL=rescueFundsFromEmbeddedWallet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rescueFundsFromEmbeddedWallet.d.ts","sourceRoot":"/","sources":["services/margin-accounts/rescueFundsFromEmbeddedWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAUnE,MAAM,MAAM,mCAAmC,GAAG;IAChD,cAAc,EAAE,aAAa,GAAG,MAAM,CAAC;IACvC,UAAU,EAAE,aAAa,GAAG,MAAM,CAAC;CACpC,CAAC;AAsGF,eAAO,MAAM,sCAAsC,WACzC,mCAAmC,qBACgC,CAAC;AAqD9E,eAAO,MAAM,6BAA6B,WAChC,mCAAmC,KAC1C,QAAQ,IAAI,CA0Cd,CAAC"}
@@ -1,215 +0,0 @@
1
- import { AbiCoder, Contract, JsonRpcSigner, Signer } from 'ethers';
2
- import { getSdkConfig } from '../../config';
3
- import {
4
- ContractType,
5
- getAddress,
6
- getTokenInfoByName,
7
- ReyaChainId,
8
- } from '@reyaxyz/common';
9
- import { getReyaNetwork } from '../../utils/network';
10
-
11
- export type RescueFundsFromEmbeddedWalletParams = {
12
- embeddedWallet: JsonRpcSigner | Signer;
13
- mainWallet: JsonRpcSigner | Signer;
14
- };
15
-
16
- const CoreAbi = [
17
- `function deposit(uint128, address, uint256) external`,
18
- `function execute(uint128, (uint8, bytes, uint128, uint128)[] calldata) external`,
19
- `function getCollateralInfo(uint128, address) external view returns ((int256,int256,int256))`,
20
- ];
21
-
22
- const Erc20Abi = [
23
- `function approve(address, uint256) external returns (bool)`,
24
- `function balanceOf(address) external view returns (uint256)`,
25
- ];
26
-
27
- const getAccountRusdAmount = async (
28
- embeddedWallet: JsonRpcSigner | Signer,
29
- accountId: number,
30
- ): Promise<string> => {
31
- const reyaChainId = getSdkConfig().chain;
32
- const coreAddress = getAddress(reyaChainId, ContractType.CORE_PROXY);
33
- const core = new Contract(coreAddress, CoreAbi, embeddedWallet);
34
- const rusdAddress = getTokenInfoByName('RUSD', reyaChainId).address;
35
- const result = await core.getCollateralInfo(accountId, rusdAddress);
36
- return result[1].toString();
37
- };
38
-
39
- const checkUserForRescueFundsFromEmbeddedWallet = async ({
40
- mainWallet,
41
- embeddedWallet,
42
- }: RescueFundsFromEmbeddedWalletParams): Promise<
43
- | {
44
- isValid: false;
45
- }
46
- | {
47
- isValid: true;
48
- fromAccountId: number;
49
- toAccountId: number;
50
- rusdAmount: string;
51
- }
52
- > => {
53
- const reyaChainId = getSdkConfig().chain;
54
- const [embeddedWalletAddress, mainWalletAddress] = await Promise.all([
55
- embeddedWallet.getAddress(),
56
- mainWallet.getAddress(),
57
- ]);
58
-
59
- let fromAccountId = 0;
60
- let toAccountId = 0;
61
-
62
- if (reyaChainId === ReyaChainId.reyaNetwork) {
63
- if (
64
- embeddedWalletAddress.toLowerCase() ===
65
- '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase() &&
66
- mainWalletAddress.toLowerCase() ===
67
- '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase()
68
- ) {
69
- fromAccountId = 95928;
70
- toAccountId = 20135;
71
- }
72
-
73
- if (
74
- embeddedWalletAddress.toLowerCase() ===
75
- '0x07976A7DC83c4470859e391139785146E4b69B21'.toLowerCase() &&
76
- mainWalletAddress.toLowerCase() ===
77
- '0xae173a960084903b1d278ff9e3a81ded82275556'.toLowerCase()
78
- ) {
79
- fromAccountId = 102993;
80
- toAccountId = 20135;
81
- }
82
-
83
- if (
84
- embeddedWalletAddress.toLowerCase() ===
85
- '0x105E50Dc1210F5fE3f00187fbD6b94F5f275D141'.toLowerCase() &&
86
- mainWalletAddress.toLowerCase() ===
87
- '0x800949e55f51AB7Ed905CE2b8CC50F205332C04f'.toLowerCase()
88
- ) {
89
- fromAccountId = 101822;
90
- toAccountId = 102857;
91
- }
92
- }
93
-
94
- if (fromAccountId === 0) {
95
- return {
96
- isValid: false,
97
- };
98
- }
99
-
100
- const rusdAmount = await getAccountRusdAmount(embeddedWallet, fromAccountId);
101
-
102
- if (rusdAmount === '0') {
103
- return {
104
- isValid: false,
105
- };
106
- }
107
-
108
- return {
109
- isValid: true,
110
- fromAccountId,
111
- toAccountId,
112
- rusdAmount,
113
- };
114
- };
115
-
116
- export const isValidToRescueFundsFromEmbeddedWallet = async (
117
- params: RescueFundsFromEmbeddedWalletParams,
118
- ) => checkUserForRescueFundsFromEmbeddedWallet(params).then((r) => r.isValid);
119
-
120
- const validateInputs = async ({
121
- embeddedWallet,
122
- mainWallet,
123
- }: RescueFundsFromEmbeddedWalletParams): Promise<{
124
- rusdAmount: string;
125
- fromAccountId: number;
126
- toAccountId: number;
127
- }> => {
128
- const embeddedWalletProvider = embeddedWallet.provider;
129
- const mainWalletProvider = mainWallet.provider;
130
-
131
- if (!embeddedWalletProvider) {
132
- throw new Error('Embedded wallet provider not found');
133
- }
134
-
135
- if (!mainWalletProvider) {
136
- throw new Error('Main wallet provider not found');
137
- }
138
-
139
- const embeddedWalletChainId = Number(
140
- (await embeddedWalletProvider.getNetwork()).chainId,
141
- );
142
- const mainWalletChainId = Number(
143
- (await mainWalletProvider.getNetwork()).chainId,
144
- );
145
-
146
- const doChainIdsMatch = embeddedWalletChainId === mainWalletChainId;
147
- if (!doChainIdsMatch) {
148
- throw new Error('Chain IDs do not match');
149
- }
150
-
151
- const isConnectedToReya = embeddedWalletChainId === getSdkConfig().chain;
152
-
153
- if (!isConnectedToReya) {
154
- throw new Error(
155
- `Wallet is not connected to Reya, ${embeddedWalletChainId}`,
156
- );
157
- }
158
-
159
- const result = await checkUserForRescueFundsFromEmbeddedWallet({
160
- embeddedWallet,
161
- mainWallet,
162
- });
163
-
164
- if (!result.isValid) {
165
- throw new Error('Invalid rescue funds from embedded wallet');
166
- }
167
-
168
- return result;
169
- };
170
-
171
- export const rescueFundsFromEmbeddedWallet = async (
172
- params: RescueFundsFromEmbeddedWalletParams,
173
- ): Promise<void> => {
174
- const { rusdAmount, fromAccountId, toAccountId } =
175
- await validateInputs(params);
176
- const { embeddedWallet } = params;
177
- const reyaChainId = getReyaNetwork();
178
-
179
- console.log('rusd amount', rusdAmount);
180
-
181
- const coreAddress = getAddress(reyaChainId, ContractType.CORE_PROXY);
182
-
183
- const core = new Contract(coreAddress, CoreAbi, embeddedWallet);
184
-
185
- const rusdAddress = getTokenInfoByName('RUSD', reyaChainId).address;
186
- const rusd = new Contract(rusdAddress, Erc20Abi, embeddedWallet);
187
-
188
- {
189
- const encodedInput = AbiCoder.defaultAbiCoder().encode(
190
- ['address', 'uint256'],
191
- [rusdAddress, rusdAmount],
192
- );
193
-
194
- const tx = await core.execute(fromAccountId, [[1, encodedInput, 0, 0]]);
195
-
196
- await tx.wait();
197
-
198
- console.log('Withdrawal executed successfully.');
199
- }
200
-
201
- {
202
- const tx = await rusd.approve(coreAddress, rusdAmount);
203
- await tx.wait();
204
-
205
- console.log('Approval executed successfully.');
206
- }
207
-
208
- {
209
- const tx = await core.deposit(toAccountId, rusdAddress, rusdAmount);
210
-
211
- await tx.wait();
212
-
213
- console.log('Deposit executed successfully.');
214
- }
215
- };