@aztec/foundation 0.16.9 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/decoder.js +12 -3
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +30 -7
- package/dest/abi/index.d.ts +1 -1
- package/dest/abi/index.d.ts.map +1 -1
- package/dest/abi/index.js +2 -2
- package/dest/abi/selector.d.ts +128 -0
- package/dest/abi/selector.d.ts.map +1 -0
- package/dest/abi/selector.js +179 -0
- package/dest/abi/utils.d.ts +7 -1
- package/dest/abi/utils.d.ts.map +1 -1
- package/dest/abi/utils.js +13 -5
- package/dest/array/array.d.ts +54 -0
- package/dest/array/array.d.ts.map +1 -0
- package/dest/array/array.js +59 -0
- package/dest/array/index.d.ts +2 -0
- package/dest/array/index.d.ts.map +1 -0
- package/dest/array/index.js +2 -0
- package/dest/bigint-buffer/index.d.ts +6 -0
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/bigint-buffer/index.js +13 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +3 -3
- package/dest/fifo/memory_fifo.d.ts +4 -3
- package/dest/fifo/memory_fifo.d.ts.map +1 -1
- package/dest/fifo/memory_fifo.js +8 -4
- package/dest/fifo/serial_queue.d.ts +1 -1
- package/dest/fifo/serial_queue.d.ts.map +1 -1
- package/dest/fifo/serial_queue.js +6 -3
- package/dest/json-rpc/server/index.d.ts +1 -1
- package/dest/json-rpc/server/index.d.ts.map +1 -1
- package/dest/json-rpc/server/index.js +2 -2
- package/dest/json-rpc/server/json_rpc_server.d.ts +10 -0
- package/dest/json-rpc/server/json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/json_rpc_server.js +15 -1
- package/dest/serialize/free_funcs.d.ts +7 -119
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +17 -127
- package/dest/serialize/index.d.ts +1 -0
- package/dest/serialize/index.d.ts.map +1 -1
- package/dest/serialize/index.js +2 -1
- package/dest/serialize/serialize.d.ts +167 -0
- package/dest/serialize/serialize.d.ts.map +1 -0
- package/dest/serialize/serialize.js +212 -0
- package/dest/trees/index.d.ts +6 -0
- package/dest/trees/index.d.ts.map +1 -1
- package/package.json +4 -3
- package/dest/abi/function_selector.d.ts +0 -83
- package/dest/abi/function_selector.d.ts.map +0 -1
- package/dest/abi/function_selector.js +0 -124
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/abi/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAA6B,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/abi/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAA6B,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAgFlG;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,EAAE,iBAE3E;AAED;;GAEG;AACH,qBAAa,wBAAwB;IAEvB,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,UAAU;IAAkB,OAAO,CAAC,YAAY;IAD1F,OAAO,CAAC,SAAS,CAAS;gBACN,IAAI,EAAE,MAAM,EAAU,UAAU,EAAE,YAAY,EAAE,EAAU,YAAY,UAAQ;IAIlG;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACI,MAAM,IAAI,MAAM;CAGxB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAEjG"}
|
package/dest/abi/decoder.js
CHANGED
|
@@ -37,8 +37,15 @@ class ReturnValuesDecoder {
|
|
|
37
37
|
}
|
|
38
38
|
return struct;
|
|
39
39
|
}
|
|
40
|
+
case 'string': {
|
|
41
|
+
const array = [];
|
|
42
|
+
for (let i = 0; i < abiType.length; i += 1) {
|
|
43
|
+
array.push(this.getNextField().toBigInt());
|
|
44
|
+
}
|
|
45
|
+
return array;
|
|
46
|
+
}
|
|
40
47
|
default:
|
|
41
|
-
throw new Error(`Unsupported type: ${abiType
|
|
48
|
+
throw new Error(`Unsupported type: ${abiType}`);
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
/**
|
|
@@ -105,10 +112,12 @@ export class FunctionSignatureDecoder {
|
|
|
105
112
|
return 'bool';
|
|
106
113
|
case 'array':
|
|
107
114
|
return `[${this.getParameterType(param.type)};${param.length}]`;
|
|
115
|
+
case 'string':
|
|
116
|
+
return `str<${param.length}>`;
|
|
108
117
|
case 'struct':
|
|
109
118
|
return `(${param.fields.map(field => `${this.decodeParameter(field)}`).join(this.separator)})`;
|
|
110
119
|
default:
|
|
111
|
-
throw new Error(`Unsupported type: ${param
|
|
120
|
+
throw new Error(`Unsupported type: ${param}`);
|
|
112
121
|
}
|
|
113
122
|
}
|
|
114
123
|
/**
|
|
@@ -146,4 +155,4 @@ export function decodeFunctionSignature(name, parameters) {
|
|
|
146
155
|
export function decodeFunctionSignatureWithParameterNames(name, parameters) {
|
|
147
156
|
return new FunctionSignatureDecoder(name, parameters, true).decode();
|
|
148
157
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYmkvZGVjb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQTs7O0dBR0c7QUFDSCxNQUFNLG1CQUFtQjtJQUN2QixZQUFvQixRQUEwQixFQUFVLFNBQWU7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFNO0lBQUcsQ0FBQztJQUUzRTs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLE9BQWdCO1FBQ25DLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRTtZQUNwQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsS0FBSyxTQUFTO2dCQUNaLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7b0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztpQkFDckQ7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsS0FBSyxTQUFTO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsS0FBSyxPQUFPLENBQUMsQ0FBQztnQkFDWixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDN0M7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2IsTUFBTSxNQUFNLEdBQXFDLEVBQUUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/abi/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/abi/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;AA2HhD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,QAE5D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,UAElD"}
|
package/dest/abi/encoder.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Fr } from '../fields/index.js';
|
|
2
|
-
import { isAddressStruct } from './utils.js';
|
|
2
|
+
import { isAddressStruct, isFunctionSelectorStruct } from './utils.js';
|
|
3
3
|
/**
|
|
4
4
|
* Encodes arguments for a function call.
|
|
5
5
|
* Missing support for integer and string.
|
|
@@ -72,22 +72,45 @@ class ArgumentEncoder {
|
|
|
72
72
|
this.encodeArgument(abiType.type, arg[i], `${name}[${i}]`);
|
|
73
73
|
}
|
|
74
74
|
break;
|
|
75
|
-
case '
|
|
75
|
+
case 'string':
|
|
76
|
+
for (let i = 0; i < abiType.length; i += 1) {
|
|
77
|
+
// If the string is shorter than the defined length, pad it with 0s.
|
|
78
|
+
const toInsert = i < arg.length ? BigInt(arg.charCodeAt(i)) : 0n;
|
|
79
|
+
this.flattened.push(new Fr(toInsert));
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
case 'struct': {
|
|
76
83
|
// If the abi expects a struct like { address: Field } and the supplied arg does not have
|
|
77
84
|
// an address field in it, we try to encode it as if it were a field directly.
|
|
78
|
-
|
|
79
|
-
|
|
85
|
+
const isAddress = isAddressStruct(abiType);
|
|
86
|
+
if (isAddress && typeof arg.address === 'undefined' && typeof arg.inner === 'undefined') {
|
|
87
|
+
this.encodeArgument({ kind: 'field' }, arg, `${name}.inner`);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
if (isFunctionSelectorStruct(abiType)) {
|
|
91
|
+
if (typeof arg.value === 'undefined') {
|
|
92
|
+
this.encodeArgument({ kind: 'integer', sign: 'unsigned', width: 32 }, arg, `${name}.inner`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.encodeArgument({ kind: 'integer', sign: 'unsigned', width: 32 }, arg.value, `${name}.inner`);
|
|
96
|
+
}
|
|
80
97
|
break;
|
|
81
98
|
}
|
|
82
99
|
for (const field of abiType.fields) {
|
|
83
|
-
|
|
100
|
+
// The ugly check bellow is here because of a `CompleteAddress`. Since it has `address` property but in ABI
|
|
101
|
+
// it's called inner we set `field.name` here to `address` instead of using `field.name`. I know it's hacky
|
|
102
|
+
// but using address.address in Noir looks stupid and renaming `address` param of `CompleteAddress`
|
|
103
|
+
// to `inner` doesn't make sense.
|
|
104
|
+
const fieldName = isAddress && arg.address !== undefined ? 'address' : field.name;
|
|
105
|
+
this.encodeArgument(field.type, arg[fieldName], `${name}.${field.name}`);
|
|
84
106
|
}
|
|
85
107
|
break;
|
|
108
|
+
}
|
|
86
109
|
case 'integer':
|
|
87
110
|
this.flattened.push(new Fr(arg));
|
|
88
111
|
break;
|
|
89
112
|
default:
|
|
90
|
-
throw new Error(`Unsupported type: ${abiType
|
|
113
|
+
throw new Error(`Unsupported type: ${abiType}`);
|
|
91
114
|
}
|
|
92
115
|
}
|
|
93
116
|
/**
|
|
@@ -119,4 +142,4 @@ export function encodeArguments(abi, args) {
|
|
|
119
142
|
export function countArgumentsSize(abi) {
|
|
120
143
|
return abi.parameters.reduce((acc, parameter) => acc + ArgumentEncoder.typeSize(parameter.type), 0);
|
|
121
144
|
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYmkvZW5jb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2RTs7O0dBR0c7QUFDSCxNQUFNLGVBQWU7SUFHbkIsWUFBb0IsR0FBZ0IsRUFBVSxJQUFXO1FBQXJDLFFBQUcsR0FBSCxHQUFHLENBQWE7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFPO1FBRmpELGNBQVMsR0FBUyxFQUFFLENBQUM7SUFFK0IsQ0FBQztJQUU3RCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQWdCO1FBQzlCLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRTtZQUNwQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxTQUFTO2dCQUNaLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsS0FBSyxRQUFRO2dCQUNYLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUN4QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pFLEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxDQUFDO2dCQUNQLE1BQU0sZUFBZSxHQUFVLE9BQU8sQ0FBQztnQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsZUFBZSxFQUFFLENBQUMsQ0FBQzthQUMz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
|
package/dest/abi/index.d.ts
CHANGED
package/dest/abi/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abi/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abi/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
package/dest/abi/index.js
CHANGED
|
@@ -2,6 +2,6 @@ export * from './abi.js';
|
|
|
2
2
|
export * from './abi_coder.js';
|
|
3
3
|
export * from './encoder.js';
|
|
4
4
|
export * from './decoder.js';
|
|
5
|
-
export * from './
|
|
5
|
+
export * from './selector.js';
|
|
6
6
|
export * from './utils.js';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxZQUFZLENBQUMifQ==
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
|
+
import { Fr } from '../fields/index.js';
|
|
4
|
+
import { ABIParameter } from './abi.js';
|
|
5
|
+
/** A selector is the first 4 bytes of the hash of a signature. */
|
|
6
|
+
declare abstract class Selector {
|
|
7
|
+
value: number;
|
|
8
|
+
/** The size of the selector in bytes. */
|
|
9
|
+
static SIZE: number;
|
|
10
|
+
constructor(/** Value of the selector */ value: number);
|
|
11
|
+
/**
|
|
12
|
+
* Checks if the selector is empty (all bytes are 0).
|
|
13
|
+
* @returns True if the selector is empty (all bytes are 0).
|
|
14
|
+
*/
|
|
15
|
+
isEmpty(): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Serialize as a buffer.
|
|
18
|
+
* @param bufferSize - The buffer size.
|
|
19
|
+
* @returns The buffer.
|
|
20
|
+
*/
|
|
21
|
+
toBuffer(bufferSize?: number): Buffer;
|
|
22
|
+
/**
|
|
23
|
+
* Serialize as a hex string.
|
|
24
|
+
* @returns The string.
|
|
25
|
+
*/
|
|
26
|
+
toString(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Checks if this selector is equal to another.
|
|
29
|
+
* @param other - The other selector.
|
|
30
|
+
* @returns True if the selectors are equal.
|
|
31
|
+
*/
|
|
32
|
+
equals(other: Selector): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Returns a new field with the same contents as this EthAddress.
|
|
35
|
+
*
|
|
36
|
+
* @returns An Fr instance.
|
|
37
|
+
*/
|
|
38
|
+
toField(): Fr;
|
|
39
|
+
}
|
|
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
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
49
|
+
* @param buffer - Buffer or BufferReader to read from.
|
|
50
|
+
* @returns The Selector.
|
|
51
|
+
*/
|
|
52
|
+
static fromBuffer(buffer: Buffer | BufferReader): FunctionSelector;
|
|
53
|
+
/**
|
|
54
|
+
* Converts a field to selector.
|
|
55
|
+
* @param fr - The field to convert.
|
|
56
|
+
* @returns The selector.
|
|
57
|
+
*/
|
|
58
|
+
static fromField(fr: Fr): FunctionSelector;
|
|
59
|
+
/**
|
|
60
|
+
* Creates a selector from a signature.
|
|
61
|
+
* @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
|
|
62
|
+
* @returns selector.
|
|
63
|
+
*/
|
|
64
|
+
static fromSignature(signature: string): FunctionSelector;
|
|
65
|
+
/**
|
|
66
|
+
* Create a Selector instance from a hex-encoded string.
|
|
67
|
+
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
68
|
+
* Throws an error if the input length is invalid or address value is out of range.
|
|
69
|
+
*
|
|
70
|
+
* @param selector - The hex-encoded string representing the Selector.
|
|
71
|
+
* @returns An Selector instance.
|
|
72
|
+
*/
|
|
73
|
+
static fromString(selector: string): FunctionSelector;
|
|
74
|
+
/**
|
|
75
|
+
* Creates an empty selector.
|
|
76
|
+
* @returns An empty selector.
|
|
77
|
+
*/
|
|
78
|
+
static empty(): FunctionSelector;
|
|
79
|
+
/**
|
|
80
|
+
* Creates a function selector for a given function name and parameters.
|
|
81
|
+
* @param name - The name of the function.
|
|
82
|
+
* @param parameters - An array of ABIParameter objects, each containing the type information of a function parameter.
|
|
83
|
+
* @returns A Buffer containing the 4-byte selector.
|
|
84
|
+
*/
|
|
85
|
+
static fromNameAndParameters(name: string, parameters: ABIParameter[]): FunctionSelector;
|
|
86
|
+
}
|
|
87
|
+
/** Event selector branding */
|
|
88
|
+
export interface EventSelector {
|
|
89
|
+
/** Brand. */
|
|
90
|
+
_branding: 'EventSelector';
|
|
91
|
+
}
|
|
92
|
+
/** An event selector is the first 4 bytes of the hash of an event signature. */
|
|
93
|
+
export declare class EventSelector extends Selector {
|
|
94
|
+
/**
|
|
95
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
96
|
+
* @param buffer - Buffer or BufferReader to read from.
|
|
97
|
+
* @returns The Selector.
|
|
98
|
+
*/
|
|
99
|
+
static fromBuffer(buffer: Buffer | BufferReader): EventSelector;
|
|
100
|
+
/**
|
|
101
|
+
* Converts a field to selector.
|
|
102
|
+
* @param fr - The field to convert.
|
|
103
|
+
* @returns The selector.
|
|
104
|
+
*/
|
|
105
|
+
static fromField(fr: Fr): EventSelector;
|
|
106
|
+
/**
|
|
107
|
+
* Creates a selector from a signature.
|
|
108
|
+
* @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
|
|
109
|
+
* @returns selector.
|
|
110
|
+
*/
|
|
111
|
+
static fromSignature(signature: string): EventSelector;
|
|
112
|
+
/**
|
|
113
|
+
* Create a Selector instance from a hex-encoded string.
|
|
114
|
+
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
115
|
+
* Throws an error if the input length is invalid or address value is out of range.
|
|
116
|
+
*
|
|
117
|
+
* @param selector - The hex-encoded string representing the Selector.
|
|
118
|
+
* @returns An Selector instance.
|
|
119
|
+
*/
|
|
120
|
+
static fromString(selector: string): EventSelector;
|
|
121
|
+
/**
|
|
122
|
+
* Creates an empty selector.
|
|
123
|
+
* @returns An empty selector.
|
|
124
|
+
*/
|
|
125
|
+
static empty(): EventSelector;
|
|
126
|
+
}
|
|
127
|
+
export {};
|
|
128
|
+
//# sourceMappingURL=selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/abi/selector.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,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;;;;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;IAIZ;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE;CAOtE;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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { fromHex, toBigIntBE, toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
2
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
|
+
import { keccak } from '../crypto/keccak/index.js';
|
|
4
|
+
import { Fr } from '../fields/index.js';
|
|
5
|
+
import { decodeFunctionSignature } from './decoder.js';
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
7
|
+
/** A selector is the first 4 bytes of the hash of a signature. */
|
|
8
|
+
class Selector {
|
|
9
|
+
constructor(/** Value of the selector */ value) {
|
|
10
|
+
this.value = value;
|
|
11
|
+
if (value > 2 ** (Selector.SIZE * 8) - 1) {
|
|
12
|
+
throw new Error(`selector must fit in ${Selector.SIZE} bytes.`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Checks if the selector is empty (all bytes are 0).
|
|
17
|
+
* @returns True if the selector is empty (all bytes are 0).
|
|
18
|
+
*/
|
|
19
|
+
isEmpty() {
|
|
20
|
+
return this.value === 0;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Serialize as a buffer.
|
|
24
|
+
* @param bufferSize - The buffer size.
|
|
25
|
+
* @returns The buffer.
|
|
26
|
+
*/
|
|
27
|
+
toBuffer(bufferSize = Selector.SIZE) {
|
|
28
|
+
return toBufferBE(BigInt(this.value), bufferSize);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Serialize as a hex string.
|
|
32
|
+
* @returns The string.
|
|
33
|
+
*/
|
|
34
|
+
toString() {
|
|
35
|
+
return this.toBuffer().toString('hex');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Checks if this selector is equal to another.
|
|
39
|
+
* @param other - The other selector.
|
|
40
|
+
* @returns True if the selectors are equal.
|
|
41
|
+
*/
|
|
42
|
+
equals(other) {
|
|
43
|
+
return this.value === other.value;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns a new field with the same contents as this EthAddress.
|
|
47
|
+
*
|
|
48
|
+
* @returns An Fr instance.
|
|
49
|
+
*/
|
|
50
|
+
toField() {
|
|
51
|
+
return new Fr(BigInt(this.value));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** The size of the selector in bytes. */
|
|
55
|
+
Selector.SIZE = 4;
|
|
56
|
+
/** A function selector is the first 4 bytes of the hash of a function signature. */
|
|
57
|
+
export class FunctionSelector extends Selector {
|
|
58
|
+
/**
|
|
59
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
60
|
+
* @param buffer - Buffer or BufferReader to read from.
|
|
61
|
+
* @returns The Selector.
|
|
62
|
+
*/
|
|
63
|
+
static fromBuffer(buffer) {
|
|
64
|
+
const reader = BufferReader.asReader(buffer);
|
|
65
|
+
const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
|
|
66
|
+
return new FunctionSelector(value);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Converts a field to selector.
|
|
70
|
+
* @param fr - The field to convert.
|
|
71
|
+
* @returns The selector.
|
|
72
|
+
*/
|
|
73
|
+
static fromField(fr) {
|
|
74
|
+
return new FunctionSelector(Number(fr.toBigInt()));
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Creates a selector from a signature.
|
|
78
|
+
* @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
|
|
79
|
+
* @returns selector.
|
|
80
|
+
*/
|
|
81
|
+
static fromSignature(signature) {
|
|
82
|
+
// throw if signature contains whitespace
|
|
83
|
+
if (/\s/.test(signature)) {
|
|
84
|
+
throw new Error('Signature cannot contain whitespace');
|
|
85
|
+
}
|
|
86
|
+
return FunctionSelector.fromBuffer(keccak(Buffer.from(signature)).subarray(0, Selector.SIZE));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create a Selector instance from a hex-encoded string.
|
|
90
|
+
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
91
|
+
* Throws an error if the input length is invalid or address value is out of range.
|
|
92
|
+
*
|
|
93
|
+
* @param selector - The hex-encoded string representing the Selector.
|
|
94
|
+
* @returns An Selector instance.
|
|
95
|
+
*/
|
|
96
|
+
static fromString(selector) {
|
|
97
|
+
const buf = fromHex(selector);
|
|
98
|
+
if (buf.length !== Selector.SIZE) {
|
|
99
|
+
throw new Error(`Invalid Selector length ${buf.length} (expected ${Selector.SIZE}).`);
|
|
100
|
+
}
|
|
101
|
+
return FunctionSelector.fromBuffer(buf);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Creates an empty selector.
|
|
105
|
+
* @returns An empty selector.
|
|
106
|
+
*/
|
|
107
|
+
static empty() {
|
|
108
|
+
return new FunctionSelector(0);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Creates a function selector for a given function name and parameters.
|
|
112
|
+
* @param name - The name of the function.
|
|
113
|
+
* @param parameters - An array of ABIParameter objects, each containing the type information of a function parameter.
|
|
114
|
+
* @returns A Buffer containing the 4-byte selector.
|
|
115
|
+
*/
|
|
116
|
+
static fromNameAndParameters(name, parameters) {
|
|
117
|
+
const signature = decodeFunctionSignature(name, parameters);
|
|
118
|
+
const selector = this.fromSignature(signature);
|
|
119
|
+
// If using the debug logger here it kill the typing in the `server_world_state_synchronizer` and jest tests.
|
|
120
|
+
// console.log(`selector for ${signature} is ${selector}`);
|
|
121
|
+
return selector;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** An event selector is the first 4 bytes of the hash of an event signature. */
|
|
125
|
+
export class EventSelector extends Selector {
|
|
126
|
+
/**
|
|
127
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
128
|
+
* @param buffer - Buffer or BufferReader to read from.
|
|
129
|
+
* @returns The Selector.
|
|
130
|
+
*/
|
|
131
|
+
static fromBuffer(buffer) {
|
|
132
|
+
const reader = BufferReader.asReader(buffer);
|
|
133
|
+
const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
|
|
134
|
+
return new EventSelector(value);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Converts a field to selector.
|
|
138
|
+
* @param fr - The field to convert.
|
|
139
|
+
* @returns The selector.
|
|
140
|
+
*/
|
|
141
|
+
static fromField(fr) {
|
|
142
|
+
return new EventSelector(Number(fr.toBigInt()));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Creates a selector from a signature.
|
|
146
|
+
* @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
|
|
147
|
+
* @returns selector.
|
|
148
|
+
*/
|
|
149
|
+
static fromSignature(signature) {
|
|
150
|
+
// throw if signature contains whitespace
|
|
151
|
+
if (/\s/.test(signature)) {
|
|
152
|
+
throw new Error('Signature cannot contain whitespace');
|
|
153
|
+
}
|
|
154
|
+
return EventSelector.fromBuffer(keccak(Buffer.from(signature)).subarray(0, Selector.SIZE));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Create a Selector instance from a hex-encoded string.
|
|
158
|
+
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
159
|
+
* Throws an error if the input length is invalid or address value is out of range.
|
|
160
|
+
*
|
|
161
|
+
* @param selector - The hex-encoded string representing the Selector.
|
|
162
|
+
* @returns An Selector instance.
|
|
163
|
+
*/
|
|
164
|
+
static fromString(selector) {
|
|
165
|
+
const buf = fromHex(selector);
|
|
166
|
+
if (buf.length !== Selector.SIZE) {
|
|
167
|
+
throw new Error(`Invalid Selector length ${buf.length} (expected ${Selector.SIZE}).`);
|
|
168
|
+
}
|
|
169
|
+
return EventSelector.fromBuffer(buf);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Creates an empty selector.
|
|
173
|
+
* @returns An empty selector.
|
|
174
|
+
*/
|
|
175
|
+
static empty() {
|
|
176
|
+
return new EventSelector(0);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3NlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV2RCxxRUFBcUU7QUFFckUsa0VBQWtFO0FBQ2xFLE1BQWUsUUFBUTtJQUlyQixZQUFZLDRCQUE0QixDQUFRLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQzNELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSTtRQUNqQyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENB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
|
package/dest/abi/utils.d.ts
CHANGED
|
@@ -10,11 +10,17 @@ export declare function isAddressStruct(abiType: ABIType): boolean;
|
|
|
10
10
|
* @param abiType - Type to check.
|
|
11
11
|
* @returns Boolean.
|
|
12
12
|
*/
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function isEthAddressStruct(abiType: ABIType): boolean;
|
|
14
14
|
/**
|
|
15
15
|
* Returns whether the ABI type is an Aztec Address defined in Aztec.nr.
|
|
16
16
|
* @param abiType - Type to check.
|
|
17
17
|
* @returns Boolean.
|
|
18
18
|
*/
|
|
19
19
|
export declare function isAztecAddressStruct(abiType: ABIType): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Returns whether the ABI type is an Function Selector defined in Aztec.nr.
|
|
22
|
+
* @param abiType - Type to check.
|
|
23
|
+
* @returns Boolean.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isFunctionSelectorStruct(abiType: ABIType): boolean;
|
|
20
26
|
//# sourceMappingURL=utils.d.ts.map
|
package/dest/abi/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/abi/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,WAE/C;AAED;;;;GAIG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/abi/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,WAE/C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,WAElD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,WAEpD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,WAExD"}
|
package/dest/abi/utils.js
CHANGED
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
* @returns Boolean.
|
|
5
5
|
*/
|
|
6
6
|
export function isAddressStruct(abiType) {
|
|
7
|
-
return
|
|
7
|
+
return isEthAddressStruct(abiType) || isAztecAddressStruct(abiType);
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Returns whether the ABI type is an Ethereum Address defined in Aztec.nr.
|
|
11
11
|
* @param abiType - Type to check.
|
|
12
12
|
* @returns Boolean.
|
|
13
13
|
*/
|
|
14
|
-
export function
|
|
15
|
-
return abiType.kind === 'struct' && abiType.path.endsWith('
|
|
14
|
+
export function isEthAddressStruct(abiType) {
|
|
15
|
+
return abiType.kind === 'struct' && abiType.path.endsWith('types::address::EthAddress');
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Returns whether the ABI type is an Aztec Address defined in Aztec.nr.
|
|
@@ -20,6 +20,14 @@ export function isEthereumAddressStruct(abiType) {
|
|
|
20
20
|
* @returns Boolean.
|
|
21
21
|
*/
|
|
22
22
|
export function isAztecAddressStruct(abiType) {
|
|
23
|
-
return abiType.kind === 'struct' && abiType.path.endsWith('
|
|
23
|
+
return abiType.kind === 'struct' && abiType.path.endsWith('types::address::AztecAddress');
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Returns whether the ABI type is an Function Selector defined in Aztec.nr.
|
|
27
|
+
* @param abiType - Type to check.
|
|
28
|
+
* @returns Boolean.
|
|
29
|
+
*/
|
|
30
|
+
export function isFunctionSelectorStruct(abiType) {
|
|
31
|
+
return abiType.kind === 'struct' && abiType.path.endsWith('types::abis::function_selector::FunctionSelector');
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLE9BQWdCO0lBQzlDLE9BQU8sa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FBZ0I7SUFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdCO0lBQ25ELE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUM1RixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxPQUFnQjtJQUN2RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDaEgsQ0FBQyJ9
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Tuple } from '@aztec/foundation/serialize';
|
|
2
|
+
export type { FieldsOf } from '@aztec/foundation/types';
|
|
3
|
+
/**
|
|
4
|
+
* Create an array over an integer range.
|
|
5
|
+
* @param n - The number of integers.
|
|
6
|
+
* @param offset - The starting number.
|
|
7
|
+
* @returns The array of numbers.
|
|
8
|
+
*/
|
|
9
|
+
export declare function range(n: number, offset?: number): number[];
|
|
10
|
+
/**
|
|
11
|
+
* Create an array over an integer range, filled with a function 'fn'.
|
|
12
|
+
* This is used over e.g. lodash because it resolved to a tuple type, needed for our fixed array type safety.
|
|
13
|
+
* @param n - The number of integers.
|
|
14
|
+
* @param fn - The generator function.
|
|
15
|
+
* @returns The array of numbers.
|
|
16
|
+
*/
|
|
17
|
+
export declare function makeTuple<T, N extends number>(length: N, fn: (i: number) => T, offset?: number): Tuple<T, N>;
|
|
18
|
+
/**
|
|
19
|
+
* Create an array over an integer range, filled with a function 'fn'. However, the latter half of the array are set to zeros.
|
|
20
|
+
* see `makeTuple` above.
|
|
21
|
+
* @param n - The number of integers.
|
|
22
|
+
* @param fn - The generator function.
|
|
23
|
+
* @returns The array of numbers.
|
|
24
|
+
*/
|
|
25
|
+
export declare function makeHalfFullTuple<T, N extends number>(length: N, fn: (i: number) => T, offset?: number): Tuple<T, N>;
|
|
26
|
+
/**
|
|
27
|
+
* Assert a member of an object is a certain length.
|
|
28
|
+
* @param obj - An object.
|
|
29
|
+
* @param member - A member string.
|
|
30
|
+
* @param length - The length.
|
|
31
|
+
*/
|
|
32
|
+
export declare function assertMemberLength<F extends string, T extends {
|
|
33
|
+
[f in F]: {
|
|
34
|
+
/**
|
|
35
|
+
* A property which the tested member of the object T has to have.
|
|
36
|
+
*/
|
|
37
|
+
length: number;
|
|
38
|
+
};
|
|
39
|
+
}>(obj: T, member: F, length: number): void;
|
|
40
|
+
/**
|
|
41
|
+
* Assert all subarrays in a member of an object are a certain length.
|
|
42
|
+
* @param obj - An object.
|
|
43
|
+
* @param member - A member string.
|
|
44
|
+
* @param length - The expected length for each subarray.
|
|
45
|
+
*/
|
|
46
|
+
export declare function assertItemsLength<F extends string, T extends {
|
|
47
|
+
[f in F]: {
|
|
48
|
+
/**
|
|
49
|
+
* A property which the tested member of the object T has to have.
|
|
50
|
+
*/
|
|
51
|
+
length: number;
|
|
52
|
+
}[];
|
|
53
|
+
}>(obj: T, member: F, length: number): void;
|
|
54
|
+
//# sourceMappingURL=array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/array/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,SAAI,YAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EAAE,MAAM,SAAI,eAEzF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EAAE,MAAM,SAAI,eAEjG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;KACP,CAAC,IAAI,CAAC,GAAG;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB;CACF,EACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,QAIlC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;KACP,CAAC,IAAI,CAAC,GAAG;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE;CACJ,EACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,QAOlC"}
|