@aztec/foundation 0.24.0 → 0.26.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dest/abi/abi.d.ts +1 -1
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/event_selector.d.ts +45 -0
  4. package/dest/abi/event_selector.d.ts.map +1 -0
  5. package/dest/abi/event_selector.js +60 -0
  6. package/dest/abi/function_selector.d.ts +69 -0
  7. package/dest/abi/function_selector.d.ts.map +1 -0
  8. package/dest/abi/function_selector.js +86 -0
  9. package/dest/abi/index.d.ts +2 -1
  10. package/dest/abi/index.d.ts.map +1 -1
  11. package/dest/abi/index.js +3 -2
  12. package/dest/abi/selector.d.ts +4 -106
  13. package/dest/abi/selector.d.ts.map +1 -1
  14. package/dest/abi/selector.js +8 -143
  15. package/dest/abi/utils.js +3 -3
  16. package/dest/array/array.d.ts +8 -0
  17. package/dest/array/array.d.ts.map +1 -1
  18. package/dest/array/array.js +26 -1
  19. package/dest/aztec-address/index.d.ts +8 -1
  20. package/dest/aztec-address/index.d.ts.map +1 -1
  21. package/dest/aztec-address/index.js +16 -2
  22. package/dest/crypto/index.d.ts +1 -0
  23. package/dest/crypto/index.d.ts.map +1 -1
  24. package/dest/crypto/index.js +2 -1
  25. package/dest/crypto/pedersen/pedersen.wasm.d.ts +2 -1
  26. package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
  27. package/dest/crypto/pedersen/pedersen.wasm.js +7 -6
  28. package/dest/crypto/poseidon/index.d.ts +8 -0
  29. package/dest/crypto/poseidon/index.d.ts.map +1 -0
  30. package/dest/crypto/poseidon/index.js +12 -0
  31. package/dest/eth-address/index.d.ts +3 -0
  32. package/dest/eth-address/index.d.ts.map +1 -1
  33. package/dest/eth-address/index.js +5 -2
  34. package/dest/fields/fields.d.ts +19 -0
  35. package/dest/fields/fields.d.ts.map +1 -1
  36. package/dest/fields/fields.js +9 -2
  37. package/dest/json-rpc/client/json_rpc_client.js +2 -2
  38. package/dest/serialize/buffer_reader.d.ts +15 -0
  39. package/dest/serialize/buffer_reader.d.ts.map +1 -1
  40. package/dest/serialize/buffer_reader.js +18 -1
  41. package/dest/serialize/serialize.d.ts +3 -5
  42. package/dest/serialize/serialize.d.ts.map +1 -1
  43. package/dest/serialize/serialize.js +17 -8
  44. package/package.json +2 -2
  45. package/src/abi/abi.ts +1 -1
  46. package/src/abi/event_selector.ts +73 -0
  47. package/src/abi/function_selector.ts +122 -0
  48. package/src/abi/index.ts +2 -1
  49. package/src/abi/selector.ts +8 -188
  50. package/src/abi/utils.ts +2 -2
  51. package/src/array/array.ts +33 -0
  52. package/src/aztec-address/index.ts +22 -2
  53. package/src/crypto/index.ts +1 -0
  54. package/src/crypto/pedersen/pedersen.wasm.ts +14 -10
  55. package/src/crypto/poseidon/index.ts +17 -0
  56. package/src/eth-address/index.ts +6 -1
  57. package/src/fields/fields.ts +11 -1
  58. package/src/json-rpc/client/json_rpc_client.ts +1 -1
  59. package/src/serialize/buffer_reader.ts +23 -0
  60. package/src/serialize/serialize.ts +14 -7
