@grvt/sdk 0.0.1-beta.1 → 0.0.1-beta.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.
Files changed (55) hide show
  1. package/LICENSE +189 -189
  2. package/README.md +187 -142
  3. package/client/GrvtBaseClient.d.ts +6 -3
  4. package/client/GrvtBaseClient.js +51 -4
  5. package/client/GrvtBaseClient.js.map +1 -1
  6. package/client/GrvtClient.d.ts +28 -5
  7. package/client/GrvtClient.js +49 -8
  8. package/client/GrvtClient.js.map +1 -1
  9. package/client/GrvtWsClient.d.ts +4 -4
  10. package/client/GrvtWsClient.js.map +1 -1
  11. package/config/config.d.ts +4 -4
  12. package/config/config.js +12 -12
  13. package/config/config.js.map +1 -1
  14. package/contract/abi/GRVTBridgeProxy-abi.json +583 -0
  15. package/contract/abi/USDTL1-abi.json +671 -0
  16. package/contract/index.d.ts +3 -0
  17. package/contract/index.js +11 -0
  18. package/contract/index.js.map +1 -0
  19. package/index.d.ts +7 -1
  20. package/index.js +7 -1
  21. package/index.js.map +1 -1
  22. package/package.json +4 -4
  23. package/services/deposit.d.ts +14 -0
  24. package/services/deposit.js +71 -0
  25. package/services/deposit.js.map +1 -0
  26. package/signing/domain.d.ts +2 -2
  27. package/signing/domain.js.map +1 -1
  28. package/signing/signer.js.map +1 -1
  29. package/signing/transfer.d.ts +3 -3
  30. package/signing/transfer.js +16 -14
  31. package/signing/transfer.js.map +1 -1
  32. package/signing/utils.d.ts +11 -0
  33. package/signing/utils.js +21 -0
  34. package/signing/utils.js.map +1 -0
  35. package/signing/withdraw.d.ts +4 -0
  36. package/signing/withdraw.js +39 -0
  37. package/signing/withdraw.js.map +1 -0
  38. package/types/chain.d.ts +6 -0
  39. package/types/chain.js +11 -0
  40. package/types/chain.js.map +1 -0
  41. package/types/deposit.d.ts +35 -0
  42. package/types/deposit.js +3 -0
  43. package/types/deposit.js.map +1 -0
  44. package/types/transfer.d.ts +15 -0
  45. package/types/transfer.js +13 -0
  46. package/types/transfer.js.map +1 -0
  47. package/utils/chain.d.ts +8 -0
  48. package/utils/chain.js +49 -0
  49. package/utils/chain.js.map +1 -0
  50. package/utils/number.d.ts +8 -0
  51. package/utils/number.js +19 -0
  52. package/utils/number.js.map +1 -0
  53. package/signing/signature.d.ts +0 -10
  54. package/signing/signature.js +0 -16
  55. package/signing/signature.js.map +0 -1
package/index.js CHANGED
@@ -14,10 +14,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("grvt"), exports);
17
+ __exportStar(require("@grvt/client"), exports);
18
18
  __exportStar(require("./client/GrvtClient"), exports);
19
19
  __exportStar(require("./client/GrvtWsClient"), exports);
20
20
  __exportStar(require("./config/config"), exports);
21
+ __exportStar(require("./signing/transfer"), exports);
22
+ __exportStar(require("./signing/utils"), exports);
23
+ __exportStar(require("./signing/withdraw"), exports);
24
+ __exportStar(require("./types/chain"), exports);
25
+ __exportStar(require("./types/deposit"), exports);
26
+ __exportStar(require("./types/transfer"), exports);
21
27
  // Re-export the main client class as default
22
28
  const GrvtClient_1 = require("./client/GrvtClient");
23
29
  exports.default = GrvtClient_1.GrvtClient;
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,sDAAoC;AACpC,wDAAsC;AACtC,kDAAgC;AAEhC,6CAA6C;AAC7C,oDAAiD;AACjD,kBAAe,uBAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,sDAAoC;AACpC,wDAAsC;AACtC,kDAAgC;AAChC,qDAAmC;AACnC,kDAAgC;AAChC,qDAAmC;AACnC,gDAA8B;AAC9B,kDAAgC;AAChC,mDAAiC;AAEjC,6CAA6C;AAC7C,oDAAiD;AACjD,kBAAe,uBAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grvt/sdk",
3
- "version": "0.0.1-beta.1",
3
+ "version": "0.0.1-beta.3",
4
4
  "description": "TypeScript SDK for GRVT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -15,8 +15,8 @@
15
15
  "prerelease": "npm run build",
