@grvt/sdk 0.0.1-beta.2 → 0.0.1-beta.20

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 (54) hide show
  1. package/README.md +69 -15
  2. package/api/sanitizer.d.ts +4 -0
  3. package/api/sanitizer.js +40 -0
  4. package/api/sanitizer.js.map +1 -0
  5. package/api/validator.d.ts +1 -0
  6. package/api/validator.js +12 -0
  7. package/api/validator.js.map +1 -0
  8. package/client/GrvtBaseClient.d.ts +5 -3
  9. package/client/GrvtBaseClient.js +29 -5
  10. package/client/GrvtBaseClient.js.map +1 -1
  11. package/client/GrvtClient.d.ts +36 -10
  12. package/client/GrvtClient.js +120 -6
  13. package/client/GrvtClient.js.map +1 -1
  14. package/client/GrvtWsClient.d.ts +3 -3
  15. package/client/GrvtWsClient.js.map +1 -1
  16. package/config/config.d.ts +4 -4
  17. package/config/config.js +12 -12
  18. package/config/config.js.map +1 -1
  19. package/index.d.ts +5 -0
  20. package/index.js +5 -0
  21. package/index.js.map +1 -1
  22. package/package.json +12 -6
  23. package/services/deposit.d.ts +2 -2
  24. package/services/deposit.js.map +1 -1
  25. package/signing/domain.d.ts +2 -2
  26. package/signing/domain.js.map +1 -1
  27. package/signing/transfer.d.ts +4 -3
  28. package/signing/transfer.js +32 -10
  29. package/signing/transfer.js.map +1 -1
  30. package/signing/validation.d.ts +4 -0
  31. package/signing/validation.js +38 -0
  32. package/signing/validation.js.map +1 -0
  33. package/signing/withdraw.d.ts +4 -3
  34. package/signing/withdraw.js +13 -9
  35. package/signing/withdraw.js.map +1 -1
  36. package/types/chain.d.ts +18 -4
  37. package/types/chain.js +20 -4
  38. package/types/chain.js.map +1 -1
  39. package/types/currency.d.ts +42 -0
  40. package/types/currency.js +87 -0
  41. package/types/currency.js.map +1 -0
  42. package/types/signature.d.ts +4 -0
  43. package/types/{account.js → signature.js} +1 -1
  44. package/types/signature.js.map +1 -0
  45. package/types/transfer.d.ts +3 -1
  46. package/types/transfer.js.map +1 -1
  47. package/utils/address.d.ts +10 -0
  48. package/utils/address.js +26 -0
  49. package/utils/address.js.map +1 -0
  50. package/utils/chain.d.ts +4 -4
  51. package/utils/chain.js +10 -10
  52. package/utils/chain.js.map +1 -1
  53. package/types/account.d.ts +0 -25
  54. package/types/account.js.map +0 -1
package/README.md CHANGED
@@ -13,13 +13,23 @@ npm install @grvt/sdk
13
13
  ### REST API Client
14
14
 