package/dest/abi/abi.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type FunctionSelector } from './selector.js';
1
+ import { type FunctionSelector } from './function_selector.js';
2
2
  /**
3
3
  * A named type.
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"abi.d.ts","sourceRoot":"","sources":["../../src/abi/abi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abi.d.ts","sourceRoot":"","sources":["../../src/abi/abi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { Fr } from '../fields/fields.js';
3
+ import { BufferReader } from '../serialize/buffer_reader.js';
4
+ import { Selector } from './selector.js';
5
+ /** Event selector branding */
6
+ export interface EventSelector {
7
+ /** Brand. */
8
+ _branding: 'EventSelector';
9
+ }
10
+ /** An event selector is the first 4 bytes of the hash of an event signature. */
11
+ export declare class EventSelector extends Selector {
12
+ /**
13
+ * Deserializes from a buffer or reader, corresponding to a write in cpp.
14
+ * @param buffer - Buffer or BufferReader to read from.
15
+ * @returns The Selector.
16
+ */
17
+ static fromBuffer(buffer: Buffer | BufferReader): EventSelector;
18
+ /**
19
+ * Converts a field to selector.
20
+ * @param fr - The field to convert.
21
+ * @returns The selector.
22
+ */
23
+ static fromField(fr: Fr): EventSelector;
24
+ /**
25
+ * Creates a selector from a signature.
26
+ * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
27
+ * @returns selector.
28
+ */
29
+ static fromSignature(signature: string): EventSelector;
30
+ /**
31
+ * Create a Selector instance from a hex-encoded string.
32
+ * The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
33
+ * Throws an error if the input length is invalid or address value is out of range.
34
+ *
35
+ * @param selector - The hex-encoded string representing the Selector.
36
+ * @returns An Selector instance.
37
+ */
38
+ static fromString(selector: string): EventSelector;
39
+ /**
40
+ * Creates an empty selector.
41
+ * @returns An empty selector.
42
+ */
43
+ static empty(): EventSelector;
44
+ }
45
+ //# sourceMappingURL=event_selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event_selector.d.ts","sourceRoot":"","sources":["../../src/abi/event_selector.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,gFAAgF;AAChF,qBAAa,aAAc,SAAQ,QAAQ;IACzC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAM/C;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;IAIvB;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM;IAQtC;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM;IAQlC;;;OAGG;IACH,MAAM,CAAC,KAAK;CAGb"}
@@ -0,0 +1,60 @@
1
+ import { fromHex, toBigIntBE } from '../bigint-buffer/index.js';
2
+ import { keccak } from '../crypto/index.js';
3
+ import { BufferReader } from '../serialize/buffer_reader.js';
4
+ import { Selector } from './selector.js';
5
+ /** An event selector is the first 4 bytes of the hash of an event signature. */
6
+ export class EventSelector extends Selector {
7
+ /**
8
+ * Deserializes from a buffer or reader, corresponding to a write in cpp.
9
+ * @param buffer - Buffer or BufferReader to read from.
10
+ * @returns The Selector.
11
+ */
12
+ static fromBuffer(buffer) {
13
+ const reader = BufferReader.asReader(buffer);
14
+ const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
15
+ return new EventSelector(value);
16
+ }
17
+ /**
18
+ * Converts a field to selector.
19
+ * @param fr - The field to convert.
20
+ * @returns The selector.
21
+ */
22
+ static fromField(fr) {
23
+ return new EventSelector(Number(fr.toBigInt()));
24
+ }
25
+ /**
26
+ * Creates a selector from a signature.
27
+ * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
28
+ * @returns selector.
29
+ */
30
+ static fromSignature(signature) {
31
+ // throw if signature contains whitespace
32
+ if (/\s/.test(signature)) {
33
+ throw new Error('Signature cannot contain whitespace');
34
+ }
35
+ return EventSelector.fromBuffer(keccak(Buffer.from(signature)).subarray(0, Selector.SIZE));
36
+ }
37
+ /**
38
+ * Create a Selector instance from a hex-encoded string.
39
+ * The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
40
+ * Throws an error if the input length is invalid or address value is out of range.
41
+ *
42
+ * @param selector - The hex-encoded string representing the Selector.
43
+ * @returns An Selector instance.
44
+ */
45
+ static fromString(selector) {
46
+ const buf = fromHex(selector);
47
+ if (buf.length !== Selector.SIZE) {
48
+ throw new Error(`Invalid Selector length ${buf.length} (expected ${Selector.SIZE}).`);
49
+ }
50
+ return EventSelector.fromBuffer(buf);
51
+ }
52
+ /**
53
+ * Creates an empty selector.
54
+ * @returns An empty selector.
55
+ */
56
+ static empty() {
57
+ return new EventSelector(0);
58
+ }
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRfc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2V2ZW50X3NlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVXpDLGdGQUFnRjtBQUNoRixNQUFNLE9BQU8sYUFBYyxTQUFRLFFBQVE7SUFDekM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBNkI7UUFDN0MsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxPQUFPLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFNO1FBQ3JCLE9BQU8sSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQWlCO1FBQ3BDLHlDQUF5QztRQUN6QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQWdCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxNQUFNLGNBQWMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQUs7UUFDVixPQUFPLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRiJ9
@@ -0,0 +1,69 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { Fr } from '../fields/fields.js';
3
+ import { BufferReader } from '../serialize/buffer_reader.js';
4
+ import { FieldReader } from '../serialize/field_reader.js';
5
+ import { ABIParameter } from './abi.js';
6
+ import { Selector } from './selector.js';
7
+ /** Function selector branding */
8
+ export interface FunctionSelector {
9
+ /** Brand. */
10
+ _branding: 'FunctionSelector';
11
+ }
12
+ /** A function selector is the first 4 bytes of the hash of a function signature. */
13
+ export declare class FunctionSelector extends Selector {
14
+ /**
15
+ * Checks if this function selector is equal to another.
16
+ * @returns True if the function selectors are equal.
17
+ */
18
+ equals(otherName: string, otherParams: ABIParameter[]): boolean;
19
+ equals(other: FunctionSelector): boolean;
20
+ /**
21
+ * Deserializes from a buffer or reader, corresponding to a write in cpp.
22
+ * @param buffer - Buffer or BufferReader to read from.
23
+ * @returns The Selector.
24
+ */
25
+ static fromBuffer(buffer: Buffer | BufferReader): FunctionSelector;
26
+ /**
27
+ * Converts a field to selector.
28
+ * @param fr - The field to convert.
29
+ * @returns The selector.
30
+ */
31
+ static fromField(fr: Fr): FunctionSelector;
32
+ static fromFields(fields: Fr[] | FieldReader): FunctionSelector;
33
+ /**
34
+ * Creates a selector from a signature.
35
+ * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
36
+ * @returns selector.
37
+ */
38
+ static fromSignature(signature: string): FunctionSelector;
39
+ /**
40
+ * Create a Selector instance from a hex-encoded string.
41
+ * The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
42
+ * Throws an error if the input length is invalid or address value is out of range.
43
+ *
44
+ * @param selector - The hex-encoded string representing the Selector.
45
+ * @returns An Selector instance.
46
+ */
47
+ static fromString(selector: string): FunctionSelector;
48
+ /**
49
+ * Creates an empty selector.
50
+ * @returns An empty selector.
51
+ */
52
+ static empty(): FunctionSelector;
53
+ /**
54
+ * Creates a function selector for a given function name and parameters.
55
+ * @param name - The name of the function.
56
+ * @param parameters - An array of ABIParameter objects, each containing the type information of a function parameter.
57
+ * @returns A Buffer containing the 4-byte selector.
58
+ */
59
+ static fromNameAndParameters(args: {
60
+ name: string;
61
+ parameters: ABIParameter[];
62
+ }): FunctionSelector;
63
+ static fromNameAndParameters(name: string, parameters: ABIParameter[]): FunctionSelector;
64
+ /**
65
+ * Creates a random instance.
66
+ */
67
+ static random(): FunctionSelector;
68
+ }
69
+ //# sourceMappingURL=function_selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function_selector.d.ts","sourceRoot":"","sources":["../../src/abi/function_selector.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,oFAAoF;AACpF,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO;IAC/D,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAQxC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAM/C;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;IAIvB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW;IAK5C;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM;IAQtC;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM;IAQlC;;;OAGG;IACH,MAAM,CAAC,KAAK;IAIZ;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,gBAAgB;IAClG,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,gBAAgB;IAcxF;;OAEG;IACH,MAAM,CAAC,MAAM;CAGd"}
@@ -0,0 +1,86 @@
1
+ import { fromHex, toBigIntBE } from '../bigint-buffer/index.js';
2
+ import { keccak, randomBytes } from '../crypto/index.js';
3
+ import { BufferReader } from '../serialize/buffer_reader.js';
4
+ import { FieldReader } from '../serialize/field_reader.js';
5
+ import { decodeFunctionSignature } from './decoder.js';
6
+ import { Selector } from './selector.js';
7
+ /** A function selector is the first 4 bytes of the hash of a function signature. */
8
+ export class FunctionSelector extends Selector {
9
+ equals(other, otherParams) {
10
+ if (typeof other === 'string') {
11
+ return this.equals(FunctionSelector.fromNameAndParameters(other, otherParams));
12
+ }
13
+ return this.value === other.value;
14
+ }
15
+ /**
16
+ * Deserializes from a buffer or reader, corresponding to a write in cpp.
17
+ * @param buffer - Buffer or BufferReader to read from.
18
+ * @returns The Selector.
19
+ */
20
+ static fromBuffer(buffer) {
21
+ const reader = BufferReader.asReader(buffer);
22
+ const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
23
+ return new FunctionSelector(value);
24
+ }
25
+ /**
26
+ * Converts a field to selector.
27
+ * @param fr - The field to convert.
28
+ * @returns The selector.
29
+ */
30
+ static fromField(fr) {
31
+ return new FunctionSelector(Number(fr.toBigInt()));
32
+ }
33
+ static fromFields(fields) {
34
+ const reader = FieldReader.asReader(fields);
35
+ return FunctionSelector.fromField(reader.readField());
36
+ }
37
+ /**
38
+ * Creates a selector from a signature.
39
+ * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
40
+ * @returns selector.
41
+ */
42
+ static fromSignature(signature) {
43
+ // throw if signature contains whitespace
44
+ if (/\s/.test(signature)) {
45
+ throw new Error('Signature cannot contain whitespace');
46
+ }
47
+ return FunctionSelector.fromBuffer(keccak(Buffer.from(signature)).subarray(0, Selector.SIZE));
48
+ }
49
+ /**
50
+ * Create a Selector instance from a hex-encoded string.
51
+ * The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
52
+ * Throws an error if the input length is invalid or address value is out of range.
53
+ *
54
+ * @param selector - The hex-encoded string representing the Selector.
55
+ * @returns An Selector instance.
56
+ */
57
+ static fromString(selector) {
58
+ const buf = fromHex(selector);
59
+ if (buf.length !== Selector.SIZE) {
60
+ throw new Error(`Invalid Selector length ${buf.length} (expected ${Selector.SIZE}).`);
61
+ }
62
+ return FunctionSelector.fromBuffer(buf);
63
+ }
64
+ /**
65
+ * Creates an empty selector.
66
+ * @returns An empty selector.
67
+ */
68
+ static empty() {
69
+ return new FunctionSelector(0);
70
+ }
71
+ static fromNameAndParameters(nameOrArgs, maybeParameters) {
72
+ const { name, parameters } = typeof nameOrArgs === 'string' ? { name: nameOrArgs, parameters: maybeParameters } : nameOrArgs;
73
+ const signature = decodeFunctionSignature(name, parameters);
74
+ const selector = this.fromSignature(signature);
75
+ // If using the debug logger here it kill the typing in the `server_world_state_synchronizer` and jest tests.
76
+ // console.log(`selector for ${signature} is ${selector}`);
77
+ return selector;
78
+ }
79
+ /**
80
+ * Creates a random instance.
81
+ */
82
+ static random() {
83
+ return FunctionSelector.fromBuffer(randomBytes(Selector.SIZE));
84
+ }
85
+ }
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25fc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2Z1bmN0aW9uX3NlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVXpDLG9GQUFvRjtBQUNwRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsUUFBUTtJQU81QyxNQUFNLENBQUMsS0FBZ0MsRUFBRSxXQUE0QjtRQUNuRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsV0FBWSxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQTZCO1FBQzdDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFNO1FBQ3JCLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUEwQjtRQUMxQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFpQjtRQUNwQyx5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxPQUFPLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQWdCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEdBQUcsQ0FBQyxNQUFNLGNBQWMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDeEYsQ0FBQztRQUNELE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsS0FBSztRQUNWLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBVUQsTUFBTSxDQUFDLHFCQUFxQixDQUMxQixVQUFpRSxFQUNqRSxlQUFnQztRQUVoQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUN4QixPQUFPLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsZUFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDbkcsTUFBTSxTQUFTLEdBQUcsdUJBQXVCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsNkdBQTZHO1FBQzdHLDJEQUEyRDtRQUMzRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTTtRQUNYLE9BQU8sZ0JBQWdCLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0YifQ==
@@ -1,7 +1,8 @@
1
1
  export * from './abi.js';
2
2
  export * from './buffer.js';
3
3
  export * from './encoder.js';
4
+ export * from './event_selector.js';
4
5
  export * from './decoder.js';
5
- export * from './selector.js';
6
+ export * from './function_selector.js';
6
7
  export * from './utils.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abi/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abi/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC"}
package/dest/abi/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  export * from './abi.js';
2
2
  export * from './buffer.js';
3
3
  export * from './encoder.js';
4
+ export * from './event_selector.js';
4
5
  export * from './decoder.js';
5
- export * from './selector.js';
6
+ export * from './function_selector.js';
6
7
  export * from './utils.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsWUFBWSxDQUFDIn0=
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLFlBQVksQ0FBQyJ9
@@ -1,9 +1,9 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { inspect } from 'util';
2
4
  import { Fr } from '../fields/index.js';
3
- import { BufferReader, FieldReader } from '../serialize/index.js';
4
- import { type ABIParameter } from './abi.js';
5
5
  /** A selector is the first 4 bytes of the hash of a signature. */
6
- declare abstract class Selector {
6
+ export declare abstract class Selector {
7
7
  value: number;
8
8
  /** The size of the selector in bytes. */
9
9
  static SIZE: number;
@@ -24,6 +24,7 @@ declare abstract class Selector {
24
24
  * @returns The string.
25
25
  */
26
26
  toString(): string;
27
+ [inspect.custom](): string;
27
28
  /**
28
29
  * Checks if this selector is equal to another.
29
30
  * @param other - The other selector.
@@ -37,107 +38,4 @@ declare abstract class Selector {
37
38
  */
38
39
  toField(): Fr;
39
40
  }
40
- /** Function selector branding */
41
- export interface FunctionSelector {
42
- /** Brand. */
43
- _branding: 'FunctionSelector';
44
- }
45
- /** A function selector is the first 4 bytes of the hash of a function signature. */
46
- export declare class FunctionSelector extends Selector {
47
- /**
48
- * Checks if this function selector is equal to another.
49
- * @returns True if the function selectors are equal.
50
- */
51
- equals(otherName: string, otherParams: ABIParameter[]): boolean;
52
- equals(other: FunctionSelector): boolean;
53
- /**
54
- * Deserializes from a buffer or reader, corresponding to a write in cpp.
55
- * @param buffer - Buffer or BufferReader to read from.
56
- * @returns The Selector.
57
- */
58
- static fromBuffer(buffer: Buffer | BufferReader): FunctionSelector;
59
- /**
60
- * Converts a field to selector.
61
- * @param fr - The field to convert.
62
- * @returns The selector.
63
- */
64
- static fromField(fr: Fr): FunctionSelector;
65
- static fromFields(fields: Fr[] | FieldReader): FunctionSelector;
66
- /**
67
- * Creates a selector from a signature.
68
- * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
69
- * @returns selector.
70
- */
71
- static fromSignature(signature: string): FunctionSelector;
72
- /**
73
- * Create a Selector instance from a hex-encoded string.
74
- * The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
75
- * Throws an error if the input length is invalid or address value is out of range.
76
- *
77
- * @param selector - The hex-encoded string representing the Selector.
78
- * @returns An Selector instance.
79
- */
80
- static fromString(selector: string): FunctionSelector;
81
- /**
82
- * Creates an empty selector.
83
- * @returns An empty selector.
84
- */
85
- static empty(): FunctionSelector;
86
- /**
87
- * Creates a function selector for a given function name and parameters.
88
- * @param name - The name of the function.
89
- * @param parameters - An array of ABIParameter objects, each containing the type information of a function parameter.
90
- * @returns A Buffer containing the 4-byte selector.
91
- */
92
- static fromNameAndParameters(args: {
93
- name: string;
94
- parameters: ABIParameter[];
95
- }): FunctionSelector;
96
- static fromNameAndParameters(name: string, parameters: ABIParameter[]): FunctionSelector;
97
- /**
98
- * Creates a random instance.
99
- */
100
- static random(): FunctionSelector;
101
- }
102
- /** Event selector branding */
103
- export interface EventSelector {
104
- /** Brand. */
105
- _branding: 'EventSelector';
106
- }
107
- /** An event selector is the first 4 bytes of the hash of an event signature. */
108
- export declare class EventSelector extends Selector {
109
- /**
110
- * Deserializes from a buffer or reader, corresponding to a write in cpp.
111
- * @param buffer - Buffer or BufferReader to read from.
112
- * @returns The Selector.
113
- */
114
- static fromBuffer(buffer: Buffer | BufferReader): EventSelector;
115
- /**
116
- * Converts a field to selector.
117
- * @param fr - The field to convert.
118
- * @returns The selector.
119
- */
120
- static fromField(fr: Fr): EventSelector;
121
- /**
122
- * Creates a selector from a signature.
123
- * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
124
- * @returns selector.
125
- */
126
- static fromSignature(signature: string): EventSelector;
127
- /**
128
- * Create a Selector instance from a hex-encoded string.
129
- * The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
130
- * Throws an error if the input length is invalid or address value is out of range.
131
- *
132
- * @param selector - The hex-encoded string representing the Selector.
133
- * @returns An Selector instance.
134
- */
135
- static fromString(selector: string): EventSelector;
136
- /**
137
- * Creates an empty selector.
138
- * @returns An empty selector.
139
- */
140
- static empty(): EventSelector;
141
- }
142
- export {};
143
41
  //# sourceMappingURL=selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/abi/selector.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAK7C,kEAAkE;AAClE,uBAAe,QAAQ;IAI2B,KAAK,EAAE,MAAM;IAH7D,yCAAyC;IACzC,OAAc,IAAI,SAAK;gBAEX,4BAA4B,CAAQ,KAAK,EAAE,MAAM;IAM7D;;;OAGG;IACI,OAAO,IAAI,OAAO;IAIzB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,SAAgB,GAAG,MAAM;IAI5C;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIhC;;;;OAIG;IACI,OAAO;CAGf;AAED,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,oFAAoF;AACpF,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C;;;OAGG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,OAAO;IAC/D,MAAM,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO;IAQxC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAM/C;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;IAIvB,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW;IAK5C;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM;IAQtC;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM;IAQlC;;;OAGG;IACH,MAAM,CAAC,KAAK;IAIZ;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG,gBAAgB;IAClG,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,gBAAgB;IAcxF;;OAEG;IACH,MAAM,CAAC,MAAM;CAGd;AAED,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,gFAAgF;AAChF,qBAAa,aAAc,SAAQ,QAAQ;IACzC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAM/C;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;IAIvB;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM;IAQtC;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM;IAQlC;;;OAGG;IACH,MAAM,CAAC,KAAK;CAGb"}
1
+ {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/abi/selector.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,kEAAkE;AAClE,8BAAsB,QAAQ;IAIoB,KAAK,EAAE,MAAM;IAH7D,yCAAyC;IACzC,OAAc,IAAI,SAAK;gBAEX,4BAA4B,CAAQ,KAAK,EAAE,MAAM;IAM7D;;;OAGG;IACI,OAAO,IAAI,OAAO;IAIzB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,SAAgB,GAAG,MAAM;IAI5C;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB,CAAC,OAAO,CAAC,MAAM,CAAC;IAIhB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIhC;;;;OAIG;IACI,OAAO;CAGf"}
@@ -1,12 +1,8 @@
1
- import { randomBytes } from 'crypto';
2
- import { fromHex, toBigIntBE, toBufferBE } from '../bigint-buffer/index.js';
3
- import { keccak } from '../crypto/keccak/index.js';
1
+ import { inspect } from 'util';
2
+ import { toBufferBE } from '../bigint-buffer/index.js';
4
3
  import { Fr } from '../fields/index.js';
5
- import { BufferReader, FieldReader } from '../serialize/index.js';
6
- import { decodeFunctionSignature } from './decoder.js';
7
- /* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
8
4
  /** A selector is the first 4 bytes of the hash of a signature. */
9
- class Selector {
5
+ export class Selector {
10
6
  constructor(/** Value of the selector */ value) {
11
7
  this.value = value;
12
8
  if (value > 2 ** (Selector.SIZE * 8) - 1) {
@@ -33,7 +29,10 @@ class Selector {
33
29
  * @returns The string.
34
30
  */
35
31
  toString() {
36
- return this.toBuffer().toString('hex');
32
+ return '0x' + this.toBuffer().toString('hex');
33
+ }
34
+ [inspect.custom]() {
35
+ return `Selector<${this.toString()}>`;
37
36
  }
38
37
  /**
39
38
  * Checks if this selector is equal to another.
@@ -54,138 +53,4 @@ class Selector {
54
53
  }
55
54
  /** The size of the selector in bytes. */
56
55
  Selector.SIZE = 4;
57
- /** A function selector is the first 4 bytes of the hash of a function signature. */
58
- export class FunctionSelector extends Selector {
59
- equals(other, otherParams) {
60
- if (typeof other === 'string') {
61
- return this.equals(FunctionSelector.fromNameAndParameters(other, otherParams));
62
- }
63
- return this.value === other.value;
64
- }
65
- /**
66
- * Deserializes from a buffer or reader, corresponding to a write in cpp.
67
- * @param buffer - Buffer or BufferReader to read from.
68
- * @returns The Selector.
69
- */
70
- static fromBuffer(buffer) {
71
- const reader = BufferReader.asReader(buffer);
72
- const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
73
- return new FunctionSelector(value);
74
- }
75
- /**
76
- * Converts a field to selector.
77
- * @param fr - The field to convert.
78
- * @returns The selector.
79
- */
80
- static fromField(fr) {
81
- return new FunctionSelector(Number(fr.toBigInt()));
82
- }
83
- static fromFields(fields) {
84
- const reader = FieldReader.asReader(fields);
85
- return FunctionSelector.fromField(reader.readField());
86
- }
87
- /**
88
- * Creates a selector from a signature.
89
- * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
90
- * @returns selector.
91
- */
92
- static fromSignature(signature) {
93
- // throw if signature contains whitespace
94
- if (/\s/.test(signature)) {
95
- throw new Error('Signature cannot contain whitespace');
96
- }
97
- return FunctionSelector.fromBuffer(keccak(Buffer.from(signature)).subarray(0, Selector.SIZE));
98
- }
99
- /**
100
- * Create a Selector instance from a hex-encoded string.
101
- * The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
102
- * Throws an error if the input length is invalid or address value is out of range.
103
- *
104
- * @param selector - The hex-encoded string representing the Selector.
105
- * @returns An Selector instance.
106
- */
107
- static fromString(selector) {
108
- const buf = fromHex(selector);
109
- if (buf.length !== Selector.SIZE) {
110
- throw new Error(`Invalid Selector length ${buf.length} (expected ${Selector.SIZE}).`);
111
- }
112
- return FunctionSelector.fromBuffer(buf);
113
- }
114
- /**
115
- * Creates an empty selector.
116
- * @returns An empty selector.
117
- */
118
- static empty() {
119
- return new FunctionSelector(0);
120
- }
121
- static fromNameAndParameters(nameOrArgs, maybeParameters) {
122
- const { name, parameters } = typeof nameOrArgs === 'string' ? { name: nameOrArgs, parameters: maybeParameters } : nameOrArgs;
123
- const signature = decodeFunctionSignature(name, parameters);
124
- const selector = this.fromSignature(signature);
125
- // If using the debug logger here it kill the typing in the `server_world_state_synchronizer` and jest tests.
126
- // console.log(`selector for ${signature} is ${selector}`);
127
- return selector;
128
- }
129
- /**
130
- * Creates a random instance.
131
- */
132
- static random() {
133
- return FunctionSelector.fromBuffer(randomBytes(Selector.SIZE));
134
- }
135
- }
136
- /** An event selector is the first 4 bytes of the hash of an event signature. */
137
- export class EventSelector extends Selector {
138
- /**
139
- * Deserializes from a buffer or reader, corresponding to a write in cpp.
140
- * @param buffer - Buffer or BufferReader to read from.
141
- * @returns The Selector.
142
- */
143
- static fromBuffer(buffer) {
144
- const reader = BufferReader.asReader(buffer);
145
- const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
146
- return new EventSelector(value);
147
- }
148
- /**
149
- * Converts a field to selector.
150
- * @param fr - The field to convert.
151
- * @returns The selector.
152
- */
153
- static fromField(fr) {
154
- return new EventSelector(Number(fr.toBigInt()));
155
- }
156
- /**
157
- * Creates a selector from a signature.
158
- * @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
159
- * @returns selector.
160
- */
161
- static fromSignature(signature) {
162
- // throw if signature contains whitespace
163
- if (/\s/.test(signature)) {
164
- throw new Error('Signature cannot contain whitespace');
165
- }
166
- return EventSelector.fromBuffer(keccak(Buffer.from(signature)).subarray(0, Selector.SIZE));
167
- }
168
- /**
169
- * Create a Selector instance from a hex-encoded string.
170
- * The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
171
- * Throws an error if the input length is invalid or address value is out of range.
172
- *
173
- * @param selector - The hex-encoded string representing the Selector.
174
- * @returns An Selector instance.
175
- */
176
- static fromString(selector) {
177
- const buf = fromHex(selector);
178
- if (buf.length !== Selector.SIZE) {
179
- throw new Error(`Invalid Selector length ${buf.length} (expected ${Selector.SIZE}).`);
180
- }
181
- return EventSelector.fromBuffer(buf);
182
- }
183
- /**
184
- * Creates an empty selector.
185
- * @returns An empty selector.
186
- */
187
- static empty() {
188
- return new EventSelector(0);
189
- }
190
- }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3NlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV2RCxxRUFBcUU7QUFFckUsa0VBQWtFO0FBQ2xFLE1BQWUsUUFBUTtJQUlyQixZQUFZLDRCQUE0QixDQUFRLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQzNELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsUUFBUSxDQUFDLElBQUkscUJBQXFCLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUk7UUFDakMsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gs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
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3NlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV4QyxrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQixRQUFRO0lBSTVCLFlBQVksNEJBQTRCLENBQVEsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDM0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixRQUFRLENBQUMsSUFBSSxxQkFBcUIsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSTtRQUNqQyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2QsT0FBTyxZQUFZLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7QUF0REQseUNBQXlDO0FBQzNCLGFBQUksR0FBRyxDQUFDLENBQUMifQ==