ccxt 4.3.70 → 4.3.71

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 (151) hide show
  1. package/README.md +6 -5
  2. package/dist/ccxt.browser.min.js +13 -10
  3. package/dist/cjs/ccxt.js +6 -1
  4. package/dist/cjs/src/abstract/paradex.js +9 -0
  5. package/dist/cjs/src/base/Exchange.js +49 -0
  6. package/dist/cjs/src/paradex.js +2075 -0
  7. package/dist/cjs/src/pro/bequant.js +4 -0
  8. package/dist/cjs/src/pro/paradex.js +365 -0
  9. package/dist/cjs/src/static_dependencies/noble-curves/abstract/poseidon.js +100 -0
  10. package/dist/cjs/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -0
  11. package/dist/cjs/src/static_dependencies/scure-starknet/index.js +284 -0
  12. package/dist/cjs/src/static_dependencies/starknet/constants.js +60 -0
  13. package/dist/cjs/src/static_dependencies/starknet/types/calldata.js +26 -0
  14. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/abi.js +8 -0
  15. package/dist/cjs/src/static_dependencies/starknet/types/lib/contract/index.js +13 -0
  16. package/dist/cjs/src/static_dependencies/starknet/types/lib/index.js +56 -0
  17. package/dist/cjs/src/static_dependencies/starknet/types/typedData.js +19 -0
  18. package/dist/cjs/src/static_dependencies/starknet/utils/assert.js +15 -0
  19. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +44 -0
  20. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +122 -0
  21. package/dist/cjs/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +137 -0
  22. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/byteArray.js +61 -0
  23. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/cairo.js +218 -0
  24. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  25. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  26. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  27. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/formatter.js +66 -0
  28. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/index.js +281 -0
  29. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/index.js +33 -0
  30. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +37 -0
  31. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  32. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +156 -0
  33. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/requestParser.js +250 -0
  34. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/responseParser.js +215 -0
  35. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/tuple.js +112 -0
  36. package/dist/cjs/src/static_dependencies/starknet/utils/calldata/validate.js +206 -0
  37. package/dist/cjs/src/static_dependencies/starknet/utils/encode.js +58 -0
  38. package/dist/cjs/src/static_dependencies/starknet/utils/hash/classHash.js +57 -0
  39. package/dist/cjs/src/static_dependencies/starknet/utils/merkle.js +76 -0
  40. package/dist/cjs/src/static_dependencies/starknet/utils/num.js +92 -0
  41. package/dist/cjs/src/static_dependencies/starknet/utils/selector.js +48 -0
  42. package/dist/cjs/src/static_dependencies/starknet/utils/shortString.js +101 -0
  43. package/dist/cjs/src/static_dependencies/starknet/utils/typedData.js +334 -0
  44. package/dist/cjs/src/woo.js +4 -2
  45. package/js/ccxt.d.ts +8 -2
  46. package/js/ccxt.js +6 -2
  47. package/js/src/abstract/paradex.d.ts +43 -0
  48. package/js/src/abstract/paradex.js +11 -0
  49. package/js/src/base/Exchange.d.ts +7 -0
  50. package/js/src/base/Exchange.js +45 -0
  51. package/js/src/paradex.d.ts +76 -0
  52. package/js/src/paradex.js +2075 -0
  53. package/js/src/pro/bequant.js +4 -0
  54. package/js/src/pro/paradex.d.ts +15 -0
  55. package/js/src/pro/paradex.js +366 -0
  56. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.d.ts +24 -0
  57. package/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +1 -1
  58. package/js/src/static_dependencies/scure-starknet/index.d.ts +79 -0
  59. package/js/src/static_dependencies/scure-starknet/index.js +323 -0
  60. package/js/src/static_dependencies/starknet/constants.d.ts +61 -0
  61. package/js/src/static_dependencies/starknet/constants.js +67 -0
  62. package/js/src/static_dependencies/starknet/index.d.ts +7 -0
  63. package/js/src/static_dependencies/starknet/index.js +50 -0
  64. package/js/src/static_dependencies/starknet/types/cairoEnum.d.ts +2 -0
  65. package/js/src/static_dependencies/starknet/types/cairoEnum.js +7 -0
  66. package/js/src/static_dependencies/starknet/types/calldata.d.ts +19 -0
  67. package/js/src/static_dependencies/starknet/types/calldata.js +28 -0
  68. package/js/src/static_dependencies/starknet/types/index.d.ts +13 -0
  69. package/js/src/static_dependencies/starknet/types/index.js +16 -0
  70. package/js/src/static_dependencies/starknet/types/lib/contract/abi.d.ts +71 -0
  71. package/js/src/static_dependencies/starknet/types/lib/contract/abi.js +13 -0
  72. package/js/src/static_dependencies/starknet/types/lib/contract/index.d.ts +24 -0
  73. package/js/src/static_dependencies/starknet/types/lib/contract/index.js +16 -0
  74. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.d.ts +33 -0
  75. package/js/src/static_dependencies/starknet/types/lib/contract/legacy.js +7 -0
  76. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.d.ts +52 -0
  77. package/js/src/static_dependencies/starknet/types/lib/contract/sierra.js +7 -0
  78. package/js/src/static_dependencies/starknet/types/lib/index.d.ts +248 -0
  79. package/js/src/static_dependencies/starknet/types/lib/index.js +52 -0
  80. package/js/src/static_dependencies/starknet/types/typedData.d.ts +44 -0
  81. package/js/src/static_dependencies/starknet/types/typedData.js +19 -0
  82. package/js/src/static_dependencies/starknet/utils/address.d.ts +53 -0
  83. package/js/src/static_dependencies/starknet/utils/address.js +89 -0
  84. package/js/src/static_dependencies/starknet/utils/assert.d.ts +7 -0
  85. package/js/src/static_dependencies/starknet/utils/assert.js +17 -0
  86. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.d.ts +6 -0
  87. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/felt.js +43 -0
  88. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.d.ts +72 -0
  89. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint256.js +117 -0
  90. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.d.ts +76 -0
  91. package/js/src/static_dependencies/starknet/utils/cairoDataTypes/uint512.js +136 -0
  92. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.d.ts +32 -0
  93. package/js/src/static_dependencies/starknet/utils/calldata/byteArray.js +59 -0
  94. package/js/src/static_dependencies/starknet/utils/calldata/cairo.d.ts +183 -0
  95. package/js/src/static_dependencies/starknet/utils/calldata/cairo.js +229 -0
  96. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.d.ts +38 -0
  97. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoCustomEnum.js +57 -0
  98. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.d.ts +35 -0
  99. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoOption.js +64 -0
  100. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.d.ts +34 -0
  101. package/js/src/static_dependencies/starknet/utils/calldata/enum/CairoResult.js +63 -0
  102. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.d.ts +3 -0
  103. package/js/src/static_dependencies/starknet/utils/calldata/enum/index.js +9 -0
  104. package/js/src/static_dependencies/starknet/utils/calldata/formatter.d.ts +9 -0
  105. package/js/src/static_dependencies/starknet/utils/calldata/formatter.js +67 -0
  106. package/js/src/static_dependencies/starknet/utils/calldata/index.d.ts +89 -0
  107. package/js/src/static_dependencies/starknet/utils/calldata/index.js +280 -0
  108. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.d.ts +5 -0
  109. package/js/src/static_dependencies/starknet/utils/calldata/parser/index.js +30 -0
  110. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.d.ts +20 -0
  111. package/js/src/static_dependencies/starknet/utils/calldata/parser/interface.js +8 -0
  112. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.d.ts +24 -0
  113. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-0-1.1.0.js +36 -0
  114. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.d.ts +23 -0
  115. package/js/src/static_dependencies/starknet/utils/calldata/parser/parser-2.0.0.js +40 -0
  116. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.d.ts +2 -0
  117. package/js/src/static_dependencies/starknet/utils/calldata/propertyOrder.js +155 -0
  118. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.d.ts +11 -0
  119. package/js/src/static_dependencies/starknet/utils/calldata/requestParser.js +248 -0
  120. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.d.ts +11 -0
  121. package/js/src/static_dependencies/starknet/utils/calldata/responseParser.js +214 -0
  122. package/js/src/static_dependencies/starknet/utils/calldata/tuple.d.ts +6 -0
  123. package/js/src/static_dependencies/starknet/utils/calldata/tuple.js +113 -0
  124. package/js/src/static_dependencies/starknet/utils/calldata/validate.d.ts +6 -0
  125. package/js/src/static_dependencies/starknet/utils/calldata/validate.js +208 -0
  126. package/js/src/static_dependencies/starknet/utils/encode.d.ts +207 -0
  127. package/js/src/static_dependencies/starknet/utils/encode.js +282 -0
  128. package/js/src/static_dependencies/starknet/utils/hash/classHash.d.ts +57 -0
  129. package/js/src/static_dependencies/starknet/utils/hash/classHash.js +224 -0
  130. package/js/src/static_dependencies/starknet/utils/hash/index.d.ts +6 -0
  131. package/js/src/static_dependencies/starknet/utils/hash/index.js +13 -0
  132. package/js/src/static_dependencies/starknet/utils/json.d.ts +24 -0
  133. package/js/src/static_dependencies/starknet/utils/json.js +43 -0
  134. package/js/src/static_dependencies/starknet/utils/merkle.d.ts +35 -0
  135. package/js/src/static_dependencies/starknet/utils/merkle.js +84 -0
  136. package/js/src/static_dependencies/starknet/utils/num.d.ts +182 -0
  137. package/js/src/static_dependencies/starknet/utils/num.js +244 -0
  138. package/js/src/static_dependencies/starknet/utils/selector.d.ts +48 -0
  139. package/js/src/static_dependencies/starknet/utils/selector.js +85 -0
  140. package/js/src/static_dependencies/starknet/utils/shortString.d.ts +57 -0
  141. package/js/src/static_dependencies/starknet/utils/shortString.js +96 -0
  142. package/js/src/static_dependencies/starknet/utils/starknetId.d.ts +113 -0
  143. package/js/src/static_dependencies/starknet/utils/starknetId.js +265 -0
  144. package/js/src/static_dependencies/starknet/utils/typedData.d.ts +54 -0
  145. package/js/src/static_dependencies/starknet/utils/typedData.js +321 -0
  146. package/js/src/static_dependencies/starknet/utils/uint256.d.ts +21 -0
  147. package/js/src/static_dependencies/starknet/utils/uint256.js +32 -0
  148. package/js/src/static_dependencies/starknet/utils/url.d.ts +29 -0
  149. package/js/src/static_dependencies/starknet/utils/url.js +70 -0
  150. package/js/src/woo.js +4 -2
  151. package/package.json +1 -1