16
16
  "release": "cd dist/ && npm publish --access public",
17
17
  "link-local": "cp package.json dist/ && cd dist/ && npm link && cd ..",
18
- "lint": "eslint --config eslint.config.js .",
19
- "format": "prettier --write \"src/**/*.ts\"",
18
+ "lint": "npx eslint --config eslint.config.js .",
19
+ "format": "npx prettier --write \"src/**/*.ts\"",
20
20
  "test:sdk": "ts-node -r dotenv/config tests/test.ts dotenv_config_path=./tests/.env",
21
21
  "test:ws": "ts-node -r dotenv/config tests/ws.test.ts dotenv_config_path=./tests/.env"
22
22
  },
@@ -43,10 +43,10 @@
43
43
  "typescript": "^5.8.3"
44
44
  },
45
45
  "dependencies": {
46
+ "@grvt/client": "^1.4.2",
46
47
  "@metamask/eth-sig-util": "^8.2.0",
47
48
  "@types/ws": "^8.18.1",
48
49
  "ethers": "^6.13.5",
49
- "grvt": "^1.4.0-beta.0",
50
50
  "set-cookie-parser": "^2.7.1",
51
51
  "ws": "^8.18.1"
52
52
  },
@@ -0,0 +1,14 @@
1
+ import { IDepositOptions } from '../types/deposit';
2
+ import { GrvtClient } from '../client/GrvtClient';
3
+ import { EGrvtEnvironment } from '../config/config';
4
+ export declare class DepositService {
5
+ private client;
6
+ private env;
7
+ constructor(client: GrvtClient, env: EGrvtEnvironment);
8
+ /**
9
+ * Deposit funds to the account using L1 bridge or direct transfer for Arbitrum
10
+ * @param options - Deposit options
11
+ * @returns Promise with deposit transaction hash
12
+ */
13
+ deposit(options: IDepositOptions): Promise<string>;
14
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DepositService = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const contract_1 = require("../contract");
6
+ const chain_1 = require("../utils/chain");
7
+ const number_1 = require("../utils/number");
8
+ const chain_2 = require("../types/chain");
9
+ class DepositService {
10
+ constructor(client, env) {
11
+ this.client = client;
12
+ this.env = env;
13
+ }
14
+ /**
15
+ * Deposit funds to the account using L1 bridge or direct transfer for Arbitrum
16
+ * @param options - Deposit options
17
+ * @returns Promise with deposit transaction hash
18
+ */
19
+ async deposit(options) {
20
+ const { l1Sender, l2Receiver, amount, chainId } = options;
21
+ // Get RPC URL and token address based on chain
22
+ const rpcUrl = chain_1.ChainUtils.getRpcUrl(chainId);
23
+ if (!rpcUrl) {
24
+ throw new Error(`Unsupported chain ID: ${chainId}`);
25
+ }
26
+ // Create a new wallet instance for this deposit
27
+ const provider = new ethers_1.JsonRpcProvider(rpcUrl);
28
+ const wallet = new ethers_1.Wallet(options.privateKey, provider);
29
+ // Get token address based on chain
30
+ const l1TokenAddress = chain_1.ChainUtils.getL1TokenAddress(chainId);
31
+ if (!l1TokenAddress) {
32
+ throw new Error(`Unsupported chain ID: ${chainId}`);
33
+ }
34
+ // Create token contract instance
35
+ const l1TokenContract = new ethers_1.Contract(l1TokenAddress, contract_1.USDTL1Abi, wallet);
36
+ // Convert amount to bigint using the same approach as market
37
+ const requestAmount = number_1.NumberUtils.numberToBigIntCurrencyUSDT(amount);
38
+ // Handle deposit based on chain
39
+ if (chainId === chain_2.EChain.ARBITRUM_ONE || chainId === chain_2.EChain.ARBITRUM_SEPOLIA) {
40
+ // For Arbitrum: Direct USDT transfer
41
+ const transferTx = await l1TokenContract.transfer(l2Receiver, requestAmount);
42
+ const receipt = await transferTx.wait();
43
+ return receipt.hash;
44
+ }
45
+ else {
46
+ // For ETH: Bridge deposit
47
+ const l1BridgeAddress = chain_1.ChainUtils.getL1BridgeAddress(this.env);
48
+ if (!l1BridgeAddress) {
49
+ throw new Error('Bridge address not configured');
50
+ }
51
+ // Create bridge contract instance
52
+ const l1BridgeContract = new ethers_1.Contract(l1BridgeAddress, contract_1.GRVTBridgeProxyAbi, wallet);
53
+ // Request deposit approval from API
54
+ const approvalResponse = await this.client.requestDepositApproval({
55
+ l1Sender,
56
+ l2Receiver,
57
+ l1Token: l1TokenAddress,
58
+ amount: requestAmount.toString(),
59
+ });
60
+ // Approve token spending
61
+ const approveTx = await l1TokenContract.approve(l1BridgeAddress, requestAmount);
62
+ await approveTx.wait();
63
+ // Execute deposit
64
+ const depositTx = await l1BridgeContract.deposit(l1Sender, l2Receiver, l1TokenAddress, requestAmount, approvalResponse.signature.v, approvalResponse.signature.r, approvalResponse.signature.s);
65
+ const receipt = await depositTx.wait();
66
+ return receipt.hash;
67
+ }
68
+ }
69
+ }
70
+ exports.DepositService = DepositService;
71
+ //# sourceMappingURL=deposit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/services/deposit.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { GrvtEnvironment } from '../config/config';
1
+ import { EGrvtEnvironment } from '../config/config';
2
2
  import { EIP712DomainData } from './types';
3
- export declare const getEIP712DomainData: (env: GrvtEnvironment) => EIP712DomainData;
3
+ export declare const getEIP712DomainData: (env: EGrvtEnvironment) => EIP712DomainData;
@@ -1 +1 @@
1
- {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/signing/domain.ts"],"names":[],"mappings":";;;AAAA,6CAA8D;AAGvD,MAAM,mBAAmB,GAAG,CAAC,GAAoB,EAAoB,EAAE;IAC5E,MAAM,OAAO,GAAG,kBAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,GAAG;QACZ,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,mBAAmB,uBAU9B"}
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/signing/domain.ts"],"names":[],"mappings":";;;AAAA,6CAA+D;AAGxD,MAAM,mBAAmB,GAAG,CAAC,GAAqB,EAAoB,EAAE;IAC7E,MAAM,OAAO,GAAG,kBAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,GAAG;QACZ,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,mBAAmB,uBAU9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signing/signer.ts"],"names":[],"mappings":";;;AAAA,yDAA6E;AAM7E,MAAa,MAAM;IACjB,MAAM,CAAC,IAAI,CACT,UAAkB,EAClB,IAEC;QAED,OAAO,IAAA,4BAAa,EAAC;YACnB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC;YAC7D,IAAI,EAAE,IAAW;YACjB,OAAO,EAAE,mCAAoB,CAAC,EAAE;SACjC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,SAAyC;QACrD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAY,EAAE,EAAE,CACxD,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAY,EAAE,EAAE,CACzD,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,OAAO;YACL,CAAC,EAAE,KAAK,CAAC,EAAE;YACX,CAAC,EAAE,KAAK,CAAC,EAAE;YACX,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtB,CAAC;IACJ,CAAC;CACF;AAlCD,wBAkCC"}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signing/signer.ts"],"names":[],"mappings":";;;AAAA,yDAA6E;AAM7E,MAAa,MAAM;IACjB,MAAM,CAAC,IAAI,CACT,UAAkB,EAClB,IAEC;QAED,OAAO,IAAA,4BAAa,EAAC;YACnB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC;YAC7D,IAAI,EAAE,IAAW;YACjB,OAAO,EAAE,mCAAoB,CAAC,EAAE;SACjC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,SAAyC;QAKrD,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAY,EAAE,EAAE,CACxD,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAY,EAAE,EAAE,CACzD,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACX,OAAO;YACL,CAAC,EAAE,KAAK,CAAC,EAAE;YACX,CAAC,EAAE,KAAK,CAAC,EAAE;YACX,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtB,CAAC;IACJ,CAAC;CACF;AAtCD,wBAsCC"}
@@ -1,4 +1,4 @@
1
- import { GrvtEnvironment } from '../config/config';
1
+ import { EGrvtEnvironment } from '../config/config';
2
2
  import { Wallet } from 'ethers';
