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

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 (52) hide show
  1. package/LICENSE +189 -189
  2. package/README.md +187 -142
  3. package/client/GrvtBaseClient.d.ts +3 -0
  4. package/client/GrvtBaseClient.js +47 -0
  5. package/client/GrvtBaseClient.js.map +1 -1
  6. package/client/GrvtClient.d.ts +26 -3
  7. package/client/GrvtClient.js +49 -8
  8. package/client/GrvtClient.js.map +1 -1
  9. package/client/GrvtWsClient.d.ts +2 -2
  10. package/contract/abi/GRVTBridgeProxy-abi.json +583 -0
  11. package/contract/abi/USDTL1-abi.json +671 -0
  12. package/contract/index.d.ts +3 -0
  13. package/contract/index.js +11 -0
  14. package/contract/index.js.map +1 -0
  15. package/index.d.ts +7 -1
  16. package/index.js +7 -1
  17. package/index.js.map +1 -1
  18. package/package.json +4 -4
  19. package/services/deposit.d.ts +14 -0
  20. package/services/deposit.js +71 -0
  21. package/services/deposit.js.map +1 -0
  22. package/signing/signer.js.map +1 -1
  23. package/signing/transfer.d.ts +2 -2
  24. package/signing/transfer.js +16 -14
  25. package/signing/transfer.js.map +1 -1
  26. package/signing/utils.d.ts +11 -0
  27. package/signing/utils.js +21 -0
  28. package/signing/utils.js.map +1 -0
  29. package/signing/withdraw.d.ts +4 -0
  30. package/signing/withdraw.js +39 -0
  31. package/signing/withdraw.js.map +1 -0
  32. package/types/account.d.ts +25 -0
  33. package/types/account.js +3 -0
  34. package/types/account.js.map +1 -0
  35. package/types/chain.d.ts +6 -0
  36. package/types/chain.js +11 -0
  37. package/types/chain.js.map +1 -0
  38. package/types/deposit.d.ts +35 -0
  39. package/types/deposit.js +3 -0
  40. package/types/deposit.js.map +1 -0
  41. package/types/transfer.d.ts +15 -0
  42. package/types/transfer.js +13 -0
  43. package/types/transfer.js.map +1 -0
  44. package/utils/chain.d.ts +8 -0
  45. package/utils/chain.js +49 -0
  46. package/utils/chain.js.map +1 -0
  47. package/utils/number.d.ts +8 -0
  48. package/utils/number.js +19 -0
  49. package/utils/number.js.map +1 -0
  50. package/signing/signature.d.ts +0 -10
  51. package/signing/signature.js +0 -16
  52. package/signing/signature.js.map +0 -1
