@reyaxyz/sdk 0.146.8 → 0.147.1

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 (168) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +1 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/services/lp/encode.js +1 -31
  5. package/dist/services/lp/encode.js.map +1 -1
  6. package/dist/services/lp/index.js +0 -2
  7. package/dist/services/lp/index.js.map +1 -1
  8. package/dist/services/lp/types.js.map +1 -1
  9. package/dist/services/margin-accounts/account.js +3 -0
  10. package/dist/services/margin-accounts/account.js.map +1 -1
  11. package/dist/services/margin-accounts/bridgeAndDepositExistingMA.js +3 -0
  12. package/dist/services/margin-accounts/bridgeAndDepositExistingMA.js.map +1 -1
  13. package/dist/services/margin-accounts/encode.js +1 -93
  14. package/dist/services/margin-accounts/encode.js.map +1 -1
  15. package/dist/services/margin-accounts/index.js +0 -2
  16. package/dist/services/margin-accounts/index.js.map +1 -1
  17. package/dist/services/margin-accounts/transferMarginBetweenAccounts.js +3 -0
  18. package/dist/services/margin-accounts/transferMarginBetweenAccounts.js.map +1 -1
  19. package/dist/services/margin-accounts/types.js.map +1 -1
  20. package/dist/services/margin-accounts/withdrawMAAndBridge.js +3 -0
  21. package/dist/services/margin-accounts/withdrawMAAndBridge.js.map +1 -1
  22. package/dist/services/{lp/stakeReya.js → margin-accounts-v2/createAccount.js} +21 -23
  23. package/dist/services/margin-accounts-v2/createAccount.js.map +1 -0
  24. package/dist/services/margin-accounts-v2/deposit/index.js +12 -0
  25. package/dist/services/margin-accounts-v2/deposit/index.js.map +1 -0
  26. package/dist/services/margin-accounts-v2/deposit/lz/estimateFeeLzBridgeAndDepositMA.js +71 -0
  27. package/dist/services/margin-accounts-v2/deposit/lz/estimateFeeLzBridgeAndDepositMA.js.map +1 -0
  28. package/dist/services/margin-accounts-v2/deposit/lz/lzBridgeAndDepositMA.js +91 -0
  29. package/dist/services/margin-accounts-v2/deposit/lz/lzBridgeAndDepositMA.js.map +1 -0
  30. package/dist/services/margin-accounts-v2/deposit/socket/estimateFeeSocketBridgeAndDepositMA.js +62 -0
  31. package/dist/services/margin-accounts-v2/deposit/socket/estimateFeeSocketBridgeAndDepositMA.js.map +1 -0
  32. package/dist/services/margin-accounts-v2/deposit/socket/socketBridgeAndDepositMA.js +82 -0
  33. package/dist/services/margin-accounts-v2/deposit/socket/socketBridgeAndDepositMA.js.map +1 -0
  34. package/dist/services/margin-accounts-v2/erc20/approve.erc20.js +72 -0
  35. package/dist/services/margin-accounts-v2/erc20/approve.erc20.js.map +1 -0
  36. package/dist/services/margin-accounts-v2/erc20/getAllowance.erc20.js +64 -0
  37. package/dist/services/margin-accounts-v2/erc20/getAllowance.erc20.js.map +1 -0
  38. package/dist/services/margin-accounts-v2/erc20/getBalance.erc20.js +62 -0
  39. package/dist/services/margin-accounts-v2/erc20/getBalance.erc20.js.map +1 -0
  40. package/dist/services/margin-accounts-v2/erc20/index.js +10 -0
  41. package/dist/services/margin-accounts-v2/erc20/index.js.map +1 -0
  42. package/dist/services/margin-accounts-v2/index.js +23 -0
  43. package/dist/services/margin-accounts-v2/index.js.map +1 -0
  44. package/dist/services/{lp/unstakeStakedReya.js → margin-accounts-v2/transferMarginBetweenAccounts.js} +40 -21
  45. package/dist/services/margin-accounts-v2/transferMarginBetweenAccounts.js.map +1 -0
  46. package/dist/services/margin-accounts-v2/types.js +3 -0
  47. package/dist/services/margin-accounts-v2/types.js.map +1 -0
  48. package/dist/services/margin-accounts-v2/withdraw/index.js +8 -0
  49. package/dist/services/margin-accounts-v2/withdraw/index.js.map +1 -0
  50. package/dist/services/margin-accounts-v2/withdraw/lz/withdrawMAAndLzBridge.js +94 -0
  51. package/dist/services/margin-accounts-v2/withdraw/lz/withdrawMAAndLzBridge.js.map +1 -0
  52. package/dist/services/margin-accounts-v2/withdraw/socket/withdrawMAAndSocketBridge.js +95 -0
  53. package/dist/services/margin-accounts-v2/withdraw/socket/withdrawMAAndSocketBridge.js.map +1 -0
  54. package/dist/services/token/getBalanceByTokenAddress.js +1 -23
  55. package/dist/services/token/getBalanceByTokenAddress.js.map +1 -1
  56. package/dist/types/index.d.ts +1 -0
  57. package/dist/types/index.d.ts.map +1 -1
  58. package/dist/types/services/lp/encode.d.ts +0 -2
  59. package/dist/types/services/lp/encode.d.ts.map +1 -1
  60. package/dist/types/services/lp/index.d.ts +0 -2
  61. package/dist/types/services/lp/index.d.ts.map +1 -1
  62. package/dist/types/services/lp/types.d.ts +0 -22
  63. package/dist/types/services/lp/types.d.ts.map +1 -1
  64. package/dist/types/services/margin-accounts/account.d.ts +3 -0
  65. package/dist/types/services/margin-accounts/account.d.ts.map +1 -1
  66. package/dist/types/services/margin-accounts/bridgeAndDepositExistingMA.d.ts +3 -0
  67. package/dist/types/services/margin-accounts/bridgeAndDepositExistingMA.d.ts.map +1 -1
  68. package/dist/types/services/margin-accounts/encode.d.ts +1 -12
  69. package/dist/types/services/margin-accounts/encode.d.ts.map +1 -1
  70. package/dist/types/services/margin-accounts/index.d.ts +0 -2
  71. package/dist/types/services/margin-accounts/index.d.ts.map +1 -1
  72. package/dist/types/services/margin-accounts/transferMarginBetweenAccounts.d.ts +3 -0
  73. package/dist/types/services/margin-accounts/transferMarginBetweenAccounts.d.ts.map +1 -1
  74. package/dist/types/services/margin-accounts/types.d.ts +0 -12
  75. package/dist/types/services/margin-accounts/types.d.ts.map +1 -1
  76. package/dist/types/services/margin-accounts/withdrawMAAndBridge.d.ts +3 -0
  77. package/dist/types/services/margin-accounts/withdrawMAAndBridge.d.ts.map +1 -1
  78. package/dist/types/services/margin-accounts-v2/createAccount.d.ts +3 -0
  79. package/dist/types/services/margin-accounts-v2/createAccount.d.ts.map +1 -0
  80. package/dist/types/services/margin-accounts-v2/deposit/index.d.ts +5 -0
  81. package/dist/types/services/margin-accounts-v2/deposit/index.d.ts.map +1 -0
  82. package/dist/types/services/margin-accounts-v2/deposit/lz/estimateFeeLzBridgeAndDepositMA.d.ts +4 -0
  83. package/dist/types/services/margin-accounts-v2/deposit/lz/estimateFeeLzBridgeAndDepositMA.d.ts.map +1 -0
  84. package/dist/types/services/margin-accounts-v2/deposit/lz/lzBridgeAndDepositMA.d.ts +3 -0
  85. package/dist/types/services/margin-accounts-v2/deposit/lz/lzBridgeAndDepositMA.d.ts.map +1 -0
  86. package/dist/types/services/margin-accounts-v2/deposit/socket/estimateFeeSocketBridgeAndDepositMA.d.ts +3 -0
  87. package/dist/types/services/margin-accounts-v2/deposit/socket/estimateFeeSocketBridgeAndDepositMA.d.ts.map +1 -0
  88. package/dist/types/services/margin-accounts-v2/deposit/socket/socketBridgeAndDepositMA.d.ts +3 -0
  89. package/dist/types/services/margin-accounts-v2/deposit/socket/socketBridgeAndDepositMA.d.ts.map +1 -0
  90. package/dist/types/services/margin-accounts-v2/erc20/approve.erc20.d.ts +3 -0
  91. package/dist/types/services/margin-accounts-v2/erc20/approve.erc20.d.ts.map +1 -0
  92. package/dist/types/services/margin-accounts-v2/erc20/getAllowance.erc20.d.ts +3 -0
  93. package/dist/types/services/margin-accounts-v2/erc20/getAllowance.erc20.d.ts.map +1 -0
  94. package/dist/types/services/margin-accounts-v2/erc20/getBalance.erc20.d.ts +3 -0
  95. package/dist/types/services/margin-accounts-v2/erc20/getBalance.erc20.d.ts.map +1 -0
  96. package/dist/types/services/margin-accounts-v2/erc20/index.d.ts +4 -0
  97. package/dist/types/services/margin-accounts-v2/erc20/index.d.ts.map +1 -0
  98. package/dist/types/services/margin-accounts-v2/index.d.ts +7 -0
  99. package/dist/types/services/margin-accounts-v2/index.d.ts.map +1 -0
  100. package/dist/types/services/margin-accounts-v2/transferMarginBetweenAccounts.d.ts +3 -0
  101. package/dist/types/services/margin-accounts-v2/transferMarginBetweenAccounts.d.ts.map +1 -0
  102. package/dist/types/services/margin-accounts-v2/types.d.ts +121 -0
  103. package/dist/types/services/margin-accounts-v2/types.d.ts.map +1 -0
  104. package/dist/types/services/margin-accounts-v2/withdraw/index.d.ts +3 -0
  105. package/dist/types/services/margin-accounts-v2/withdraw/index.d.ts.map +1 -0
  106. package/dist/types/services/margin-accounts-v2/withdraw/lz/withdrawMAAndLzBridge.d.ts +3 -0
  107. package/dist/types/services/margin-accounts-v2/withdraw/lz/withdrawMAAndLzBridge.d.ts.map +1 -0
  108. package/dist/types/services/margin-accounts-v2/withdraw/socket/withdrawMAAndSocketBridge.d.ts +3 -0
  109. package/dist/types/services/margin-accounts-v2/withdraw/socket/withdrawMAAndSocketBridge.d.ts.map +1 -0
  110. package/dist/types/services/token/getBalanceByTokenAddress.d.ts +1 -2
  111. package/dist/types/services/token/getBalanceByTokenAddress.d.ts.map +1 -1
  112. package/dist/types/utils/checkChainId.d.ts +3 -0
  113. package/dist/types/utils/checkChainId.d.ts.map +1 -0
  114. package/dist/types/utils/network.d.ts +2 -1
  115. package/dist/types/utils/network.d.ts.map +1 -1
  116. package/dist/utils/checkChainId.js +59 -0
  117. package/dist/utils/checkChainId.js.map +1 -0
  118. package/dist/utils/network.js +6 -1
  119. package/dist/utils/network.js.map +1 -1
  120. package/package.json +4 -4
  121. package/src/index.ts +1 -0
  122. package/src/services/lp/encode.ts +0 -40
  123. package/src/services/lp/index.ts +0 -2
  124. package/src/services/lp/types.ts +0 -26
  125. package/src/services/margin-accounts/account.ts +3 -1
  126. package/src/services/margin-accounts/bridgeAndDepositExistingMA.ts +3 -0
  127. package/src/services/margin-accounts/encode.ts +1 -151
  128. package/src/services/margin-accounts/index.ts +0 -2
  129. package/src/services/margin-accounts/transferMarginBetweenAccounts.ts +3 -0
  130. package/src/services/margin-accounts/types.ts +0 -16
  131. package/src/services/margin-accounts/withdrawMAAndBridge.ts +3 -0
  132. package/src/services/margin-accounts-v2/createAccount.ts +35 -0
  133. package/src/services/margin-accounts-v2/deposit/index.ts +4 -0
  134. package/src/services/margin-accounts-v2/deposit/lz/estimateFeeLzBridgeAndDepositMA.ts +30 -0
  135. package/src/services/margin-accounts-v2/deposit/lz/lzBridgeAndDepositMA.ts +57 -0
  136. package/src/services/margin-accounts-v2/deposit/socket/estimateFeeSocketBridgeAndDepositMA.ts +24 -0
  137. package/src/services/margin-accounts-v2/deposit/socket/socketBridgeAndDepositMA.ts +59 -0
  138. package/src/services/margin-accounts-v2/erc20/approve.erc20.ts +38 -0
  139. package/src/services/margin-accounts-v2/erc20/getAllowance.erc20.ts +22 -0
  140. package/src/services/margin-accounts-v2/erc20/getBalance.erc20.ts +17 -0
  141. package/src/services/margin-accounts-v2/erc20/index.ts +3 -0
  142. package/src/services/margin-accounts-v2/index.ts +6 -0
  143. package/src/services/margin-accounts-v2/transferMarginBetweenAccounts.ts +75 -0
  144. package/src/services/margin-accounts-v2/types.ts +151 -0
  145. package/src/services/margin-accounts-v2/withdraw/index.ts +2 -0
  146. package/src/services/margin-accounts-v2/withdraw/lz/withdrawMAAndLzBridge.ts +81 -0
  147. package/src/services/margin-accounts-v2/withdraw/socket/withdrawMAAndSocketBridge.ts +83 -0
  148. package/src/services/token/getBalanceByTokenAddress.ts +0 -16
  149. package/src/utils/checkChainId.ts +16 -0
  150. package/src/utils/network.ts +10 -1
  151. package/dist/services/lp/stakeReya.js.map +0 -1
  152. package/dist/services/lp/unstakeStakedReya.js.map +0 -1
  153. package/dist/services/margin-accounts/oftBridgeAndDepositExistingMA.js +0 -102
  154. package/dist/services/margin-accounts/oftBridgeAndDepositExistingMA.js.map +0 -1
  155. package/dist/services/margin-accounts/oftWithdrawMAAndBridge.js +0 -89
  156. package/dist/services/margin-accounts/oftWithdrawMAAndBridge.js.map +0 -1
  157. package/dist/types/services/lp/stakeReya.d.ts +0 -3
  158. package/dist/types/services/lp/stakeReya.d.ts.map +0 -1
  159. package/dist/types/services/lp/unstakeStakedReya.d.ts +0 -3
  160. package/dist/types/services/lp/unstakeStakedReya.d.ts.map +0 -1
  161. package/dist/types/services/margin-accounts/oftBridgeAndDepositExistingMA.d.ts +0 -3
  162. package/dist/types/services/margin-accounts/oftBridgeAndDepositExistingMA.d.ts.map +0 -1
  163. package/dist/types/services/margin-accounts/oftWithdrawMAAndBridge.d.ts +0 -3
  164. package/dist/types/services/margin-accounts/oftWithdrawMAAndBridge.d.ts.map +0 -1
  165. package/src/services/lp/stakeReya.ts +0 -66
  166. package/src/services/lp/unstakeStakedReya.ts +0 -66
  167. package/src/services/margin-accounts/oftBridgeAndDepositExistingMA.ts +0 -112
  168. package/src/services/margin-accounts/oftWithdrawMAAndBridge.ts +0 -93
