@qevm/abi 5.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +52 -0
  3. package/lib/_version.d.ts +2 -0
  4. package/lib/_version.d.ts.map +1 -0
  5. package/lib/_version.js +5 -0
  6. package/lib/_version.js.map +1 -0
  7. package/lib/abi-coder.d.ts +17 -0
  8. package/lib/abi-coder.d.ts.map +1 -0
  9. package/lib/abi-coder.js +99 -0
  10. package/lib/abi-coder.js.map +1 -0
  11. package/lib/coders/abstract-coder.d.ts +53 -0
  12. package/lib/coders/abstract-coder.d.ts.map +1 -0
  13. package/lib/coders/abstract-coder.js +153 -0
  14. package/lib/coders/abstract-coder.js.map +1 -0
  15. package/lib/coders/address.d.ts +8 -0
  16. package/lib/coders/address.d.ts.map +1 -0
  17. package/lib/coders/address.js +28 -0
  18. package/lib/coders/address.js.map +1 -0
  19. package/lib/coders/anonymous.d.ts +9 -0
  20. package/lib/coders/anonymous.d.ts.map +1 -0
  21. package/lib/coders/anonymous.js +22 -0
  22. package/lib/coders/anonymous.js.map +1 -0
  23. package/lib/coders/array.d.ts +14 -0
  24. package/lib/coders/array.d.ts.map +1 -0
  25. package/lib/coders/array.js +214 -0
  26. package/lib/coders/array.js.map +1 -0
  27. package/lib/coders/boolean.d.ts +8 -0
  28. package/lib/coders/boolean.d.ts.map +1 -0
  29. package/lib/coders/boolean.js +20 -0
  30. package/lib/coders/boolean.js.map +1 -0
  31. package/lib/coders/bytes.d.ts +12 -0
  32. package/lib/coders/bytes.d.ts.map +1 -0
  33. package/lib/coders/bytes.js +33 -0
  34. package/lib/coders/bytes.js.map +1 -0
  35. package/lib/coders/fixed-bytes.d.ts +10 -0
  36. package/lib/coders/fixed-bytes.d.ts.map +1 -0
  37. package/lib/coders/fixed-bytes.js +28 -0
  38. package/lib/coders/fixed-bytes.js.map +1 -0
  39. package/lib/coders/null.d.ts +8 -0
  40. package/lib/coders/null.d.ts.map +1 -0
  41. package/lib/coders/null.js +24 -0
  42. package/lib/coders/null.js.map +1 -0
  43. package/lib/coders/number.d.ts +11 -0
  44. package/lib/coders/number.d.ts.map +1 -0
  45. package/lib/coders/number.js +45 -0
  46. package/lib/coders/number.js.map +1 -0
  47. package/lib/coders/string.d.ts +9 -0
  48. package/lib/coders/string.d.ts.map +1 -0
  49. package/lib/coders/string.js +21 -0
  50. package/lib/coders/string.js.map +1 -0
  51. package/lib/coders/tuple.d.ts +11 -0
  52. package/lib/coders/tuple.d.ts.map +1 -0
  53. package/lib/coders/tuple.js +60 -0
  54. package/lib/coders/tuple.js.map +1 -0
  55. package/lib/fragments.d.ts +85 -0
  56. package/lib/fragments.d.ts.map +1 -0
  57. package/lib/fragments.js +863 -0
  58. package/lib/fragments.js.map +1 -0
  59. package/lib/index.d.ts +5 -0
  60. package/lib/index.d.ts.map +1 -0
  61. package/lib/index.js +21 -0
  62. package/lib/index.js.map +1 -0
  63. package/lib/interface.d.ts +89 -0
  64. package/lib/interface.d.ts.map +1 -0
  65. package/lib/interface.js +617 -0
  66. package/lib/interface.js.map +1 -0
  67. package/package.json +33 -0
  68. package/src.ts/_version.ts +1 -0
  69. package/src.ts/abi-coder.ts +123 -0
  70. package/src.ts/coders/abstract-coder.ts +207 -0
  71. package/src.ts/coders/address.ts +31 -0
  72. package/src.ts/coders/anonymous.ts +25 -0
  73. package/src.ts/coders/array.ts +236 -0
  74. package/src.ts/coders/boolean.ts +23 -0
  75. package/src.ts/coders/bytes.ts +38 -0
  76. package/src.ts/coders/fixed-bytes.ts +30 -0
  77. package/src.ts/coders/null.ts +24 -0
  78. package/src.ts/coders/number.ts +57 -0
  79. package/src.ts/coders/string.ts +25 -0
  80. package/src.ts/coders/tuple.ts +61 -0
  81. package/src.ts/fragments.ts +1070 -0
  82. package/src.ts/index.ts +34 -0
  83. package/src.ts/interface.ts +715 -0
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Richard Moore
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,52 @@
1
+ Ethereum ABI Coder
2
+ ==================
3
+
4
+ This sub-module is part of the [ethers project](https://github.com/ethers-io/ethers.js).
5
+
6
+ It is responsible for encoding and decoding the Application Binary Interface (ABI)
7
+ used by most smart contracts to interoperate between other smart contracts and clients.
8
+
9
+ For more information, see the [documentation](https://docs.ethers.io/v5/api/utils/abi/).
10
+
11
+ Importing
12
+ ---------
13
+
14
+ Most users will prefer to use the [umbrella package](https://www.npmjs.com/package/ethers),
15
+ but for those with more specific needs, individual components can be imported.
16
+
17
+ ```javascript
18
+ const {
19
+
20
+ ConstructorFragment,
21
+ EventFragment,
22
+ Fragment,
23
+ FunctionFragment,
24
+ ParamType,
25
+ FormatTypes,
26
+
27
+ AbiCoder,
28
+ defaultAbiCoder,
29
+
30
+ Interface,
31
+ Indexed,
32
+
33
+ /////////////////////////
34
+ // Types
35
+
36
+ CoerceFunc,
37
+ JsonFragment,
38
+ JsonFragmentType,
39
+
40
+ Result,
41
+ checkResultErrors,
42
+
43
+ LogDescription,
44
+ TransactionDescription
45
+
46
+ } = require("@qevm/abi");
47
+ ```
48
+
49
+ License
50
+ -------
51
+
52
+ MIT License
@@ -0,0 +1,2 @@
1
+ export declare const version = "abi/5.7.0";
2
+ //# sourceMappingURL=_version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_version.d.ts","sourceRoot":"","sources":["../src.ts/_version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.version = void 0;
4
+ exports.version = "abi/5.7.0";
5
+ //# sourceMappingURL=_version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_version.js","sourceRoot":"","sources":["../src.ts/_version.ts"],"names":[],"mappings":";;;AAAa,QAAA,OAAO,GAAG,WAAW,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { BytesLike } from "@qevm/bytes";
2
+ import { Coder, Reader, Result, Writer } from "./coders/abstract-coder";
3
+ import { ParamType } from "./fragments";
4
+ export type CoerceFunc = (type: string, value: any) => any;
5
+ export declare class AbiCoder {
6
+ readonly coerceFunc: CoerceFunc;
7
+ constructor(coerceFunc?: CoerceFunc);
8
+ _getCoder(param: ParamType): Coder;
9
+ _getWordSize(): number;
10
+ _getReader(data: Uint8Array, allowLoose?: boolean): Reader;
11
+ _getWriter(): Writer;
12
+ getDefaultValue(types: ReadonlyArray<string | ParamType>): Result;
13
+ encode(types: ReadonlyArray<string | ParamType>, values: ReadonlyArray<any>): string;
14
+ decode(types: ReadonlyArray<string | ParamType>, data: BytesLike, loose?: boolean): Result;
15
+ }
16
+ export declare const defaultAbiCoder: AbiCoder;
17
+ //# sourceMappingURL=abi-coder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi-coder.d.ts","sourceRoot":"","sources":["../src.ts/abi-coder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,SAAS,EAAE,MAAM,aAAa,CAAC;AAOlD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAWxE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AAE3D,qBAAa,QAAQ;IACjB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;gBAEpB,UAAU,CAAC,EAAE,UAAU;IAInC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK;IA4ClC,YAAY,IAAI,MAAM;IAEtB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM;IAI1D,UAAU,IAAI,MAAM;IAIpB,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM;IAMjE,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM;IAgBpF,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM;CAK7F;AAED,eAAO,MAAM,eAAe,EAAE,QAAyB,CAAC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultAbiCoder = exports.AbiCoder = void 0;
4
+ // See: https://github.com/ethereum/wiki/wiki/Ethereum-Contract-ABI
5
+ const bytes_1 = require("@qevm/bytes");
6
+ const properties_1 = require("@ethersproject/properties");
7
+ const logger_1 = require("@ethersproject/logger");
8
+ const _version_1 = require("./_version");
9
+ const logger = new logger_1.Logger(_version_1.version);
10
+ const abstract_coder_1 = require("./coders/abstract-coder");
11
+ const address_1 = require("./coders/address");
12
+ const array_1 = require("./coders/array");
13
+ const boolean_1 = require("./coders/boolean");
14
+ const bytes_2 = require("./coders/bytes");
15
+ const fixed_bytes_1 = require("./coders/fixed-bytes");
16
+ const null_1 = require("./coders/null");
17
+ const number_1 = require("./coders/number");
18
+ const string_1 = require("./coders/string");
19
+ const tuple_1 = require("./coders/tuple");
20
+ const fragments_1 = require("./fragments");
21
+ const paramTypeBytes = new RegExp(/^bytes([0-9]*)$/);
22
+ const paramTypeNumber = new RegExp(/^(u?int)([0-9]*)$/);
23
+ class AbiCoder {
24
+ constructor(coerceFunc) {
25
+ (0, properties_1.defineReadOnly)(this, "coerceFunc", coerceFunc || null);
26
+ }
27
+ _getCoder(param) {
28
+ switch (param.baseType) {
29
+ case "address":
30
+ return new address_1.AddressCoder(param.name);
31
+ case "bool":
32
+ return new boolean_1.BooleanCoder(param.name);
33
+ case "string":
34
+ return new string_1.StringCoder(param.name);
35
+ case "bytes":
36
+ return new bytes_2.BytesCoder(param.name);
37
+ case "array":
38
+ return new array_1.ArrayCoder(this._getCoder(param.arrayChildren), param.arrayLength, param.name);
39
+ case "tuple":
40
+ return new tuple_1.TupleCoder((param.components || []).map((component) => {
41
+ return this._getCoder(component);
42
+ }), param.name);
43
+ case "":
44
+ return new null_1.NullCoder(param.name);
45
+ }
46
+ // u?int[0-9]*
47
+ let match = param.type.match(paramTypeNumber);
48
+ if (match) {
49
+ let size = parseInt(match[2] || "256");
50
+ if (size === 0 || size > 256 || (size % 8) !== 0) {
51
+ logger.throwArgumentError("invalid " + match[1] + " bit length", "param", param);
52
+ }
53
+ return new number_1.NumberCoder(size / 8, (match[1] === "int"), param.name);
54
+ }
55
+ // bytes[0-9]+
56
+ match = param.type.match(paramTypeBytes);
57
+ if (match) {
58
+ let size = parseInt(match[1]);
59
+ if (size === 0 || size > 32) {
60
+ logger.throwArgumentError("invalid bytes length", "param", param);
61
+ }
62
+ return new fixed_bytes_1.FixedBytesCoder(size, param.name);
63
+ }
64
+ return logger.throwArgumentError("invalid type", "type", param.type);
65
+ }
66
+ _getWordSize() { return 32; }
67
+ _getReader(data, allowLoose) {
68
+ return new abstract_coder_1.Reader(data, this._getWordSize(), this.coerceFunc, allowLoose);
69
+ }
70
+ _getWriter() {
71
+ return new abstract_coder_1.Writer(this._getWordSize());
72
+ }
73
+ getDefaultValue(types) {
74
+ const coders = types.map((type) => this._getCoder(fragments_1.ParamType.from(type)));
75
+ const coder = new tuple_1.TupleCoder(coders, "_");
76
+ return coder.defaultValue();
77
+ }
78
+ encode(types, values) {
79
+ if (types.length !== values.length) {
80
+ logger.throwError("types/values length mismatch", logger_1.Logger.errors.INVALID_ARGUMENT, {
81
+ count: { types: types.length, values: values.length },
82
+ value: { types: types, values: values }
83
+ });
84
+ }
85
+ const coders = types.map((type) => this._getCoder(fragments_1.ParamType.from(type)));
86
+ const coder = (new tuple_1.TupleCoder(coders, "_"));
87
+ const writer = this._getWriter();
88
+ coder.encode(writer, values);
89
+ return writer.data;
90
+ }
91
+ decode(types, data, loose) {
92
+ const coders = types.map((type) => this._getCoder(fragments_1.ParamType.from(type)));
93
+ const coder = new tuple_1.TupleCoder(coders, "_");
94
+ return coder.decode(this._getReader((0, bytes_1.arrayify)(data), loose));
95
+ }
96
+ }
97
+ exports.AbiCoder = AbiCoder;
98
+ exports.defaultAbiCoder = new AbiCoder();
99
+ //# sourceMappingURL=abi-coder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi-coder.js","sourceRoot":"","sources":["../src.ts/abi-coder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { BytesLike } from "@qevm/bytes";
2
+ import { BigNumber, BigNumberish } from "@qevm/bignumber";
3
+ export interface Result extends ReadonlyArray<any> {
4
+ readonly [key: string]: any;
5
+ }
6
+ export declare function checkResultErrors(result: Result): Array<{
7
+ path: Array<string | number>;
8
+ error: Error;
9
+ }>;
10
+ export type CoerceFunc = (type: string, value: any) => any;
11
+ export declare abstract class Coder {
12
+ readonly name: string;
13
+ readonly type: string;
14
+ readonly localName: string;
15
+ readonly dynamic: boolean;
16
+ constructor(name: string, type: string, localName: string, dynamic: boolean);
17
+ _throwError(message: string, value: any): void;
18
+ abstract encode(writer: Writer, value: any): number;
19
+ abstract decode(reader: Reader): any;
20
+ abstract defaultValue(): any;
21
+ }
22
+ export declare class Writer {
23
+ readonly wordSize: number;
24
+ _data: Array<Uint8Array>;
25
+ _dataLength: number;
26
+ _padding: Uint8Array;
27
+ constructor(wordSize?: number);
28
+ get data(): string;
29
+ get length(): number;
30
+ _writeData(data: Uint8Array): number;
31
+ appendWriter(writer: Writer): number;
32
+ writeBytes(value: BytesLike): number;
33
+ _getValue(value: BigNumberish): Uint8Array;
34
+ writeValue(value: BigNumberish): number;
35
+ writeUpdatableValue(): (value: BigNumberish) => void;
36
+ }
37
+ export declare class Reader {
38
+ readonly wordSize: number;
39
+ readonly allowLoose: boolean;
40
+ readonly _data: Uint8Array;
41
+ readonly _coerceFunc: CoerceFunc;
42
+ _offset: number;
43
+ constructor(data: BytesLike, wordSize?: number, coerceFunc?: CoerceFunc, allowLoose?: boolean);
44
+ get data(): string;
45
+ get consumed(): number;
46
+ static coerce(name: string, value: any): any;
47
+ coerce(name: string, value: any): any;
48
+ _peekBytes(offset: number, length: number, loose?: boolean): Uint8Array;
49
+ subReader(offset: number): Reader;
50
+ readBytes(length: number, loose?: boolean): Uint8Array;
51
+ readValue(): BigNumber;
52
+ }
53
+ //# sourceMappingURL=abstract-coder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-coder.d.ts","sourceRoot":"","sources":["../../src.ts/coders/abstract-coder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Reader = exports.Writer = exports.Coder = void 0;
4
+ exports.checkResultErrors = checkResultErrors;
5
+ const bytes_1 = require("@qevm/bytes");
6
+ const bignumber_1 = require("@qevm/bignumber");
7
+ const properties_1 = require("@ethersproject/properties");
8
+ const logger_1 = require("@ethersproject/logger");
9
+ const _version_1 = require("../_version");
10
+ const logger = new logger_1.Logger(_version_1.version);
11
+ function checkResultErrors(result) {
12
+ // Find the first error (if any)
13
+ const errors = [];
14
+ const checkErrors = function (path, object) {
15
+ if (!Array.isArray(object)) {
16
+ return;
17
+ }
18
+ for (let key in object) {
19
+ const childPath = path.slice();
20
+ childPath.push(key);
21
+ try {
22
+ checkErrors(childPath, object[key]);
23
+ }
24
+ catch (error) {
25
+ errors.push({ path: childPath, error: error });
26
+ }
27
+ }
28
+ };
29
+ checkErrors([], result);
30
+ return errors;
31
+ }
32
+ class Coder {
33
+ constructor(name, type, localName, dynamic) {
34
+ // @TODO: defineReadOnly these
35
+ this.name = name;
36
+ this.type = type;
37
+ this.localName = localName;
38
+ this.dynamic = dynamic;
39
+ }
40
+ _throwError(message, value) {
41
+ logger.throwArgumentError(message, this.localName, value);
42
+ }
43
+ }
44
+ exports.Coder = Coder;
45
+ class Writer {
46
+ constructor(wordSize) {
47
+ (0, properties_1.defineReadOnly)(this, "wordSize", wordSize || 32);
48
+ this._data = [];
49
+ this._dataLength = 0;
50
+ this._padding = new Uint8Array(wordSize);
51
+ }
52
+ get data() {
53
+ return (0, bytes_1.hexConcat)(this._data);
54
+ }
55
+ get length() { return this._dataLength; }
56
+ _writeData(data) {
57
+ this._data.push(data);
58
+ this._dataLength += data.length;
59
+ return data.length;
60
+ }
61
+ appendWriter(writer) {
62
+ return this._writeData((0, bytes_1.concat)(writer._data));
63
+ }
64
+ // Arrayish items; padded on the right to wordSize
65
+ writeBytes(value) {
66
+ let bytes = (0, bytes_1.arrayify)(value);
67
+ const paddingOffset = bytes.length % this.wordSize;
68
+ if (paddingOffset) {
69
+ bytes = (0, bytes_1.concat)([bytes, this._padding.slice(paddingOffset)]);
70
+ }
71
+ return this._writeData(bytes);
72
+ }
73
+ _getValue(value) {
74
+ let bytes = (0, bytes_1.arrayify)(bignumber_1.BigNumber.from(value));
75
+ if (bytes.length > this.wordSize) {
76
+ logger.throwError("value out-of-bounds", logger_1.Logger.errors.BUFFER_OVERRUN, {
77
+ length: this.wordSize,
78
+ offset: bytes.length
79
+ });
80
+ }
81
+ if (bytes.length % this.wordSize) {
82
+ bytes = (0, bytes_1.concat)([this._padding.slice(bytes.length % this.wordSize), bytes]);
83
+ }
84
+ return bytes;
85
+ }
86
+ // BigNumberish items; padded on the left to wordSize
87
+ writeValue(value) {
88
+ return this._writeData(this._getValue(value));
89
+ }
90
+ writeUpdatableValue() {
91
+ const offset = this._data.length;
92
+ this._data.push(this._padding);
93
+ this._dataLength += this.wordSize;
94
+ return (value) => {
95
+ this._data[offset] = this._getValue(value);
96
+ };
97
+ }
98
+ }
99
+ exports.Writer = Writer;
100
+ class Reader {
101
+ constructor(data, wordSize, coerceFunc, allowLoose) {
102
+ (0, properties_1.defineReadOnly)(this, "_data", (0, bytes_1.arrayify)(data));
103
+ (0, properties_1.defineReadOnly)(this, "wordSize", wordSize || 32);
104
+ (0, properties_1.defineReadOnly)(this, "_coerceFunc", coerceFunc);
105
+ (0, properties_1.defineReadOnly)(this, "allowLoose", allowLoose);
106
+ this._offset = 0;
107
+ }
108
+ get data() { return (0, bytes_1.hexlify)(this._data); }
109
+ get consumed() { return this._offset; }
110
+ // The default Coerce function
111
+ static coerce(name, value) {
112
+ let match = name.match("^u?int([0-9]+)$");
113
+ if (match && parseInt(match[1]) <= 48) {
114
+ value = value.toNumber();
115
+ }
116
+ return value;
117
+ }
118
+ coerce(name, value) {
119
+ if (this._coerceFunc) {
120
+ return this._coerceFunc(name, value);
121
+ }
122
+ return Reader.coerce(name, value);
123
+ }
124
+ _peekBytes(offset, length, loose) {
125
+ let alignedLength = Math.ceil(length / this.wordSize) * this.wordSize;
126
+ if (this._offset + alignedLength > this._data.length) {
127
+ if (this.allowLoose && loose && this._offset + length <= this._data.length) {
128
+ alignedLength = length;
129
+ }
130
+ else {
131
+ logger.throwError("data out-of-bounds", logger_1.Logger.errors.BUFFER_OVERRUN, {
132
+ length: this._data.length,
133
+ offset: this._offset + alignedLength
134
+ });
135
+ }
136
+ }
137
+ return this._data.slice(this._offset, this._offset + alignedLength);
138
+ }
139
+ subReader(offset) {
140
+ return new Reader(this._data.slice(this._offset + offset), this.wordSize, this._coerceFunc, this.allowLoose);
141
+ }
142
+ readBytes(length, loose) {
143
+ let bytes = this._peekBytes(0, length, !!loose);
144
+ this._offset += bytes.length;
145
+ // @TODO: Make sure the length..end bytes are all 0?
146
+ return bytes.slice(0, length);
147
+ }
148
+ readValue() {
149
+ return bignumber_1.BigNumber.from(this.readBytes(this.wordSize));
150
+ }
151
+ }
152
+ exports.Reader = Reader;
153
+ //# sourceMappingURL=abstract-coder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstract-coder.js","sourceRoot":"","sources":["../../src.ts/coders/abstract-coder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Coder, Reader, Writer } from "./abstract-coder";
2
+ export declare class AddressCoder extends Coder {
3
+ constructor(localName: string);
4
+ defaultValue(): string;
5
+ encode(writer: Writer, value: string): number;
6
+ decode(reader: Reader): any;
7
+ }
8
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src.ts/coders/address.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,qBAAa,YAAa,SAAQ,KAAK;gBAEvB,SAAS,EAAE,MAAM;IAI7B,YAAY,IAAI,MAAM;IAItB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAS7C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;CAG9B"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddressCoder = void 0;
4
+ const address_1 = require("@qevm/address");
5
+ const bytes_1 = require("@qevm/bytes");
6
+ const abstract_coder_1 = require("./abstract-coder");
7
+ class AddressCoder extends abstract_coder_1.Coder {
8
+ constructor(localName) {
9
+ super("address", "address", localName, false);
10
+ }
11
+ defaultValue() {
12
+ return "0x0000000000000000000000000000000000000000";
13
+ }
14
+ encode(writer, value) {
15
+ try {
16
+ value = (0, address_1.getAddress)(value);
17
+ }
18
+ catch (error) {
19
+ this._throwError(error.message, value);
20
+ }
21
+ return writer.writeValue(value);
22
+ }
23
+ decode(reader) {
24
+ return (0, address_1.getAddress)((0, bytes_1.hexZeroPad)(reader.readValue().toHexString(), 20));
25
+ }
26
+ }
27
+ exports.AddressCoder = AddressCoder;
28
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../src.ts/coders/address.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,2CAA2C;AAC3C,uCAAyC;AAEzC,qDAAyD;AAEzD,MAAa,YAAa,SAAQ,sBAAK;IAEnC,YAAY,SAAiB;QACzB,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,YAAY;QACR,OAAO,4CAA4C,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,KAAa;QAChC,IAAI,CAAC;YACD,KAAK,GAAG,IAAA,oBAAU,EAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,OAAO,IAAA,oBAAU,EAAC,IAAA,kBAAU,EAAC,MAAM,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;CACJ;AAtBD,oCAsBC"}
@@ -0,0 +1,9 @@
1
+ import { Coder, Reader, Writer } from "./abstract-coder";
2
+ export declare class AnonymousCoder extends Coder {
3
+ private coder;
4
+ constructor(coder: Coder);
5
+ defaultValue(): any;
6
+ encode(writer: Writer, value: any): number;
7
+ decode(reader: Reader): any;
8
+ }
9
+ //# sourceMappingURL=anonymous.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymous.d.ts","sourceRoot":"","sources":["../../src.ts/coders/anonymous.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGzD,qBAAa,cAAe,SAAQ,KAAK;IACrC,OAAO,CAAC,KAAK,CAAQ;gBAET,KAAK,EAAE,KAAK;IAKxB,YAAY,IAAI,GAAG;IAInB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM;IAI1C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;CAG9B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnonymousCoder = void 0;
4
+ const abstract_coder_1 = require("./abstract-coder");
5
+ // Clones the functionality of an existing Coder, but without a localName
6
+ class AnonymousCoder extends abstract_coder_1.Coder {
7
+ constructor(coder) {
8
+ super(coder.name, coder.type, undefined, coder.dynamic);
9
+ this.coder = coder;
10
+ }
11
+ defaultValue() {
12
+ return this.coder.defaultValue();
13
+ }
14
+ encode(writer, value) {
15
+ return this.coder.encode(writer, value);
16
+ }
17
+ decode(reader) {
18
+ return this.coder.decode(reader);
19
+ }
20
+ }
21
+ exports.AnonymousCoder = AnonymousCoder;
22
+ //# sourceMappingURL=anonymous.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymous.js","sourceRoot":"","sources":["../../src.ts/coders/anonymous.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,qDAAyD;AAEzD,yEAAyE;AACzE,MAAa,cAAe,SAAQ,sBAAK;IAGrC,YAAY,KAAY;QACpB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,KAAU;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,MAAc;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;CACJ;AAnBD,wCAmBC"}
@@ -0,0 +1,14 @@
1
+ import { Coder, Reader, Result, Writer } from "./abstract-coder";
2
+ export declare function pack(writer: Writer, coders: ReadonlyArray<Coder>, values: Array<any> | {
3
+ [name: string]: any;
4
+ }): number;
5
+ export declare function unpack(reader: Reader, coders: Array<Coder>): Result;
6
+ export declare class ArrayCoder extends Coder {
7
+ readonly coder: Coder;
8
+ readonly length: number;
9
+ constructor(coder: Coder, length: number, localName: string);
10
+ defaultValue(): Array<any>;
11
+ encode(writer: Writer, value: Array<any>): number;
12
+ decode(reader: Reader): any;
13
+ }
14
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src.ts/coders/array.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGjE,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG;IAAE,CAAE,IAAI,EAAE,MAAM,GAAI,GAAG,CAAA;CAAE,GAAG,MAAM,CAuEzH;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAmFnE;AAGD,qBAAa,UAAW,SAAQ,KAAK;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAS3D,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC;IAW1B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM;IAoBjD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;CAsB9B"}