package/README.md CHANGED
@@ -1,142 +1,187 @@
1
- # GRVT TypeScript SDK
2
-
3
- This SDK provides a TypeScript interface to interact with the GRVT API. It supports both REST API and WebSocket connections.
4
-
5
- ## Installation
6
-
7
- The GRVT TypeScript SDK consists of two packages:
8
-
9
- - `@grvt/sdk`: TypeScript implementation of the GRVT API
10
-
11
- Install both packages to get started:
12
-
13
- ```bash
14
- npm install @grvt/sdk
15
- ```
16
-
17
- ## Usage
18
-
19
- ### REST API Client
20
-
21
- ```typescript
22
- import { GrvtClient, GrvtEnvironment } from '@grvt/sdk';
23
- import { ECurrency, ETransferType } from '@grvt/sdk';
24
-
25
- const client = new GrvtClient({
26
- apiKey: 'your-api-key',
27
- apiSecret: 'your-api-secret',
28
- env: GrvtEnvironment.DEV,
29
- });
30
-
31
- // Get funding account summary
32
- const accountSummary = await client.getFundingAccountSummary();
33
-
34
- // Get sub account summary
35
- const subAccountSummary = await client.getSubAccountSummary({
36
- sub_account_id: 'your-sub-account-id',
37
- });
38
-
39
- // Transfer funds
40
- // Note: The signature field is optional. The SDK will automatically sign the transfer using the apiSecret.
41
-
42
- const transfer = await client.transfer({
43
- from_account_id: 'from-account-id',
44
- from_sub_account_id: 'from-sub-account-id',
45
- to_account_id: 'to-account-id',
46
- to_sub_account_id: 'to-sub-account-id',
47
- currency: ECurrency.USDT,
48
- num_tokens: '100',
49
- transfer_type: ETransferType.STANDARD,
50
- transfer_metadata: ''
51
- });
52
- ```
53
-
54
- ### WebSocket Client
55
-
56
- The WebSocket client supports real-time data streaming and follows the same authentication mechanism as the REST API client.
57
-
58
- ```typescript
59
- import { GrvtWsClient, GrvtEnvironment } from '@grvt/sdk';
60
-
61
- const client = new GrvtWsClient({
62
- apiKey: 'your-api-key',
63
- env: GrvtEnvironment.DEV,
64
- });
65
-
66
- // Connect to WebSocket
67
- await client.connect();
68
-
69
- // Subscribe to transfer history
70
- client.subscribeTransferHistory(
71
- 'main-account-id',
72
- (data) => {
73
- console.log('Received transfer:', data);
74
- },
75
- 'sub-account-id' // optional
76
- );
77
-
78
- // Disconnect when done
79
- client.disconnect();
80
- ```
81
-
82
- #### WebSocket Features
83
-
84
- 1. **Authentication**:
85
- - Uses the same cookie-based authentication as the REST API
86
- - Automatically refreshes cookies when needed
87
-
88
- 2. **Connection Management**:
89
- - Automatic reconnection with exponential backoff
90
- - Connection monitoring with 5-second timeout
91
- - Reconnects if no messages are received within the timeout period
92
-
93
- 3. **Subscription Handling**:
94
- - Unique subscription IDs for each subscription
95
- - Subscriptions are not automatically restored after reconnection
96
- - Users need to manually resubscribe after reconnection
97
-
98
- 4. **Error Handling**:
99
- - Automatic error logging
100
- - Graceful disconnection handling
101
- - Reconnection attempts with configurable maximum retries
102
-
103
- ## Development
104
-
105
- ### Building
106
-
107
- ```bash
108
- npm run build
109
- ```
110
-
111
- ### Formatting
112
-
113
- ```bash
114
- npm run format
115
- ```
116
-
117
- ### Testing
118
-
119
- ```bash
120
- # Run all tests
121
- npm test
122
-
123
- # Run SDK tests
124
- npm run test:sdk
125
-
126
- # Run WebSocket tests
127
- npm run test:ws
128
- ```
129
-
130
- ### Linting and Formating
131
-
132
- ```bash
133
- npm run lint
134
- ```
135
-
136
- ```bash
137
- npm run format
138
- ```
139
-
140
- ## License
141
-
142
- This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
1
+ # GRVT TypeScript SDK
2
+
3
+ This SDK provides a TypeScript interface to interact with the GRVT API. It supports both REST API and WebSocket connections.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @grvt/sdk
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### REST API Client
14
+
15
+ ```typescript
16
+ import { ECurrency, ETransferType, ITransferMetadata, ETransferProvider, ETransferDirection } from '@grvt/client';
17
+
18
+ // Initialize the client
19
+ const client = new GrvtClient({
20
+ apiKey: 'your-api-key',
21
+ apiSecret: 'your-api-secret',
22
+ env: GrvtEnvironment.DEV,
23
+ });
24
+
25
+ // Get funding account summary
26
+ const accountSummary = await client.getFundingAccountSummary();
27
+
28
+ // Get sub account summary
29
+ const subAccountSummary = await client.getSubAccountSummary({
30
+ sub_account_id: 'your-sub-account-id',
31
+ });
32
+
33
+ // Transfer examples
34
+ // Note: The signature field is optional. If not provided, the SDK will automatically compute it using the apiSecret.
35
+
36
+ // Standard transfer
37
+ const transfer1 = await client.transfer({
38
+ from_account_id: 'from-account-id',
39
+ from_sub_account_id: 'from-sub-account-id',
40
+ to_account_id: 'to-account-id',
41
+ to_sub_account_id: 'to-sub-account-id',
42
+ currency: ECurrency.USDT,
43
+ num_tokens: '100',
44
+ transfer_type: ETransferType.STANDARD,
45
+ });
46
+
47
+
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.
50
+ const metadata: ITransferMetadata = {
51
+ provider: ETransferProvider.rhino;
52
+ direction: ETransferDirection.DEPOSIT; // Use ETransferDirection.WITHDRAWAL for withdraw flow
53
+ chainid,
54
+ endpoint,
55
+ provider_tx_id: tx_hash,
56
+ provider_ref_id: commit_id,
57
+ };
58
+
59
+ const transfer2 = await client.transfer(
60
+ {
61
+ from_account_id: 'from-account-id',
62
+ to_account_id: 'to-account-id',
63
+ currency: ECurrency.USDT,
64
+ num_tokens: '100',
65
+ transfer_type: ETransferType.NON_NATIVE_BRIDGE_DEPOSIT, // Use NON_NATIVE_BRIDGE_WITHDRAW for withdraw flow
66
+ },
67
+ metadata
68
+ );
69
+
70
+ // Request deposit approval
71
+ // This API is used to get signature for a deposit before executing it
72
+ const depositApproval = await client.requestDepositApproval({
73
+ l1Sender: 'your-l1-address', // L1 address of the sending wallet
74
+ l2Receiver: 'your-l2-address', // Your L2 address to receive the funds
75
+ l1Token: 'token-contract-address', // L1 token contract address
76
+ amount: '100' // Amount to deposit
77
+ });
78
+
79
+
80
+ // 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({
83
+ from_account_id: 'your-account-id',
84
+ to_eth_address: 'destination-eth-address',
85
+ currency: ECurrency.USDT,
86
+ num_tokens: '100'
87
+ });
88
+
89
+ // Query transfer history
90
+ const transferHistory = await client.getTransferHistory({
91
+ start_time: '1745600642000785050' // timestamp in nanosecond, use this to get all transfers with event time >= start_time
92
+ });
93
+ // You can filter more & do pagination with this query if needed, please take a look at the request interface to get more details
94
+
95
+
96
+ ```
97
+
98
+ ### WebSocket Client
99
+
100
+ The WebSocket client supports real-time data streaming and follows the same authentication mechanism as the REST API client.
101
+
102
+ ```typescript
103
+ import { GrvtWsClient, GrvtEnvironment } from '@grvt/sdk';
104
+
105
+ // Initialize the WebSocket client
106
+ const client = new GrvtWsClient({
107
+ apiKey: 'your-api-key',
108
+ env: GrvtEnvironment.DEV,
109
+ });
110
+
111
+ // Connect to WebSocket
112
+ await client.connect();
113
+
114
+ // Subscribe to transfer history
115
+ client.subscribeTransferHistory(
116
+ 'main-account-id',
117
+ (data) => {
118
+ console.log('Received transfer:', data);
119
+ },
120
+ 'sub-account-id' // optional
121
+ );
122
+
123
+ // Disconnect when done
124
+ client.disconnect();
125
+ ```
126
+
127
+ #### WebSocket Features
128
+
129
+ 1. **Authentication**:
130
+ - Uses the same cookie-based authentication as the REST API
131
+ - Automatically refreshes cookies when needed
132
+
133
+ 2. **Connection Management**:
134
+ - Automatic reconnection with exponential backoff
135
+ - Connection monitoring with 5-second timeout
136
+ - Reconnects if no messages are received within the timeout period
137
+
138
+ 3. **Subscription Handling**:
139
+ - Unique subscription IDs for each subscription
140
+ - Subscriptions are not automatically restored after reconnection
141
+ - Users need to manually resubscribe after reconnection
142
+
143
+ 4. **Error Handling**:
144
+ - Automatic error logging
145
+ - Graceful disconnection handling
146
+ - Reconnection attempts with configurable maximum retries
147
+
148
+ ## Development
149
+
150
+ ### Building
151
+
152
+ ```bash
153
+ npm run build
154
+ ```
155
+
156
+ ### Formatting
157
+
158
+ ```bash
159
+ npm run format
160
+ ```
161
+
162
+ ### Testing
163
+
164
+ ```bash
165
+ # Run all tests
166
+ npm test
167
+
168
+ # Run SDK tests
169
+ npm run test:sdk
170
+
171
+ # Run WebSocket tests
172
+ npm run test:ws
173
+ ```
174
+
175
+ ### Linting and Formating
176
+
177
+ ```bash
178
+ npm run lint
179
+ ```
180
+
181
+ ```bash
182
+ npm run format
183
+ ```
184
+
185
+ ## License
186
+
187
+ This project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.
@@ -12,6 +12,9 @@ export declare class GrvtBaseClient {
12
12
  constructor(config: GrvtConfig);
13
13
  protected shouldRefreshCookie(): boolean;
14
14
  protected refreshCookie(): Promise<GrvtCookie | null>;
15
+ protected authenticatedGet<RequestParams = Record<string, any>, ResponseData = any>(endpoint: string, params?: RequestParams): Promise<ResponseData>;
16
+ protected authenticatedPost<RequestData = Record<string, any>, ResponseData = any>(endpoint: string, payload: RequestData): Promise<ResponseData>;
17
+ private getHeaders;
15
18
  private getDomain;
16
19
  }
