extended-typescript-sdk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +28 -0
- package/README.md +445 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +25 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +45 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +142 -0
- package/dist/index.js.map +1 -0
- package/dist/perpetual/accounts.d.ts +88 -0
- package/dist/perpetual/accounts.d.ts.map +1 -0
- package/dist/perpetual/accounts.js +152 -0
- package/dist/perpetual/accounts.js.map +1 -0
- package/dist/perpetual/amounts.d.ts +41 -0
- package/dist/perpetual/amounts.d.ts.map +1 -0
- package/dist/perpetual/amounts.js +79 -0
- package/dist/perpetual/amounts.js.map +1 -0
- package/dist/perpetual/assets.d.ts +74 -0
- package/dist/perpetual/assets.d.ts.map +1 -0
- package/dist/perpetual/assets.js +119 -0
- package/dist/perpetual/assets.js.map +1 -0
- package/dist/perpetual/bridges.d.ts +29 -0
- package/dist/perpetual/bridges.d.ts.map +1 -0
- package/dist/perpetual/bridges.js +45 -0
- package/dist/perpetual/bridges.js.map +1 -0
- package/dist/perpetual/candles.d.ts +26 -0
- package/dist/perpetual/candles.d.ts.map +1 -0
- package/dist/perpetual/candles.js +29 -0
- package/dist/perpetual/candles.js.map +1 -0
- package/dist/perpetual/clients.d.ts +15 -0
- package/dist/perpetual/clients.d.ts.map +1 -0
- package/dist/perpetual/clients.js +25 -0
- package/dist/perpetual/clients.js.map +1 -0
- package/dist/perpetual/configuration.d.ts +39 -0
- package/dist/perpetual/configuration.d.ts.map +1 -0
- package/dist/perpetual/configuration.js +61 -0
- package/dist/perpetual/configuration.js.map +1 -0
- package/dist/perpetual/crypto/signer.d.ts +164 -0
- package/dist/perpetual/crypto/signer.d.ts.map +1 -0
- package/dist/perpetual/crypto/signer.js +318 -0
- package/dist/perpetual/crypto/signer.js.map +1 -0
- package/dist/perpetual/fees.d.ts +20 -0
- package/dist/perpetual/fees.d.ts.map +1 -0
- package/dist/perpetual/fees.js +35 -0
- package/dist/perpetual/fees.js.map +1 -0
- package/dist/perpetual/funding-rates.d.ts +15 -0
- package/dist/perpetual/funding-rates.d.ts.map +1 -0
- package/dist/perpetual/funding-rates.js +23 -0
- package/dist/perpetual/funding-rates.js.map +1 -0
- package/dist/perpetual/markets.d.ts +83 -0
- package/dist/perpetual/markets.d.ts.map +1 -0
- package/dist/perpetual/markets.js +124 -0
- package/dist/perpetual/markets.js.map +1 -0
- package/dist/perpetual/order-object-settlement.d.ts +43 -0
- package/dist/perpetual/order-object-settlement.d.ts.map +1 -0
- package/dist/perpetual/order-object-settlement.js +121 -0
- package/dist/perpetual/order-object-settlement.js.map +1 -0
- package/dist/perpetual/order-object.d.ts +38 -0
- package/dist/perpetual/order-object.d.ts.map +1 -0
- package/dist/perpetual/order-object.js +90 -0
- package/dist/perpetual/order-object.js.map +1 -0
- package/dist/perpetual/orderbooks.d.ts +23 -0
- package/dist/perpetual/orderbooks.d.ts.map +1 -0
- package/dist/perpetual/orderbooks.js +36 -0
- package/dist/perpetual/orderbooks.js.map +1 -0
- package/dist/perpetual/orders.d.ts +207 -0
- package/dist/perpetual/orders.d.ts.map +1 -0
- package/dist/perpetual/orders.js +266 -0
- package/dist/perpetual/orders.js.map +1 -0
- package/dist/perpetual/positions.d.ts +80 -0
- package/dist/perpetual/positions.d.ts.map +1 -0
- package/dist/perpetual/positions.js +94 -0
- package/dist/perpetual/positions.js.map +1 -0
- package/dist/perpetual/stream-client/perpetual-stream-connection.d.ts +47 -0
- package/dist/perpetual/stream-client/perpetual-stream-connection.d.ts.map +1 -0
- package/dist/perpetual/stream-client/perpetual-stream-connection.js +125 -0
- package/dist/perpetual/stream-client/perpetual-stream-connection.js.map +1 -0
- package/dist/perpetual/stream-client/stream-client.d.ts +46 -0
- package/dist/perpetual/stream-client/stream-client.d.ts.map +1 -0
- package/dist/perpetual/stream-client/stream-client.js +79 -0
- package/dist/perpetual/stream-client/stream-client.js.map +1 -0
- package/dist/perpetual/trades.d.ts +44 -0
- package/dist/perpetual/trades.d.ts.map +1 -0
- package/dist/perpetual/trades.js +48 -0
- package/dist/perpetual/trades.js.map +1 -0
- package/dist/perpetual/trading-client/account-module.d.ts +192 -0
- package/dist/perpetual/trading-client/account-module.d.ts.map +1 -0
- package/dist/perpetual/trading-client/account-module.js +357 -0
- package/dist/perpetual/trading-client/account-module.js.map +1 -0
- package/dist/perpetual/trading-client/base-module.d.ts +27 -0
- package/dist/perpetual/trading-client/base-module.d.ts.map +1 -0
- package/dist/perpetual/trading-client/base-module.js +49 -0
- package/dist/perpetual/trading-client/base-module.js.map +1 -0
- package/dist/perpetual/trading-client/info-module.d.ts +24 -0
- package/dist/perpetual/trading-client/info-module.d.ts.map +1 -0
- package/dist/perpetual/trading-client/info-module.js +33 -0
- package/dist/perpetual/trading-client/info-module.js.map +1 -0
- package/dist/perpetual/trading-client/markets-information-module.d.ts +53 -0
- package/dist/perpetual/trading-client/markets-information-module.d.ts.map +1 -0
- package/dist/perpetual/trading-client/markets-information-module.js +106 -0
- package/dist/perpetual/trading-client/markets-information-module.js.map +1 -0
- package/dist/perpetual/trading-client/order-management-module.d.ts +40 -0
- package/dist/perpetual/trading-client/order-management-module.d.ts.map +1 -0
- package/dist/perpetual/trading-client/order-management-module.js +71 -0
- package/dist/perpetual/trading-client/order-management-module.js.map +1 -0
- package/dist/perpetual/trading-client/testnet-module.d.ts +27 -0
- package/dist/perpetual/trading-client/testnet-module.d.ts.map +1 -0
- package/dist/perpetual/trading-client/testnet-module.js +45 -0
- package/dist/perpetual/trading-client/testnet-module.js.map +1 -0
- package/dist/perpetual/trading-client/trading-client.d.ts +75 -0
- package/dist/perpetual/trading-client/trading-client.d.ts.map +1 -0
- package/dist/perpetual/trading-client/trading-client.js +115 -0
- package/dist/perpetual/trading-client/trading-client.js.map +1 -0
- package/dist/perpetual/transfer-object.d.ts +12 -0
- package/dist/perpetual/transfer-object.d.ts.map +1 -0
- package/dist/perpetual/transfer-object.js +57 -0
- package/dist/perpetual/transfer-object.js.map +1 -0
- package/dist/perpetual/transfers.d.ts +54 -0
- package/dist/perpetual/transfers.d.ts.map +1 -0
- package/dist/perpetual/transfers.js +90 -0
- package/dist/perpetual/transfers.js.map +1 -0
- package/dist/perpetual/user-client/onboarding.d.ts +101 -0
- package/dist/perpetual/user-client/onboarding.d.ts.map +1 -0
- package/dist/perpetual/user-client/onboarding.js +247 -0
- package/dist/perpetual/user-client/onboarding.js.map +1 -0
- package/dist/perpetual/user-client/user-client.d.ts +45 -0
- package/dist/perpetual/user-client/user-client.d.ts.map +1 -0
- package/dist/perpetual/user-client/user-client.js +185 -0
- package/dist/perpetual/user-client/user-client.js.map +1 -0
- package/dist/perpetual/withdrawal-object.d.ts +12 -0
- package/dist/perpetual/withdrawal-object.d.ts.map +1 -0
- package/dist/perpetual/withdrawal-object.js +51 -0
- package/dist/perpetual/withdrawal-object.js.map +1 -0
- package/dist/perpetual/withdrawals.d.ts +40 -0
- package/dist/perpetual/withdrawals.d.ts.map +1 -0
- package/dist/perpetual/withdrawals.js +65 -0
- package/dist/perpetual/withdrawals.js.map +1 -0
- package/dist/utils/date.d.ts +13 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +21 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/env.d.ts +50 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +157 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/http.d.ts +98 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +290 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/model.d.ts +35 -0
- package/dist/utils/model.d.ts.map +1 -0
- package/dist/utils/model.js +86 -0
- package/dist/utils/model.js.map +1 -0
- package/dist/utils/nonce.d.ts +9 -0
- package/dist/utils/nonce.d.ts.map +1 -0
- package/dist/utils/nonce.js +14 -0
- package/dist/utils/nonce.js.map +1 -0
- package/dist/utils/string.d.ts +10 -0
- package/dist/utils/string.d.ts.map +1 -0
- package/dist/utils/string.js +20 -0
- package/dist/utils/string.js.map +1 -0
- package/package.json +56 -0
- package/wasm/stark_crypto_wasm-web.js +5 -0
- package/wasm/stark_crypto_wasm.d-web.ts +63 -0
- package/wasm/stark_crypto_wasm.d.ts +63 -0
- package/wasm/stark_crypto_wasm.js +362 -0
- package/wasm/stark_crypto_wasm_bg-web.wasm +0 -0
- package/wasm/stark_crypto_wasm_bg.wasm +0 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* User client for onboarding and account management
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.UserClient = void 0;
|
|
7
|
+
const ethers_1 = require("ethers");
|
|
8
|
+
const accounts_1 = require("../accounts");
|
|
9
|
+
const errors_1 = require("../../errors");
|
|
10
|
+
const http_1 = require("../../utils/http");
|
|
11
|
+
const date_1 = require("../../utils/date");
|
|
12
|
+
const onboarding_1 = require("./onboarding");
|
|
13
|
+
const L1_AUTH_SIGNATURE_HEADER = 'L1_SIGNATURE';
|
|
14
|
+
const L1_MESSAGE_TIME_HEADER = 'L1_MESSAGE_TIME';
|
|
15
|
+
const ACTIVE_ACCOUNT_HEADER = 'X-X10-ACTIVE-ACCOUNT';
|
|
16
|
+
/**
|
|
17
|
+
* User client for onboarding and L1 account operations
|
|
18
|
+
*/
|
|
19
|
+
class UserClient {
|
|
20
|
+
endpointConfig;
|
|
21
|
+
l1PrivateKey;
|
|
22
|
+
constructor(endpointConfig, l1PrivateKey) {
|
|
23
|
+
this.endpointConfig = endpointConfig;
|
|
24
|
+
this.l1PrivateKey = l1PrivateKey;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get URL
|
|
28
|
+
*/
|
|
29
|
+
getUrl(baseUrl, path, options = {}) {
|
|
30
|
+
return (0, http_1.getUrl)(`${baseUrl}${path}`, options);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Onboard new account
|
|
34
|
+
*/
|
|
35
|
+
async onboard(referralCode) {
|
|
36
|
+
const wallet = new ethers_1.ethers.Wallet(this.l1PrivateKey());
|
|
37
|
+
const keyPair = await (0, onboarding_1.getL2KeysFromL1Account)(this.l1PrivateKey(), 0, this.endpointConfig.signingDomain);
|
|
38
|
+
const payload = await (0, onboarding_1.getOnboardingPayload)(this.l1PrivateKey(), this.endpointConfig.signingDomain, keyPair, this.endpointConfig.onboardingUrl, referralCode);
|
|
39
|
+
const url = this.getUrl(this.endpointConfig.onboardingUrl, '/auth/onboard');
|
|
40
|
+
const onboardingResponse = await (0, http_1.sendPostRequest)(url, payload.toJson());
|
|
41
|
+
const onboardedClient = onboardingResponse.data;
|
|
42
|
+
if (!onboardedClient) {
|
|
43
|
+
throw new Error('No account data returned from onboarding');
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
account: onboardedClient.defaultAccount,
|
|
47
|
+
l2KeyPair: keyPair,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Onboard sub-account
|
|
52
|
+
*/
|
|
53
|
+
async onboardSubaccount(accountIndex, description) {
|
|
54
|
+
const requestPath = '/auth/onboard/subaccount';
|
|
55
|
+
const finalDescription = description || `Subaccount ${accountIndex}`;
|
|
56
|
+
const wallet = new ethers_1.ethers.Wallet(this.l1PrivateKey());
|
|
57
|
+
const time = (0, date_1.utcNow)();
|
|
58
|
+
const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
|
|
59
|
+
const l1Message = `${requestPath}@${authTimeString}`;
|
|
60
|
+
// Sign with ethers
|
|
61
|
+
const l1Signature = await wallet.signMessage(l1Message);
|
|
62
|
+
const keyPair = await (0, onboarding_1.getL2KeysFromL1Account)(this.l1PrivateKey(), accountIndex, this.endpointConfig.signingDomain);
|
|
63
|
+
const payload = await (0, onboarding_1.getSubAccountCreationPayload)(accountIndex, wallet.address, keyPair, finalDescription, this.endpointConfig.onboardingUrl);
|
|
64
|
+
const headers = {
|
|
65
|
+
[L1_AUTH_SIGNATURE_HEADER]: l1Signature,
|
|
66
|
+
[L1_MESSAGE_TIME_HEADER]: authTimeString,
|
|
67
|
+
};
|
|
68
|
+
const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
|
|
69
|
+
try {
|
|
70
|
+
const onboardingResponse = await (0, http_1.sendPostRequest)(url, payload.toJson(), undefined, headers, new Map([[409, errors_1.SubAccountExists]]));
|
|
71
|
+
const onboardedAccount = onboardingResponse.data;
|
|
72
|
+
if (!onboardedAccount) {
|
|
73
|
+
throw new Error('No account data returned from onboarding');
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
account: onboardedAccount,
|
|
77
|
+
l2KeyPair: keyPair,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error instanceof errors_1.SubAccountExists) {
|
|
82
|
+
const clientAccounts = await this.getAccounts();
|
|
83
|
+
const accountWithIndex = clientAccounts.find((acc) => acc.account.accountIndex === accountIndex);
|
|
84
|
+
if (!accountWithIndex) {
|
|
85
|
+
throw new errors_1.SubAccountExists('Subaccount already exists but not found in client accounts');
|
|
86
|
+
}
|
|
87
|
+
return accountWithIndex;
|
|
88
|
+
}
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get all accounts
|
|
94
|
+
*/
|
|
95
|
+
async getAccounts() {
|
|
96
|
+
const requestPath = '/api/v1/user/accounts';
|
|
97
|
+
const wallet = new ethers_1.ethers.Wallet(this.l1PrivateKey());
|
|
98
|
+
const time = (0, date_1.utcNow)();
|
|
99
|
+
const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
|
|
100
|
+
const l1Message = `${requestPath}@${authTimeString}`;
|
|
101
|
+
const l1Signature = await wallet.signMessage(l1Message);
|
|
102
|
+
const headers = {
|
|
103
|
+
[L1_AUTH_SIGNATURE_HEADER]: l1Signature,
|
|
104
|
+
[L1_MESSAGE_TIME_HEADER]: authTimeString,
|
|
105
|
+
};
|
|
106
|
+
const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
|
|
107
|
+
const response = await (0, http_1.sendGetRequest)(url, undefined, headers);
|
|
108
|
+
const accounts = response.data || [];
|
|
109
|
+
const result = [];
|
|
110
|
+
for (const account of accounts) {
|
|
111
|
+
const keyPair = await (0, onboarding_1.getL2KeysFromL1Account)(this.l1PrivateKey(), account.accountIndex, this.endpointConfig.signingDomain);
|
|
112
|
+
result.push({
|
|
113
|
+
account,
|
|
114
|
+
l2KeyPair: keyPair,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create account API key
|
|
121
|
+
*/
|
|
122
|
+
async createAccountApiKey(account, description) {
|
|
123
|
+
const requestPath = '/api/v1/user/account/api-key';
|
|
124
|
+
const finalDescription = description || `trading api key for account ${account.id}`;
|
|
125
|
+
const wallet = new ethers_1.ethers.Wallet(this.l1PrivateKey());
|
|
126
|
+
const time = (0, date_1.utcNow)();
|
|
127
|
+
const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
|
|
128
|
+
const l1Message = `${requestPath}@${authTimeString}`;
|
|
129
|
+
const l1Signature = await wallet.signMessage(l1Message);
|
|
130
|
+
const headers = {
|
|
131
|
+
[L1_AUTH_SIGNATURE_HEADER]: l1Signature,
|
|
132
|
+
[L1_MESSAGE_TIME_HEADER]: authTimeString,
|
|
133
|
+
[ACTIVE_ACCOUNT_HEADER]: account.id.toString(),
|
|
134
|
+
};
|
|
135
|
+
const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
|
|
136
|
+
const request = new accounts_1.ApiKeyRequestModel(finalDescription);
|
|
137
|
+
const response = await (0, http_1.sendPostRequest)(url, request.toApiRequestJson(), undefined, headers);
|
|
138
|
+
const responseData = response.data;
|
|
139
|
+
if (!responseData) {
|
|
140
|
+
throw new Error('No API key data returned from onboarding');
|
|
141
|
+
}
|
|
142
|
+
return responseData.key;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Delete account API key
|
|
146
|
+
* https://api.docs.extended.exchange/#delete-api-key
|
|
147
|
+
*/
|
|
148
|
+
async deleteAccountApiKey(account, apiKeyId) {
|
|
149
|
+
const requestPath = `/api/v1/user/account/api-key/${apiKeyId}`;
|
|
150
|
+
const wallet = new ethers_1.ethers.Wallet(this.l1PrivateKey());
|
|
151
|
+
const time = (0, date_1.utcNow)();
|
|
152
|
+
const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
|
|
153
|
+
const l1Message = `${requestPath}@${authTimeString}`;
|
|
154
|
+
const l1Signature = await wallet.signMessage(l1Message);
|
|
155
|
+
const headers = {
|
|
156
|
+
[L1_AUTH_SIGNATURE_HEADER]: l1Signature,
|
|
157
|
+
[L1_MESSAGE_TIME_HEADER]: authTimeString,
|
|
158
|
+
[ACTIVE_ACCOUNT_HEADER]: account.id.toString(),
|
|
159
|
+
};
|
|
160
|
+
const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
|
|
161
|
+
await (0, http_1.sendDeleteRequest)(url, undefined, headers);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get list of account API keys
|
|
165
|
+
* https://api.docs.extended.exchange/#get-api-keys
|
|
166
|
+
*/
|
|
167
|
+
async getAccountApiKeys(account) {
|
|
168
|
+
const requestPath = '/api/v1/user/account/api-key';
|
|
169
|
+
const wallet = new ethers_1.ethers.Wallet(this.l1PrivateKey());
|
|
170
|
+
const time = (0, date_1.utcNow)();
|
|
171
|
+
const authTimeString = time.toISOString().replace(/\.\d{3}Z$/, 'Z');
|
|
172
|
+
const l1Message = `${requestPath}@${authTimeString}`;
|
|
173
|
+
const l1Signature = await wallet.signMessage(l1Message);
|
|
174
|
+
const headers = {
|
|
175
|
+
[L1_AUTH_SIGNATURE_HEADER]: l1Signature,
|
|
176
|
+
[L1_MESSAGE_TIME_HEADER]: authTimeString,
|
|
177
|
+
[ACTIVE_ACCOUNT_HEADER]: account.id.toString(),
|
|
178
|
+
};
|
|
179
|
+
const url = this.getUrl(this.endpointConfig.onboardingUrl, requestPath);
|
|
180
|
+
const response = await (0, http_1.sendGetRequest)(url, undefined, headers);
|
|
181
|
+
return response.data || [];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
exports.UserClient = UserClient;
|
|
185
|
+
//# sourceMappingURL=user-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-client.js","sourceRoot":"","sources":["../../../src/perpetual/user-client/user-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Withdrawal object creation
|
|
3
|
+
*/
|
|
4
|
+
import Decimal from 'decimal.js';
|
|
5
|
+
import { EndpointConfig } from './configuration';
|
|
6
|
+
import { StarkPerpetualAccount } from './accounts';
|
|
7
|
+
import { WithdrawalRequest } from './withdrawals';
|
|
8
|
+
/**
|
|
9
|
+
* Create withdrawal object
|
|
10
|
+
*/
|
|
11
|
+
export declare function createWithdrawalObject(amount: Decimal, recipientStarkAddress: string, starkAccount: StarkPerpetualAccount, config: EndpointConfig, accountId: number, chainId: string, description?: string, nonce?: number, quoteId?: string): WithdrawalRequest;
|
|
12
|
+
//# sourceMappingURL=withdrawal-object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawal-object.d.ts","sourceRoot":"","sources":["../../src/perpetual/withdrawal-object.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,cAAc,EAAkB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAwC,MAAM,eAAe,CAAC;AAexF;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,qBAAqB,EAAE,MAAM,EAC7B,YAAY,EAAE,qBAAqB,EACnC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,GACf,iBAAiB,CA+CnB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Withdrawal object creation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createWithdrawalObject = createWithdrawalObject;
|
|
7
|
+
const withdrawals_1 = require("./withdrawals");
|
|
8
|
+
const model_1 = require("../utils/model");
|
|
9
|
+
const signer_1 = require("./crypto/signer");
|
|
10
|
+
const nonce_1 = require("../utils/nonce");
|
|
11
|
+
const date_1 = require("../utils/date");
|
|
12
|
+
/**
|
|
13
|
+
* Calculate expiration timestamp (15 days from now)
|
|
14
|
+
*/
|
|
15
|
+
function calcExpirationTimestamp() {
|
|
16
|
+
const expireTime = new Date((0, date_1.utcNow)());
|
|
17
|
+
expireTime.setDate(expireTime.getDate() + 15);
|
|
18
|
+
return Math.ceil(expireTime.getTime() / 1000);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create withdrawal object
|
|
22
|
+
*/
|
|
23
|
+
function createWithdrawalObject(amount, recipientStarkAddress, starkAccount, config, accountId, chainId, description, nonce, quoteId) {
|
|
24
|
+
const expirationTimestamp = calcExpirationTimestamp();
|
|
25
|
+
// Scale amount by decimals
|
|
26
|
+
const scaledAmount = amount.mul(Math.pow(10, config.collateralDecimals));
|
|
27
|
+
const starkAmount = Math.round(scaledAmount.toNumber());
|
|
28
|
+
const starknetDomain = config.starknetDomain;
|
|
29
|
+
const finalNonce = nonce || (0, nonce_1.generateNonce)();
|
|
30
|
+
const withdrawalHash = (0, signer_1.getWithdrawalMsgHash)({
|
|
31
|
+
recipientHex: recipientStarkAddress.startsWith('0x')
|
|
32
|
+
? recipientStarkAddress
|
|
33
|
+
: '0x' + recipientStarkAddress,
|
|
34
|
+
positionId: starkAccount.getVault(),
|
|
35
|
+
amount: starkAmount.toString(),
|
|
36
|
+
expiration: expirationTimestamp,
|
|
37
|
+
salt: finalNonce.toString(),
|
|
38
|
+
userPublicKey: '0x' + starkAccount.getPublicKey().toString(16),
|
|
39
|
+
domainName: starknetDomain.name,
|
|
40
|
+
domainVersion: starknetDomain.version,
|
|
41
|
+
domainChainId: starknetDomain.chainId,
|
|
42
|
+
domainRevision: starknetDomain.revision,
|
|
43
|
+
collateralId: config.collateralAssetOnChainId,
|
|
44
|
+
});
|
|
45
|
+
const [transferSignatureR, transferSignatureS] = starkAccount.sign(withdrawalHash);
|
|
46
|
+
const settlement = new withdrawals_1.StarkWithdrawalSettlement(recipientStarkAddress.startsWith('0x') ? recipientStarkAddress : `0x${recipientStarkAddress}`, // Hex string
|
|
47
|
+
starkAccount.getVault(), config.collateralAssetOnChainId, // Already a hex string
|
|
48
|
+
starkAmount, new withdrawals_1.Timestamp(expirationTimestamp), finalNonce, new model_1.SettlementSignatureModel(transferSignatureR, transferSignatureS));
|
|
49
|
+
return new withdrawals_1.WithdrawalRequest(accountId, amount, settlement, chainId, 'USD', description, quoteId);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=withdrawal-object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawal-object.js","sourceRoot":"","sources":["../../src/perpetual/withdrawal-object.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAuBH,wDAyDC;AA3ED,+CAAwF;AACxF,0CAA0D;AAC1D,4CAAuD;AACvD,0CAA+C;AAC/C,wCAAuC;AAEvC;;GAEG;AACH,SAAS,uBAAuB;IAC9B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAA,aAAM,GAAE,CAAC,CAAC;IACtC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CACpC,MAAe,EACf,qBAA6B,EAC7B,YAAmC,EACnC,MAAsB,EACtB,SAAiB,EACjB,OAAe,EACf,WAAoB,EACpB,KAAc,EACd,OAAgB;IAEhB,MAAM,mBAAmB,GAAG,uBAAuB,EAAE,CAAC;IAEtD,2BAA2B;IAC3B,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAExD,MAAM,cAAc,GAAmB,MAAM,CAAC,cAAc,CAAC;IAC7D,MAAM,UAAU,GAAG,KAAK,IAAI,IAAA,qBAAa,GAAE,CAAC;IAE5C,MAAM,cAAc,GAAG,IAAA,6BAAoB,EAAC;QAC1C,YAAY,EAAE,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC;YAClD,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,IAAI,GAAG,qBAAqB;QAChC,UAAU,EAAE,YAAY,CAAC,QAAQ,EAAE;QACnC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE;QAC9B,UAAU,EAAE,mBAAmB;QAC/B,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE;QAC3B,aAAa,EAAE,IAAI,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9D,UAAU,EAAE,cAAc,CAAC,IAAI;QAC/B,aAAa,EAAE,cAAc,CAAC,OAAO;QACrC,aAAa,EAAE,cAAc,CAAC,OAAO;QACrC,cAAc,EAAE,cAAc,CAAC,QAAQ;QACvC,YAAY,EAAE,MAAM,CAAC,wBAAwB;KAC9C,CAAC,CAAC;IAEH,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEnF,MAAM,UAAU,GAAG,IAAI,uCAAyB,CAC9C,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,qBAAqB,EAAE,EAAE,aAAa;IAC5G,YAAY,CAAC,QAAQ,EAAE,EACvB,MAAM,CAAC,wBAAwB,EAAE,uBAAuB;IACxD,WAAW,EACX,IAAI,uBAAS,CAAC,mBAAmB,CAAC,EAClC,UAAU,EACV,IAAI,gCAAwB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CACrE,CAAC;IAEF,OAAO,IAAI,+BAAiB,CAC1B,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,EACP,KAAK,EACL,WAAW,EACX,OAAO,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Withdrawal models
|
|
3
|
+
*/
|
|
4
|
+
import Decimal from 'decimal.js';
|
|
5
|
+
import { X10BaseModel, HexValue } from '../utils/model';
|
|
6
|
+
import { SettlementSignatureModel } from '../utils/model';
|
|
7
|
+
/**
|
|
8
|
+
* Timestamp model
|
|
9
|
+
*/
|
|
10
|
+
export declare class Timestamp extends X10BaseModel {
|
|
11
|
+
seconds: number;
|
|
12
|
+
constructor(seconds: number);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Stark withdrawal settlement
|
|
16
|
+
*/
|
|
17
|
+
export declare class StarkWithdrawalSettlement extends X10BaseModel {
|
|
18
|
+
recipient: HexValue;
|
|
19
|
+
positionId: number;
|
|
20
|
+
collateralId: HexValue;
|
|
21
|
+
amount: number;
|
|
22
|
+
expiration: Timestamp;
|
|
23
|
+
salt: number;
|
|
24
|
+
signature: SettlementSignatureModel;
|
|
25
|
+
constructor(recipient: HexValue, positionId: number, collateralId: HexValue, amount: number, expiration: Timestamp, salt: number, signature: SettlementSignatureModel);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Withdrawal request model
|
|
29
|
+
*/
|
|
30
|
+
export declare class WithdrawalRequest extends X10BaseModel {
|
|
31
|
+
accountId: number;
|
|
32
|
+
amount: Decimal;
|
|
33
|
+
description?: string;
|
|
34
|
+
settlement: StarkWithdrawalSettlement;
|
|
35
|
+
chainId: string;
|
|
36
|
+
quoteId?: string;
|
|
37
|
+
asset: string;
|
|
38
|
+
constructor(accountId: number, amount: Decimal, settlement: StarkWithdrawalSettlement, chainId: string, asset: string, description?: string, quoteId?: string);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=withdrawals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawals.d.ts","sourceRoot":"","sources":["../../src/perpetual/withdrawals.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,EAAE,MAAM,CAAC;gBAEJ,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAY;IACzD,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,QAAQ,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,SAAS,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,wBAAwB,CAAC;gBAGlC,SAAS,EAAE,QAAQ,EACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,QAAQ,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,SAAS,EACrB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,wBAAwB;CAWtC;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,yBAAyB,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;gBAGZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,OAAO,EACf,UAAU,EAAE,yBAAyB,EACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM;CAWnB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Withdrawal models
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.WithdrawalRequest = exports.StarkWithdrawalSettlement = exports.Timestamp = void 0;
|
|
7
|
+
const model_1 = require("../utils/model");
|
|
8
|
+
/**
|
|
9
|
+
* Timestamp model
|
|
10
|
+
*/
|
|
11
|
+
class Timestamp extends model_1.X10BaseModel {
|
|
12
|
+
seconds;
|
|
13
|
+
constructor(seconds) {
|
|
14
|
+
super();
|
|
15
|
+
this.seconds = seconds;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.Timestamp = Timestamp;
|
|
19
|
+
/**
|
|
20
|
+
* Stark withdrawal settlement
|
|
21
|
+
*/
|
|
22
|
+
class StarkWithdrawalSettlement extends model_1.X10BaseModel {
|
|
23
|
+
recipient;
|
|
24
|
+
positionId;
|
|
25
|
+
collateralId;
|
|
26
|
+
amount;
|
|
27
|
+
expiration;
|
|
28
|
+
salt;
|
|
29
|
+
signature;
|
|
30
|
+
constructor(recipient, positionId, collateralId, amount, expiration, salt, signature) {
|
|
31
|
+
super();
|
|
32
|
+
this.recipient = recipient;
|
|
33
|
+
this.positionId = positionId;
|
|
34
|
+
this.collateralId = collateralId;
|
|
35
|
+
this.amount = amount;
|
|
36
|
+
this.expiration = expiration;
|
|
37
|
+
this.salt = salt;
|
|
38
|
+
this.signature = signature;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.StarkWithdrawalSettlement = StarkWithdrawalSettlement;
|
|
42
|
+
/**
|
|
43
|
+
* Withdrawal request model
|
|
44
|
+
*/
|
|
45
|
+
class WithdrawalRequest extends model_1.X10BaseModel {
|
|
46
|
+
accountId;
|
|
47
|
+
amount;
|
|
48
|
+
description;
|
|
49
|
+
settlement;
|
|
50
|
+
chainId;
|
|
51
|
+
quoteId;
|
|
52
|
+
asset;
|
|
53
|
+
constructor(accountId, amount, settlement, chainId, asset, description, quoteId) {
|
|
54
|
+
super();
|
|
55
|
+
this.accountId = accountId;
|
|
56
|
+
this.amount = amount;
|
|
57
|
+
this.description = description;
|
|
58
|
+
this.settlement = settlement;
|
|
59
|
+
this.chainId = chainId;
|
|
60
|
+
this.quoteId = quoteId;
|
|
61
|
+
this.asset = asset;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.WithdrawalRequest = WithdrawalRequest;
|
|
65
|
+
//# sourceMappingURL=withdrawals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawals.js","sourceRoot":"","sources":["../../src/perpetual/withdrawals.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,0CAAwD;AAGxD;;GAEG;AACH,MAAa,SAAU,SAAQ,oBAAY;IACzC,OAAO,CAAS;IAEhB,YAAY,OAAe;QACzB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAPD,8BAOC;AAED;;GAEG;AACH,MAAa,yBAA0B,SAAQ,oBAAY;IACzD,SAAS,CAAW;IACpB,UAAU,CAAS;IACnB,YAAY,CAAW;IACvB,MAAM,CAAS;IACf,UAAU,CAAY;IACtB,IAAI,CAAS;IACb,SAAS,CAA2B;IAEpC,YACE,SAAmB,EACnB,UAAkB,EAClB,YAAsB,EACtB,MAAc,EACd,UAAqB,EACrB,IAAY,EACZ,SAAmC;QAEnC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AA3BD,8DA2BC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,oBAAY;IACjD,SAAS,CAAS;IAClB,MAAM,CAAU;IAChB,WAAW,CAAU;IACrB,UAAU,CAA4B;IACtC,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,KAAK,CAAS;IAEd,YACE,SAAiB,EACjB,MAAe,EACf,UAAqC,EACrC,OAAe,EACf,KAAa,EACb,WAAoB,EACpB,OAAgB;QAEhB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AA3BD,8CA2BC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Date and time utility functions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get current UTC datetime
|
|
6
|
+
*/
|
|
7
|
+
export declare function utcNow(): Date;
|
|
8
|
+
/**
|
|
9
|
+
* Convert Date to epoch milliseconds
|
|
10
|
+
* Uses Math.ceil to ensure consistent rounding behavior
|
|
11
|
+
*/
|
|
12
|
+
export declare function toEpochMillis(value: Date): number;
|
|
13
|
+
//# sourceMappingURL=date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,MAAM,IAAI,IAAI,CAE7B;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAEjD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Date and time utility functions
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.utcNow = utcNow;
|
|
7
|
+
exports.toEpochMillis = toEpochMillis;
|
|
8
|
+
/**
|
|
9
|
+
* Get current UTC datetime
|
|
10
|
+
*/
|
|
11
|
+
function utcNow() {
|
|
12
|
+
return new Date();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Convert Date to epoch milliseconds
|
|
16
|
+
* Uses Math.ceil to ensure consistent rounding behavior
|
|
17
|
+
*/
|
|
18
|
+
function toEpochMillis(value) {
|
|
19
|
+
return Math.ceil(value.getTime());
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=date.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAKH,wBAEC;AAMD,sCAEC;AAbD;;GAEG;AACH,SAAgB,MAAM;IACpB,OAAO,IAAI,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,KAAW;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment variable utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get environment variable or throw error
|
|
6
|
+
*/
|
|
7
|
+
export declare function getEnv(name: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Get environment variable or return default
|
|
10
|
+
*/
|
|
11
|
+
export declare function getEnvOptional(name: string, defaultValue?: string): string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Get environment variable as number
|
|
14
|
+
*/
|
|
15
|
+
export declare function getEnvNumber(name: string): number;
|
|
16
|
+
/**
|
|
17
|
+
* Get environment variable as number or return default
|
|
18
|
+
*/
|
|
19
|
+
export declare function getEnvNumberOptional(name: string, defaultValue?: number): number | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Get environment variable as boolean
|
|
22
|
+
*/
|
|
23
|
+
export declare function getEnvBoolean(name: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Get environment variable as boolean or return default
|
|
26
|
+
*/
|
|
27
|
+
export declare function getEnvBooleanOptional(name: string, defaultValue?: boolean): boolean | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Load environment variables from .env.local (if exists)
|
|
30
|
+
* Note: This requires dotenv package
|
|
31
|
+
*/
|
|
32
|
+
export declare function loadEnv(): void;
|
|
33
|
+
/**
|
|
34
|
+
* X10 SDK environment configuration
|
|
35
|
+
*/
|
|
36
|
+
export interface X10EnvConfig {
|
|
37
|
+
apiKey: string;
|
|
38
|
+
publicKey: string;
|
|
39
|
+
privateKey: string;
|
|
40
|
+
vaultId: number;
|
|
41
|
+
builderId?: number;
|
|
42
|
+
l1PrivateKey?: string;
|
|
43
|
+
environment?: 'testnet' | 'mainnet';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get X10 SDK environment configuration
|
|
47
|
+
* Supports both X10_* and alternative naming conventions
|
|
48
|
+
*/
|
|
49
|
+
export declare function getX10EnvConfig(requirePrivateApi?: boolean): X10EnvConfig;
|
|
50
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM3C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU5F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAO/F;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CA6B9B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,iBAAiB,GAAE,OAAc,GAAG,YAAY,CAiD/E"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Environment variable utilities
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getEnv = getEnv;
|
|
7
|
+
exports.getEnvOptional = getEnvOptional;
|
|
8
|
+
exports.getEnvNumber = getEnvNumber;
|
|
9
|
+
exports.getEnvNumberOptional = getEnvNumberOptional;
|
|
10
|
+
exports.getEnvBoolean = getEnvBoolean;
|
|
11
|
+
exports.getEnvBooleanOptional = getEnvBooleanOptional;
|
|
12
|
+
exports.loadEnv = loadEnv;
|
|
13
|
+
exports.getX10EnvConfig = getX10EnvConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Get environment variable or throw error
|
|
16
|
+
*/
|
|
17
|
+
function getEnv(name) {
|
|
18
|
+
const value = process.env[name];
|
|
19
|
+
if (!value) {
|
|
20
|
+
throw new Error(`${name} is not set in environment variables`);
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get environment variable or return default
|
|
26
|
+
*/
|
|
27
|
+
function getEnvOptional(name, defaultValue) {
|
|
28
|
+
return process.env[name] || defaultValue;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get environment variable as number
|
|
32
|
+
*/
|
|
33
|
+
function getEnvNumber(name) {
|
|
34
|
+
const value = getEnv(name);
|
|
35
|
+
const num = parseInt(value, 10);
|
|
36
|
+
if (isNaN(num)) {
|
|
37
|
+
throw new Error(`${name} must be a valid number, got: ${value}`);
|
|
38
|
+
}
|
|
39
|
+
return num;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get environment variable as number or return default
|
|
43
|
+
*/
|
|
44
|
+
function getEnvNumberOptional(name, defaultValue) {
|
|
45
|
+
const value = process.env[name];
|
|
46
|
+
if (!value) {
|
|
47
|
+
return defaultValue;
|
|
48
|
+
}
|
|
49
|
+
const num = parseInt(value, 10);
|
|
50
|
+
if (isNaN(num)) {
|
|
51
|
+
throw new Error(`${name} must be a valid number, got: ${value}`);
|
|
52
|
+
}
|
|
53
|
+
return num;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get environment variable as boolean
|
|
57
|
+
*/
|
|
58
|
+
function getEnvBoolean(name) {
|
|
59
|
+
const value = getEnv(name).toLowerCase();
|
|
60
|
+
return value === 'true' || value === '1' || value === 'yes';
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get environment variable as boolean or return default
|
|
64
|
+
*/
|
|
65
|
+
function getEnvBooleanOptional(name, defaultValue) {
|
|
66
|
+
const value = process.env[name];
|
|
67
|
+
if (!value) {
|
|
68
|
+
return defaultValue;
|
|
69
|
+
}
|
|
70
|
+
const lowerValue = value.toLowerCase();
|
|
71
|
+
return lowerValue === 'true' || lowerValue === '1' || lowerValue === 'yes';
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Load environment variables from .env.local (if exists)
|
|
75
|
+
* Note: This requires dotenv package
|
|
76
|
+
*/
|
|
77
|
+
function loadEnv() {
|
|
78
|
+
try {
|
|
79
|
+
// Try to load dotenv if available
|
|
80
|
+
const dotenv = require('dotenv');
|
|
81
|
+
const path = require('path');
|
|
82
|
+
const fs = require('fs');
|
|
83
|
+
// Try multiple paths
|
|
84
|
+
const possiblePaths = [
|
|
85
|
+
path.join(process.cwd(), '.env.local'),
|
|
86
|
+
path.join(process.cwd(), '.env'),
|
|
87
|
+
path.join(__dirname, '../../.env.local'),
|
|
88
|
+
path.join(__dirname, '../../.env'),
|
|
89
|
+
];
|
|
90
|
+
for (const envPath of possiblePaths) {
|
|
91
|
+
if (fs.existsSync(envPath)) {
|
|
92
|
+
const result = dotenv.config({ path: envPath });
|
|
93
|
+
if (!result.error) {
|
|
94
|
+
break; // Successfully loaded
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Also try default dotenv.config() which looks in current working directory
|
|
99
|
+
dotenv.config();
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
// dotenv not installed, skip
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get X10 SDK environment configuration
|
|
107
|
+
* Supports both X10_* and alternative naming conventions
|
|
108
|
+
*/
|
|
109
|
+
function getX10EnvConfig(requirePrivateApi = true) {
|
|
110
|
+
loadEnv();
|
|
111
|
+
// Support both X10_* and alternative naming conventions
|
|
112
|
+
const apiKey = process.env.X10_API_KEY || process.env.API_KEY;
|
|
113
|
+
const publicKey = process.env.X10_PUBLIC_KEY || process.env.X10_Stark_Key_Public || process.env.Stark_Key_Public;
|
|
114
|
+
const privateKey = process.env.X10_PRIVATE_KEY || process.env.X10_Stark_Key_Private || process.env.Stark_Key_Private;
|
|
115
|
+
const vaultId = process.env.X10_VAULT_ID || process.env.X10_Vault_Number || process.env.Vault_Number;
|
|
116
|
+
const builderId = process.env.X10_BUILDER_ID || process.env.X10_Client_ID || process.env.Client_ID;
|
|
117
|
+
const l1PrivateKey = process.env.L1_PRIVATE_KEY;
|
|
118
|
+
const environment = (process.env.ENVIRONMENT || 'testnet');
|
|
119
|
+
if (requirePrivateApi) {
|
|
120
|
+
if (!apiKey)
|
|
121
|
+
throw new Error('API_KEY or X10_API_KEY is not set');
|
|
122
|
+
if (!publicKey)
|
|
123
|
+
throw new Error('Stark_Key_Public or X10_PUBLIC_KEY is not set');
|
|
124
|
+
if (!privateKey)
|
|
125
|
+
throw new Error('Stark_Key_Private or X10_PRIVATE_KEY is not set');
|
|
126
|
+
if (!vaultId)
|
|
127
|
+
throw new Error('Vault_Number or X10_VAULT_ID is not set');
|
|
128
|
+
// Ensure keys have 0x prefix
|
|
129
|
+
const normalizedPublicKey = publicKey.startsWith('0x') ? publicKey : `0x${publicKey}`;
|
|
130
|
+
const normalizedPrivateKey = privateKey.startsWith('0x') ? privateKey : `0x${privateKey}`;
|
|
131
|
+
if (!normalizedPublicKey.match(/^0x[0-9a-fA-F]+$/)) {
|
|
132
|
+
throw new Error('Public key must be a valid hex string');
|
|
133
|
+
}
|
|
134
|
+
if (!normalizedPrivateKey.match(/^0x[0-9a-fA-F]+$/)) {
|
|
135
|
+
throw new Error('Private key must be a valid hex string');
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
apiKey: apiKey,
|
|
139
|
+
publicKey: normalizedPublicKey,
|
|
140
|
+
privateKey: normalizedPrivateKey,
|
|
141
|
+
vaultId: parseInt(vaultId, 10),
|
|
142
|
+
builderId: builderId ? parseInt(builderId, 10) : undefined,
|
|
143
|
+
l1PrivateKey: l1PrivateKey || undefined,
|
|
144
|
+
environment,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
apiKey: apiKey || '',
|
|
149
|
+
publicKey: publicKey ? (publicKey.startsWith('0x') ? publicKey : `0x${publicKey}`) : '',
|
|
150
|
+
privateKey: privateKey ? (privateKey.startsWith('0x') ? privateKey : `0x${privateKey}`) : '',
|
|
151
|
+
vaultId: vaultId ? parseInt(vaultId, 10) : 0,
|
|
152
|
+
builderId: builderId ? parseInt(builderId, 10) : undefined,
|
|
153
|
+
l1PrivateKey: l1PrivateKey || undefined,
|
|
154
|
+
environment,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"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"}
|