@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.
- package/LICENSE +189 -189
- package/README.md +187 -142
- package/client/GrvtBaseClient.d.ts +3 -0
- package/client/GrvtBaseClient.js +47 -0
- package/client/GrvtBaseClient.js.map +1 -1
- package/client/GrvtClient.d.ts +26 -3
- package/client/GrvtClient.js +49 -8
- package/client/GrvtClient.js.map +1 -1
- package/client/GrvtWsClient.d.ts +2 -2
- package/contract/abi/GRVTBridgeProxy-abi.json +583 -0
- package/contract/abi/USDTL1-abi.json +671 -0
- package/contract/index.d.ts +3 -0
- package/contract/index.js +11 -0
- package/contract/index.js.map +1 -0
- package/index.d.ts +7 -1
- package/index.js +7 -1
- package/index.js.map +1 -1
- package/package.json +4 -4
- package/services/deposit.d.ts +14 -0
- package/services/deposit.js +71 -0
- package/services/deposit.js.map +1 -0
- package/signing/signer.js.map +1 -1
- package/signing/transfer.d.ts +2 -2
- package/signing/transfer.js +16 -14
- package/signing/transfer.js.map +1 -1
- package/signing/utils.d.ts +11 -0
- package/signing/utils.js +21 -0
- package/signing/utils.js.map +1 -0
- package/signing/withdraw.d.ts +4 -0
- package/signing/withdraw.js +39 -0
- package/signing/withdraw.js.map +1 -0
- package/types/account.d.ts +25 -0
- package/types/account.js +3 -0
- package/types/account.js.map +1 -0
- package/types/chain.d.ts +6 -0
- package/types/chain.js +11 -0
- package/types/chain.js.map +1 -0
- package/types/deposit.d.ts +35 -0
- package/types/deposit.js +3 -0
- package/types/deposit.js.map +1 -0
- package/types/transfer.d.ts +15 -0
- package/types/transfer.js +13 -0
- package/types/transfer.js.map +1 -0
- package/utils/chain.d.ts +8 -0
- package/utils/chain.js +49 -0
- package/utils/chain.js.map +1 -0
- package/utils/number.d.ts +8 -0
- package/utils/number.js +19 -0
- package/utils/number.js.map +1 -0
- package/signing/signature.d.ts +0 -10
- package/signing/signature.js +0 -16
- 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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
'
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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 {};
|
package/client/GrvtBaseClient.js
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"GrvtBaseClient.js","sourceRoot":"","sources":["../../src/client/GrvtBaseClient.ts"],"names":[],"mappings":"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"}
|
package/client/GrvtClient.d.ts
CHANGED
|
@@ -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
|
}
|
package/client/GrvtClient.js
CHANGED
|
@@ -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
|
|
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
|
|
16
|
+
this.tdgClient = new client_1.TDG({
|
|
15
17
|
host: this.tradesBaseUrl,
|
|
16
18
|
});
|
|
17
|
-
this.mdgClient = new
|
|
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 (
|
|
47
|
-
|
|
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(
|
|
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();
|
package/client/GrvtClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrvtClient.js","sourceRoot":"","sources":["../../src/client/GrvtClient.ts"],"names":[],"mappings":";;;AAAA,kDAAmD;AAEnD,qDAAkD;AAClD,iCAAyD;AACzD
|
|
1
|
+
{"version":3,"file":"GrvtClient.js","sourceRoot":"","sources":["../../src/client/GrvtClient.ts"],"names":[],"mappings":"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"}
|
package/client/GrvtWsClient.d.ts
CHANGED
|
@@ -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;
|