17
20
  export {};
@@ -32,6 +32,53 @@ class GrvtBaseClient {
32
32
  }
33
33
  return this.cookie;
34
34
  }
35
+ async authenticatedGet(endpoint, params) {
36
+ try {
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.getHeaders(),
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 authenticatedPost(endpoint, payload) {
56
+ try {
57
+ await this.refreshCookie();
58
+ const response = await fetch(endpoint, {
59
+ method: 'POST',
60
+ headers: this.getHeaders(),
61
+ body: JSON.stringify(payload),
62
+ });
63
+ const data = (await response.json());
64
+ return data;
65
+ }
66
+ catch (error) {
67
+ throw new Error(error instanceof Error ? error.message : 'Unknown error');
68
+ }
69
+ }
70
+ getHeaders() {
71
+ const headers = {
72
+ 'Content-Type': 'application/json',
73
+ };
74
+ if (this.cookie) {
75
+ headers['Cookie'] = `gravity=${this.cookie.gravity}`;
76
+ if (this.cookie.XGrvtAccountId) {
77
+ headers['X-Grvt-Account-Id'] = this.cookie.XGrvtAccountId;
78
+ }
79
+ }
80
+ return headers;
81
+ }
35
82
  getDomain() {
36
83
  switch (this.config.env) {
37
84
  case config_1.GrvtEnvironment.PRODUCTION:
@@ -1 +1 @@
1
- {"version":3,"file":"GrvtBaseClient.js","sourceRoot":"","sources":["../../src/client/GrvtBaseClient.ts"],"names":[],"mappings":";;;AAAA,6CAA+D;AAC/D,4CAA0D;AAQ1D,MAAa,cAAc;IAMzB,YAAY,MAAkB;QAJpB,WAAM,GAAsB,IAAI,CAAC;QAKzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC;IACnD,CAAC;IAES,mBAAmB;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACxF,MAAM,aAAa,GAAG,kBAAkB,KAAK,IAAI,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAE5E,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,qDAAqD,kBAAkB,UAAU,CAClF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,aAAa,CAAC;IACxB,CAAC;IAES,KAAK,CAAC,aAAa;QAC3B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAA,gCAAuB,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAE9E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,SAAS;QACf,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACxB,KAAK,wBAAe,CAAC,UAAU;gBAC7B,OAAO,SAAS,CAAC;YACnB,KAAK,wBAAe,CAAC,OAAO;gBAC1B,OAAO,iBAAiB,CAAC;YAC3B,KAAK,wBAAe,CAAC,OAAO;gBAC1B,OAAO,2BAA2B,CAAC;YACrC,KAAK,wBAAe,CAAC,GAAG;gBACtB,OAAO,uBAAuB,CAAC;YACjC;gBACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF;AA1DD,wCA0DC"}
1
+ {"version":3,"file":"GrvtBaseClient.js","sourceRoot":"","sources":["../../src/client/GrvtBaseClient.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,17 @@
1
1
  import { GrvtConfig } from '../config/config';
2
2
  import { GrvtBaseClient } from './GrvtBaseClient';
3
- import { TDG, MDG } from 'grvt';
3
+ import { TDG, MDG, IApiWithdrawalRequest } from '@grvt/client';
4
4
  import { Wallet } from 'ethers';
5
- import { IApiSubAccountSummaryResponse, IApiFundingAccountSummaryResponse, IApiTransferHistoryRequest, IApiTransferHistoryResponse, IApiSubAccountSummaryRequest, IApiTransferRequest } from 'grvt';
5
+ import { IApiSubAccountSummaryResponse, IApiFundingAccountSummaryResponse, IApiTransferHistoryRequest, IApiTransferHistoryResponse, IApiSubAccountSummaryRequest, IApiTransferRequest } from '@grvt/client';
6
+ import { ITransferMetadata } from '../types/transfer';
7
+ import { IDepositOptions, IApiDepositApprovalRequest, IDepositApprovalResponse } from '../types/deposit';
6
8
  export declare class GrvtClient extends GrvtBaseClient {
7
9
  protected tdgClient: TDG;
8
10
  protected mdgClient: MDG;
9
11
  protected wallet?: Wallet;
10
12
  protected tradesBaseUrl: string;
11
13
  protected marketDataBaseUrl: string;
14
+ private depositService;
12
15
  constructor(config: GrvtConfig);
13
16
  /**
14
17
  * Get funding account summary
@@ -20,12 +23,20 @@ export declare class GrvtClient extends GrvtBaseClient {
20
23
  * @returns Promise with sub account summary data
21
24
  */
22
25
  getSubAccountSummary(request: IApiSubAccountSummaryRequest): Promise<IApiSubAccountSummaryResponse>;
26
+ /**
27
+ * Withdraw funds from the account
28
+ * @param request - Withdrawal request
29
+ * @returns Promise with withdrawal response
30
+ */
31
+ withdrawal(request: IApiWithdrawalRequest): Promise<{
32
+ acknowledgement: boolean;
33
+ }>;
23
34
  /**
24
35
  * Transfer funds between accounts
25
36
  * @param request - Transfer request
26
37
  * @returns Promise with transfer response
27
38
  */
28
- transfer(request: IApiTransferRequest): Promise<{
39
+ transfer(request: IApiTransferRequest, metadata?: ITransferMetadata): Promise<{
29
40
  acknowledgement: boolean;
30
41
  }>;
31
42
  /**
@@ -33,6 +44,18 @@ export declare class GrvtClient extends GrvtBaseClient {
33
44
  * @returns Promise with transfer history response
34
45
  */
35
46
  getTransferHistory(request: IApiTransferHistoryRequest): Promise<IApiTransferHistoryResponse>;
47
+ /**
48
+ * Deposit funds to the account using L1 bridge or direct transfer for Arbitrum
49
+ * @param options - Deposit options
50
+ * @returns Promise with deposit transaction hash
51
+ */
52
+ deposit(options: IDepositOptions): Promise<string>;
53
+ /**
54
+ * Request deposit approval
55
+ * @param request - Deposit approval request
56
+ * @returns Promise with deposit approval response
57
+ */
58
+ requestDepositApproval(request: IApiDepositApprovalRequest): Promise<IDepositApprovalResponse>;
36
59
  private authenticatedEndpoint;
37
60
  private getAxiosConfig;
38
61
  }
@@ -4,22 +4,25 @@ exports.GrvtClient = void 0;
4
4
  const transfer_1 = require("../signing/transfer");
5
5
  const GrvtBaseClient_1 = require("./GrvtBaseClient");
6
6
  const axios_1 = require("axios");
7
- const grvt_1 = require("grvt");
7
+ const client_1 = require("@grvt/client");
8
8
  const ethers_1 = require("ethers");
9
+ const withdraw_1 = require("../signing/withdraw");
10
+ const deposit_1 = require("../services/deposit");
9
11
  class GrvtClient extends GrvtBaseClient_1.GrvtBaseClient {
10
12
  constructor(config) {
11
13
  super(config);
12
14
  this.tradesBaseUrl = `https://trades.${this.domain}`;
13
15
  this.marketDataBaseUrl = `https://market-data.${this.domain}`;
14
- this.tdgClient = new grvt_1.TDG({
16
+ this.tdgClient = new client_1.TDG({
15
17
  host: this.tradesBaseUrl,
16
18
  });
17
- this.mdgClient = new grvt_1.MDG({
19
+ this.mdgClient = new client_1.MDG({
18
20
  host: this.marketDataBaseUrl,
19
21
  });
20
22
  if (config.apiSecret) {
21
23
  this.wallet = new ethers_1.Wallet(config.apiSecret);
22
24
  }
25
+ this.depositService = new deposit_1.DepositService(this, config.env);
23
26
  }
24
27
  /**
25
28
  * Get funding account summary
@@ -37,18 +40,40 @@ class GrvtClient extends GrvtBaseClient_1.GrvtBaseClient {
37
40
  const config = await this.authenticatedEndpoint();
38
41
  return this.tdgClient.subAccountSummary(request, config);
39
42
  }
43
+ /**
44
+ * Withdraw funds from the account
45
+ * @param request - Withdrawal request
46
+ * @returns Promise with withdrawal response
47
+ */
48
+ async withdrawal(request) {
49
+ const config = await this.authenticatedEndpoint();
50
+ if (!request.signature) {
51
+ if (!this.wallet) {
52
+ throw new Error('signing requires API secret');
53
+ }
54
+ const withdrawalSignature = await (0, withdraw_1.signWithdrawal)(request, this.wallet, this.config.env);
55
+ request.signature = withdrawalSignature;
56
+ }
57
+ return this.tdgClient.withdrawal(request, config);
58
+ }
40
59
  /**
41
60
  * Transfer funds between accounts
42
61
  * @param request - Transfer request
43
62
  * @returns Promise with transfer response
44
63
  */
45
- async transfer(request) {
46
- if (!this.wallet) {
47
- throw new Error('API secret is required for transfer');
64
+ async transfer(request, metadata) {
65
+ if (metadata) {
66
+ request.transfer_metadata = JSON.stringify(metadata);
67
+ }
68
+ if (!request.signature) {
69
+ if (!this.wallet) {
70
+ throw new Error('signing requires API secret');
71
+ }
72
+ const transferSignature = await (0, transfer_1.signTransfer)(request, this.wallet, this.config.env);
73
+ request.signature = transferSignature;
48
74
  }
49
- const signedTransfer = await (0, transfer_1.signTransfer)(request, this.wallet, this.config.env);
50
75
  const config = await this.authenticatedEndpoint();
51
- return this.tdgClient.transfer(signedTransfer, config);
76
+ return this.tdgClient.transfer(request, config);
52
77
  }
53
78
  /**
54
79
  * Get transfer history
@@ -58,6 +83,22 @@ class GrvtClient extends GrvtBaseClient_1.GrvtBaseClient {
58
83
  const config = await this.authenticatedEndpoint();
59
84
  return this.tdgClient.transferHistory(request, config);
60
85
  }
86
+ /**
87
+ * Deposit funds to the account using L1 bridge or direct transfer for Arbitrum
88
+ * @param options - Deposit options
89
+ * @returns Promise with deposit transaction hash
90
+ */
91
+ async deposit(options) {
92
+ return this.depositService.deposit(options);
93
+ }
94
+ /**
95
+ * Request deposit approval
96
+ * @param request - Deposit approval request
97
+ * @returns Promise with deposit approval response
98
+ */
99
+ async requestDepositApproval(request) {
100
+ return this.authenticatedPost(`${this.edgeBaseUrl}/v1/deposit/approval`, request);
101
+ }
61
102
  async authenticatedEndpoint() {
62
103
  await this.refreshCookie();
63
104
  return this.getAxiosConfig();
@@ -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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"}
@@ -1,7 +1,7 @@
1
1
  import { GrvtEnvironment } from '../config/config';
2
2
  import { GrvtBaseClient } from './GrvtBaseClient';
3
- import { TMessageHandler } from 'grvt/ws';
4
- import { IWSTransferFeedDataV1 } from 'grvt';
3
+ import { TMessageHandler } from '@grvt/client/ws';
4
+ import { IWSTransferFeedDataV1 } from '@grvt/client';
5
5
  export declare class GrvtWsClient extends GrvtBaseClient {
6
6
  private ws;
7
7
  private readonly url;