3
- import { IApiTransferRequest } from 'grvt';
4
- export declare const signTransfer: (transfer: IApiTransferRequest, wallet: Wallet, env: GrvtEnvironment) => Promise<IApiTransferRequest>;
3
+ import { IApiTransferRequest, ISignature } from '@grvt/client';
4
+ export declare const signTransfer: (transfer: IApiTransferRequest, wallet: Wallet, env: EGrvtEnvironment, nonce?: number, expirationInHours?: number) => Promise<ISignature>;
@@ -2,24 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.signTransfer = void 0;
4
4
  const domain_1 = require("./domain");
5
- const signature_1 = require("./signature");
5
+ const utils_1 = require("./utils");
6
6
  const signer_1 = require("./signer");
7
7
  const types_1 = require("./types");
8
- const grvt_1 = require("grvt");
9
- const signTransfer = async (transfer, wallet, env) => {
10
- if (!transfer.signature) {
11
- transfer.signature = (0, signature_1.GenerateDefaultSignature)();
12
- }
8
+ const client_1 = require("@grvt/client");
9
+ const signTransfer = async (transfer, wallet, env, nonce, expirationInHours) => {
10
+ const signingNonce = nonce || (0, utils_1.GenerateNonce)();
11
+ const signingExpiration = (0, utils_1.GenerateExpiration)(expirationInHours);
13
12
  const domain = (0, domain_1.getEIP712DomainData)(env);
14
13
  const messageData = {
15
14
  fromAccount: transfer.from_account_id || '',
16
15
  fromSubAccount: transfer.from_sub_account_id || '',
17
16
  toAccount: transfer.to_account_id || '',
18
17
  toSubAccount: transfer.to_sub_account_id || '',
19
- tokenCurrency: transfer.currency ? Object.keys(grvt_1.ECurrency).indexOf(transfer.currency) + 1 : 0,
18
+ tokenCurrency: transfer.currency ? Object.keys(client_1.ECurrency).indexOf(transfer.currency) + 1 : 0,
20
19
  numTokens: transfer.num_tokens ? Math.floor(parseFloat(transfer.num_tokens) * 1e6) : 0,
21
- nonce: transfer.signature?.nonce ?? 0,
22
- expiration: transfer.signature?.expiration ?? '',
20
+ nonce: signingNonce,
21
+ expiration: signingExpiration,
23
22
  };
24
23
  const signature = await signer_1.Signer.sign(wallet.privateKey, {
25
24
  ...types_1.Transfer,
@@ -27,11 +26,14 @@ const signTransfer = async (transfer, wallet, env) => {
27
26
  message: messageData,
28
27
  });
29
28
  const { r, s, v } = signer_1.Signer.decode(signature);
30
- transfer.signature.r = r;
31
- transfer.signature.s = s;
32
- transfer.signature.v = v;
33
- transfer.signature.signer = wallet.address;
34
- return transfer;
29
+ return {
30
+ r: r,
31
+ s: s,
32
+ v: v,
33
+ signer: wallet.address,
34
+ nonce: signingNonce,
35
+ expiration: signingExpiration,
36
+ };
35
37
  };
36
38
  exports.signTransfer = signTransfer;
37
39
  //# sourceMappingURL=transfer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/signing/transfer.ts"],"names":[],"mappings":";;;AACA,qCAA+C;AAC/C,2CAAuD;AACvD,qCAAkC;AAClC,mCAAmC;AAEnC,+BAAsD;AAE/C,MAAM,YAAY,GAAG,KAAK,EAC/B,QAA6B,EAC7B,MAAc,EACd,GAAoB,EACU,EAAE;IAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,QAAQ,CAAC,SAAS,GAAG,IAAA,oCAAwB,GAAE,CAAC;IAClD,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,4BAAmB,EAAC,GAAG,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG;QAClB,WAAW,EAAE,QAAQ,CAAC,eAAe,IAAI,EAAE;QAC3C,cAAc,EAAE,QAAQ,CAAC,mBAAmB,IAAI,EAAE;QAClD,SAAS,EAAE,QAAQ,CAAC,aAAa,IAAI,EAAE;QACvC,YAAY,EAAE,QAAQ,CAAC,iBAAiB,IAAI,EAAE;QAC9C,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC;QACrC,UAAU,EAAE,QAAQ,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE;KACjD,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACrD,GAAG,gBAAQ;QACX,MAAM;QACN,OAAO,EAAE,WAAW;KACrB,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,eAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7C,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAE3C,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAjCW,QAAA,YAAY,gBAiCvB"}
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/signing/transfer.ts"],"names":[],"mappings":";;;AACA,qCAA+C;AAC/C,mCAA4D;AAC5D,qCAAkC;AAClC,mCAAmC;AAEnC,yCAA0E;AAEnE,MAAM,YAAY,GAAG,KAAK,EAC/B,QAA6B,EAC7B,MAAc,EACd,GAAqB,EACrB,KAAc,EACd,iBAA0B,EACL,EAAE;IACvB,MAAM,YAAY,GAAG,KAAK,IAAI,IAAA,qBAAa,GAAE,CAAC;IAC9C,MAAM,iBAAiB,GAAG,IAAA,0BAAkB,EAAC,iBAAiB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAA,4BAAmB,EAAC,GAAG,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG;QAClB,WAAW,EAAE,QAAQ,CAAC,eAAe,IAAI,EAAE;QAC3C,cAAc,EAAE,QAAQ,CAAC,mBAAmB,IAAI,EAAE;QAClD,SAAS,EAAE,QAAQ,CAAC,aAAa,IAAI,EAAE;QACvC,YAAY,EAAE,QAAQ,CAAC,iBAAiB,IAAI,EAAE;QAC9C,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5F,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,iBAAiB;KAC9B,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACrD,GAAG,gBAAQ;QACX,MAAM;QACN,OAAO,EAAE,WAAW;KACrB,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,eAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7C,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,iBAAiB;KAC9B,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,YAAY,gBAmCvB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Generate a random nonce
3
+ * @returns A random nonce
4
+ */
5
+ export declare function GenerateNonce(): number;
6
+ /**
7
+ * Generate an expiration time
8
+ * @param expirationInHours - The number of hours to set the expiration time to, default is 24 hours
9
+ * @returns The expiration time in nanoseconds
10
+ */
11
+ export declare function GenerateExpiration(expirationInHours?: number): string;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenerateNonce = GenerateNonce;
4
+ exports.GenerateExpiration = GenerateExpiration;
5
+ /**
6
+ * Generate a random nonce
7
+ * @returns A random nonce
8
+ */
9
+ function GenerateNonce() {
10
+ return Math.floor(Math.random() * 1e9);
11
+ }
12
+ /**
13
+ * Generate an expiration time
14
+ * @param expirationInHours - The number of hours to set the expiration time to, default is 24 hours
15
+ * @returns The expiration time in nanoseconds
16
+ */
17
+ function GenerateExpiration(expirationInHours = 24) {
18
+ const expirationTime = (Date.now() + expirationInHours * 60 * 60 * 1000) * 1e6;
19
+ return expirationTime.toString();
20
+ }
21
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/signing/utils.ts"],"names":[],"mappings":";;AAIA,sCAEC;AAOD,gDAGC;AAhBD;;;GAGG;AACH,SAAgB,aAAa;IAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,oBAA4B,EAAE;IAC/D,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAC/E,OAAO,cAAc,CAAC,QAAQ,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { EGrvtEnvironment } from '../config/config';
2
+ import { Wallet } from 'ethers';
3
+ import { IApiWithdrawalRequest, ISignature } from '@grvt/client';
4
+ export declare const signWithdrawal: (withdrawal: IApiWithdrawalRequest, wallet: Wallet, env: EGrvtEnvironment, nonce?: number, expirationInHours?: number) => Promise<ISignature>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signWithdrawal = void 0;
4
+ const domain_1 = require("./domain");
5
+ const utils_1 = require("./utils");
6
+ const signer_1 = require("./signer");
7
+ const types_1 = require("./types");
8
+ const client_1 = require("@grvt/client");
9
+ const signWithdrawal = async (withdrawal, wallet, env, nonce, expirationInHours) => {
10
+ const signingNonce = nonce || (0, utils_1.GenerateNonce)();
11
+ const signingExpiration = (0, utils_1.GenerateExpiration)(expirationInHours);
12
+ const domain = (0, domain_1.getEIP712DomainData)(env);
13
+ const messageData = {
14
+ fromAccount: withdrawal.from_account_id || '',
15
+ toEthAddress: withdrawal.to_eth_address || '',
16
+ tokenCurrency: withdrawal.currency
17
+ ? Object.keys(client_1.ECurrency).indexOf(withdrawal.currency) + 1
18
+ : 0,
19
+ numTokens: withdrawal.num_tokens ? Math.floor(parseFloat(withdrawal.num_tokens) * 1e6) : 0,
20
+ nonce: signingNonce,
21
+ expiration: signingExpiration,
22
+ };
23
+ const signature = await signer_1.Signer.sign(wallet.privateKey, {
24
+ ...types_1.Withdrawal,
25
+ domain,
26
+ message: messageData,
27
+ });
28
+ const { r, s, v } = signer_1.Signer.decode(signature);
29
+ return {
30
+ r: r,
31
+ s: s,
32
+ v: v,
33
+ signer: wallet.address,
34
+ nonce: signingNonce,
35
+ expiration: signingExpiration,
36
+ };
37
+ };
38
+ exports.signWithdrawal = signWithdrawal;
39
+ //# sourceMappingURL=withdraw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withdraw.js","sourceRoot":"","sources":["../../src/signing/withdraw.ts"],"names":[],"mappings":";;;AACA,qCAA+C;AAC/C,mCAA4D;AAC5D,qCAAkC;AAClC,mCAAqC;AAErC,yCAA4E;AAErE,MAAM,cAAc,GAAG,KAAK,EACjC,UAAiC,EACjC,MAAc,EACd,GAAqB,EACrB,KAAc,EACd,iBAA0B,EACL,EAAE;IACvB,MAAM,YAAY,GAAG,KAAK,IAAI,IAAA,qBAAa,GAAE,CAAC;IAC9C,MAAM,iBAAiB,GAAG,IAAA,0BAAkB,EAAC,iBAAiB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,IAAA,4BAAmB,EAAC,GAAG,CAAC,CAAC;IAExC,MAAM,WAAW,GAAG;QAClB,WAAW,EAAE,UAAU,CAAC,eAAe,IAAI,EAAE;QAC7C,YAAY,EAAE,UAAU,CAAC,cAAc,IAAI,EAAE;QAC7C,aAAa,EAAE,UAAU,CAAC,QAAQ;YAChC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAS,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,iBAAiB;KAC9B,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACrD,GAAG,kBAAU;QACb,MAAM;QACN,OAAO,EAAE,WAAW;KACrB,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,eAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE7C,OAAO;QACL,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,CAAC,EAAE,CAAC;QACJ,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,iBAAiB;KAC9B,CAAC;AACJ,CAAC,CAAC;AApCW,QAAA,cAAc,kBAoCzB"}
@@ -0,0 +1,6 @@
1
+ export declare enum EChain {
2
+ ETH_MAINNET = 1,
3
+ ETH_SEPOLIA = 11155111,
4
+ ARBITRUM_ONE = 42161,
5
+ ARBITRUM_SEPOLIA = 421614
6
+ }
package/types/chain.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EChain = void 0;
4
+ var EChain;
5
+ (function (EChain) {
6
+ EChain[EChain["ETH_MAINNET"] = 1] = "ETH_MAINNET";
7
+ EChain[EChain["ETH_SEPOLIA"] = 11155111] = "ETH_SEPOLIA";
8
+ EChain[EChain["ARBITRUM_ONE"] = 42161] = "ARBITRUM_ONE";
9
+ EChain[EChain["ARBITRUM_SEPOLIA"] = 421614] = "ARBITRUM_SEPOLIA";
10
+ })(EChain || (exports.EChain = EChain = {}));
11
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/types/chain.ts"],"names":[],"mappings":";;;AAAA,IAAY,MAKX;AALD,WAAY,MAAM;IAChB,iDAAe,CAAA;IACf,wDAAsB,CAAA;IACtB,uDAAoB,CAAA;IACpB,gEAAyB,CAAA;AAC3B,CAAC,EALW,MAAM,sBAAN,MAAM,QAKjB"}
@@ -0,0 +1,35 @@
1
+ import { EChain } from './chain';
2
+ export interface IApiDepositApprovalRequest {
3
+ l1Sender: string;
4
+ l2Receiver: string;
5
+ l1Token: string;
6
+ amount: string;
7
+ }
8
+ export interface IDepositSignature {
9
+ l1Sender: string;
10
+ l2Receiver: string;
11
+ l1Token: string;
12
+ amount: string;
13
+ deadline: string;
14
+ v: number;
15
+ r: string;
16
+ s: string;
17
+ }
18
+ export interface IDepositApprovalResponse {
19
+ signature: IDepositSignature;
20
+ }
21
+ export interface IDepositContractConfig {
22
+ l1TokenAddress: string;
23
+ l1BridgeAddress: string;
24
+ l1BridgeAbi: any[];
25
+ l1TokenAbi: any[];
26
+ chainId: number;
27
+ rpcUrl: string;
28
+ }
29
+ export interface IDepositOptions {
30
+ privateKey: string;
31
+ l1Sender: string;
32
+ l2Receiver: string;
33
+ amount: string;
34
+ chainId: EChain;
35
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=deposit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/types/deposit.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export declare enum ETransferProvider {
2
+ RHINO = "rhino"
3
+ }
4
+ export declare enum ETransferDirection {
5
+ DEPOSIT = "deposit",
6
+ WITHDRAWAL = "withdrawal"
7
+ }
8
+ export interface ITransferMetadata {
9
+ provider: ETransferProvider;
10
+ direction: ETransferDirection;
11
+ chainid: string;
12
+ endpoint: string;
13
+ provider_tx_id?: string;
14
+ provider_ref_id?: string;
15
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ETransferDirection = exports.ETransferProvider = void 0;
4
+ var ETransferProvider;
5
+ (function (ETransferProvider) {
6
+ ETransferProvider["RHINO"] = "rhino";
7
+ })(ETransferProvider || (exports.ETransferProvider = ETransferProvider = {}));
8
+ var ETransferDirection;
9
+ (function (ETransferDirection) {
10
+ ETransferDirection["DEPOSIT"] = "deposit";
11
+ ETransferDirection["WITHDRAWAL"] = "withdrawal";
12
+ })(ETransferDirection || (exports.ETransferDirection = ETransferDirection = {}));
13
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../src/types/transfer.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAEX;AAFD,WAAY,iBAAiB;IAC3B,oCAAe,CAAA;AACjB,CAAC,EAFW,iBAAiB,iCAAjB,iBAAiB,QAE5B;AAED,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,+CAAyB,CAAA;AAC3B,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B"}
@@ -0,0 +1,8 @@
1
+ import { EChain } from '../types/chain';
2
+ import { EGrvtEnvironment } from '../config/config';
3
+ export declare class ChainUtils {
4
+ static isArbitrum(chainId?: number | EChain): boolean;
5
+ static getL1TokenAddress(chainId: number | EChain): string | undefined;
6
+ static getL1BridgeAddress(env: EGrvtEnvironment): string;
7
+ static getRpcUrl(chainId: number | EChain): string | undefined;
8
+ }
package/utils/chain.js ADDED
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChainUtils = void 0;
4
+ const chain_1 = require("../types/chain");
5
+ const config_1 = require("../config/config");
6
+ class ChainUtils {
7
+ static isArbitrum(chainId) {
8
+ return chainId === chain_1.EChain.ARBITRUM_ONE || chainId === chain_1.EChain.ARBITRUM_SEPOLIA;
9
+ }
10
+ static getL1TokenAddress(chainId) {
11
+ // Map of chain IDs to L1 token addresses
12
+ const l1TokenAddresses = {
13
+ // Mainnet
14
+ [chain_1.EChain.ETH_MAINNET]: '0xdac17f958d2ee523a2206206994597c13d831ec7', // USDT on Ethereum
15
+ [chain_1.EChain.ARBITRUM_ONE]: '0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9', // USDT on Arbitrum
16
+ // Testnet
17
+ [chain_1.EChain.ETH_SEPOLIA]: '0xfb122130c4d28860dbc050a8e024a71a558eb0c1', // USDT on Sepolia
18
+ [chain_1.EChain.ARBITRUM_SEPOLIA]: '0x0a8ca9a01e03b8076c3b9bfe304781a0acab9a34', // USDT on Arbitrum Sepolia
19
+ };
20
+ return l1TokenAddresses[chainId];
21
+ }
22
+ static getL1BridgeAddress(env) {
23
+ switch (env) {
24
+ case config_1.EGrvtEnvironment.DEV:
25
+ return '0xE256101E97e761Bd978f43F8bCd36Bb5ADEBEEDd';
26
+ case config_1.EGrvtEnvironment.STAGING:
27
+ return '0xbb1AE91Bd3Fd782D64624300abFb353517956BF6';
28
+ case config_1.EGrvtEnvironment.TESTNET:
29
+ return '0x6fdc38DB7a5850FEA2D62D879f99baa0546D1d09';
30
+ case config_1.EGrvtEnvironment.PRODUCTION:
31
+ return '0xE17aeD2fC55f4A876315376ffA49FE6358113a65';
32
+ }
33
+ }
34
+ // TODO: verify and update this
35
+ static getRpcUrl(chainId) {
36
+ // Map of chain IDs to RPC URLs
37
+ const rpcUrls = {
38
+ // Mainnet
39
+ [chain_1.EChain.ETH_MAINNET]: 'https://eth.llamarpc.com', // Ethereum
40
+ [chain_1.EChain.ARBITRUM_ONE]: 'https://arb1.arbitrum.io/rpc', // Arbitrum
41
+ // Testnet
42
+ [chain_1.EChain.ETH_SEPOLIA]: 'https://rpc.sepolia.org', // Sepolia
43
+ [chain_1.EChain.ARBITRUM_SEPOLIA]: 'https://sepolia-rollup.arbitrum.io/rpc', // Arbitrum Sepolia
44
+ };
45
+ return rpcUrls[chainId];
46
+ }
47
+ }
48
+ exports.ChainUtils = ChainUtils;
49
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/utils/chain.ts"],"names":[],"mappings":";;;AAAA,0CAAwC;AACxC,6CAAoD;AAEpD,MAAa,UAAU;IACrB,MAAM,CAAC,UAAU,CAAC,OAAyB;QACzC,OAAO,OAAO,KAAK,cAAM,CAAC,YAAY,IAAI,OAAO,KAAK,cAAM,CAAC,gBAAgB,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,OAAwB;QAC/C,yCAAyC;QACzC,MAAM,gBAAgB,GAA2B;YAC/C,UAAU;YACV,CAAC,cAAM,CAAC,WAAW,CAAC,EAAE,4CAA4C,EAAE,mBAAmB;YACvF,CAAC,cAAM,CAAC,YAAY,CAAC,EAAE,4CAA4C,EAAE,mBAAmB;YACxF,UAAU;YACV,CAAC,cAAM,CAAC,WAAW,CAAC,EAAE,4CAA4C,EAAE,kBAAkB;YACtF,CAAC,cAAM,CAAC,gBAAgB,CAAC,EAAE,4CAA4C,EAAE,2BAA2B;SACrG,CAAC;QACF,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAqB;QAC7C,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,yBAAgB,CAAC,GAAG;gBACvB,OAAO,4CAA4C,CAAC;YACtD,KAAK,yBAAgB,CAAC,OAAO;gBAC3B,OAAO,4CAA4C,CAAC;YACtD,KAAK,yBAAgB,CAAC,OAAO;gBAC3B,OAAO,4CAA4C,CAAC;YACtD,KAAK,yBAAgB,CAAC,UAAU;gBAC9B,OAAO,4CAA4C,CAAC;QACxD,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,SAAS,CAAC,OAAwB;QACvC,+BAA+B;QAC/B,MAAM,OAAO,GAA2B;YACtC,UAAU;YACV,CAAC,cAAM,CAAC,WAAW,CAAC,EAAE,0BAA0B,EAAE,WAAW;YAC7D,CAAC,cAAM,CAAC,YAAY,CAAC,EAAE,8BAA8B,EAAE,WAAW;YAClE,UAAU;YACV,CAAC,cAAM,CAAC,WAAW,CAAC,EAAE,yBAAyB,EAAE,UAAU;YAC3D,CAAC,cAAM,CAAC,gBAAgB,CAAC,EAAE,wCAAwC,EAAE,mBAAmB;SACzF,CAAC;QACF,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;CACF;AA5CD,gCA4CC"}
@@ -0,0 +1,8 @@
1
+ export declare class NumberUtils {
2
+ /**
3
+ * Convert a number string to bigint with proper decimal places for the given currency
4
+ * @param value - Number string to convert
5
+ * @returns BigInt value with proper decimal places
6
+ */
7
+ static numberToBigIntCurrencyUSDT(value: string): bigint;
8
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberUtils = void 0;
4
+ class NumberUtils {
5
+ /**
6
+ * Convert a number string to bigint with proper decimal places for the given currency
7
+ * @param value - Number string to convert
8
+ * @returns BigInt value with proper decimal places
9
+ */
10
+ static numberToBigIntCurrencyUSDT(value) {
11
+ // USDT has 6 decimals
12
+ const decimals = 6;
13
+ const [whole, fraction = ''] = value.split('.');
14
+ const paddedFraction = fraction.padEnd(decimals, '0').slice(0, decimals);
15
+ return BigInt(whole + paddedFraction);
16
+ }
17
+ }
18
+ exports.NumberUtils = NumberUtils;
19
+ //# sourceMappingURL=number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/utils/number.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAW;IACtB;;;;OAIG;IACH,MAAM,CAAC,0BAA0B,CAAC,KAAa;QAC7C,sBAAsB;QACtB,MAAM,QAAQ,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC;IACxC,CAAC;CACF;AAbD,kCAaC"}
@@ -1,10 +0,0 @@
1
- import { ISignature } from 'grvt';
2
- export interface Signature {
3
- signer: string;
4
- r: string;
5
- s: string;
6
- v: number;
7
- expiration: string;
8
- nonce: number;
9
- }
10
- export declare function GenerateDefaultSignature(expirationInHours?: number): ISignature;
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GenerateDefaultSignature = GenerateDefaultSignature;
4
- function GenerateDefaultSignature(expirationInHours = 24) {
5
- // Convert to nanoseconds
6
- const expirationTime = (Date.now() + expirationInHours * 60 * 60 * 1000) * 1e6;
7
- return {
8
- signer: '',
9
- r: '',
10
- s: '',
11
- v: 0,
12
- expiration: expirationTime.toString(),
13
- nonce: Math.floor(Math.random() * 1e9), // Generate a random nonce
14
- };
15
- }
16
- //# sourceMappingURL=signature.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/signing/signature.ts"],"names":[],"mappings":";;AAWA,4DAYC;AAZD,SAAgB,wBAAwB,CAAC,oBAA4B,EAAE;IACrE,yBAAyB;IACzB,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;IAE/E,OAAO;QACL,MAAM,EAAE,EAAE;QACV,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,CAAC;QACJ,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE;QACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,0BAA0B;KACnE,CAAC;AACJ,CAAC"}