extended-typescript-sdk 0.0.7 → 0.8.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.
Files changed (255) hide show
  1. package/dist/cjs/config.d.ts +2 -2
  2. package/dist/cjs/config.js +1 -1
  3. package/dist/cjs/index.d.ts +3 -1
  4. package/dist/cjs/index.d.ts.map +1 -1
  5. package/dist/cjs/index.js +12 -3
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/cjs/perpetual/amounts.d.ts.map +1 -1
  8. package/dist/cjs/perpetual/amounts.js +1 -8
  9. package/dist/cjs/perpetual/amounts.js.map +1 -1
  10. package/dist/cjs/perpetual/assets.d.ts +1 -1
  11. package/dist/cjs/perpetual/assets.d.ts.map +1 -1
  12. package/dist/cjs/perpetual/assets.js +2 -3
  13. package/dist/cjs/perpetual/assets.js.map +1 -1
  14. package/dist/cjs/perpetual/crypto/signer.d.ts +2 -0
  15. package/dist/cjs/perpetual/crypto/signer.d.ts.map +1 -1
  16. package/dist/cjs/perpetual/crypto/signer.js +11 -1
  17. package/dist/cjs/perpetual/crypto/signer.js.map +1 -1
  18. package/dist/cjs/perpetual/order-object-settlement.d.ts +2 -1
  19. package/dist/cjs/perpetual/order-object-settlement.d.ts.map +1 -1
  20. package/dist/cjs/perpetual/order-object-settlement.js +3 -1
  21. package/dist/cjs/perpetual/order-object-settlement.js.map +1 -1
  22. package/dist/cjs/perpetual/order-object.d.ts.map +1 -1
  23. package/dist/cjs/perpetual/order-object.js +14 -2
  24. package/dist/cjs/perpetual/order-object.js.map +1 -1
  25. package/dist/cjs/perpetual/orderbook.d.ts +48 -0
  26. package/dist/cjs/perpetual/orderbook.d.ts.map +1 -0
  27. package/dist/cjs/perpetual/orderbook.js +266 -0
  28. package/dist/cjs/perpetual/orderbook.js.map +1 -0
  29. package/dist/cjs/perpetual/orders.d.ts +4 -2
  30. package/dist/cjs/perpetual/orders.d.ts.map +1 -1
  31. package/dist/cjs/perpetual/orders.js +3 -1
  32. package/dist/cjs/perpetual/orders.js.map +1 -1
  33. package/dist/cjs/perpetual/simple-client/blocking-trading-client.d.ts +59 -0
  34. package/dist/cjs/perpetual/simple-client/blocking-trading-client.d.ts.map +1 -0
  35. package/dist/cjs/perpetual/simple-client/blocking-trading-client.js +198 -0
  36. package/dist/cjs/perpetual/simple-client/blocking-trading-client.js.map +1 -0
  37. package/dist/config.d.ts +11 -0
  38. package/dist/config.d.ts.map +1 -0
  39. package/dist/config.js +15 -0
  40. package/dist/config.js.map +1 -0
  41. package/dist/errors.d.ts +25 -0
  42. package/dist/errors.d.ts.map +1 -0
  43. package/dist/errors.js +45 -0
  44. package/dist/errors.js.map +1 -0
  45. package/dist/esm/config.d.ts +2 -2
  46. package/dist/esm/config.js +1 -1
  47. package/dist/esm/index.d.ts +3 -1
  48. package/dist/esm/index.d.ts.map +1 -1
  49. package/dist/esm/index.js +4 -1
  50. package/dist/esm/index.js.map +1 -1
  51. package/dist/esm/perpetual/amounts.d.ts.map +1 -1
  52. package/dist/esm/perpetual/amounts.js +1 -8
  53. package/dist/esm/perpetual/amounts.js.map +1 -1
  54. package/dist/esm/perpetual/assets.d.ts +1 -1
  55. package/dist/esm/perpetual/assets.d.ts.map +1 -1
  56. package/dist/esm/perpetual/assets.js +2 -3
  57. package/dist/esm/perpetual/assets.js.map +1 -1
  58. package/dist/esm/perpetual/crypto/signer.d.ts +2 -0
  59. package/dist/esm/perpetual/crypto/signer.d.ts.map +1 -1
  60. package/dist/esm/perpetual/crypto/signer.js +10 -1
  61. package/dist/esm/perpetual/crypto/signer.js.map +1 -1
  62. package/dist/esm/perpetual/order-object-settlement.d.ts +2 -1
  63. package/dist/esm/perpetual/order-object-settlement.d.ts.map +1 -1
  64. package/dist/esm/perpetual/order-object-settlement.js +3 -1
  65. package/dist/esm/perpetual/order-object-settlement.js.map +1 -1
  66. package/dist/esm/perpetual/order-object.d.ts.map +1 -1
  67. package/dist/esm/perpetual/order-object.js +14 -2
  68. package/dist/esm/perpetual/order-object.js.map +1 -1
  69. package/dist/esm/perpetual/orderbook.d.ts +48 -0
  70. package/dist/esm/perpetual/orderbook.d.ts.map +1 -0
  71. package/dist/esm/perpetual/orderbook.js +257 -0
  72. package/dist/esm/perpetual/orderbook.js.map +1 -0
  73. package/dist/esm/perpetual/orders.d.ts +4 -2
  74. package/dist/esm/perpetual/orders.d.ts.map +1 -1
  75. package/dist/esm/perpetual/orders.js +3 -1
  76. package/dist/esm/perpetual/orders.js.map +1 -1
  77. package/dist/esm/perpetual/simple-client/blocking-trading-client.d.ts +59 -0
  78. package/dist/esm/perpetual/simple-client/blocking-trading-client.d.ts.map +1 -0
  79. package/dist/esm/perpetual/simple-client/blocking-trading-client.js +192 -0
  80. package/dist/esm/perpetual/simple-client/blocking-trading-client.js.map +1 -0
  81. package/dist/index.d.ts +42 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +155 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/perpetual/accounts.d.ts +147 -0
  86. package/dist/perpetual/accounts.d.ts.map +1 -0
  87. package/dist/perpetual/accounts.js +236 -0
  88. package/dist/perpetual/accounts.js.map +1 -0
  89. package/dist/perpetual/amounts.d.ts +41 -0
  90. package/dist/perpetual/amounts.d.ts.map +1 -0
  91. package/dist/perpetual/amounts.js +79 -0
  92. package/dist/perpetual/amounts.js.map +1 -0
  93. package/dist/perpetual/assets.d.ts +74 -0
  94. package/dist/perpetual/assets.d.ts.map +1 -0
  95. package/dist/perpetual/assets.js +119 -0
  96. package/dist/perpetual/assets.js.map +1 -0
  97. package/dist/perpetual/bridges.d.ts +29 -0
  98. package/dist/perpetual/bridges.d.ts.map +1 -0
  99. package/dist/perpetual/bridges.js +45 -0
  100. package/dist/perpetual/bridges.js.map +1 -0
  101. package/dist/perpetual/candles.d.ts +26 -0
  102. package/dist/perpetual/candles.d.ts.map +1 -0
  103. package/dist/perpetual/candles.js +29 -0
  104. package/dist/perpetual/candles.js.map +1 -0
  105. package/dist/perpetual/clients.d.ts +15 -0
  106. package/dist/perpetual/clients.d.ts.map +1 -0
  107. package/dist/perpetual/clients.js +25 -0
  108. package/dist/perpetual/clients.js.map +1 -0
  109. package/dist/perpetual/configuration.d.ts +39 -0
  110. package/dist/perpetual/configuration.d.ts.map +1 -0
  111. package/dist/perpetual/configuration.js +61 -0
  112. package/dist/perpetual/configuration.js.map +1 -0
  113. package/dist/perpetual/crypto/signer.d.ts +166 -0
  114. package/dist/perpetual/crypto/signer.d.ts.map +1 -0
  115. package/dist/perpetual/crypto/signer.js +342 -0
  116. package/dist/perpetual/crypto/signer.js.map +1 -0
  117. package/dist/perpetual/custom-signer.d.ts +51 -0
  118. package/dist/perpetual/custom-signer.d.ts.map +1 -0
  119. package/dist/perpetual/custom-signer.js +18 -0
  120. package/dist/perpetual/custom-signer.js.map +1 -0
  121. package/dist/perpetual/fees.d.ts +20 -0
  122. package/dist/perpetual/fees.d.ts.map +1 -0
  123. package/dist/perpetual/fees.js +35 -0
  124. package/dist/perpetual/fees.js.map +1 -0
  125. package/dist/perpetual/funding-rates.d.ts +15 -0
  126. package/dist/perpetual/funding-rates.d.ts.map +1 -0
  127. package/dist/perpetual/funding-rates.js +23 -0
  128. package/dist/perpetual/funding-rates.js.map +1 -0
  129. package/dist/perpetual/markets.d.ts +83 -0
  130. package/dist/perpetual/markets.d.ts.map +1 -0
  131. package/dist/perpetual/markets.js +124 -0
  132. package/dist/perpetual/markets.js.map +1 -0
  133. package/dist/perpetual/order-object-settlement.d.ts +44 -0
  134. package/dist/perpetual/order-object-settlement.d.ts.map +1 -0
  135. package/dist/perpetual/order-object-settlement.js +123 -0
  136. package/dist/perpetual/order-object-settlement.js.map +1 -0
  137. package/dist/perpetual/order-object.d.ts +38 -0
  138. package/dist/perpetual/order-object.d.ts.map +1 -0
  139. package/dist/perpetual/order-object.js +102 -0
  140. package/dist/perpetual/order-object.js.map +1 -0
  141. package/dist/perpetual/orderbook.d.ts +48 -0
  142. package/dist/perpetual/orderbook.d.ts.map +1 -0
  143. package/dist/perpetual/orderbook.js +265 -0
  144. package/dist/perpetual/orderbook.js.map +1 -0
  145. package/dist/perpetual/orderbooks.d.ts +23 -0
  146. package/dist/perpetual/orderbooks.d.ts.map +1 -0
  147. package/dist/perpetual/orderbooks.js +36 -0
  148. package/dist/perpetual/orderbooks.js.map +1 -0
  149. package/dist/perpetual/orders.d.ts +209 -0
  150. package/dist/perpetual/orders.d.ts.map +1 -0
  151. package/dist/perpetual/orders.js +268 -0
  152. package/dist/perpetual/orders.js.map +1 -0
  153. package/dist/perpetual/positions.d.ts +80 -0
  154. package/dist/perpetual/positions.d.ts.map +1 -0
  155. package/dist/perpetual/positions.js +94 -0
  156. package/dist/perpetual/positions.js.map +1 -0
  157. package/dist/perpetual/simple-client/blocking-trading-client.d.ts +59 -0
  158. package/dist/perpetual/simple-client/blocking-trading-client.d.ts.map +1 -0
  159. package/dist/perpetual/simple-client/blocking-trading-client.js +197 -0
  160. package/dist/perpetual/simple-client/blocking-trading-client.js.map +1 -0
  161. package/dist/perpetual/stream-client/perpetual-stream-connection.d.ts +47 -0
  162. package/dist/perpetual/stream-client/perpetual-stream-connection.d.ts.map +1 -0
  163. package/dist/perpetual/stream-client/perpetual-stream-connection.js +125 -0
  164. package/dist/perpetual/stream-client/perpetual-stream-connection.js.map +1 -0
  165. package/dist/perpetual/stream-client/stream-client.d.ts +62 -0
  166. package/dist/perpetual/stream-client/stream-client.d.ts.map +1 -0
  167. package/dist/perpetual/stream-client/stream-client.js +107 -0
  168. package/dist/perpetual/stream-client/stream-client.js.map +1 -0
  169. package/dist/perpetual/trades.d.ts +44 -0
  170. package/dist/perpetual/trades.d.ts.map +1 -0
  171. package/dist/perpetual/trades.js +48 -0
  172. package/dist/perpetual/trades.js.map +1 -0
  173. package/dist/perpetual/trading-client/account-module.d.ts +192 -0
  174. package/dist/perpetual/trading-client/account-module.d.ts.map +1 -0
  175. package/dist/perpetual/trading-client/account-module.js +359 -0
  176. package/dist/perpetual/trading-client/account-module.js.map +1 -0
  177. package/dist/perpetual/trading-client/base-module.d.ts +27 -0
  178. package/dist/perpetual/trading-client/base-module.d.ts.map +1 -0
  179. package/dist/perpetual/trading-client/base-module.js +49 -0
  180. package/dist/perpetual/trading-client/base-module.js.map +1 -0
  181. package/dist/perpetual/trading-client/info-module.d.ts +24 -0
  182. package/dist/perpetual/trading-client/info-module.d.ts.map +1 -0
  183. package/dist/perpetual/trading-client/info-module.js +33 -0
  184. package/dist/perpetual/trading-client/info-module.js.map +1 -0
  185. package/dist/perpetual/trading-client/markets-information-module.d.ts +53 -0
  186. package/dist/perpetual/trading-client/markets-information-module.d.ts.map +1 -0
  187. package/dist/perpetual/trading-client/markets-information-module.js +106 -0
  188. package/dist/perpetual/trading-client/markets-information-module.js.map +1 -0
  189. package/dist/perpetual/trading-client/order-management-module.d.ts +40 -0
  190. package/dist/perpetual/trading-client/order-management-module.d.ts.map +1 -0
  191. package/dist/perpetual/trading-client/order-management-module.js +71 -0
  192. package/dist/perpetual/trading-client/order-management-module.js.map +1 -0
  193. package/dist/perpetual/trading-client/testnet-module.d.ts +27 -0
  194. package/dist/perpetual/trading-client/testnet-module.d.ts.map +1 -0
  195. package/dist/perpetual/trading-client/testnet-module.js +45 -0
  196. package/dist/perpetual/trading-client/testnet-module.js.map +1 -0
  197. package/dist/perpetual/trading-client/trading-client.d.ts +75 -0
  198. package/dist/perpetual/trading-client/trading-client.d.ts.map +1 -0
  199. package/dist/perpetual/trading-client/trading-client.js +115 -0
  200. package/dist/perpetual/trading-client/trading-client.js.map +1 -0
  201. package/dist/perpetual/transfer-object.d.ts +12 -0
  202. package/dist/perpetual/transfer-object.d.ts.map +1 -0
  203. package/dist/perpetual/transfer-object.js +57 -0
  204. package/dist/perpetual/transfer-object.js.map +1 -0
  205. package/dist/perpetual/transfers.d.ts +54 -0
  206. package/dist/perpetual/transfers.d.ts.map +1 -0
  207. package/dist/perpetual/transfers.js +90 -0
  208. package/dist/perpetual/transfers.js.map +1 -0
  209. package/dist/perpetual/user-client/onboarding.d.ts +101 -0
  210. package/dist/perpetual/user-client/onboarding.d.ts.map +1 -0
  211. package/dist/perpetual/user-client/onboarding.js +247 -0
  212. package/dist/perpetual/user-client/onboarding.js.map +1 -0
  213. package/dist/perpetual/user-client/user-client.d.ts +45 -0
  214. package/dist/perpetual/user-client/user-client.d.ts.map +1 -0
  215. package/dist/perpetual/user-client/user-client.js +185 -0
  216. package/dist/perpetual/user-client/user-client.js.map +1 -0
  217. package/dist/perpetual/withdrawal-object.d.ts +12 -0
  218. package/dist/perpetual/withdrawal-object.d.ts.map +1 -0
  219. package/dist/perpetual/withdrawal-object.js +51 -0
  220. package/dist/perpetual/withdrawal-object.js.map +1 -0
  221. package/dist/perpetual/withdrawals.d.ts +40 -0
  222. package/dist/perpetual/withdrawals.d.ts.map +1 -0
  223. package/dist/perpetual/withdrawals.js +65 -0
  224. package/dist/perpetual/withdrawals.js.map +1 -0
  225. package/dist/utils/date.d.ts +13 -0
  226. package/dist/utils/date.d.ts.map +1 -0
  227. package/dist/utils/date.js +21 -0
  228. package/dist/utils/date.js.map +1 -0
  229. package/dist/utils/env.d.ts +50 -0
  230. package/dist/utils/env.d.ts.map +1 -0
  231. package/dist/utils/env.js +157 -0
  232. package/dist/utils/env.js.map +1 -0
  233. package/dist/utils/http.d.ts +98 -0
  234. package/dist/utils/http.d.ts.map +1 -0
  235. package/dist/utils/http.js +290 -0
  236. package/dist/utils/http.js.map +1 -0
  237. package/dist/utils/model.d.ts +35 -0
  238. package/dist/utils/model.d.ts.map +1 -0
  239. package/dist/utils/model.js +86 -0
  240. package/dist/utils/model.js.map +1 -0
  241. package/dist/utils/nonce.d.ts +9 -0
  242. package/dist/utils/nonce.d.ts.map +1 -0
  243. package/dist/utils/nonce.js +14 -0
  244. package/dist/utils/nonce.js.map +1 -0
  245. package/dist/utils/string.d.ts +10 -0
  246. package/dist/utils/string.d.ts.map +1 -0
  247. package/dist/utils/string.js +20 -0
  248. package/dist/utils/string.js.map +1 -0
  249. package/package.json +91 -91
  250. package/wasm/stark_crypto_wasm.d-web.ts +34 -26
  251. package/wasm/stark_crypto_wasm.d.ts +34 -26
  252. package/wasm/stark_crypto_wasm.js +113 -111
  253. package/wasm/stark_crypto_wasm_bg-web.js +101 -108
  254. package/wasm/stark_crypto_wasm_bg-web.wasm +0 -0
  255. package/wasm/stark_crypto_wasm_bg.wasm +0 -0
