@reyaxyz/sdk 0.146.1 → 0.146.3

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-7.12%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-5.83%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-3.33%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-6.79%25-red.svg?style=flat) |
9
+ | ![Statements](https://img.shields.io/badge/statements-6.39%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-5.55%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-2.66%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-6.09%25-red.svg?style=flat) |
10
10
 
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.getBalancesForBridgeMA = exports.getBalancesForBridgeLPV2 = exports.getBalancesForBridgeLP = exports.getBalanceByTokenAddress = void 0;
51
+ var common_1 = require("@reyaxyz/common");
52
+ var network_1 = require("../../utils/network");
53
+ var getBalanceByTokenAddress = function (_a) {
54
+ var signer = _a.signer, tokenAddress = _a.tokenAddress;
55
+ return __awaiter(void 0, void 0, void 0, function () {
56
+ var walletAddress, tokenInfo;
57
+ return __generator(this, function (_b) {
58
+ switch (_b.label) {
59
+ case 0: return [4 /*yield*/, signer.getAddress()];
60
+ case 1:
61
+ walletAddress = _b.sent();
62
+ tokenInfo = (0, common_1.getTokenInfoByAddress)(tokenAddress);
63
+ return [4 /*yield*/, (0, common_1.getERC20Balance)({
64
+ walletAddress: walletAddress,
65
+ tokenDecimals: tokenInfo.decimals,
66
+ subject: signer,
67
+ tokenAddress: tokenAddress,
68
+ })];
69
+ case 2: return [2 /*return*/, _b.sent()];
70
+ }
71
+ });
72
+ });
73
+ };
74
+ exports.getBalanceByTokenAddress = getBalanceByTokenAddress;
75
+ var getBalancesForBridgeLP = function (_a) {
76
+ var walletAddress = _a.walletAddress;
77
+ return __awaiter(void 0, void 0, void 0, function () {
78
+ var reyaNetwork, chains, balancePromises, balancesArray, balances;
79
+ return __generator(this, function (_b) {
80
+ switch (_b.label) {
81
+ case 0:
82
+ reyaNetwork = (0, network_1.getReyaNetwork)();
83
+ chains = (0, common_1.getMoneyInOutNetworks)(reyaNetwork);
84
+ chains.push(reyaNetwork);
85
+ balancePromises = chains.map(function (chain) { return __awaiter(void 0, void 0, void 0, function () {
86
+ var tokenInfo, balance;
87
+ return __generator(this, function (_a) {
88
+ switch (_a.label) {
89
+ case 0:
90
+ tokenInfo = chain === reyaNetwork
91
+ ? (0, common_1.getTokenInfoByName)('RUSD', chain)
92
+ : (0, common_1.getRUSDUnderlyingTokenInfo)(chain);
93
+ return [4 /*yield*/, (0, common_1.getERC20BalanceBatch)({
94
+ tokenAddress: tokenInfo.address,
95
+ tokenDecimals: tokenInfo.decimals,
96
+ walletAddress: walletAddress,
97
+ chain: chain,
98
+ })];
99
+ case 1:
100
+ balance = _a.sent();
101
+ return [2 /*return*/, { chain: chain, tokenInfo: tokenInfo, balance: balance }];
102
+ }
103
+ });
104
+ }); });
105
+ return [4 /*yield*/, Promise.all(balancePromises)];
106
+ case 1:
107
+ balancesArray = _b.sent();
108
+ balances = balancesArray.reduce(function (acc, _a) {
109
+ var chain = _a.chain, tokenInfo = _a.tokenInfo, balance = _a.balance;
110
+ acc[chain] = {
111
+ tokenEntity: {
112
+ name: tokenInfo.name,
113
+ address: tokenInfo.address,
114
+ },
115
+ balance: balance,
116
+ };
117
+ return acc;
118
+ }, {});
119
+ return [2 /*return*/, balances];
120
+ }
121
+ });
122
+ });
123
+ };
124
+ exports.getBalancesForBridgeLP = getBalancesForBridgeLP;
125
+ var getBalancesForBridgeLPV2 = function (_a) {
126
+ var walletAddress = _a.walletAddress;
127
+ return __awaiter(void 0, void 0, void 0, function () {
128
+ var reyaNetwork, chains, tokenNames, balancePromises, balancesArray, balances;
129
+ return __generator(this, function (_b) {
130
+ switch (_b.label) {
131
+ case 0:
132
+ reyaNetwork = (0, network_1.getReyaNetwork)();
133
+ chains = (0, common_1.getMoneyInOutNetworks)(reyaNetwork);
134
+ chains.push(reyaNetwork);
135
+ tokenNames = ['RUSD', 'DEUSD', 'SDEUSD'];
136
+ balancePromises = chains.map(function (chain) { return __awaiter(void 0, void 0, void 0, function () {
137
+ var tokenBalances;
138
+ return __generator(this, function (_a) {
139
+ switch (_a.label) {
140
+ case 0: return [4 /*yield*/, Promise.all(tokenNames.map(function (tokenName) { return __awaiter(void 0, void 0, void 0, function () {
141
+ var tokenInfo, balance, error_1;
142
+ return __generator(this, function (_a) {
143
+ switch (_a.label) {
144
+ case 0:
145
+ _a.trys.push([0, 2, , 3]);
146
+ tokenInfo = chain === reyaNetwork || tokenName !== 'RUSD'
147
+ ? (0, common_1.getTokenInfoByName)(tokenName, chain)
148
+ : (0, common_1.getRUSDUnderlyingTokenInfo)(chain);
149
+ return [4 /*yield*/, (0, common_1.getERC20BalanceBatch)({
150
+ tokenAddress: tokenInfo.address,
151
+ tokenDecimals: tokenInfo.decimals,
152
+ walletAddress: walletAddress,
153
+ chain: chain,
154
+ })];
155
+ case 1:
156
+ balance = _a.sent();
157
+ return [2 /*return*/, { tokenName: tokenInfo.name, tokenInfo: tokenInfo, balance: balance }];
158
+ case 2:
159
+ error_1 = _a.sent();
160
+ // Skip this token if getTokenInfoByName throws an error
161
+ return [2 /*return*/, null];
162
+ case 3: return [2 /*return*/];
163
+ }
164
+ });
165
+ }); }))];
166
+ case 1:
167
+ tokenBalances = (_a.sent()).filter(function (tokenData) { return tokenData !== null; });
168
+ return [2 /*return*/, { chain: chain, tokenBalances: tokenBalances }];
169
+ }
170
+ });
171
+ }); });
172
+ return [4 /*yield*/, Promise.all(balancePromises)];
173
+ case 1:
174
+ balancesArray = _b.sent();
175
+ balances = balancesArray.reduce(function (acc, _a) {
176
+ var chain = _a.chain, tokenBalances = _a.tokenBalances;
177
+ if (tokenBalances.length > 0) {
178
+ acc[chain] = tokenBalances.reduce(function (tokenAcc, _a) {
179
+ var tokenName = _a.tokenName, tokenInfo = _a.tokenInfo, balance = _a.balance;
180
+ tokenAcc[tokenName] = {
181
+ tokenEntity: {
182
+ name: tokenInfo.name,
183
+ address: tokenInfo.address,
184
+ },
185
+ balance: balance,
186
+ };
187
+ return tokenAcc;
188
+ }, {});
189
+ }
190
+ return acc;
191
+ }, {});
192
+ return [2 /*return*/, balances];
193
+ }
194
+ });
195
+ });
196
+ };
197
+ exports.getBalancesForBridgeLPV2 = getBalancesForBridgeLPV2;
198
+ var getBalancesForBridgeMA = function (_a) {
199
+ var walletAddress = _a.walletAddress;
200
+ return __awaiter(void 0, void 0, void 0, function () {
201
+ var reyaNetwork, moneyInOutChainIds, balancePromises, balancesArray, balances;
202
+ return __generator(this, function (_b) {
203
+ switch (_b.label) {
204
+ case 0:
205
+ reyaNetwork = (0, network_1.getReyaNetwork)();
206
+ moneyInOutChainIds = (0, common_1.getMoneyInOutNetworks)(reyaNetwork);
207
+ balancePromises = moneyInOutChainIds
208
+ .map(function (moneyInOutChainId) {
209
+ var tokenInfos = (0, common_1.getTokenInfosByChain)(moneyInOutChainId);
210
+ return tokenInfos.map(function (tokenInfo) { return __awaiter(void 0, void 0, void 0, function () {
211
+ var balance;
212
+ return __generator(this, function (_a) {
213
+ switch (_a.label) {
214
+ case 0: return [4 /*yield*/, (0, common_1.getERC20BalanceBatch)({
215
+ tokenAddress: tokenInfo.address,
216
+ tokenDecimals: tokenInfo.decimals,
217
+ walletAddress: walletAddress,
218
+ chain: moneyInOutChainId,
219
+ })];
220
+ case 1:
221
+ balance = _a.sent();
222
+ return [2 /*return*/, {
223
+ chain: moneyInOutChainId,
224
+ tokenName: tokenInfo.name,
225
+ balance: balance,
226
+ }];
227
+ }
228
+ });
229
+ }); });
230
+ })
231
+ .reduce(function (acc, value) { return acc.concat(value); }, []);
232
+ return [4 /*yield*/, Promise.all(balancePromises)];
233
+ case 1:
234
+ balancesArray = _b.sent();
235
+ balances = balancesArray.reduce(function (acc, _a) {
236
+ var _b;
237
+ var chain = _a.chain, tokenName = _a.tokenName, balance = _a.balance;
238
+ acc[chain] = __assign(__assign({}, acc[chain]), (_b = {}, _b[tokenName] = balance, _b));
239
+ return acc;
240
+ }, {});
241
+ return [2 /*return*/, balances];
242
+ }
243
+ });
244
+ });
245
+ };
246
+ exports.getBalancesForBridgeMA = getBalancesForBridgeMA;
247
+ //# sourceMappingURL=getBalanceByTokenAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBalanceByTokenAddress.js","sourceRoot":"/","sources":["services/token/getBalanceByTokenAddress.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n GetBalanceByTokenAddressParams,\n GetBalancesForBridgeLPResult,\n GetBalancesForBridgeLPV2Result,\n GetBalancesForBridgeMAResult,\n LPBalanceInfo,\n LPBalanceInfoV2,\n MABalanceInfo,\n} from './types';\nimport {\n getERC20Balance,\n GetBalancesForBridgeArgs,\n getRUSDUnderlyingTokenInfo,\n MoneyInOutChainId,\n getTokenInfosByChain,\n getERC20BalanceBatch,\n getTokenInfoByAddress,\n ReyaChainId,\n getTokenInfoByName,\n TokenName,\n TokenInfo,\n getMoneyInOutNetworks,\n} from '@reyaxyz/common';\nimport { getReyaNetwork } from '../../utils/network';\n\nexport const getBalanceByTokenAddress = async ({\n signer,\n tokenAddress,\n}: GetBalanceByTokenAddressParams): Promise<number> => {\n const walletAddress = await signer.getAddress();\n const tokenInfo = getTokenInfoByAddress(tokenAddress);\n return await getERC20Balance({\n walletAddress,\n tokenDecimals: tokenInfo.decimals,\n subject: signer,\n tokenAddress: tokenAddress,\n });\n};\nexport const getBalancesForBridgeLP = async ({\n walletAddress,\n}: GetBalancesForBridgeArgs): Promise<GetBalancesForBridgeLPResult> => {\n const reyaNetwork = getReyaNetwork();\n const chains: (MoneyInOutChainId | ReyaChainId)[] =\n getMoneyInOutNetworks(reyaNetwork);\n\n chains.push(reyaNetwork);\n\n // Use Promise.all to fetch balances for all chains in parallel\n const balancePromises = chains.map(async (chain) => {\n const tokenInfo =\n chain === reyaNetwork\n ? getTokenInfoByName('RUSD', chain)\n : getRUSDUnderlyingTokenInfo(chain);\n const balance = await getERC20BalanceBatch({\n tokenAddress: tokenInfo.address,\n tokenDecimals: tokenInfo.decimals,\n walletAddress: walletAddress,\n chain: chain,\n });\n\n return { chain, tokenInfo, balance };\n });\n\n const balancesArray = await Promise.all(balancePromises);\n\n const balances = balancesArray.reduce<{\n [key in MoneyInOutChainId | ReyaChainId]?: LPBalanceInfo;\n }>((acc, { chain, tokenInfo, balance }) => {\n acc[chain] = {\n tokenEntity: {\n name: tokenInfo.name,\n address: tokenInfo.address,\n },\n balance: balance,\n };\n return acc;\n }, {});\n\n return balances;\n};\n\nexport const getBalancesForBridgeLPV2 = async ({\n walletAddress,\n}: GetBalancesForBridgeArgs): Promise<GetBalancesForBridgeLPV2Result> => {\n const reyaNetwork = getReyaNetwork();\n const chains: (MoneyInOutChainId | ReyaChainId)[] =\n getMoneyInOutNetworks(reyaNetwork);\n\n chains.push(reyaNetwork);\n\n // List of token names to include\n const tokenNames: TokenName[] = ['RUSD', 'DEUSD', 'SDEUSD'];\n\n // Use Promise.all to fetch balances for all chains in parallel\n const balancePromises = chains.map(async (chain) => {\n const tokenBalances = (\n await Promise.all(\n tokenNames.map(async (tokenName) => {\n try {\n const tokenInfo =\n chain === reyaNetwork || tokenName !== 'RUSD'\n ? getTokenInfoByName(tokenName, chain)\n : getRUSDUnderlyingTokenInfo(chain);\n\n const balance = await getERC20BalanceBatch({\n tokenAddress: tokenInfo.address,\n tokenDecimals: tokenInfo.decimals,\n walletAddress: walletAddress,\n chain: chain,\n });\n\n return { tokenName: tokenInfo.name, tokenInfo, balance };\n } catch (error) {\n // Skip this token if getTokenInfoByName throws an error\n return null;\n }\n }),\n )\n ).filter(\n (\n tokenData,\n ): tokenData is {\n tokenName: TokenName;\n tokenInfo: TokenInfo;\n balance: number;\n } => tokenData !== null,\n ); // Filter out null values\n\n return { chain, tokenBalances };\n });\n\n const balancesArray = await Promise.all(balancePromises);\n\n const balances = balancesArray.reduce<GetBalancesForBridgeLPV2Result>(\n (acc, { chain, tokenBalances }) => {\n if (tokenBalances.length > 0) {\n acc[chain] = tokenBalances.reduce<LPBalanceInfoV2>(\n (tokenAcc, { tokenName, tokenInfo, balance }) => {\n tokenAcc[tokenName] = {\n tokenEntity: {\n name: tokenInfo.name,\n address: tokenInfo.address,\n },\n balance: balance,\n };\n return tokenAcc;\n },\n {},\n );\n }\n return acc;\n },\n {},\n );\n\n return balances;\n};\n\nexport const getBalancesForBridgeMA = async ({\n walletAddress,\n}: GetBalancesForBridgeArgs): Promise<GetBalancesForBridgeMAResult> => {\n const reyaNetwork = getReyaNetwork();\n const moneyInOutChainIds: MoneyInOutChainId[] =\n getMoneyInOutNetworks(reyaNetwork);\n\n const balancePromises = moneyInOutChainIds\n .map((moneyInOutChainId) => {\n const tokenInfos = getTokenInfosByChain(moneyInOutChainId);\n return tokenInfos.map(async (tokenInfo) => {\n const balance = await getERC20BalanceBatch({\n tokenAddress: tokenInfo.address,\n tokenDecimals: tokenInfo.decimals,\n walletAddress: walletAddress,\n chain: moneyInOutChainId,\n });\n\n return {\n chain: moneyInOutChainId,\n tokenName: tokenInfo.name,\n balance: balance,\n };\n });\n })\n .reduce((acc, value) => acc.concat(value), []);\n\n const balancesArray = await Promise.all(balancePromises);\n\n const balances = balancesArray.reduce<{\n [key in MoneyInOutChainId]?: MABalanceInfo;\n }>((acc, { chain, tokenName, balance }) => {\n acc[chain] = {\n ...acc[chain],\n [tokenName]: balance,\n };\n\n return acc;\n }, {});\n\n return balances;\n};\n"]}
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types"), exports);
18
18
  __exportStar(require("./approve"), exports);
19
19
  __exportStar(require("./getAllowance"), exports);
20
+ __exportStar(require("./getBalanceByTokenAddress"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["services/token/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,iDAA+B","sourcesContent":["export * from './types';\nexport * from './approve';\nexport * from './getAllowance';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["services/token/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,iDAA+B;AAC/B,6DAA2C","sourcesContent":["export * from './types';\nexport * from './approve';\nexport * from './getAllowance';\nexport * from './getBalanceByTokenAddress';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/token/types.ts"],"names":[],"mappings":";;;AAKA,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,2CAAE,CAAA;IACF,qDAAO,CAAA;IACP,mDAAM,CAAA;AACR,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB","sourcesContent":["import { JsonRpcSigner, Signer } from 'ethers';\nimport { TokenEntity } from '@reyaxyz/common';\n\nexport { GetBalancesForBridgeArgs } from '@reyaxyz/common';\n\nexport enum ApprovalType {\n LP,\n DEPOSIT,\n BRIDGE,\n}\n\nexport type ApproveTokenParams = {\n signer: Signer | JsonRpcSigner;\n tokenAddress: TokenEntity['address'];\n amount: number;\n type: ApprovalType;\n};\n\nexport type GetAllowanceParams = {\n signer: Signer | JsonRpcSigner;\n tokenAddress: TokenEntity['address'];\n type: ApprovalType;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["services/token/types.ts"],"names":[],"mappings":";;;AAKA,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,2CAAE,CAAA;IACF,qDAAO,CAAA;IACP,mDAAM,CAAA;AACR,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB","sourcesContent":["import { JsonRpcSigner, Signer } from 'ethers';\nimport { TokenEntity, TokenName } from '@reyaxyz/common';\n\nexport { GetBalancesForBridgeArgs } from '@reyaxyz/common';\n\nexport enum ApprovalType {\n LP,\n DEPOSIT,\n BRIDGE,\n}\n\nexport type ApproveTokenParams = {\n signer: Signer | JsonRpcSigner;\n tokenAddress: TokenEntity['address'];\n amount: number;\n type: ApprovalType;\n};\n\nexport type GetAllowanceParams = {\n signer: Signer | JsonRpcSigner;\n tokenAddress: TokenEntity['address'];\n type: ApprovalType;\n};\n\nexport type GetBalanceByTokenAddressParams = {\n signer: Signer | JsonRpcSigner;\n tokenAddress: TokenEntity['address'];\n};\n\nexport type LPBalanceInfo = {\n tokenEntity: TokenEntity;\n balance: number;\n};\n\nexport type LPBalanceInfoV2 = {\n [tokenName: TokenName]: {\n tokenEntity: TokenEntity;\n balance: number;\n };\n};\n\nexport type GetBalancesForBridgeLPResult = {\n [chainId: string]: LPBalanceInfo;\n};\n\nexport type GetBalancesForBridgeLPV2Result = {\n [chainId: string]: LPBalanceInfoV2;\n};\nexport type MABalanceInfo = { [tokenName: TokenName]: number };\n\nexport type GetBalancesForBridgeMAResult = {\n [chainId: string]: MABalanceInfo;\n};\n"]}
@@ -0,0 +1,7 @@
1
+ import { GetBalanceByTokenAddressParams, GetBalancesForBridgeLPResult, GetBalancesForBridgeLPV2Result, GetBalancesForBridgeMAResult } from './types';
2
+ import { GetBalancesForBridgeArgs } from '@reyaxyz/common';
3
+ export declare const getBalanceByTokenAddress: ({ signer, tokenAddress, }: GetBalanceByTokenAddressParams) => Promise<number>;
4
+ export declare const getBalancesForBridgeLP: ({ walletAddress, }: GetBalancesForBridgeArgs) => Promise<GetBalancesForBridgeLPResult>;
5
+ export declare const getBalancesForBridgeLPV2: ({ walletAddress, }: GetBalancesForBridgeArgs) => Promise<GetBalancesForBridgeLPV2Result>;
6
+ export declare const getBalancesForBridgeMA: ({ walletAddress, }: GetBalancesForBridgeArgs) => Promise<GetBalancesForBridgeMAResult>;
7
+ //# sourceMappingURL=getBalanceByTokenAddress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBalanceByTokenAddress.d.ts","sourceRoot":"/","sources":["services/token/getBalanceByTokenAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,8BAA8B,EAC9B,4BAA4B,EAI7B,MAAM,SAAS,CAAC;AACjB,OAAO,EAEL,wBAAwB,EAWzB,MAAM,iBAAiB,CAAC;AAGzB,eAAO,MAAM,wBAAwB,8BAGlC,8BAA8B,KAAG,QAAQ,MAAM,CASjD,CAAC;AACF,eAAO,MAAM,sBAAsB,uBAEhC,wBAAwB,KAAG,QAAQ,4BAA4B,CAuCjE,CAAC;AAEF,eAAO,MAAM,wBAAwB,uBAElC,wBAAwB,KAAG,QAAQ,8BAA8B,CAyEnE,CAAC;AAEF,eAAO,MAAM,sBAAsB,uBAEhC,wBAAwB,KAAG,QAAQ,4BAA4B,CAuCjE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './types';
2
2
  export * from './approve';
3
3
  export * from './getAllowance';
4
+ export * from './getBalanceByTokenAddress';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["services/token/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["services/token/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { JsonRpcSigner, Signer } from 'ethers';
2
- import { TokenEntity } from '@reyaxyz/common';
2
+ import { TokenEntity, TokenName } from '@reyaxyz/common';
3
3
  export { GetBalancesForBridgeArgs } from '@reyaxyz/common';
4
4
  export declare enum ApprovalType {
5
5
  LP = 0,
@@ -17,4 +17,30 @@ export type GetAllowanceParams = {
17
17
  tokenAddress: TokenEntity['address'];
18
18
  type: ApprovalType;
19
19
  };
20
+ export type GetBalanceByTokenAddressParams = {
21
+ signer: Signer | JsonRpcSigner;
22
+ tokenAddress: TokenEntity['address'];
23
+ };
24
+ export type LPBalanceInfo = {
25
+ tokenEntity: TokenEntity;
26
+ balance: number;
27
+ };
28
+ export type LPBalanceInfoV2 = {
29
+ [tokenName: TokenName]: {
30
+ tokenEntity: TokenEntity;
31
+ balance: number;
32
+ };
33
+ };
34
+ export type GetBalancesForBridgeLPResult = {
35
+ [chainId: string]: LPBalanceInfo;
36
+ };
37
+ export type GetBalancesForBridgeLPV2Result = {
38
+ [chainId: string]: LPBalanceInfoV2;
39
+ };
40
+ export type MABalanceInfo = {
41
+ [tokenName: TokenName]: number;
42
+ };
43
+ export type GetBalancesForBridgeMAResult = {
44
+ [chainId: string]: MABalanceInfo;
45
+ };
20
46
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,OAAO,IAAA;IACP,MAAM,IAAA;CACP;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["services/token/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,oBAAY,YAAY;IACtB,EAAE,IAAA;IACF,OAAO,IAAA;IACP,MAAM,IAAA;CACP;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,YAAY,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,SAAS,EAAE,SAAS,GAAG;QACtB,WAAW,EAAE,WAAW,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAAC;CACpC,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAAA;CAAE,CAAC;AAE/D,MAAM,MAAM,4BAA4B,GAAG;IACzC,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC;CAClC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/sdk",
3
- "version": "0.146.1",
3
+ "version": "0.146.3",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -30,12 +30,12 @@
30
30
  "test:spot-order": "npx ts-node scripts/test-spot-order.ts"
31
31
  },
32
32
  "dependencies": {
33
- "@reyaxyz/api-v2-sdk": "0.302.0",
33
+ "@reyaxyz/api-v2-sdk": "0.302.1",
34
34
  "@reyaxyz/common": "0.343.1",
35
35
  "axios": "1.6.2",
36
36
  "bignumber.js": "9.1.2",
37
37
  "ethers": "6.9.0"
38
38
  },
39
39
  "packageManager": "pnpm@8.3.1",
40
- "gitHead": "4455c600e1e4be0f486198eed28f94fb211968f6"
40
+ "gitHead": "97bf11ac594006a05f64c760ee5a604e1f72f336"
41
41
  }
@@ -0,0 +1,200 @@
1
+ import {
2
+ GetBalanceByTokenAddressParams,
3
+ GetBalancesForBridgeLPResult,
4
+ GetBalancesForBridgeLPV2Result,
5
+ GetBalancesForBridgeMAResult,
6
+ LPBalanceInfo,
7
+ LPBalanceInfoV2,
8
+ MABalanceInfo,
9
+ } from './types';
10
+ import {
11
+ getERC20Balance,
12
+ GetBalancesForBridgeArgs,
13
+ getRUSDUnderlyingTokenInfo,
14
+ MoneyInOutChainId,
15
+ getTokenInfosByChain,
16
+ getERC20BalanceBatch,
17
+ getTokenInfoByAddress,
18
+ ReyaChainId,
19
+ getTokenInfoByName,
20
+ TokenName,
21
+ TokenInfo,
22
+ getMoneyInOutNetworks,
23
+ } from '@reyaxyz/common';
24
+ import { getReyaNetwork } from '../../utils/network';
25
+
26
+ export const getBalanceByTokenAddress = async ({
27
+ signer,
28
+ tokenAddress,
29
+ }: GetBalanceByTokenAddressParams): Promise<number> => {
30
+ const walletAddress = await signer.getAddress();
31
+ const tokenInfo = getTokenInfoByAddress(tokenAddress);
32
+ return await getERC20Balance({
33
+ walletAddress,
34
+ tokenDecimals: tokenInfo.decimals,
35
+ subject: signer,
36
+ tokenAddress: tokenAddress,
37
+ });
38
+ };
39
+ export const getBalancesForBridgeLP = async ({
40
+ walletAddress,
41
+ }: GetBalancesForBridgeArgs): Promise<GetBalancesForBridgeLPResult> => {
42
+ const reyaNetwork = getReyaNetwork();
43
+ const chains: (MoneyInOutChainId | ReyaChainId)[] =
44
+ getMoneyInOutNetworks(reyaNetwork);
45
+
46
+ chains.push(reyaNetwork);
47
+
48
+ // Use Promise.all to fetch balances for all chains in parallel
49
+ const balancePromises = chains.map(async (chain) => {
50
+ const tokenInfo =
51
+ chain === reyaNetwork
52
+ ? getTokenInfoByName('RUSD', chain)
53
+ : getRUSDUnderlyingTokenInfo(chain);
54
+ const balance = await getERC20BalanceBatch({
55
+ tokenAddress: tokenInfo.address,
56
+ tokenDecimals: tokenInfo.decimals,
57
+ walletAddress: walletAddress,
58
+ chain: chain,
59
+ });
60
+
61
+ return { chain, tokenInfo, balance };
62
+ });
63
+
64
+ const balancesArray = await Promise.all(balancePromises);
65
+
66
+ const balances = balancesArray.reduce<{
67
+ [key in MoneyInOutChainId | ReyaChainId]?: LPBalanceInfo;
68
+ }>((acc, { chain, tokenInfo, balance }) => {
69
+ acc[chain] = {
70
+ tokenEntity: {
71
+ name: tokenInfo.name,
72
+ address: tokenInfo.address,
73
+ },
74
+ balance: balance,
75
+ };
76
+ return acc;
77
+ }, {});
78
+
79
+ return balances;
80
+ };
81
+
82
+ export const getBalancesForBridgeLPV2 = async ({
83
+ walletAddress,
84
+ }: GetBalancesForBridgeArgs): Promise<GetBalancesForBridgeLPV2Result> => {
85
+ const reyaNetwork = getReyaNetwork();
86
+ const chains: (MoneyInOutChainId | ReyaChainId)[] =
87
+ getMoneyInOutNetworks(reyaNetwork);
88
+
89
+ chains.push(reyaNetwork);
90
+
91
+ // List of token names to include
92
+ const tokenNames: TokenName[] = ['RUSD', 'DEUSD', 'SDEUSD'];
93
+
94
+ // Use Promise.all to fetch balances for all chains in parallel
95
+ const balancePromises = chains.map(async (chain) => {
96
+ const tokenBalances = (
97
+ await Promise.all(
98
+ tokenNames.map(async (tokenName) => {
99
+ try {
100
+ const tokenInfo =
101
+ chain === reyaNetwork || tokenName !== 'RUSD'
102
+ ? getTokenInfoByName(tokenName, chain)
103
+ : getRUSDUnderlyingTokenInfo(chain);
104
+
105
+ const balance = await getERC20BalanceBatch({
106
+ tokenAddress: tokenInfo.address,
107
+ tokenDecimals: tokenInfo.decimals,
108
+ walletAddress: walletAddress,
109
+ chain: chain,
110
+ });
111
+
112
+ return { tokenName: tokenInfo.name, tokenInfo, balance };
113
+ } catch (error) {
114
+ // Skip this token if getTokenInfoByName throws an error
115
+ return null;
116
+ }
117
+ }),
118
+ )
119
+ ).filter(
120
+ (
121
+ tokenData,
122
+ ): tokenData is {
123
+ tokenName: TokenName;
124
+ tokenInfo: TokenInfo;
125
+ balance: number;
126
+ } => tokenData !== null,
127
+ ); // Filter out null values
128
+
129
+ return { chain, tokenBalances };
130
+ });
131
+
132
+ const balancesArray = await Promise.all(balancePromises);
133
+
134
+ const balances = balancesArray.reduce<GetBalancesForBridgeLPV2Result>(
135
+ (acc, { chain, tokenBalances }) => {
136
+ if (tokenBalances.length > 0) {
137
+ acc[chain] = tokenBalances.reduce<LPBalanceInfoV2>(
138
+ (tokenAcc, { tokenName, tokenInfo, balance }) => {
139
+ tokenAcc[tokenName] = {
140
+ tokenEntity: {
141
+ name: tokenInfo.name,
142
+ address: tokenInfo.address,
143
+ },
144
+ balance: balance,
145
+ };
146
+ return tokenAcc;
147
+ },
148
+ {},
149
+ );
150
+ }
151
+ return acc;
152
+ },
153
+ {},
154
+ );
155
+
156
+ return balances;
157
+ };
158
+
159
+ export const getBalancesForBridgeMA = async ({
160
+ walletAddress,
161
+ }: GetBalancesForBridgeArgs): Promise<GetBalancesForBridgeMAResult> => {
162
+ const reyaNetwork = getReyaNetwork();
163
+ const moneyInOutChainIds: MoneyInOutChainId[] =
164
+ getMoneyInOutNetworks(reyaNetwork);
165
+
166
+ const balancePromises = moneyInOutChainIds
167
+ .map((moneyInOutChainId) => {
168
+ const tokenInfos = getTokenInfosByChain(moneyInOutChainId);
169
+ return tokenInfos.map(async (tokenInfo) => {
170
+ const balance = await getERC20BalanceBatch({
171
+ tokenAddress: tokenInfo.address,
172
+ tokenDecimals: tokenInfo.decimals,
173
+ walletAddress: walletAddress,
174
+ chain: moneyInOutChainId,
175
+ });
176
+
177
+ return {
178
+ chain: moneyInOutChainId,
179
+ tokenName: tokenInfo.name,
180
+ balance: balance,
181
+ };
182
+ });
183
+ })
184
+ .reduce((acc, value) => acc.concat(value), []);
185
+
186
+ const balancesArray = await Promise.all(balancePromises);
187
+
188
+ const balances = balancesArray.reduce<{
189
+ [key in MoneyInOutChainId]?: MABalanceInfo;
190
+ }>((acc, { chain, tokenName, balance }) => {
191
+ acc[chain] = {
192
+ ...acc[chain],
193
+ [tokenName]: balance,
194
+ };
195
+
196
+ return acc;
197
+ }, {});
198
+
199
+ return balances;
200
+ };
@@ -1,3 +1,4 @@
1
1
  export * from './types';
2
2
  export * from './approve';
3
3
  export * from './getAllowance';
4
+ export * from './getBalanceByTokenAddress';
@@ -1,5 +1,5 @@
1
1
  import { JsonRpcSigner, Signer } from 'ethers';
2
- import { TokenEntity } from '@reyaxyz/common';
2
+ import { TokenEntity, TokenName } from '@reyaxyz/common';
3
3
 
4
4
  export { GetBalancesForBridgeArgs } from '@reyaxyz/common';
5
5
 
@@ -21,3 +21,33 @@ export type GetAllowanceParams = {
21
21
  tokenAddress: TokenEntity['address'];
22
22
  type: ApprovalType;
23
23
  };
24
+
25
+ export type GetBalanceByTokenAddressParams = {
26
+ signer: Signer | JsonRpcSigner;
27
+ tokenAddress: TokenEntity['address'];
28
+ };
29
+
30
+ export type LPBalanceInfo = {
31
+ tokenEntity: TokenEntity;
32
+ balance: number;
33
+ };
34
+
35
+ export type LPBalanceInfoV2 = {
36
+ [tokenName: TokenName]: {
37
+ tokenEntity: TokenEntity;
38
+ balance: number;
39
+ };
40
+ };
41
+
42
+ export type GetBalancesForBridgeLPResult = {
43
+ [chainId: string]: LPBalanceInfo;
44
+ };
45
+
46
+ export type GetBalancesForBridgeLPV2Result = {
47
+ [chainId: string]: LPBalanceInfoV2;
48
+ };
49
+ export type MABalanceInfo = { [tokenName: TokenName]: number };
50
+
51
+ export type GetBalancesForBridgeMAResult = {
52
+ [chainId: string]: MABalanceInfo;
53
+ };