15
15
  ```typescript
16
- import { ECurrency, ETransferType, ITransferMetadata, ETransferProvider, ETransferDirection } from '@grvt/client';
16
+ import {
17
+ GrvtClient,
18
+ ECurrency,
19
+ ETransferType,
20
+ ITransferMetadata,
21
+ ETransferProvider,
22
+ ETransferDirection,
23
+ EGrvtEnvironment,
24
+ EChain,
25
+ ISigningOptions
26
+ } from '@grvt/sdk';
17
27
 
18
28
  // Initialize the client
19
29
  const client = new GrvtClient({
20
30
  apiKey: 'your-api-key',
21
31
  apiSecret: 'your-api-secret',
22
- env: GrvtEnvironment.DEV,
32
+ env: EGrvtEnvironment.DEV,
23
33
  });
24
34
 
25
35
  // Get funding account summary
@@ -31,7 +41,7 @@ const subAccountSummary = await client.getSubAccountSummary({
31
41
  });
32
42
 
33
43
  // Transfer examples
34
- // Note: The signature field is optional. If not provided, the SDK will automatically compute it using the apiSecret.
44
+ // Note: the signature field is optional. If not provided, the SDK will automatically compute it using the apiSecret and provided signing options
35
45
 
36
46
  // Standard transfer
37
47
  const transfer1 = await client.transfer({
@@ -45,17 +55,23 @@ const transfer1 = await client.transfer({
45
55
  });
46
56
 
47
57
 
48
- // Transfer for deposit/withdrawal workflow. You can pass the metadata as the second argument
49
- // Note: The signature field is optional. If not provided, the SDK will automatically compute it using the apiSecret.
58
+ // Metadata for transfer, you can pass it as the second argument for the transfer API
50
59
  const metadata: ITransferMetadata = {
51
- provider: ETransferProvider.rhino;
52
- direction: ETransferDirection.DEPOSIT; // Use ETransferDirection.WITHDRAWAL for withdraw flow
53
- chainid,
60
+ provider: ETransferProvider.RHINO,
61
+ direction: ETransferDirection.DEPOSIT, // Use ETransferDirection.WITHDRAWAL for withdraw flow
62
+ chainid: EChain.TRON,
54
63
  endpoint,
55
64
  provider_tx_id: tx_hash,
56
65
  provider_ref_id: commit_id,
57
66
  };
58
67
 
68
+ // Signing options for generating the signature as the third argument for the transfer API
69
+ // Note: nonce must be non-negative and expiration must be within 30 days
70
+ const signingOptions: ISigningOptions = {
71
+ nonce: 12345,
72
+ expiration: '1746093221289693252'
73
+ };
74
+
59
75
  const transfer2 = await client.transfer(
60
76
  {
61
77
  from_account_id: 'from-account-id',
@@ -64,7 +80,8 @@ const transfer2 = await client.transfer(
64
80
  num_tokens: '100',
65
81
  transfer_type: ETransferType.NON_NATIVE_BRIDGE_DEPOSIT, // Use NON_NATIVE_BRIDGE_WITHDRAW for withdraw flow
66
82
  },
67
- metadata
83
+ metadata,
84
+ signingOptions
68
85
  );
69
86
 
70
87
  // Request deposit approval
@@ -78,8 +95,8 @@ const depositApproval = await client.requestDepositApproval({
78
95
 
79
96
 
80
97
  // Withdraw funds from your account
81
- // Note: For withdrawals, the signature is automatically computed by the SDK using the apiSecret.
82
- const withdrawResult = await client.withdrawal({
98
+ // Note: the signature field is optional. If not provided, the SDK will automatically compute it using the apiSecret and provided signing options
99
+ const withdrawResult = await client.withdraw({
83
100
  from_account_id: 'your-account-id',
84
101
  to_eth_address: 'destination-eth-address',
85
102
  currency: ECurrency.USDT,
@@ -87,12 +104,46 @@ const withdrawResult = await client.withdrawal({
87
104
  });
88
105
 
89
106
  // Query transfer history
107
+ // Note: both start_time and end_time are required for history queries
90
108
  const transferHistory = await client.getTransferHistory({
91
- start_time: '1745600642000785050' // timestamp in nanosecond, use this to get all transfers with event time >= start_time
109
+ start_time: '1745600642000785050', // timestamp in nanosecond, use this to filter transfers with event time >= start_time
110
+ end_time: '17588917787741000000' // timestamp in nanoseconds, use this to filter transfers with event time <= end_time
111
+ });
112
+ // You can filter more & do pagination with this query if needed, please take a look at the request interface to get more details
113
+
114
+ // Query deposit history
115
+ // Note: both start_time and end_time are required for history queries
116
+ const depositHistory = await client.getDepositHistory({
117
+ start_time: '1745600642000785050', // timestamp in nanosecond, use this to filter deposits with event time >= start_time
118
+ end_time: '17588917787741000000' // timestamp in nanoseconds, use this to filter deposits with event time <= end_time
119
+ });
120
+ // You can filter more & do pagination with this query if needed, please take a look at the request interface to get more details
121
+
122
+ // Query withdrawal history
123
+ // Note: both start_time and end_time are required for history queries
124
+ const withdrawalHistory = await client.getWithdrawalHistory({
125
+ start_time: '1745600642000785050', // timestamp in nanosecond, use this to filter withdrawals with event time >= start_time
126
+ end_time: '17588917787741000000' // timestamp in nanoseconds, use this to filter withdrawals with event time <= end_time
92
127
  });
93
128
  // You can filter more & do pagination with this query if needed, please take a look at the request interface to get more details
94
129
 
95
130
 
131
+ // Get current server time, in milliseconds since epoch
132
+ const currentTime = await client.getCurrentTime()
133
+ // Example result: 1747397398409
134
+
135
+ // Convert Rhino chain to Gravity Echain
136
+ // Result will depend on the environment, specifically
137
+ // - DEV, STAGING - Rhino DEV
138
+ // - TESTNET - Rhino STG
139
+ // - PRODUCTION - Rhino PROD
140
+ // This will return null if the chain ID is not found or not supported
141
+
142
+ const chainID = await client.getGravityChainIDFromRhinoChain('BNB_SMART_CHAIN')
143
+ // Result:
144
+ // - On DEV/STAGING/TESTNET: 97
145
+ // - On PRODUCTION: 56
146
+
96
147
  ```