@@ -0,0 +1,224 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ /**
8
+ * Class Hash
9
+ */
10
+ import { poseidonHashMany } from '../../../scure-starknet/index.js';
11
+ import { ADDR_BOUND, API_VERSION } from '../../constants.js';
12
+ import { CallData } from '../calldata/index.js';
13
+ import { felt } from '../calldata/cairo.js';
14
+ import { pedersen, poseidonHash, keccak } from '../../../scure-starknet/index.js';
15
+ import { addHexPrefix, utf8ToArray } from '../encode.js';
16
+ import { parse, stringify } from '../json.js';
17
+ import { toHex } from '../num.js';
18
+ import { encodeShortString, isString } from '../shortString.js';
19
+ export function computePedersenHash(a, b) {
20
+ return pedersen(BigInt(a), BigInt(b));
21
+ }
22
+ export function computePoseidonHash(a, b) {
23
+ return toHex(poseidonHash(BigInt(a), BigInt(b)));
24
+ }
25
+ /**
26
+ * Compute pedersen hash from data
27
+ * @returns format: hex-string - pedersen hash
28
+ */
29
+ export function computeHashOnElements(data) {
30
+ return [...data, data.length]
31
+ .reduce((x, y) => pedersen(BigInt(x), BigInt(y)), 0)
32
+ .toString();
33
+ }
34
+ export const computePedersenHashOnElements = computeHashOnElements;
35
+ export function computePoseidonHashOnElements(data) {
36
+ return toHex(poseidonHashMany(data.map((x) => BigInt(x))));
37
+ }
38
+ /**
39
+ * Calculate contract address from class hash
40
+ * @returns format: hex-string
41
+ */
42
+ export function calculateContractAddressFromHash(salt, classHash, constructorCalldata, deployerAddress) {
43
+ const compiledCalldata = CallData.compile(constructorCalldata);
44
+ const constructorCalldataHash = computeHashOnElements(compiledCalldata);
45
+ const CONTRACT_ADDRESS_PREFIX = felt('0x535441524b4e45545f434f4e54524143545f41444452455353'); // Equivalent to 'STARKNET_CONTRACT_ADDRESS'
46
+ const hash = computeHashOnElements([
47
+ CONTRACT_ADDRESS_PREFIX,
48
+ deployerAddress,
49
+ salt,
50
+ classHash,
51
+ constructorCalldataHash,
52
+ ]);
53
+ return toHex(BigInt(hash) % ADDR_BOUND);
54
+ }
55
+ function nullSkipReplacer(key, value) {
56
+ if (key === 'attributes' || key === 'accessible_scopes') {
57
+ return Array.isArray(value) && value.length === 0 ? undefined : value;
58
+ }
59
+ if (key === 'debug_info') {
60
+ return null;
61
+ }
62
+ return value === null ? undefined : value;
63
+ }
64
+ /**
65
+ * Format json-string to conform starknet json-string
66
+ * @param json json-string
67
+ * @returns format: json-string
68
+ */
69
+ export function formatSpaces(json) {
70
+ let insideQuotes = false;
71
+ const newString = [];
72
+ // eslint-disable-next-line no-restricted-syntax
73
+ for (const char of json) {
74
+ if (char === '"' && (newString.length > 0 && newString.slice(-1)[0] === '\\') === false) {
75
+ insideQuotes = !insideQuotes;
76
+ }
77
+ if (insideQuotes) {
78
+ newString.push(char);
79
+ }
80
+ else {
81
+ // eslint-disable-next-line no-nested-ternary
82
+ newString.push(char === ':' ? ': ' : char === ',' ? ', ' : char);
83
+ }
84
+ }
85
+ return newString.join('');
86
+ }
87
+ /**
88
+ * Compute hinted class hash for legacy compiled contract (Cairo 0)
89
+ * @returns format: hex-string
90
+ */
91
+ export default function computeHintedClassHash(compiledContract) {
92
+ const { abi, program } = compiledContract;
93
+ const contractClass = { abi, program };
94
+ const serializedJson = formatSpaces(stringify(contractClass, nullSkipReplacer));
95
+ return addHexPrefix(keccak(utf8ToArray(serializedJson)).toString(16));
96
+ }
97
+ /**
98
+ * Computes the class hash for legacy compiled contract (Cairo 0)
99
+ * @returns format: hex-string
100
+ */
101
+ export function computeLegacyContractClassHash(contract) {
102
+ const compiledContract = isString(contract)
103
+ ? parse(contract)
104
+ : contract;
105
+ const apiVersion = toHex(API_VERSION);
106
+ const externalEntryPointsHash = computeHashOnElements(compiledContract.entry_points_by_type.EXTERNAL.flatMap((e) => [e.selector, e.offset]));
107
+ const l1HandlerEntryPointsHash = computeHashOnElements(compiledContract.entry_points_by_type.L1_HANDLER.flatMap((e) => [e.selector, e.offset]));
108
+ const constructorEntryPointHash = computeHashOnElements(compiledContract.entry_points_by_type.CONSTRUCTOR.flatMap((e) => [e.selector, e.offset]));
109
+ const builtinsHash = computeHashOnElements(compiledContract.program.builtins.map((s) => encodeShortString(s)));
110
+ const hintedClassHash = computeHintedClassHash(compiledContract);
111
+ const dataHash = computeHashOnElements(compiledContract.program.data);
112
+ return computeHashOnElements([
113
+ apiVersion,
114
+ externalEntryPointsHash,
115
+ l1HandlerEntryPointsHash,
116
+ constructorEntryPointHash,
117
+ builtinsHash,
118
+ hintedClassHash,
119
+ dataHash,
120
+ ]);
121
+ }
122
+ // Cairo 1 Contract Hashes
123
+ function hashBuiltins(builtins) {
124
+ return poseidonHashMany(builtins.flatMap((it) => {
125
+ return BigInt(encodeShortString(it));
126
+ }));
127
+ }
128
+ function hashEntryPoint(data) {
129
+ const base = data.flatMap((it) => {
130
+ return [BigInt(it.selector), BigInt(it.offset), hashBuiltins(it.builtins)];
131
+ });
132
+ return poseidonHashMany(base);
133
+ }
134
+ /**
135
+ * Compute hash of the bytecode for Sierra v1.5.0 onwards (Cairo 2.6.0)
136
+ * Each segment is Poseidon hashed.
137
+ * The global hash is : 1 + PoseidonHash(len0, h0, len1, h1, ...)
138
+ * @param casm compiled Sierra CASM file content.
139
+ * @returns the bytecode hash as bigint.
140
+ */
141
+ export function hashByteCodeSegments(casm) {
142
+ const byteCode = casm.bytecode.map((n) => BigInt(n));
143
+ const bytecodeSegmentLengths = casm.bytecode_segment_lengths ?? [];
144
+ let segmentStart = 0;
145
+ const hashLeaves = bytecodeSegmentLengths.flatMap((len) => {
146
+ const segment = byteCode.slice(segmentStart, (segmentStart += len));
147
+ return [BigInt(len), poseidonHashMany(segment)];
148
+ });
149
+ return 1n + poseidonHashMany(hashLeaves);
150
+ }
151
+ /**
152
+ * Compute compiled class hash for contract (Cairo 1)
153
+ * @returns format: hex-string
154
+ */
155
+ export function computeCompiledClassHash(casm) {
156
+ const COMPILED_CLASS_VERSION = 'COMPILED_CLASS_V1';
157
+ // Hash compiled class version
158
+ const compiledClassVersion = BigInt(encodeShortString(COMPILED_CLASS_VERSION));
159
+ // Hash external entry points.
160
+ const externalEntryPointsHash = hashEntryPoint(casm.entry_points_by_type.EXTERNAL);
161
+ // Hash L1 handler entry points.
162
+ const l1Handlers = hashEntryPoint(casm.entry_points_by_type.L1_HANDLER);
163
+ // Hash constructor entry points.
164
+ const constructor = hashEntryPoint(casm.entry_points_by_type.CONSTRUCTOR);
165
+ // Hash bytecode.
166
+ const bytecode = casm.bytecode_segment_lengths
167
+ ? hashByteCodeSegments(casm)
168
+ : poseidonHashMany(casm.bytecode.map((it) => BigInt(it)));
169
+ return toHex(poseidonHashMany([
170
+ compiledClassVersion,
171
+ externalEntryPointsHash,
172
+ l1Handlers,
173
+ constructor,
174
+ bytecode,
175
+ ]));
176
+ }
177
+ function hashEntryPointSierra(data) {
178
+ const base = data.flatMap((it) => {
179
+ return [BigInt(it.selector), BigInt(it.function_idx)];
180
+ });
181
+ return poseidonHashMany(base);
182
+ }
183
+ function hashAbi(sierra) {
184
+ const indentString = formatSpaces(stringify(sierra.abi, null));
185
+ return BigInt(addHexPrefix(keccak(utf8ToArray(indentString)).toString(16)));
186
+ }
187
+ /**
188
+ * Compute sierra contract class hash (Cairo 1)
189
+ * @returns format: hex-string
190
+ */
191
+ export function computeSierraContractClassHash(sierra) {
192
+ const CONTRACT_CLASS_VERSION = 'CONTRACT_CLASS_V0.1.0';
193
+ // Hash class version
194
+ const compiledClassVersion = BigInt(encodeShortString(CONTRACT_CLASS_VERSION));
195
+ // Hash external entry points.
196
+ const externalEntryPointsHash = hashEntryPointSierra(sierra.entry_points_by_type.EXTERNAL);
197
+ // Hash L1 handler entry points.
198
+ const l1Handlers = hashEntryPointSierra(sierra.entry_points_by_type.L1_HANDLER);
199
+ // Hash constructor entry points.
200
+ const constructor = hashEntryPointSierra(sierra.entry_points_by_type.CONSTRUCTOR);
201
+ // Hash abi_hash.
202
+ const abiHash = hashAbi(sierra);
203
+ // Hash Sierra program.
204
+ const sierraProgram = poseidonHashMany(sierra.sierra_program.map((it) => BigInt(it)));
205
+ return toHex(poseidonHashMany([
206
+ compiledClassVersion,
207
+ externalEntryPointsHash,
208
+ l1Handlers,
209
+ constructor,
210
+ abiHash,
211
+ sierraProgram,
212
+ ]));
213
+ }
214
+ /**
215
+ * Compute ClassHash (sierra or legacy) based on provided contract
216
+ * @returns format: hex-string
217
+ */
218
+ export function computeContractClassHash(contract) {
219
+ const compiledContract = isString(contract) ? parse(contract) : contract;
220
+ if ('sierra_program' in compiledContract) {
221
+ return computeSierraContractClassHash(compiledContract);
222
+ }
223
+ return computeLegacyContractClassHash(compiledContract);
224
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Hashes Exports
3
+ */
4
+ export * as poseidon from '../../../noble-curves/abstract/poseidon.js';
5
+ export * from '../selector.js';
6
+ export * from './classHash.js';
@@ -0,0 +1,13 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ /**
8
+ * Hashes Exports
9
+ */
10
+ export * as poseidon from '../../../noble-curves/abstract/poseidon.js';
11
+ export * from '../selector.js'; // Preserve legacy export structure
12
+ // export * from './transactionHash/index.js';
13
+ export * from './classHash.js';
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Convert JSON string to JSON object
3
+ *
4
+ * NOTE: the String() wrapping is used so the behavior conforms to JSON.parse()
5
+ * which can accept simple data types but is not represented in the default typing
6
+ * @param x JSON string
7
+ */
8
+ export declare const parse: (x: string) => any;
9
+ /**
10
+ * Convert JSON string to JSON object with all numbers as bigint
11
+ * @param x JSON string
12
+ */
13
+ export declare const parseAlwaysAsBig: (x: string) => any;
14
+ /**
15
+ * Convert JSON object to JSON string
16
+ *
17
+ * NOTE: the not-null assertion is used so the return type conforms to JSON.stringify()
18
+ * which can also return undefined but is not represented in the default typing
19
+ * json.NumberStringifier[]
20
+ * @returns JSON string
21
+ */
22
+ export declare const stringify: (value: unknown, replacer?: any, space?: string | number | undefined, numberStringifiers?: any[] | undefined) => string;
23
+ /** @deprecated equivalent to 'stringify', alias will be removed */
24
+ export declare const stringifyAlwaysAsBig: (value: unknown, replacer?: any, space?: string | number | undefined, numberStringifiers?: any[] | undefined) => string;
@@ -0,0 +1,43 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ // import * as json from 'lossless-json';
8
+ const json = global.JSON;
9
+ /**
10
+ * Convert string to number or bigint based on size
11
+ */
12
+ const parseIntAsNumberOrBigInt = (x) => {
13
+ // if (!json.isInteger(x)) return parseFloat(x);
14
+ const v = parseInt(x, 10);
15
+ return Number.isSafeInteger(v) ? v : BigInt(x);
16
+ };
17
+ /**
18
+ * Convert JSON string to JSON object
19
+ *
20
+ * NOTE: the String() wrapping is used so the behavior conforms to JSON.parse()
21
+ * which can accept simple data types but is not represented in the default typing
22
+ * @param x JSON string
23
+ */
24
+ // export const parse = (x: string): any => json.parse(String(x), undefined, parseIntAsNumberOrBigInt);
25
+ export const parse = (x) => json.parse(String(x), undefined);
26
+ /**
27
+ * Convert JSON string to JSON object with all numbers as bigint
28
+ * @param x JSON string
29
+ */
30
+ // json.parse(String(x), undefined, json.parseNumberAndBigInt);
31
+ export const parseAlwaysAsBig = (x) => json.parse(String(x), undefined);
32
+ /**
33
+ * Convert JSON object to JSON string
34
+ *
35
+ * NOTE: the not-null assertion is used so the return type conforms to JSON.stringify()
36
+ * which can also return undefined but is not represented in the default typing
37
+ * json.NumberStringifier[]
38
+ * @returns JSON string
39
+ */
40
+ // json.stringify(value, replacer, space, numberStringifiers)!;
41
+ export const stringify = (value, replacer, space, numberStringifiers) => json.stringify(value, replacer, space);
42
+ /** @deprecated equivalent to 'stringify', alias will be removed */
43
+ export const stringifyAlwaysAsBig = stringify;
@@ -0,0 +1,35 @@
1
+ import { BigNumberish } from '../types/index.js';
2
+ export declare class MerkleTree {
3
+ leaves: string[];
4
+ branches: string[][];
5
+ root: string;
6
+ hashMethod: (a: BigNumberish, b: BigNumberish) => string;
7
+ constructor(leafHashes: string[], hashMethod?: (a: BigNumberish, b: BigNumberish) => string);
8
+ /**
9
+ * Create Merkle tree
10
+ * @param leaves hex-string array
11
+ * @returns format: hex-string; Merkle tree root
12
+ */
13
+ private build;
14
+ /**
15
+ * Create hash from ordered a and b, Pedersen hash default
16
+ * @returns format: hex-string
17
+ */
18
+ static hash(a: BigNumberish, b: BigNumberish, hashMethod?: (a: BigNumberish, b: BigNumberish) => string): string;
19
+ /**
20
+ * Return path to leaf
21
+ * @param leaf hex-string
22
+ * @param branch hex-string array
23
+ * @param hashPath hex-string array
24
+ * @returns format: hex-string array
25
+ */
26
+ getProof(leaf: string, branch?: string[], hashPath?: string[]): string[];
27
+ }
28
+ /**
29
+ * Test Merkle tree path
30
+ * @param root hex-string
31
+ * @param leaf hex-string
32
+ * @param path hex-string array
33
+ * @param hashMethod hash method override, Pedersen default
34
+ */
35
+ export declare function proofMerklePath(root: string, leaf: string, path: string[], hashMethod?: (a: BigNumberish, b: BigNumberish) => string): boolean;
@@ -0,0 +1,84 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ import { computePedersenHash } from './hash/index.js';
8
+ export class MerkleTree {
9
+ constructor(leafHashes, hashMethod = computePedersenHash) {
10
+ this.branches = [];
11
+ this.hashMethod = hashMethod;
12
+ this.leaves = leafHashes;
13
+ this.root = this.build(leafHashes);
14
+ }
15
+ /**
16
+ * Create Merkle tree
17
+ * @param leaves hex-string array
18
+ * @returns format: hex-string; Merkle tree root
19
+ */
20
+ build(leaves) {
21
+ if (leaves.length === 1) {
22
+ return leaves[0];
23
+ }
24
+ if (leaves.length !== this.leaves.length) {
25
+ this.branches.push(leaves);
26
+ }
27
+ const newLeaves = [];
28
+ for (let i = 0; i < leaves.length; i += 2) {
29
+ if (i + 1 === leaves.length) {
30
+ newLeaves.push(MerkleTree.hash(leaves[i], '0x0', this.hashMethod));
31
+ }
32
+ else {
33
+ newLeaves.push(MerkleTree.hash(leaves[i], leaves[i + 1], this.hashMethod));
34
+ }
35
+ }
36
+ return this.build(newLeaves);
37
+ }
38
+ /**
39
+ * Create hash from ordered a and b, Pedersen hash default
40
+ * @returns format: hex-string
41
+ */
42
+ static hash(a, b, hashMethod = computePedersenHash) {
43
+ const [aSorted, bSorted] = [BigInt(a), BigInt(b)].sort((x, y) => (x >= y ? 1 : -1));
44
+ return hashMethod(aSorted, bSorted);
45
+ }
46
+ /**
47
+ * Return path to leaf
48
+ * @param leaf hex-string
49
+ * @param branch hex-string array
50
+ * @param hashPath hex-string array
51
+ * @returns format: hex-string array
52
+ */
53
+ getProof(leaf, branch = this.leaves, hashPath = []) {
54
+ const index = branch.indexOf(leaf);
55
+ if (index === -1) {
56
+ throw new Error('leaf not found');
57
+ }
58
+ if (branch.length === 1) {
59
+ return hashPath;
60
+ }
61
+ const isLeft = index % 2 === 0;
62
+ const neededBranch = (isLeft ? branch[index + 1] : branch[index - 1]) ?? '0x0';
63
+ const newHashPath = [...hashPath, neededBranch];
64
+ const currentBranchLevelIndex = this.leaves.length === branch.length
65
+ ? -1
66
+ : this.branches.findIndex((b) => b.length === branch.length);
67
+ const nextBranch = this.branches[currentBranchLevelIndex + 1] ?? [this.root];
68
+ return this.getProof(MerkleTree.hash(isLeft ? leaf : neededBranch, isLeft ? neededBranch : leaf, this.hashMethod), nextBranch, newHashPath);
69
+ }
70
+ }
71
+ /**
72
+ * Test Merkle tree path
73
+ * @param root hex-string
74
+ * @param leaf hex-string
75
+ * @param path hex-string array
76
+ * @param hashMethod hash method override, Pedersen default
77
+ */
78
+ export function proofMerklePath(root, leaf, path, hashMethod = computePedersenHash) {
79
+ if (path.length === 0) {
80
+ return root === leaf;
81
+ }
82
+ const [next, ...rest] = path;
83
+ return proofMerklePath(root, MerkleTree.hash(leaf, next, hashMethod), rest, hashMethod);
84
+ }
@@ -0,0 +1,182 @@
1
+ import { BigNumberish } from '../types/index.js';
2
+ /** @deprecated prefer importing from 'types' over 'num' */
3
+ export type { BigNumberish };
4
+ /**
5
+ * Test if string is hex-string
6
+ * @param hex hex-string
7
+ * @returns {boolean} True if the input string is a hexadecimal string, false otherwise
8
+ * @example
9
+ * ```typescript
10
+ * const hexString1 = "0x2fd23d9182193775423497fc0c472e156c57c69e4089a1967fb288a2d84e914";
11
+ * const result1 = isHex(hexString1);
12
+ * // result1 = true
13
+ *
14
+ * const hexString2 = "2fd23d9182193775423497fc0c472e156c57c69e4089a1967fb288a2d84e914";
15
+ * const result2 = isHex(hexString2);
16
+ * // result2 = false
17
+ * ```
18
+ */
19
+ export declare function isHex(hex: string): boolean;
20
+ /**
21
+ * Convert BigNumberish to bigint
22
+ */
23
+ export declare function toBigInt(value: BigNumberish): bigint;
24
+ /**
25
+ * Test if value is bigint
26
+ */
27
+ export declare function isBigInt(value: any): value is bigint;
28
+ /**
29
+ * Convert BigNumberish to hex-string
30
+ * @returns format: hex-string
31
+ */
32
+ export declare function toHex(number: BigNumberish): string;
33
+ /**
34
+ * Alias of ToHex
35
+ */
36
+ export declare const toHexString: typeof toHex;
37
+ /**
38
+ * Convert BigNumberish to storage-key-string
39
+ *
40
+ * Same as toHex but conforming to the STORAGE_KEY pattern `^0x0[0-7]{1}[a-fA-F0-9]{0,62}$`.
41
+ *
42
+ * A storage key is represented as up to 62 hex digits, 3 bits, and 5 leading zeroes:
43
+ * `0x0 + [0-7] + 62 hex = 0x + 64 hex`
44
+ * @returns format: storage-key-string
45
+ */
46
+ export declare function toStorageKey(number: BigNumberish): string;
47
+ /**
48
+ * Convert hexadecimal string to decimal string
49
+ * @param hex hex-string
50
+ * @returns format: decimal string
51
+ */
52
+ export declare function hexToDecimalString(hex: string): string;
53
+ /**
54
+ * Remove hex string leading zero and lowercase it
55
+ * @example '0x01A...' -> '0x1a..'
56
+ * @param hex hex-string
57
+ * @returns format: hex-string
58
+ */
59
+ export declare const cleanHex: (hex: string) => string;
60
+ /**
61
+ * Asserts input is equal to or greater then lowerBound and lower then upperBound.
62
+ *
63
+ * The `inputName` parameter is used in the assertion message.
64
+ * @param input Value to check
65
+ * @param lowerBound Lower bound value
66
+ * @param upperBound Upper bound value
67
+ * @param inputName Name of the input for error message
68
+ * @Throws Error if input is out of range
69
+ * @example
70
+ * ```typescript
71
+ * const input1:BigNumberish = 10;
72
+ * assertInRange(input1, 5, 20, 'value')
73
+ *
74
+ * const input2: BigNumberish = 25;
75
+ * assertInRange(input2, 5, 20, 'value');
76
+ * // Throws Error: Message not signable, invalid value length.
77
+ * ```
78
+ */
79
+ export declare function assertInRange(input: BigNumberish, lowerBound: BigNumberish, upperBound: BigNumberish, inputName?: string): void;
80
+ /**
81
+ * Convert BigNumberish array to decimal string array
82
+ * @returns format: decimal string array
83
+ */
84
+ export declare function bigNumberishArrayToDecimalStringArray(rawCalldata: BigNumberish[]): string[];
85
+ /**
86
+ * Convert BigNumberish array to hexadecimal string array
87
+ * @returns format: hex-string array
88
+ */
89
+ export declare function bigNumberishArrayToHexadecimalStringArray(rawCalldata: BigNumberish[]): string[];
90
+ /**
91
+ * Test if string is whole number (0, 1, 2, 3...)
92
+ */
93
+ export declare const isStringWholeNumber: (value: string) => boolean;
94
+ /**
95
+ * Convert string to decimal string
96
+ * @returns format: decimal string
97
+ * @example
98
+ * ```typescript
99
+ * const result = getDecimalString("0x1a");
100
+ * // result = "26"
101
+ *
102
+ * const result2 = getDecimalString("Hello");
103
+ * // Throws Error: "Hello need to be hex-string or whole-number-string"
104
+ * ```
105
+ */
106
+ export declare function getDecimalString(value: string): string;
107
+ /**
108
+ * Convert string to hexadecimal string
109
+ * @returns format: hex-string
110
+ * @example
111
+ * ```typescript
112
+ * const result = getHexString("123");
113
+ * // result = "0x7b"
114
+ *
115
+ * const result2 = getHexString("Hello");
116
+ * // Throws Error: Hello need to be hex-string or whole-number-string
117
+ * ```
118
+ */
119
+ export declare function getHexString(value: string): string;
120
+ /**
121
+ * Convert string array to hex-string array
122
+ * @returns format: hex-string array
123
+ */
124
+ export declare function getHexStringArray(value: Array<string>): string[];
125
+ /**
126
+ * Convert boolean to "0" or "1"
127
+ * @param value The boolean value to be converted.
128
+ * @returns {boolean} Returns true if the value is a number, otherwise returns false.
129
+ * @example
130
+ * ```typescript
131
+ * const result = toCairoBool(true);
132
+ * // result ="1"
133
+ *
134
+ * const result2 = toCairoBool(false);
135
+ * // result2 = "0"
136
+ * ```
137
+ */
138
+ export declare const toCairoBool: (value: boolean) => string;
139
+ /**
140
+ * Convert hex-string to an array of Bytes (Uint8Array)
141
+ * @param value hex-string
142
+ */
143
+ export declare function hexToBytes(value: string): Uint8Array;
144
+ /**
145
+ *
146
+ * @param number value to be increased
147
+ * @param percent integer as percent ex. 50 for 50%
148
+ * @returns increased value
149
+ */
150
+ export declare function addPercent(number: BigNumberish, percent: number): bigint;
151
+ /**
152
+ * Check if a value is a number.
153
+ *
154
+ * @param {unknown} value - The value to check.
155
+ * @returns {boolean} Returns true if the value is a number, otherwise returns false.
156
+ * @example
157
+ * ```typescript
158
+ * const result = isNumber(123);
159
+ * // result = true
160
+ *
161
+ * const result2 = isNumber("123");
162
+ * // result2 = false
163
+ * ```
164
+ * @return {boolean} Returns true if the value is a number, otherwise returns false.
165
+ */
166
+ export declare function isNumber(value: unknown): value is number;
167
+ /**
168
+ * Checks if a given value is of boolean type.
169
+ *
170
+ * @param {unknown} value - The value to check.
171
+ * @returns {boolean} - True if the value is of boolean type, false otherwise.
172
+ * @example
173
+ * ```typescript
174
+ * const result = isBoolean(true);
175
+ * // result = true
176
+ *
177
+ * const result2 = isBoolean(false);
178
+ * // result2 = false
179
+ * ```
180
+ * @return {boolean} - True if the value is of boolean type, false otherwise.
181
+ */
182
+ export declare function isBoolean(value: unknown): value is boolean;