@@ -0,0 +1,166 @@
1
+ /**
2
+ * WASM-based Stark crypto signer
3
+ *
4
+ * This module provides fast cryptographic operations using WebAssembly
5
+ * compiled from Rust. The WASM signer is shipped with the SDK and works
6
+ * in both Node.js and browser environments.
7
+ */
8
+ export declare const DEFAULT_BUILDER_CODE_HEX = "0x29851";
9
+ /**
10
+ * Initialize the WASM cryptographic module
11
+ *
12
+ * **MUST be called before using any signing or hashing functions.**
13
+ * This function loads the WebAssembly module that provides fast cryptographic operations.
14
+ *
15
+ * @throws Error if WASM module cannot be loaded
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * import { initWasm, sign } from 'extended-typescript-sdk';
20
+ *
21
+ * async function main() {
22
+ * await initWasm(); // Initialize first!
23
+ * const [r, s] = sign(privateKey, msgHash);
24
+ * }
25
+ * ```
26
+ */
27
+ export declare function initWasm(): Promise<void>;
28
+ /**
29
+ * Sign a message hash using ECDSA
30
+ *
31
+ * This function signs a message hash using the StarkNet private key.
32
+ * Returns the signature as a tuple [r, s] where both are BigInt values.
33
+ * Compatible with Extended Exchange API.
34
+ *
35
+ * @param privateKey - StarkNet private key as BigInt
36
+ * @param msgHash - Message hash to sign as BigInt
37
+ * @returns Tuple [r, s] representing the ECDSA signature
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * await initWasm();
42
+ * const privateKey = BigInt('0x...');
43
+ * const msgHash = BigInt('0x...');
44
+ * const [r, s] = sign(privateKey, msgHash);
45
+ * ```
46
+ */
47
+ export declare function sign(privateKey: bigint, msgHash: bigint): [bigint, bigint];
48
+ /**
49
+ * Compute Pedersen hash of two field elements
50
+ *
51
+ * Pedersen hash is used extensively in StarkNet for hashing operations.
52
+ * Compatible with Extended Exchange API.
53
+ *
54
+ * @param a - First field element as BigInt
55
+ * @param b - Second field element as BigInt
56
+ * @returns Pedersen hash as BigInt
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * await initWasm();
61
+ * const hash = pedersenHash(BigInt('0x123'), BigInt('0x456'));
62
+ * ```
63
+ */
64
+ export declare function pedersenHash(a: bigint, b: bigint): bigint;
65
+ /**
66
+ * Generate StarkNet keypair from Ethereum signature
67
+ *
68
+ * Derives a StarkNet keypair from an Ethereum signature using key grinding.
69
+ * Used during account onboarding to create L2 keys from L1 Ethereum account.
70
+ * Compatible with Extended Exchange API.
71
+ *
72
+ * @param ethSignature - Ethereum signature as hex string (65 bytes: r(32) + s(32) + v(1))
73
+ * @returns Tuple [privateKey, publicKey] as BigInt values
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * await initWasm();
78
+ * const ethSig = '0x...'; // 65-byte hex string
79
+ * const [privateKey, publicKey] = generateKeypairFromEthSignature(ethSig);
80
+ * ```
81
+ */
82
+ export declare function generateKeypairFromEthSignature(ethSignature: string): [bigint, bigint];
83
+ /**
84
+ * Generate message hash for an order
85
+ *
86
+ * Creates a structured hash for order signing compatible with Extended Exchange API.
87
+ * This hash is used to sign orders before submitting them to the exchange.
88
+ *
89
+ * @param params - Order parameters including position, assets, amounts, expiration, etc.
90
+ * @returns Message hash as BigInt that can be signed with sign()
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * await initWasm();
95
+ * const orderHash = getOrderMsgHash({
96
+ * positionId: 12345,
97
+ * baseAssetId: '0x...',
98
+ * baseAmount: '1000000',
99
+ * // ... other parameters
100
+ * });
101
+ * const [r, s] = sign(privateKey, orderHash);
102
+ * ```
103
+ */
104
+ export declare function getOrderMsgHash(params: {
105
+ positionId: number;
106
+ baseAssetId: string;
107
+ baseAmount: string;
108
+ quoteAssetId: string;
109
+ quoteAmount: string;
110
+ feeAmount: string;
111
+ feeAssetId: string;
112
+ expiration: number;
113
+ salt: number;
114
+ builderCode?: number | string | bigint;
115
+ userPublicKey: string;
116
+ domainName: string;
117
+ domainVersion: string;
118
+ domainChainId: string;
119
+ domainRevision: string;
120
+ }): bigint;
121
+ /**
122
+ * Generate message hash for a transfer
123
+ *
124
+ * Creates a structured hash for transfer signing compatible with Extended Exchange API.
125
+ *
126
+ * @param params - Transfer parameters including sender/recipient positions, amount, etc.
127
+ * @returns Message hash as BigInt that can be signed with sign()
128
+ */
129
+ export declare function getTransferMsgHash(params: {
130
+ recipientPositionId: number;
131
+ senderPositionId: number;
132
+ amount: string;
133
+ expiration: number;
134
+ salt: string;
135
+ userPublicKey: string;
136
+ domainName: string;
137
+ domainVersion: string;
138
+ domainChainId: string;
139
+ domainRevision: string;
140
+ collateralId: string;
141
+ }): bigint;
142
+ /**
143
+ * Get withdrawal message hash
144
+ */
145
+ /**
146
+ * Generate message hash for a withdrawal
147
+ *
148
+ * Creates a structured hash for withdrawal signing compatible with Extended Exchange API.
149
+ *
150
+ * @param params - Withdrawal parameters including recipient, position, amount, etc.
151
+ * @returns Message hash as BigInt that can be signed with sign()
152
+ */
153
+ export declare function getWithdrawalMsgHash(params: {
154
+ recipientHex: string;
155
+ positionId: number;
156
+ amount: string;
157
+ expiration: number;
158
+ salt: string;
159
+ userPublicKey: string;
160
+ domainName: string;
161
+ domainVersion: string;
162
+ domainChainId: string;
163
+ domainRevision: string;
164
+ collateralId: string;
165
+ }): bigint;
166
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/perpetual/crypto/signer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAuG9C;AAaD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB1E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBzD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CActF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAoDT;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAyBT;AAED;;GAEG;AACH;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAyBT"}
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ /**
3
+ * WASM-based Stark crypto signer
4
+ *
5
+ * This module provides fast cryptographic operations using WebAssembly
6
+ * compiled from Rust. The WASM signer is shipped with the SDK and works
7
+ * in both Node.js and browser environments.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.DEFAULT_BUILDER_CODE_HEX = void 0;
44
+ exports.initWasm = initWasm;
45
+ exports.sign = sign;
46
+ exports.pedersenHash = pedersenHash;
47
+ exports.generateKeypairFromEthSignature = generateKeypairFromEthSignature;
48
+ exports.getOrderMsgHash = getOrderMsgHash;
49
+ exports.getTransferMsgHash = getTransferMsgHash;
50
+ exports.getWithdrawalMsgHash = getWithdrawalMsgHash;
51
+ let wasmModule = null;
52
+ let isInitialized = false;
53
+ exports.DEFAULT_BUILDER_CODE_HEX = '0x29851';
54
+ /**
55
+ * Initialize the WASM cryptographic module
56
+ *
57
+ * **MUST be called before using any signing or hashing functions.**
58
+ * This function loads the WebAssembly module that provides fast cryptographic operations.
59
+ *
60
+ * @throws Error if WASM module cannot be loaded
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * import { initWasm, sign } from 'extended-typescript-sdk';
65
+ *
66
+ * async function main() {
67
+ * await initWasm(); // Initialize first!
68
+ * const [r, s] = sign(privateKey, msgHash);
69
+ * }
70
+ * ```
71
+ */
72
+ async function initWasm() {
73
+ if (isInitialized) {
74
+ return;
75
+ }
76
+ try {
77
+ // Load local WASM build from shipped wasm/ folder
78
+ // Supports both Node.js and browser environments
79
+ // Detect Node.js: check for process.versions.node (not just process, as bundlers may polyfill it)
80
+ const isNode = typeof process !== 'undefined' &&
81
+ process.versions &&
82
+ typeof process.versions.node === 'string' &&
83
+ typeof require !== 'undefined';
84
+ if (isNode) {
85
+ // Node.js environment - use require/fs
86
+ const path = require('path');
87
+ const fs = require('fs');
88
+ let wasmPath;
89
+ // Try shipped wasm/ folder first (included in npm package)
90
+ const possiblePaths = [
91
+ path.join(__dirname, '../../../wasm/stark_crypto_wasm'), // From dist/perpetual/crypto/ to root wasm/
92
+ path.join(__dirname, '../../wasm/stark_crypto_wasm'), // Legacy path (if wasm in dist/)
93
+ path.join(process.cwd(), 'wasm/stark_crypto_wasm'),
94
+ path.join(process.cwd(), 'node_modules/extended-typescript-sdk/wasm/stark_crypto_wasm'),
95
+ // Fallback to build directory (for development)
96
+ path.join(__dirname, '../../../wasm-signer/pkg/stark_crypto_wasm'),
97
+ path.join(__dirname, '../../wasm-signer/pkg/stark_crypto_wasm'),
98
+ path.join(process.cwd(), 'wasm-signer/pkg/stark_crypto_wasm'),
99
+ ];
100
+ for (const testPath of possiblePaths) {
101
+ if (fs.existsSync(testPath + '.js') || fs.existsSync(testPath + '.d.ts')) {
102
+ wasmPath = testPath;
103
+ break;
104
+ }
105
+ }
106
+ if (!wasmPath) {
107
+ throw new Error(`WASM module not found. Tried: ${possiblePaths.join(', ')}\n` +
108
+ `Please run: npm run build:signer\n` +
109
+ `Or if you want to build your own: npm run build:signer:custom`);
110
+ }
111
+ // Use absolute path for require()
112
+ const absoluteWasmPath = path.resolve(wasmPath);
113
+ // Use require() for CommonJS modules (patched nodejs target)
114
+ wasmModule = require(absoluteWasmPath);
115
+ // Initialize the WASM module
116
+ if (wasmModule.init) {
117
+ wasmModule.init();
118
+ }
119
+ }
120
+ else {
121
+ // Browser environment - use dynamic import
122
+ // Try to load from wasm/ folder (bundler will handle this)
123
+ try {
124
+ // For browser, we expect the bundler to handle WASM imports
125
+ // @ts-ignore - WASM module path resolved at runtime by bundler
126
+ wasmModule = await Promise.resolve().then(() => __importStar(require('../../../wasm/stark_crypto_wasm-web')));
127
+ if (wasmModule.init) {
128
+ await wasmModule.init();
129
+ }
130
+ }
131
+ catch (browserError) {
132
+ // Fallback: try legacy path or without -web suffix
133
+ try {
134
+ // @ts-ignore - WASM module path resolved at runtime by bundler
135
+ wasmModule = await Promise.resolve().then(() => __importStar(require('../../wasm/stark_crypto_wasm-web')));
136
+ if (wasmModule.init) {
137
+ await wasmModule.init();
138
+ }
139
+ }
140
+ catch (legacyError) {
141
+ try {
142
+ // @ts-ignore - WASM module path resolved at runtime by bundler
143
+ wasmModule = await Promise.resolve().then(() => __importStar(require('../../../wasm/stark_crypto_wasm')));
144
+ if (wasmModule.init) {
145
+ await wasmModule.init();
146
+ }
147
+ }
148
+ catch (fallbackError) {
149
+ throw new Error(`Failed to load WASM module in browser environment.\n` +
150
+ `Make sure to build with browser target: npm run build:signer\n` +
151
+ `Tried: ../../../wasm/stark_crypto_wasm-web, ../../wasm/stark_crypto_wasm-web, ../../../wasm/stark_crypto_wasm\n` +
152
+ `Error: ${browserError.message || browserError}`);
153
+ }
154
+ }
155
+ }
156
+ }
157
+ isInitialized = true;
158
+ }
159
+ catch (error) {
160
+ throw new Error(`Failed to initialize WASM module.\n` +
161
+ `The SDK should ship with pre-built WASM files. If you're developing, run: npm run build:signer\n` +
162
+ `Error: ${error?.message || error}`);
163
+ }
164
+ }
165
+ /**
166
+ * Check if WASM module is initialized
167
+ */
168
+ function ensureInitialized() {
169
+ if (!isInitialized || !wasmModule) {
170
+ throw new Error('WASM module not initialized. Call initWasm() first.');
171
+ }
172
+ }
173
+ /**
174
+ * Sign a message hash using ECDSA
175
+ *
176
+ * This function signs a message hash using the StarkNet private key.
177
+ * Returns the signature as a tuple [r, s] where both are BigInt values.
178
+ * Compatible with Extended Exchange API.
179
+ *
180
+ * @param privateKey - StarkNet private key as BigInt
181
+ * @param msgHash - Message hash to sign as BigInt
182
+ * @returns Tuple [r, s] representing the ECDSA signature
183
+ *
184
+ * @example
185
+ * ```typescript
186
+ * await initWasm();
187
+ * const privateKey = BigInt('0x...');
188
+ * const msgHash = BigInt('0x...');
189
+ * const [r, s] = sign(privateKey, msgHash);
190
+ * ```
191
+ */
192
+ function sign(privateKey, msgHash) {
193
+ ensureInitialized();
194
+ const privHex = '0x' + privateKey.toString(16);
195
+ const hashHex = '0x' + msgHash.toString(16);
196
+ // Use local WASM for signing
197
+ if (!wasmModule.sign) {
198
+ throw new Error('WASM sign function not available. Make sure the WASM module is properly built.');
199
+ }
200
+ const result = wasmModule.sign(privHex, hashHex);
201
+ // Convert string results to bigint
202
+ const r = BigInt(result[0]);
203
+ const s = BigInt(result[1]);
204
+ return [r, s];
205
+ }
206
+ /**
207
+ * Compute Pedersen hash of two field elements
208
+ *
209
+ * Pedersen hash is used extensively in StarkNet for hashing operations.
210
+ * Compatible with Extended Exchange API.
211
+ *
212
+ * @param a - First field element as BigInt
213
+ * @param b - Second field element as BigInt
214
+ * @returns Pedersen hash as BigInt
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * await initWasm();
219
+ * const hash = pedersenHash(BigInt('0x123'), BigInt('0x456'));
220
+ * ```
221
+ */
222
+ function pedersenHash(a, b) {
223
+ ensureInitialized();
224
+ if (!wasmModule.pedersen_hash) {
225
+ throw new Error('WASM pedersen_hash function not available.');
226
+ }
227
+ // Convert bigint to hex string (with 0x prefix)
228
+ // Field elements are 251 bits, so we use the natural hex representation
229
+ const aHex = '0x' + a.toString(16);
230
+ const bHex = '0x' + b.toString(16);
231
+ const result = wasmModule.pedersen_hash(aHex, bHex);
232
+ // Remove '0x' prefix if present
233
+ const cleanResult = result.startsWith('0x') ? result.slice(2) : result;
234
+ return BigInt('0x' + cleanResult);
235
+ }
236
+ /**
237
+ * Generate StarkNet keypair from Ethereum signature
238
+ *
239
+ * Derives a StarkNet keypair from an Ethereum signature using key grinding.
240
+ * Used during account onboarding to create L2 keys from L1 Ethereum account.
241
+ * Compatible with Extended Exchange API.
242
+ *
243
+ * @param ethSignature - Ethereum signature as hex string (65 bytes: r(32) + s(32) + v(1))
244
+ * @returns Tuple [privateKey, publicKey] as BigInt values
245
+ *
246
+ * @example
247
+ * ```typescript
248
+ * await initWasm();
249
+ * const ethSig = '0x...'; // 65-byte hex string
250
+ * const [privateKey, publicKey] = generateKeypairFromEthSignature(ethSig);
251
+ * ```
252
+ */
253
+ function generateKeypairFromEthSignature(ethSignature) {
254
+ ensureInitialized();
255
+ if (!wasmModule.generate_keypair_from_eth_signature) {
256
+ throw new Error('WASM generate_keypair_from_eth_signature function not available.');
257
+ }
258
+ const result = wasmModule.generate_keypair_from_eth_signature(ethSignature);
259
+ // Convert string results to bigint
260
+ const privateKey = BigInt(result[0]);
261
+ const publicKey = BigInt(result[1]);
262
+ return [privateKey, publicKey];
263
+ }
264
+ /**
265
+ * Generate message hash for an order
266
+ *
267
+ * Creates a structured hash for order signing compatible with Extended Exchange API.
268
+ * This hash is used to sign orders before submitting them to the exchange.
269
+ *
270
+ * @param params - Order parameters including position, assets, amounts, expiration, etc.
271
+ * @returns Message hash as BigInt that can be signed with sign()
272
+ *
273
+ * @example
274
+ * ```typescript
275
+ * await initWasm();
276
+ * const orderHash = getOrderMsgHash({
277
+ * positionId: 12345,
278
+ * baseAssetId: '0x...',
279
+ * baseAmount: '1000000',
280
+ * // ... other parameters
281
+ * });
282
+ * const [r, s] = sign(privateKey, orderHash);
283
+ * ```
284
+ */
285
+ function getOrderMsgHash(params) {
286
+ ensureInitialized();
287
+ if (!wasmModule.get_order_msg_hash) {
288
+ throw new Error('WASM get_order_msg_hash function not available.');
289
+ }
290
+ const builderCodeInput = params.builderCode ?? exports.DEFAULT_BUILDER_CODE_HEX;
291
+ const builderCode = BigInt(builderCodeInput);
292
+ let result;
293
+ try {
294
+ result = wasmModule.get_order_msg_hash(BigInt(params.positionId), params.baseAssetId, params.baseAmount, params.quoteAssetId, params.quoteAmount, params.feeAmount, params.feeAssetId, BigInt(params.expiration), BigInt(params.salt), params.userPublicKey, params.domainName, params.domainVersion, params.domainChainId, params.domainRevision);
295
+ }
296
+ catch {
297
+ result = wasmModule.get_order_msg_hash(BigInt(params.positionId), params.baseAssetId, params.baseAmount, params.quoteAssetId, params.quoteAmount, params.feeAmount, params.feeAssetId, BigInt(params.expiration), BigInt(params.salt), builderCode, params.userPublicKey, params.domainName, params.domainVersion, params.domainChainId, params.domainRevision);
298
+ }
299
+ // Remove '0x' prefix if present
300
+ const cleanResult = result.startsWith('0x') ? result.slice(2) : result;
301
+ return BigInt('0x' + cleanResult);
302
+ }
303
+ /**
304
+ * Generate message hash for a transfer
305
+ *
306
+ * Creates a structured hash for transfer signing compatible with Extended Exchange API.
307
+ *
308
+ * @param params - Transfer parameters including sender/recipient positions, amount, etc.
309
+ * @returns Message hash as BigInt that can be signed with sign()
310
+ */
311
+ function getTransferMsgHash(params) {
312
+ ensureInitialized();
313
+ if (!wasmModule.get_transfer_msg_hash) {
314
+ throw new Error('WASM get_transfer_msg_hash function not available.');
315
+ }
316
+ const result = wasmModule.get_transfer_msg_hash(BigInt(params.recipientPositionId), BigInt(params.senderPositionId), params.amount, BigInt(params.expiration), params.salt, params.userPublicKey, params.domainName, params.domainVersion, params.domainChainId, params.domainRevision, params.collateralId);
317
+ // Remove '0x' prefix if present
318
+ const cleanResult = result.startsWith('0x') ? result.slice(2) : result;
319
+ return BigInt('0x' + cleanResult);
320
+ }
321
+ /**
322
+ * Get withdrawal message hash
323
+ */
324
+ /**
325
+ * Generate message hash for a withdrawal
326
+ *
327
+ * Creates a structured hash for withdrawal signing compatible with Extended Exchange API.
328
+ *
329
+ * @param params - Withdrawal parameters including recipient, position, amount, etc.
330
+ * @returns Message hash as BigInt that can be signed with sign()
331
+ */
332
+ function getWithdrawalMsgHash(params) {
333
+ ensureInitialized();
334
+ if (!wasmModule.get_withdrawal_msg_hash) {
335
+ throw new Error('WASM get_withdrawal_msg_hash function not available.');
336
+ }
337
+ const result = wasmModule.get_withdrawal_msg_hash(params.recipientHex, BigInt(params.positionId), params.amount, BigInt(params.expiration), params.salt, params.userPublicKey, params.domainName, params.domainVersion, params.domainChainId, params.domainRevision, params.collateralId);
338
+ // Remove '0x' prefix if present
339
+ const cleanResult = result.startsWith('0x') ? result.slice(2) : result;
340
+ return BigInt('0x' + cleanResult);
341
+ }
342
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/perpetual/crypto/signer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Custom signer interface for external signing services
3
+ *
4
+ * This module provides interfaces and types to enable integration with
5
+ * external signing services like Privy, Web3Auth, or custom HSM solutions.
6
+ */
7
+ /**
8
+ * Signature result interface
9
+ * Represents an ECDSA signature as [r, s] tuple
10
+ */
11
+ export interface SignatureResult {
12
+ r: bigint;
13
+ s: bigint;
14
+ }
15
+ /**
16
+ * Custom signer interface
17
+ *
18
+ * Implement this interface to integrate with external signing services.
19
+ * The signer must be able to sign StarkNet message hashes using ECDSA.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // Privy integration example
24
+ * class PrivyStarkSigner implements CustomStarkSigner {
25
+ * constructor(private privyClient: PrivyClient, private walletId: string) {}
26
+ *
27
+ * async sign(msgHash: bigint): Promise<[bigint, bigint]> {
28
+ * const msgHashHex = '0x' + msgHash.toString(16);
29
+ * const signature = await this.privyClient.signStarknetMessage(
30
+ * this.walletId,
31
+ * msgHashHex
32
+ * );
33
+ * return [BigInt(signature.r), BigInt(signature.s)];
34
+ * }
35
+ * }
36
+ * ```
37
+ */
38
+ export interface CustomStarkSigner {
39
+ /**
40
+ * Sign a StarkNet message hash
41
+ *
42
+ * @param msgHash - Message hash to sign as BigInt
43
+ * @returns Promise resolving to [r, s] signature tuple
44
+ */
45
+ sign(msgHash: bigint): Promise<[bigint, bigint]>;
46
+ }
47
+ /**
48
+ * Type guard to check if a value is a CustomStarkSigner
49
+ */
50
+ export declare function isCustomStarkSigner(value: any): value is CustomStarkSigner;
51
+ //# sourceMappingURL=custom-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-signer.d.ts","sourceRoot":"","sources":["../../src/perpetual/custom-signer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,iBAAiB,CAM1E"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Custom signer interface for external signing services
4
+ *
5
+ * This module provides interfaces and types to enable integration with
6
+ * external signing services like Privy, Web3Auth, or custom HSM solutions.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.isCustomStarkSigner = isCustomStarkSigner;
10
+ /**
11
+ * Type guard to check if a value is a CustomStarkSigner
12
+ */
13
+ function isCustomStarkSigner(value) {
14
+ return (value !== null &&
15
+ typeof value === 'object' &&
16
+ typeof value.sign === 'function');
17
+ }
18
+ //# sourceMappingURL=custom-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-signer.js","sourceRoot":"","sources":["../../src/perpetual/custom-signer.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA+CH,kDAMC;AATD;;GAEG;AACH,SAAgB,mBAAmB,CAAC,KAAU;IAC5C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CACjC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Trading fee models
3
+ */
4
+ import Decimal from 'decimal.js';
5
+ import { X10BaseModel } from '../utils/model';
6
+ /**
7
+ * Trading fee model
8
+ */
9
+ export declare class TradingFeeModel extends X10BaseModel {
10
+ market: string;
11
+ makerFeeRate: Decimal;
12
+ takerFeeRate: Decimal;
13
+ builderFeeRate: Decimal;
14
+ constructor(market: string, makerFeeRate: Decimal, takerFeeRate: Decimal, builderFeeRate: Decimal);
15
+ }
16
+ /**
17
+ * Default fees (0.02% maker, 0.05% taker)
18
+ */
19
+ export declare const DEFAULT_FEES: TradingFeeModel;
20
+ //# sourceMappingURL=fees.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/perpetual/fees.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;gBAEZ,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO;CAOlG;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,iBAKxB,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * Trading fee models
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DEFAULT_FEES = exports.TradingFeeModel = void 0;
10
+ const decimal_js_1 = __importDefault(require("decimal.js"));
11
+ const model_1 = require("../utils/model");
12
+ /**
13
+ * Trading fee model
14
+ */
15
+ class TradingFeeModel extends model_1.X10BaseModel {
16
+ market;
17
+ makerFeeRate;
18
+ takerFeeRate;
19
+ builderFeeRate;
20
+ constructor(market, makerFeeRate, takerFeeRate, builderFeeRate) {
21
+ super();
22
+ this.market = market;
23
+ this.makerFeeRate = makerFeeRate;
24
+ this.takerFeeRate = takerFeeRate;
25
+ this.builderFeeRate = builderFeeRate;
26
+ }
27
+ }
28
+ exports.TradingFeeModel = TradingFeeModel;
29
+ /**
30
+ * Default fees (0.02% maker, 0.05% taker)
31
+ */
32
+ exports.DEFAULT_FEES = new TradingFeeModel('BTC-USD', new decimal_js_1.default(2).div(10000), // 0.02%
33
+ new decimal_js_1.default(5).div(10000), // 0.05%
34
+ new decimal_js_1.default(0));
35
+ //# sourceMappingURL=fees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/perpetual/fees.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,4DAAiC;AACjC,0CAA8C;AAE9C;;GAEG;AACH,MAAa,eAAgB,SAAQ,oBAAY;IAC/C,MAAM,CAAS;IACf,YAAY,CAAU;IACtB,YAAY,CAAU;IACtB,cAAc,CAAU;IAExB,YAAY,MAAc,EAAE,YAAqB,EAAE,YAAqB,EAAE,cAAuB;QAC/F,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF;AAbD,0CAaC;AAED;;GAEG;AACU,QAAA,YAAY,GAAG,IAAI,eAAe,CAC7C,SAAS,EACT,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ;AACnC,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,QAAQ;AACnC,IAAI,oBAAO,CAAC,CAAC,CAAC,CACf,CAAC"}