@@ -1,14 +1,8 @@
1
- import {
2
- MethodParameters,
3
- MultiAction,
4
- OFTSendParam,
5
- OFTMessagingFee,
6
- } from '@reyaxyz/common';
1
+ import { MethodParameters, MultiAction } from '@reyaxyz/common';
7
2
  import { Interface } from 'ethers';
8
3
  import { encodeSingleTransferMargin } from '../encode';
9
4
  import {
10
5
  CoreAbi as abi,
11
- OFTAbi as OFTAbi,
12
6
  PeripheryAbi,
13
7
  Socket_VaultWithPayloadAbi,
14
8
  CORE_DEADLINE_IN_SECONDS,
@@ -21,12 +15,6 @@ import { getCurrentTimestampInSeconds } from '@reyaxyz/common';
21
15
  import { Signer } from 'ethers';
22
16
  import { ethers } from 'ethers';
23
17
 
24
- enum LzComposerOperationType {
25
- NONE = 0,
26
- DEPOSIT_SPOT_ACCOUNT = 1,
27
- DEPOSIT_ACCOUNT = 2,
28
- }
29
-
30
18
  export const encodeCreateAccountCall = (
31
19
  accountOwner: string,
32
20
  ): MethodParameters => {
@@ -142,141 +130,3 @@ export const encodeBridgeAndDepositExistingMA = (
142
130
  const calldata = INTERFACE.encodeFunctionData(functionSignature, parameters);
143
131
  return { calldata: calldata, value: socketFees.toString(10) };
144
132
  };
145
-
146
- export const encodeWithdrawMALZ = (
147
- accountId: number,
148
- corePeripheryTokenAddress: string,
149
- corePeripheryTokenAmount: bigint,
150
- sig: EIP712Signature,
151
- dstEid: number,
152
- receiver: string,
153
- ): MethodParameters => {
154
- const functionSignature = 'withdrawMALZ';
155
- const parameters = [
156
- {
157
- accountId,
158
- token: corePeripheryTokenAddress,
159
- tokenAmount: corePeripheryTokenAmount,
160
- sig,
161
- dstEid,
162
- receiver,
163
- },
164
- ];
165
- const INTERFACE = new Interface(PeripheryAbi);
166
- const calldata = INTERFACE.encodeFunctionData(functionSignature, parameters);
167
- return { calldata: calldata, value: BigInt(0).toString(10) };
168
- };
169
-
170
- // Gas for lzReceive on destination: token credit + endpoint.sendCompose() queuing
171
- const LZ_RECEIVE_GAS = 1_000_000;
172
- // Gas estimate for lzCompose execution on destination chain
173
- // Covers: abi.decode + createOrGetSpotAccount/depositExistingMA in OftModule.lzCompose
174
- const LZ_COMPOSE_GAS = 1_000_000;
175
-
176
- /**
177
- * Encode LZ v3 extraOptions with both lzReceive and lzCompose options.
178
- * Required for msgType=2 (SEND_AND_CALL) since enforced options only cover msgType=1.
179
- */
180
- export const encodeLzSendAndComposeExtraOptions = (
181
- receiveGas: number,
182
- composeGas: number,
183
- ): string => {
184
- // Options v3 layout:
185
- // TYPE_3 header: uint16(3)
186
- // --- lzReceive option ---
187
- // WORKER_ID: uint8(1)
188
- // length: uint16(17) = OPTION_TYPE(1) + GAS(16)
189
- // OPTION_TYPE_LZRECEIVE: uint8(1)
190
- // gas: uint128
191
- // --- lzCompose option ---
192
- // WORKER_ID: uint8(1)
193
- // length: uint16(19) = OPTION_TYPE(1) + INDEX(2) + GAS(16)
194
- // OPTION_TYPE_LZCOMPOSE: uint8(3)
195
- // index: uint16(0)
196
- // gas: uint128
197
- return ethers.solidityPacked(
198
- [
199
- 'uint16',
200
- 'uint8',
201
- 'uint16',
202
- 'uint8',
203
- 'uint128',
204
- 'uint8',
205
- 'uint16',
206
- 'uint8',
207
- 'uint16',
208
- 'uint128',
209
- ],
210
- [3, 1, 17, 1, receiveGas, 1, 19, 3, 0, composeGas],
211
- );
212
- };
213
-
214
- export const buildOFTBridgeAndDepositExistingMASendParam = (
215
- dstEid: number,
216
- receiverAddress: string,
217
- accountId: number,
218
- peripheryTokenAddress: string,
219
- amountLD: bigint,
220
- minAmountLD: bigint,
221
- ): { sendParam: OFTSendParam; composeMsg: string } => {
222
- const opType = LzComposerOperationType.DEPOSIT_ACCOUNT;
223
- const opData = ethers.AbiCoder.defaultAbiCoder().encode(
224
- ['uint128', 'address'],
225
- [accountId, peripheryTokenAddress],
226
- );
227
-
228
- const composeMsg = ethers.AbiCoder.defaultAbiCoder().encode(
229
- ['uint8', 'bytes'],
230
- [opType, opData],
231
- );
232
-
233
- const receiverBytes32 = ethers.zeroPadValue(receiverAddress, 32);
234
- const extraOptions = encodeLzSendAndComposeExtraOptions(
235
- LZ_RECEIVE_GAS,
236
- LZ_COMPOSE_GAS,
237
- );
238
-
239
- const sendParam: OFTSendParam = {
240
- dstEid,
241
- to: receiverBytes32,
242
- amountLD,
243
- minAmountLD,
244
- extraOptions,
245
- composeMsg,
246
- oftCmd: '0x',
247
- };
248
-
249
- return { sendParam, composeMsg };
250
- };
251
-
252
- export const encodeOFTBridgeAndDepositExistingMA = (
253
- dstEid: number,
254
- receiverAddress: string,
255
- accountId: number,
256
- peripheryTokenAddress: string,
257
- amountLD: bigint,
258
- minAmountLD: bigint,
259
- messagingFee: OFTMessagingFee,
260
- callerAddress: string,
261
- ): MethodParameters => {
262
- const { sendParam } = buildOFTBridgeAndDepositExistingMASendParam(
263
- dstEid,
264
- receiverAddress,
265
- accountId,
266
- peripheryTokenAddress,
267
- amountLD,
268
- minAmountLD,
269
- );
270
-
271
- const INTERFACE = new Interface(OFTAbi);
272
- const calldata = INTERFACE.encodeFunctionData('send', [
273
- sendParam,
274
- messagingFee,
275
- callerAddress,
276
- ]);
277
-
278
- return {
279
- calldata,
280
- value: messagingFee.nativeFee.toString(10),
281
- };
282
- };
@@ -1,7 +1,5 @@
1
1
  export * from './types';
2
2
  export * from './account';
3
3
  export * from './bridgeAndDepositExistingMA';
4
- export * from './oftBridgeAndDepositExistingMA';
5
- export * from './oftWithdrawMAAndBridge';
6
4
  export * from './transferMarginBetweenAccounts';
7
5
  export * from './withdrawMAAndBridge';
@@ -8,6 +8,9 @@ import {
8
8
  } from './types';
9
9
  import { getReyaNetwork } from '../../utils/network';
10
10
 
11
+ /**
12
+ * @deprecated Use {@link transferMarginBetweenAccountsV2} instead.
13
+ */
11
14
  export const transferMarginBetweenAccounts = async (
12
15
  params: TransferMarginBetweenAccountsParams,
13
16
  ): Promise<TransferMarginBetweenAccountsResult> => {
@@ -60,19 +60,3 @@ export type BridgeAndDepositExistingMAParams = {
60
60
  export type BridgeAndDepositExistingMAResult = {
61
61
  transactionHash: string | null;
62
62
  };
63
-
64
- export type OFTWithdrawMAAndBridgeParams = WithdrawMAAndBridgeParams;
65
-
66
- export type OFTWithdrawMAAndBridgeResult = WithdrawMAAndBridgeParamsResult;
67
-
68
- export type OFTBridgeAndDepositExistingMAParams = {
69
- signer: Signer | JsonRpcSigner;
70
- marginAccountId: number;
71
- tokenAddress: TokenEntity['address'];
72
- amount: number;
73
- moneyInOutChainId?: MoneyInOutChainId;
74
- };
75
-
76
- export type OFTBridgeAndDepositExistingMAResult = {
77
- transactionHash: string | null;
78
- };
@@ -19,6 +19,9 @@ import { ethers } from 'ethers';
19
19
  import { getTransactionModuleClient } from '../../config';
20
20
  import { getReyaNetwork } from '../../utils/network';
21
21
 
22
+ /**
23
+ * @deprecated Use {@link withdrawMAAndSocketBridgeV2} instead.
24
+ */
22
25
  export const withdrawMAAndBridge = async ({
23
26
  signer,
24
27
  moneyInOutChainId,
@@ -0,0 +1,35 @@
1
+ import { Interface } from 'ethers';
2
+ import { getReyaNetwork } from '../../utils/network';
3
+ import { signAndBroadcastTransaction } from '../signAndBroadcastTransaction';
4
+ import { CreateAccountParamsV2, CreateAccountResultV2 } from './types';
5
+ import { ContractType, CoreAbi } from '@reyaxyz/common';
6
+
7
+ const getCalldata = (accountOwner: string): string => {
8
+ const functionSignature = 'createAccount';
9
+ const parameters = [accountOwner];
10
+ const INTERFACE = new Interface(CoreAbi);
11
+ const calldata = INTERFACE.encodeFunctionData(functionSignature, parameters);
12
+ return calldata;
13
+ };
14
+
15
+ export const createAccountV2 = async (
16
+ params: CreateAccountParamsV2,
17
+ ): Promise<CreateAccountResultV2> => {
18
+ const calldata = getCalldata(params.ownerAddress);
19
+ const chainId = getReyaNetwork();
20
+
21
+ const result = await signAndBroadcastTransaction(
22
+ calldata,
23
+ chainId,
24
+ ContractType.CORE_PROXY,
25
+ {
26
+ accountName: params.name,
27
+ action: 'createAccount',
28
+ sender: params.ownerAddress,
29
+ },
30
+ );
31
+ return {
32
+ transactionHash: result?.txHash || null,
33
+ accountId: Number(result?.accountId),
34
+ };
35
+ };
@@ -0,0 +1,4 @@
1
+ export { socketBridgeAndDepositMAV2 } from './socket/socketBridgeAndDepositMA';
2
+ export { estimateFeeSocketBridgeAndDepositMAV2 } from './socket/estimateFeeSocketBridgeAndDepositMA';
3
+ export { lzBridgeAndDepositMAV2 } from './lz/lzBridgeAndDepositMA';
4
+ export { esimateFeeLzBridgeAndDepositMAV2 } from './lz/estimateFeeLzBridgeAndDepositMA';
@@ -0,0 +1,30 @@
1
+ import {
2
+ buildOFTSendParamsToDepositInMA,
3
+ OFTAbi,
4
+ OFTMessagingFee,
5
+ } from '@reyaxyz/common';
6
+ import { Contract } from 'ethers';
7
+ import { EstimateFeeLzBridgeAndDepositMAParamsV2 } from '../../types';
8
+ import { getPeripheryAddress } from '../../../../utils/network';
9
+ import { checkChainId } from '../../../../utils/checkChainId';
10
+
11
+ export const esimateFeeLzBridgeAndDepositMAV2 = async (
12
+ params: EstimateFeeLzBridgeAndDepositMAParamsV2,
13
+ ): Promise<OFTMessagingFee> => {
14
+ await checkChainId(params.signer, params.chainId);
15
+ const sendParams = buildOFTSendParamsToDepositInMA({
16
+ amount: BigInt(0),
17
+ collateralAddressInReyaPeriphery: params.collateralAddressInReyaPeriphery,
18
+ dstEid: params.dstEid,
19
+ extraOptions: params.extraOptions,
20
+ receiverAddress: getPeripheryAddress(),
21
+ marginAccountId: 0,
22
+ });
23
+
24
+ const oft = new Contract(params.collateralAddress, OFTAbi, params.signer);
25
+ const [nativeFee, lzTokenFee] = await oft.quoteSend(sendParams, false);
26
+ return {
27
+ nativeFee: nativeFee.toString(),
28
+ lzTokenFee: lzTokenFee.toString(),
29
+ };
30
+ };
@@ -0,0 +1,57 @@
1
+ import {
2
+ buildOFTSendParamsToDepositInMA,
3
+ executeTransaction,
4
+ OFTAbi,
5
+ scaleV2,
6
+ } from '@reyaxyz/common';
7
+ import { Interface } from 'ethers';
8
+ import {
9
+ LzBridgeAndDepositMAParamsV2,
10
+ LzBridgeAndDepositMAResultV2,
11
+ } from '../../types';
12
+ import { getPeripheryAddress } from '../../../../utils/network';
13
+ import { checkChainId } from '../../../../utils/checkChainId';
14
+
15
+ const getCalldata = async (
16
+ params: LzBridgeAndDepositMAParamsV2,
17
+ ): Promise<string> => {
18
+ const amount = scaleV2(params.collateralDecimals)(params.amount);
19
+ const refundAddress = await params.signer.getAddress();
20
+
21
+ const sendParams = buildOFTSendParamsToDepositInMA({
22
+ amount,
23
+ collateralAddressInReyaPeriphery: params.collateralAddressInReyaPeriphery,
24
+ dstEid: params.dstEid,
25
+ extraOptions: params.extraOptions,
26
+ receiverAddress: getPeripheryAddress(),
27
+ marginAccountId: params.marginAccountId,
28
+ });
29
+
30
+ const INTERFACE = new Interface(OFTAbi);
31
+ const calldata = INTERFACE.encodeFunctionData('send', [
32
+ sendParams,
33
+ params.bridgeFee,
34
+ refundAddress,
35
+ ]);
36
+
37
+ return calldata;
38
+ };
39
+
40
+ export const lzBridgeAndDepositMAV2 = async (
41
+ params: LzBridgeAndDepositMAParamsV2,
42
+ ): Promise<LzBridgeAndDepositMAResultV2> => {
43
+ await checkChainId(params.signer, params.chainId);
44
+ const calldata = await getCalldata(params);
45
+
46
+ const result = await executeTransaction(
47
+ params.signer,
48
+ calldata,
49
+ params.bridgeFee.nativeFee,
50
+ params.chainId,
51
+ params.collateralAddress,
52
+ );
53
+
54
+ return {
55
+ transactionHash: result?.hash || null,
56
+ };
57
+ };
@@ -0,0 +1,24 @@
1
+ import { SOCKET_EMPTY_PAYLOAD_SIZE } from '@reyaxyz/common';
2
+ import { Contract } from 'ethers';
3
+ import { EstimateFeeSocketBridgeAndDepositMAParamsV2 } from '../../types';
4
+ import { checkChainId } from '../../../../utils/checkChainId';
5
+
6
+ const abi = [
7
+ 'function getMinFees(address, uint256, uint256) external view returns (uint256)',
8
+ ];
9
+
10
+ export const estimateFeeSocketBridgeAndDepositMAV2 = async (
11
+ params: EstimateFeeSocketBridgeAndDepositMAParamsV2,
12
+ ): Promise<string> => {
13
+ await checkChainId(params.signer, params.chainId);
14
+
15
+ const vaultContract = new Contract(params.vaultAddress, abi, params.signer);
16
+
17
+ const fees = await vaultContract.getMinFees(
18
+ params.connectorAddress,
19
+ params.msgGasLimit,
20
+ SOCKET_EMPTY_PAYLOAD_SIZE,
21
+ );
22
+
23
+ return fees.toString();
24
+ };
@@ -0,0 +1,59 @@
1
+ import { Interface } from 'ethers';
2
+ import {
3
+ PeripheryAbi,
4
+ Socket_VaultWithPayloadAbi as VaultAbi,
5
+ executeTransaction,
6
+ scaleV2,
7
+ } from '@reyaxyz/common';
8
+ import {
9
+ SocketBridgeAndDepositMAParamsV2,
10
+ SocketBridgeAndDepositMAResultV2,
11
+ } from '../../types';
12
+ import { getPeripheryAddress } from '../../../../utils/network';
13
+ import { checkChainId } from '../../../../utils/checkChainId';
14
+
15
+ const getCalldata = (params: SocketBridgeAndDepositMAParamsV2): string => {
16
+ const amount = scaleV2(params.collateralDecimals)(params.amount);
17
+
18
+ const PERIPHERY_INTERFACE = new Interface(PeripheryAbi);
19
+ const inputs = {
20
+ accountId: params.accountId,
21
+ token: params.collateralAddressInReyaPeriphery,
22
+ };
23
+ const peripheryCalldata = PERIPHERY_INTERFACE.encodeFunctionData(
24
+ 'depositExistingMA((uint128,address))',
25
+ [inputs],
26
+ );
27
+
28
+ const VAULT_INTERFACE = new Interface(VaultAbi);
29
+ const parameters = [
30
+ getPeripheryAddress(),
31
+ amount,
32
+ params.msgGasLimit,
33
+ params.connectorAddress,
34
+ peripheryCalldata,
35
+ '0x',
36
+ ];
37
+ const calldata = VAULT_INTERFACE.encodeFunctionData('bridge', parameters);
38
+
39
+ return calldata;
40
+ };
41
+
42
+ export const socketBridgeAndDepositMAV2 = async (
43
+ params: SocketBridgeAndDepositMAParamsV2,
44
+ ): Promise<SocketBridgeAndDepositMAResultV2> => {
45
+ await checkChainId(params.signer, params.chainId);
46
+ const calldata = getCalldata(params);
47
+
48
+ const result = await executeTransaction(
49
+ params.signer,
50
+ calldata,
51
+ params.bridgeFee,
52
+ params.chainId,
53
+ params.vaultAddress,
54
+ );
55
+
56
+ return {
57
+ transactionHash: result?.hash || null,
58
+ };
59
+ };
@@ -0,0 +1,38 @@
1
+ import { Interface } from 'ethers';
2
+ import { executeTransaction, scaleV2 } from '@reyaxyz/common';
3
+ import { checkChainId } from '../../../utils/checkChainId';
4
+ import { Erc20ApproveParamsV2, Erc20ApproveResultV2 } from '../types';
5
+
6
+ const ERC20_INTERFACE = new Interface([
7
+ 'function approve(address spender, uint256 amount) external returns (bool)',
8
+ ]);
9
+
10
+ const getCalldata = (params: Erc20ApproveParamsV2): string => {
11
+ const amount = scaleV2(params.collateralDecimals)(params.amount);
12
+
13
+ const calldata = ERC20_INTERFACE.encodeFunctionData('approve', [
14
+ params.spenderAddress,
15
+ amount,
16
+ ]);
17
+
18
+ return calldata;
19
+ };
20
+
21
+ export const erc20ApproveV2 = async (
22
+ params: Erc20ApproveParamsV2,
23
+ ): Promise<Erc20ApproveResultV2> => {
24
+ await checkChainId(params.signer, params.chainId);
25
+ const calldata = getCalldata(params);
26
+
27
+ const result = await executeTransaction(
28
+ params.signer,
29
+ calldata,
30
+ '0',
31
+ params.chainId,
32
+ params.collateralAddress,
33
+ );
34
+
35
+ return {
36
+ transactionHash: result?.hash || null,
37
+ };
38
+ };
@@ -0,0 +1,22 @@
1
+ import { descale } from '@reyaxyz/common';
2
+ import { Contract } from 'ethers';
3
+ import { Erc20GetAllowanceParamsV2, Erc20GetAllowanceResultV2 } from '../types';
4
+ import { checkChainId } from '../../../utils/checkChainId';
5
+
6
+ const abi = [
7
+ 'function allowance(address, address) external view returns (uint256)',
8
+ ];
9
+
10
+ export const erc20GetAllowanceV2 = async (
11
+ params: Erc20GetAllowanceParamsV2,
12
+ ): Promise<Erc20GetAllowanceResultV2> => {
13
+ await checkChainId(params.signer, params.chainId);
14
+ const erc20 = new Contract(params.collateralAddress, abi, params.signer);
15
+ const currentAllowance = await erc20.allowance(
16
+ params.walletAddress,
17
+ params.spenderAddress,
18
+ );
19
+ return {
20
+ allowance: descale(params.collateralDecimals)(currentAllowance),
21
+ };
22
+ };
@@ -0,0 +1,17 @@
1
+ import { descale } from '@reyaxyz/common';
2
+ import { Contract } from 'ethers';
3
+ import { Erc20GetBalanceParamsV2, Erc20GetBalanceResultV2 } from '../types';
4
+ import { checkChainId } from '../../../utils/checkChainId';
5
+
6
+ const abi = ['function balanceOf(address) external view returns (uint256)'];
7
+
8
+ export const erc20GetBalanceV2 = async (
9
+ params: Erc20GetBalanceParamsV2,
10
+ ): Promise<Erc20GetBalanceResultV2> => {
11
+ await checkChainId(params.signer, params.chainId);
12
+ const erc20 = new Contract(params.collateralAddress, abi, params.signer);
13
+ const currentBalance = await erc20.balanceOf(params.walletAddress);
14
+ return {
15
+ balance: descale(params.collateralDecimals)(currentBalance),
16
+ };
17
+ };
@@ -0,0 +1,3 @@
1
+ export { erc20ApproveV2 } from './approve.erc20';
2
+ export { erc20GetAllowanceV2 } from './getAllowance.erc20';
3
+ export { erc20GetBalanceV2 } from './getBalance.erc20';
@@ -0,0 +1,6 @@
1
+ export * from './types';
2
+ export * from './createAccount';
3
+ export * from './deposit';
4
+ export * from './transferMarginBetweenAccounts';
5
+ export * from './withdraw';
6
+ export * from './erc20';
@@ -0,0 +1,75 @@
1
+ import {
2
+ scaleV2,
3
+ getCommand,
4
+ CommandType,
5
+ signCoreCommands,
6
+ CORE_DEADLINE_IN_SECONDS,
7
+ getCurrentTimestampInSeconds,
8
+ PeripheryAbi,
9
+ ContractType,
10
+ } from '@reyaxyz/common';
11
+ import { signAndBroadcastTransaction } from '../signAndBroadcastTransaction';
12
+ import { TransferMAParamsV2, TransferMAResultV2 } from './types';
13
+ import { getPeripheryAddress, getReyaNetwork } from '../../utils/network';
14
+ import { ethers, Interface } from 'ethers';
15
+
16
+ const getCalldata = async (params: TransferMAParamsV2): Promise<string> => {
17
+ const amount = scaleV2(params.collateralDecimals)(params.amount);
18
+ const chainId = getReyaNetwork();
19
+
20
+ const { command } = getCommand(
21
+ CommandType.TRANSFER_MARGIN_ACCOUNT,
22
+ [[params.toMarginAccountId, params.collateralAddress, amount]],
23
+ 0,
24
+ 0,
25
+ );
26
+
27
+ const peripheryAddress = getPeripheryAddress();
28
+
29
+ const { signature: eip712Signature } = await signCoreCommands(
30
+ params.signer,
31
+ chainId,
32
+ peripheryAddress,
33
+ params.fromMarginAccountId,
34
+ [command],
35
+ params.coreSigNonce + 1,
36
+ getCurrentTimestampInSeconds() + CORE_DEADLINE_IN_SECONDS,
37
+ ethers.AbiCoder.defaultAbiCoder().encode([], []),
38
+ );
39
+
40
+ const functionSignature = 'transferFromMAToMA';
41
+ const parameters = [
42
+ {
43
+ accountId: params.fromMarginAccountId,
44
+ transfer: {
45
+ destAccountId: params.toMarginAccountId,
46
+ collateral: params.collateralAddress,
47
+ collateralAmount: amount,
48
+ },
49
+ sig: eip712Signature,
50
+ },
51
+ ];
52
+
53
+ const INTERFACE = new Interface(PeripheryAbi);
54
+ const calldata = INTERFACE.encodeFunctionData(functionSignature, parameters);
55
+ return calldata;
56
+ };
57
+
58
+ export const transferMarginBetweenAccountsV2 = async (
59
+ params: TransferMAParamsV2,
60
+ ): Promise<TransferMAResultV2> => {
61
+ const chainId = getReyaNetwork();
62
+
63
+ const calldata = await getCalldata(params);
64
+ const result = await signAndBroadcastTransaction(
65
+ calldata,
66
+ chainId,
67
+ ContractType.PERIPHERY_PROXY,
68
+ {},
69
+ );
70
+
71
+ return {
72
+ transactionHash: result?.txHash || null,
73
+ coreSigNonce: Number(result?.coreSigNonce) || null,
74
+ };
75
+ };