97
148
 
98
149
  ### WebSocket Client
@@ -100,12 +151,12 @@ const transferHistory = await client.getTransferHistory({
100
151
  The WebSocket client supports real-time data streaming and follows the same authentication mechanism as the REST API client.
101
152
 
102
153
  ```typescript
103
- import { GrvtWsClient, GrvtEnvironment } from '@grvt/sdk';
154
+ import { GrvtWsClient, EGrvtEnvironment } from '@grvt/sdk';
104
155
 
105
156
  // Initialize the WebSocket client
106
157
  const client = new GrvtWsClient({
107
158
  apiKey: 'your-api-key',
108
- env: GrvtEnvironment.DEV,
159
+ env: EGrvtEnvironment.DEV,
109
160
  });
110
161
 
111
162
  // Connect to WebSocket
@@ -127,15 +178,18 @@ client.disconnect();
127
178
  #### WebSocket Features
128
179
 
129
180
  1. **Authentication**:
181
+
130
182
  - Uses the same cookie-based authentication as the REST API
131
183
  - Automatically refreshes cookies when needed
132
184
 
133
185
  2. **Connection Management**:
186
+
134
187
  - Automatic reconnection with exponential backoff
135
188
  - Connection monitoring with 5-second timeout
136
189
  - Reconnects if no messages are received within the timeout period
137
190
 
138
191
  3. **Subscription Handling**:
192
+
139
193
  - Unique subscription IDs for each subscription
140
194
  - Subscriptions are not automatically restored after reconnection
141
195
  - Users need to manually resubscribe after reconnection
@@ -172,7 +226,7 @@ npm run test:sdk
172
226
  npm run test:ws
173
227
  ```
174
228
 
175
- ### Linting and Formating
229
+ ### Linting and Formatting
176
230
 
177
231
  ```bash
178
232
  npm run lint
@@ -0,0 +1,4 @@
1
+ import { IApiDepositHistoryResponse, IApiTransferHistoryResponse, IApiWithdrawalHistoryResponse } from '@grvt/client/interfaces';
2
+ export declare function sanitizeTransferHistoryResponse(response: IApiTransferHistoryResponse): IApiTransferHistoryResponse;
3
+ export declare function sanitizeDepositHistoryResponse(response: IApiDepositHistoryResponse): IApiDepositHistoryResponse;
4
+ export declare function sanitizeWithdrawalHistoryResponse(response: IApiWithdrawalHistoryResponse): IApiWithdrawalHistoryResponse;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sanitizeTransferHistoryResponse = sanitizeTransferHistoryResponse;
4
+ exports.sanitizeDepositHistoryResponse = sanitizeDepositHistoryResponse;
5
+ exports.sanitizeWithdrawalHistoryResponse = sanitizeWithdrawalHistoryResponse;
6
+ const address_1 = require("../utils/address");
7
+ function sanitizeTransferHistoryResponse(response) {
8
+ return {
9
+ ...response,
10
+ result: response.result?.map((transfer) => ({
11
+ ...transfer,
12
+ from_account_id: sanitizeNullableAddress(transfer.from_account_id),
13
+ to_account_id: sanitizeNullableAddress(transfer.to_account_id),
14
+ })),
15
+ };
16
+ }
17
+ function sanitizeDepositHistoryResponse(response) {
18
+ return {
19
+ ...response,
20
+ result: response.result?.map((deposit) => ({
21
+ ...deposit,
22
+ from_address: sanitizeNullableAddress(deposit.from_address),
23
+ to_account_id: sanitizeNullableAddress(deposit.to_account_id),
24
+ })),
25
+ };
26
+ }
27
+ function sanitizeWithdrawalHistoryResponse(response) {
28
+ return {
29
+ ...response,
30
+ result: response.result?.map((withdrawal) => ({
31
+ ...withdrawal,
32
+ from_account_id: sanitizeNullableAddress(withdrawal.from_account_id),
33
+ to_eth_address: sanitizeNullableAddress(withdrawal.to_eth_address),
34
+ })),
35
+ };
36
+ }
37
+ function sanitizeNullableAddress(address) {
38
+ return address ? (0, address_1.sanitizeEvmAddress)(address) : undefined;
39
+ }
40
+ //# sourceMappingURL=sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../src/api/sanitizer.ts"],"names":[],"mappings":";;AAOA,0EAWC;AAED,wEAWC;AAED,8EAWC;AAvCD,8CAAsD;AAEtD,SAAgB,+BAA+B,CAC7C,QAAqC;IAErC,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC1C,GAAG,QAAQ;YACX,eAAe,EAAE,uBAAuB,CAAC,QAAQ,CAAC,eAAe,CAAC;YAClE,aAAa,EAAE,uBAAuB,CAAC,QAAQ,CAAC,aAAa,CAAC;SAC/D,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAgB,8BAA8B,CAC5C,QAAoC;IAEpC,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACzC,GAAG,OAAO;YACV,YAAY,EAAE,uBAAuB,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3D,aAAa,EAAE,uBAAuB,CAAC,OAAO,CAAC,aAAa,CAAC;SAC9D,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAgB,iCAAiC,CAC/C,QAAuC;IAEvC,OAAO;QACL,GAAG,QAAQ;QACX,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC5C,GAAG,UAAU;YACb,eAAe,EAAE,uBAAuB,CAAC,UAAU,CAAC,eAAe,CAAC;YACpE,cAAc,EAAE,uBAAuB,CAAC,UAAU,CAAC,cAAc,CAAC;SACnE,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,OAA2B;IAC1D,OAAO,OAAO,CAAC,CAAC,CAAC,IAAA,4BAAkB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function validateRequiredTimeRange(startTime?: string, endTime?: string): void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateRequiredTimeRange = validateRequiredTimeRange;
4
+ function validateRequiredTimeRange(startTime, endTime) {
5
+ if (!startTime) {
6
+ throw new Error('startTime is required');
7
+ }
8
+ if (!endTime) {
9
+ throw new Error('endTime is required');
10
+ }
11
+ }
12
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/api/validator.ts"],"names":[],"mappings":";;AAAA,8DAOC;AAPD,SAAgB,yBAAyB,CAAC,SAAkB,EAAE,OAAgB;IAC5E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
@@ -1,20 +1,22 @@
1
- import { GrvtConfig } from '../config/config';
1
+ import { IGrvtConfig } from '../config/config';
2
2
  interface GrvtCookie {
3
3
  gravity: string;
4
4
  expires: number;
5
5
  XGrvtAccountId?: string;
6
6
  }
7
7
  export declare class GrvtBaseClient {
8
- protected config: GrvtConfig;
8
+ protected config: IGrvtConfig;
9
9
  protected cookie: GrvtCookie | null;
10
10
  protected domain: string;
11
11
  protected edgeBaseUrl: string;
12
- constructor(config: GrvtConfig);
12
+ constructor(config: IGrvtConfig);
13
13
  protected shouldRefreshCookie(): boolean;
14
14
  protected refreshCookie(): Promise<GrvtCookie | null>;
15
15
  protected authenticatedGet<RequestParams = Record<string, any>, ResponseData = any>(endpoint: string, params?: RequestParams): Promise<ResponseData>;
16
+ protected get<RequestParams = Record<string, any>, ResponseData = any>(endpoint: string, params?: RequestParams): Promise<ResponseData>;
16
17
  protected authenticatedPost<RequestData = Record<string, any>, ResponseData = any>(endpoint: string, payload: RequestData): Promise<ResponseData>;
17
18
  private getHeaders;
19
+ private getAuthenticatedHeaders;
18
20
  private getDomain;
19
21
  }
20
22
  export {};
@@ -35,6 +35,25 @@ class GrvtBaseClient {
35
35
  async authenticatedGet(endpoint, params) {
36
36
  try {
37
37
  await this.refreshCookie();
38
+ const url = new URL(endpoint);
39
+ if (params) {
40
+ Object.entries(params).forEach(([key, value]) => {
41
+ url.searchParams.append(key, String(value));
42
+ });
43
+ }
44
+ const response = await fetch(url.toString(), {
45
+ method: 'GET',
46
+ headers: this.getAuthenticatedHeaders(),
47
+ });
48
+ const data = (await response.json());
49
+ return data;
50
+ }
51
+ catch (error) {
52
+ throw new Error(error instanceof Error ? error.message : 'Unknown error');
53
+ }
54
+ }
55
+ async get(endpoint, params) {
56
+ try {
38
57
  const url = new URL(endpoint);
39
58
  if (params) {
40
59
  Object.entries(params).forEach(([key, value]) => {
@@ -57,7 +76,7 @@ class GrvtBaseClient {
57
76
  await this.refreshCookie();
58
77
  const response = await fetch(endpoint, {
59
78
  method: 'POST',
60
- headers: this.getHeaders(),
79
+ headers: this.getAuthenticatedHeaders(),
61
80
  body: JSON.stringify(payload),
62
81
  });
63
82
  const data = (await response.json());
@@ -68,6 +87,11 @@ class GrvtBaseClient {
68
87
  }
69
88
  }
70
89
  getHeaders() {
90
+ return {
91
+ 'Content-Type': 'application/json',
92
+ };
93
+ }
94
+ getAuthenticatedHeaders() {
71
95
  const headers = {
72
96
  'Content-Type': 'application/json',
73
97
  };
@@ -81,13 +105,13 @@ class GrvtBaseClient {
81
105
  }
82
106
  getDomain() {
83
107
  switch (this.config.env) {
84
- case config_1.GrvtEnvironment.PRODUCTION:
108
+ case config_1.EGrvtEnvironment.PRODUCTION:
85
109
  return 'grvt.io';
86
- case config_1.GrvtEnvironment.TESTNET:
110
+ case config_1.EGrvtEnvironment.TESTNET:
87
111
  return 'testnet.grvt.io';
88
- case config_1.GrvtEnvironment.STAGING:
112
+ case config_1.EGrvtEnvironment.STAGING:
89
113
  return 'staging.gravitymarkets.io';
90
- case config_1.GrvtEnvironment.DEV:
114
+ case config_1.EGrvtEnvironment.DEV:
91
115
  return 'dev.gravitymarkets.io';
92
116
  default:
93
117
  throw new Error(`Unknown environment: ${this.config.env}`);
@@ -1 +1 @@
1
- {"version":3,"file":"GrvtBaseClient.js","sourceRoot":"","sources":["../../src/client/GrvtBaseClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GrvtBaseClient.js","sourceRoot":"","sources":["../../src/client/GrvtBaseClient.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
- import { GrvtConfig } from '../config/config';
1
+ import { IGrvtConfig } from '../config/config';
2
2
  import { GrvtBaseClient } from './GrvtBaseClient';
3
- import { TDG, MDG, IApiWithdrawalRequest } from '@grvt/client';
3
+ import { TDG, MDG } from '@grvt/client';
4
+ import { IApiWithdrawalRequest, IApiTransferResponse, IApiDepositHistoryRequest, IApiDepositHistoryResponse, IApiWithdrawalHistoryRequest, IApiWithdrawalHistoryResponse, IApiSubAccountSummaryResponse, IApiFundingAccountSummaryResponse, IApiTransferHistoryRequest, IApiTransferHistoryResponse, IApiSubAccountSummaryRequest, IApiTransferRequest, IAckResponse } from '@grvt/client/interfaces';
4
5
  import { Wallet } from 'ethers';
5
- import { IApiSubAccountSummaryResponse, IApiFundingAccountSummaryResponse, IApiTransferHistoryRequest, IApiTransferHistoryResponse, IApiSubAccountSummaryRequest, IApiTransferRequest } from '@grvt/client';
6
+ import { EChain } from '../types/chain';
6
7
  import { ITransferMetadata } from '../types/transfer';
7
8
  import { IDepositOptions, IApiDepositApprovalRequest, IDepositApprovalResponse } from '../types/deposit';
9
+ import { ISigningOptions } from '../types/signature';
8
10
  export declare class GrvtClient extends GrvtBaseClient {
9
11
  protected tdgClient: TDG;
10
12
  protected mdgClient: MDG;
@@ -12,7 +14,7 @@ export declare class GrvtClient extends GrvtBaseClient {
12
14
  protected tradesBaseUrl: string;
13
15
  protected marketDataBaseUrl: string;
14
16
  private depositService;
15
- constructor(config: GrvtConfig);
17
+ constructor(config: IGrvtConfig);
16
18
  /**
17
19
  * Get funding account summary
18
20
  * @returns Promise with funding account summary data
@@ -26,24 +28,33 @@ export declare class GrvtClient extends GrvtBaseClient {
26
28
  /**
27
29
  * Withdraw funds from the account
28
30
  * @param request - Withdrawal request
31
+ * @param options - Signing options, if not provided, nonce will be generated randomly and expiration will be 24 hours from now
29
32
  * @returns Promise with withdrawal response
30
33
  */
31
- withdrawal(request: IApiWithdrawalRequest): Promise<{
32
- acknowledgement: boolean;
33
- }>;
34
+ withdraw(request: IApiWithdrawalRequest, options?: ISigningOptions): Promise<IAckResponse>;
34
35
  /**
35
36
  * Transfer funds between accounts
36
37
  * @param request - Transfer request
38
+ * @param metadata - Transfer metadata
39
+ * @param options - Signing options, if not provided, nonce will be generated randomly and expiration will be 24 hours from now
37
40
  * @returns Promise with transfer response
38
41
  */
39
- transfer(request: IApiTransferRequest, metadata?: ITransferMetadata): Promise<{
40
- acknowledgement: boolean;
41
- }>;
42
+ transfer(request: IApiTransferRequest, metadata?: ITransferMetadata, options?: ISigningOptions): Promise<IApiTransferResponse>;
42
43
  /**
43
44
  * Get transfer history
44
45
  * @returns Promise with transfer history response
45
46
  */
46
47
  getTransferHistory(request: IApiTransferHistoryRequest): Promise<IApiTransferHistoryResponse>;
48
+ /**
49
+ * Get deposit history
50
+ * @returns Promise with deposit history response
51
+ */
52
+ getDepositHistory(request: IApiDepositHistoryRequest): Promise<IApiDepositHistoryResponse>;
53
+ /**
54
+ * Get withdrawal history
55
+ * @returns Promise with withdrawal history response
56
+ */
57
+ getWithdrawalHistory(request: IApiWithdrawalHistoryRequest): Promise<IApiWithdrawalHistoryResponse>;
47
58
  /**
48
59
  * Deposit funds to the account using L1 bridge or direct transfer for Arbitrum
49
60
  * @param options - Deposit options
@@ -56,6 +67,21 @@ export declare class GrvtClient extends GrvtBaseClient {
56
67
  * @returns Promise with deposit approval response
57
68
  */
58
69
  requestDepositApproval(request: IApiDepositApprovalRequest): Promise<IDepositApprovalResponse>;
70
+ /**
71
+ * Get current time
72
+ * @returns Promise with current time in milliseconds since epoch
73
+ */
74
+ getCurrentTime(): Promise<number>;
75
+ /**
76
+ * Get the Gravity chain ID for a given Rhino chain
77
+ * @param rhinoChain - The Rhino chain to get the Gravity chain ID for
78
+ * @returns The Gravity chain ID for the given Rhino chain and associated environment, or null if the chain ID is not found
79
+ * Asssociation between Rhino and Gravity environment:
80
+ * - DEV, STAGING - Rhino DEV
81
+ * - TESTNET - Rhino STG
82
+ * - PRODUCTIOn - Rhino PROD
83
+ */
84
+ getGravityChainIDFromRhinoChain(rhinoChain: string): Promise<EChain | null>;
59
85
  private authenticatedEndpoint;
60
86
  private getAxiosConfig;
61
87
  }
@@ -1,13 +1,50 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.GrvtClient = void 0;
4
37
  const transfer_1 = require("../signing/transfer");
38
+ const config_1 = require("../config/config");
5
39
  const GrvtBaseClient_1 = require("./GrvtBaseClient");
6
40
  const axios_1 = require("axios");
7
41
  const client_1 = require("@grvt/client");
8
42
  const ethers_1 = require("ethers");
9
43
  const withdraw_1 = require("../signing/withdraw");
10
44
  const deposit_1 = require("../services/deposit");
45
+ const validation_1 = require("../signing/validation");
46
+ const sanitizer = __importStar(require("../api/sanitizer"));
47
+ const validator_1 = require("../api/validator");
11
48
  class GrvtClient extends GrvtBaseClient_1.GrvtBaseClient {
12
49
  constructor(config) {
13
50
  super(config);
@@ -43,25 +80,35 @@ class GrvtClient extends GrvtBaseClient_1.GrvtBaseClient {
43
80
  /**
44
81
  * Withdraw funds from the account
45
82
  * @param request - Withdrawal request
83
+ * @param options - Signing options, if not provided, nonce will be generated randomly and expiration will be 24 hours from now
46
84
  * @returns Promise with withdrawal response
47
85
  */
48
- async withdrawal(request) {
86
+ async withdraw(request, options) {
49
87
  const config = await this.authenticatedEndpoint();
50
88
  if (!request.signature) {
51
89
  if (!this.wallet) {
52
90
  throw new Error('signing requires API secret');
53
91
  }
54
- const withdrawalSignature = await (0, withdraw_1.signWithdrawal)(request, this.wallet, this.config.env);
92
+ const withdrawalSignature = await (0, withdraw_1.signWithdrawal)(request, this.wallet, this.config.env, options);
55
93
  request.signature = withdrawalSignature;
56
94
  }
95
+ else {
96
+ (0, validation_1.validateISignature)(request.signature);
97
+ }
57
98
  return this.tdgClient.withdrawal(request, config);
58
99
  }
59
100
  /**
60
101
  * Transfer funds between accounts
61
102
  * @param request - Transfer request
103
+ * @param metadata - Transfer metadata
104
+ * @param options - Signing options, if not provided, nonce will be generated randomly and expiration will be 24 hours from now
62
105
  * @returns Promise with transfer response
63
106
  */
64
- async transfer(request, metadata) {
107
+ async transfer(request, metadata, options) {
108
+ // Make sure transfer metadata can only be set using the metadata parameter, not directly in the request
109
+ if (request.transfer_metadata) {
110
+ throw new Error('transfer_metadata must be set using the metadata parameter, not directly in the request');
111
+ }
65
112
  if (metadata) {
66
113
  request.transfer_metadata = JSON.stringify(metadata);
67
114
  }
@@ -69,9 +116,12 @@ class GrvtClient extends GrvtBaseClient_1.GrvtBaseClient {
69
116
  if (!this.wallet) {
70
117
  throw new Error('signing requires API secret');
71
118
  }
72
- const transferSignature = await (0, transfer_1.signTransfer)(request, this.wallet, this.config.env);
119
+ const transferSignature = await (0, transfer_1.signTransfer)(request, this.wallet, this.config.env, options);
73
120
  request.signature = transferSignature;
74
121
  }
122
+ else {
123
+ (0, validation_1.validateISignature)(request.signature);
124
+ }
75
125
  const config = await this.authenticatedEndpoint();
76
126
  return this.tdgClient.transfer(request, config);
77
127
  }
@@ -80,8 +130,30 @@ class GrvtClient extends GrvtBaseClient_1.GrvtBaseClient {
80
130
  * @returns Promise with transfer history response
81
131
  */
82
132
  async getTransferHistory(request) {
133
+ (0, validator_1.validateRequiredTimeRange)(request.start_time, request.end_time);
134
+ const config = await this.authenticatedEndpoint();
135
+ const response = await this.tdgClient.transferHistory(request, config);
136
+ return sanitizer.sanitizeTransferHistoryResponse(response);
137
+ }
138
+ /**
139
+ * Get deposit history
140
+ * @returns Promise with deposit history response
141
+ */
142
+ async getDepositHistory(request) {
143
+ (0, validator_1.validateRequiredTimeRange)(request.start_time, request.end_time);
144
+ const config = await this.authenticatedEndpoint();
145
+ const response = await this.tdgClient.depositHistory(request, config);
146
+ return sanitizer.sanitizeDepositHistoryResponse(response);
147
+ }
148
+ /**
149
+ * Get withdrawal history
150
+ * @returns Promise with withdrawal history response
151
+ */
152
+ async getWithdrawalHistory(request) {
153
+ (0, validator_1.validateRequiredTimeRange)(request.start_time, request.end_time);
83
154
  const config = await this.authenticatedEndpoint();
84
- return this.tdgClient.transferHistory(request, config);
155
+ const response = await this.tdgClient.withdrawalHistory(request, config);
156
+ return sanitizer.sanitizeWithdrawalHistoryResponse(response);
85
157
  }
86
158
  /**
87
159
  * Deposit funds to the account using L1 bridge or direct transfer for Arbitrum
@@ -97,7 +169,49 @@ class GrvtClient extends GrvtBaseClient_1.GrvtBaseClient {
97
169
  * @returns Promise with deposit approval response
98
170
  */
99
171
  async requestDepositApproval(request) {
100
- return this.authenticatedPost(`${this.edgeBaseUrl}/v1/deposit/approval`, request);
172
+ return this.authenticatedPost(`${this.edgeBaseUrl}/api/v1/deposit-approval`, request);
173
+ }
174
+ /**
175
+ * Get current time
176
+ * @returns Promise with current time in milliseconds since epoch
177
+ */
178
+ async getCurrentTime() {
179
+ const response = await this.get(`${this.marketDataBaseUrl}/time`);
180
+ return response.server_time;
181
+ }
182
+ /**
183
+ * Get the Gravity chain ID for a given Rhino chain
184
+ * @param rhinoChain - The Rhino chain to get the Gravity chain ID for
185
+ * @returns The Gravity chain ID for the given Rhino chain and associated environment, or null if the chain ID is not found
186
+ * Asssociation between Rhino and Gravity environment:
187
+ * - DEV, STAGING - Rhino DEV
188
+ * - TESTNET - Rhino STG
189
+ * - PRODUCTIOn - Rhino PROD
190
+ */
191
+ async getGravityChainIDFromRhinoChain(rhinoChain) {
192
+ let rhinoEnv;
193
+ switch (this.config.env) {
194
+ case config_1.EGrvtEnvironment.PRODUCTION:
195
+ rhinoEnv = 'prod';
196
+ break;
197
+ case config_1.EGrvtEnvironment.TESTNET:
198
+ rhinoEnv = 'stg';
199
+ break;
200
+ case config_1.EGrvtEnvironment.STAGING:
201
+ case config_1.EGrvtEnvironment.DEV:
202
+ rhinoEnv = 'dev';
203
+ break;
204
+ default:
205
+ throw new Error('Invalid environment');
206
+ }
207
+ const response = await this.get(`${this.edgeBaseUrl}/api/v1/bridge/rhino-chain-id`, {
208
+ chain: rhinoChain,
209
+ env: rhinoEnv,
210
+ });
211
+ if (!response.chain_id) {
212
+ return null;
213
+ }
214
+ return response.chain_id;
101
215
  }
102
216
  async authenticatedEndpoint() {
103
217
  await this.refreshCookie();
@@ -1 +1 @@
1
- {"version":3,"file":"GrvtClient.js","sourceRoot":"","sources":["../../src/client/GrvtClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GrvtClient.js","sourceRoot":"","sources":["../../src/client/GrvtClient.ts"],"names":[],"mappings":"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"}