web3ethabii 4.3.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.
Files changed (190) hide show
  1. package/LICENSE +14 -0
  2. package/README.md +59 -0
  3. package/lib/commonjs/api/errors_api.d.ts +5 -0
  4. package/lib/commonjs/api/errors_api.js +44 -0
  5. package/lib/commonjs/api/errors_api.js.map +1 -0
  6. package/lib/commonjs/api/events_api.d.ts +51 -0
  7. package/lib/commonjs/api/events_api.js +90 -0
  8. package/lib/commonjs/api/events_api.js.map +1 -0
  9. package/lib/commonjs/api/functions_api.d.ts +92 -0
  10. package/lib/commonjs/api/functions_api.js +139 -0
  11. package/lib/commonjs/api/functions_api.js.map +1 -0
  12. package/lib/commonjs/api/logs_api.d.ts +49 -0
  13. package/lib/commonjs/api/logs_api.js +107 -0
  14. package/lib/commonjs/api/logs_api.js.map +1 -0
  15. package/lib/commonjs/api/parameters_api.d.ts +238 -0
  16. package/lib/commonjs/api/parameters_api.js +280 -0
  17. package/lib/commonjs/api/parameters_api.js.map +1 -0
  18. package/lib/commonjs/coders/base/address.d.ts +4 -0
  19. package/lib/commonjs/coders/base/address.js +75 -0
  20. package/lib/commonjs/coders/base/address.js.map +1 -0
  21. package/lib/commonjs/coders/base/array.d.ts +4 -0
  22. package/lib/commonjs/coders/base/array.js +106 -0
  23. package/lib/commonjs/coders/base/array.js.map +1 -0
  24. package/lib/commonjs/coders/base/bool.d.ts +4 -0
  25. package/lib/commonjs/coders/base/bool.js +56 -0
  26. package/lib/commonjs/coders/base/bool.js.map +1 -0
  27. package/lib/commonjs/coders/base/bytes.d.ts +4 -0
  28. package/lib/commonjs/coders/base/bytes.js +101 -0
  29. package/lib/commonjs/coders/base/bytes.js.map +1 -0
  30. package/lib/commonjs/coders/base/index.d.ts +11 -0
  31. package/lib/commonjs/coders/base/index.js +109 -0
  32. package/lib/commonjs/coders/base/index.js.map +1 -0
  33. package/lib/commonjs/coders/base/number.d.ts +4 -0
  34. package/lib/commonjs/coders/base/number.js +116 -0
  35. package/lib/commonjs/coders/base/number.js.map +1 -0
  36. package/lib/commonjs/coders/base/numbersLimits.d.ts +4 -0
  37. package/lib/commonjs/coders/base/numbersLimits.js +40 -0
  38. package/lib/commonjs/coders/base/numbersLimits.js.map +1 -0
  39. package/lib/commonjs/coders/base/string.d.ts +4 -0
  40. package/lib/commonjs/coders/base/string.js +40 -0
  41. package/lib/commonjs/coders/base/string.js.map +1 -0
  42. package/lib/commonjs/coders/base/tuple.d.ts +7 -0
  43. package/lib/commonjs/coders/base/tuple.js +123 -0
  44. package/lib/commonjs/coders/base/tuple.js.map +1 -0
  45. package/lib/commonjs/coders/base/utils.d.ts +2 -0
  46. package/lib/commonjs/coders/base/utils.js +50 -0
  47. package/lib/commonjs/coders/base/utils.js.map +1 -0
  48. package/lib/commonjs/coders/decode.d.ts +5 -0
  49. package/lib/commonjs/coders/decode.js +29 -0
  50. package/lib/commonjs/coders/decode.js.map +1 -0
  51. package/lib/commonjs/coders/encode.d.ts +38 -0
  52. package/lib/commonjs/coders/encode.js +113 -0
  53. package/lib/commonjs/coders/encode.js.map +1 -0
  54. package/lib/commonjs/coders/types.d.ts +16 -0
  55. package/lib/commonjs/coders/types.js +19 -0
  56. package/lib/commonjs/coders/types.js.map +1 -0
  57. package/lib/commonjs/coders/utils.d.ts +23 -0
  58. package/lib/commonjs/coders/utils.js +115 -0
  59. package/lib/commonjs/coders/utils.js.map +1 -0
  60. package/lib/commonjs/decode_contract_error_data.d.ts +3 -0
  61. package/lib/commonjs/decode_contract_error_data.js +73 -0
  62. package/lib/commonjs/decode_contract_error_data.js.map +1 -0
  63. package/lib/commonjs/eip_712.d.ts +50 -0
  64. package/lib/commonjs/eip_712.js +144 -0
  65. package/lib/commonjs/eip_712.js.map +1 -0
  66. package/lib/commonjs/index.d.ts +8 -0
  67. package/lib/commonjs/index.js +43 -0
  68. package/lib/commonjs/index.js.map +1 -0
  69. package/lib/commonjs/package.json +1 -0
  70. package/lib/commonjs/utils.d.ts +43 -0
  71. package/lib/commonjs/utils.js +216 -0
  72. package/lib/commonjs/utils.js.map +1 -0
  73. package/lib/esm/api/errors_api.js +40 -0
  74. package/lib/esm/api/errors_api.js.map +1 -0
  75. package/lib/esm/api/events_api.js +86 -0
  76. package/lib/esm/api/events_api.js.map +1 -0
  77. package/lib/esm/api/functions_api.js +134 -0
  78. package/lib/esm/api/functions_api.js.map +1 -0
  79. package/lib/esm/api/logs_api.js +103 -0
  80. package/lib/esm/api/logs_api.js.map +1 -0
  81. package/lib/esm/api/parameters_api.js +271 -0
  82. package/lib/esm/api/parameters_api.js.map +1 -0
  83. package/lib/esm/coders/base/address.js +70 -0
  84. package/lib/esm/coders/base/address.js.map +1 -0
  85. package/lib/esm/coders/base/array.js +101 -0
  86. package/lib/esm/coders/base/array.js.map +1 -0
  87. package/lib/esm/coders/base/bool.js +51 -0
  88. package/lib/esm/coders/base/bool.js.map +1 -0
  89. package/lib/esm/coders/base/bytes.js +96 -0
  90. package/lib/esm/coders/base/bytes.js.map +1 -0
  91. package/lib/esm/coders/base/index.js +90 -0
  92. package/lib/esm/coders/base/index.js.map +1 -0
  93. package/lib/esm/coders/base/number.js +111 -0
  94. package/lib/esm/coders/base/number.js.map +1 -0
  95. package/lib/esm/coders/base/numbersLimits.js +37 -0
  96. package/lib/esm/coders/base/numbersLimits.js.map +1 -0
  97. package/lib/esm/coders/base/string.js +35 -0
  98. package/lib/esm/coders/base/string.js.map +1 -0
  99. package/lib/esm/coders/base/tuple.js +118 -0
  100. package/lib/esm/coders/base/tuple.js.map +1 -0
  101. package/lib/esm/coders/base/utils.js +46 -0
  102. package/lib/esm/coders/base/utils.js.map +1 -0
  103. package/lib/esm/coders/decode.js +25 -0
  104. package/lib/esm/coders/decode.js.map +1 -0
  105. package/lib/esm/coders/encode.js +108 -0
  106. package/lib/esm/coders/encode.js.map +1 -0
  107. package/lib/esm/coders/types.js +18 -0
  108. package/lib/esm/coders/types.js.map +1 -0
  109. package/lib/esm/coders/utils.js +105 -0
  110. package/lib/esm/coders/utils.js.map +1 -0
  111. package/lib/esm/decode_contract_error_data.js +69 -0
  112. package/lib/esm/decode_contract_error_data.js.map +1 -0
  113. package/lib/esm/eip_712.js +140 -0
  114. package/lib/esm/eip_712.js.map +1 -0
  115. package/lib/esm/index.js +25 -0
  116. package/lib/esm/index.js.map +1 -0
  117. package/lib/esm/package.json +1 -0
  118. package/lib/esm/utils.js +199 -0
  119. package/lib/esm/utils.js.map +1 -0
  120. package/lib/types/api/errors_api.d.ts +6 -0
  121. package/lib/types/api/errors_api.d.ts.map +1 -0
  122. package/lib/types/api/events_api.d.ts +52 -0
  123. package/lib/types/api/events_api.d.ts.map +1 -0
  124. package/lib/types/api/functions_api.d.ts +93 -0
  125. package/lib/types/api/functions_api.d.ts.map +1 -0
  126. package/lib/types/api/logs_api.d.ts +50 -0
  127. package/lib/types/api/logs_api.d.ts.map +1 -0
  128. package/lib/types/api/parameters_api.d.ts +239 -0
  129. package/lib/types/api/parameters_api.d.ts.map +1 -0
  130. package/lib/types/coders/base/address.d.ts +5 -0
  131. package/lib/types/coders/base/address.d.ts.map +1 -0
  132. package/lib/types/coders/base/array.d.ts +5 -0
  133. package/lib/types/coders/base/array.d.ts.map +1 -0
  134. package/lib/types/coders/base/bool.d.ts +5 -0
  135. package/lib/types/coders/base/bool.d.ts.map +1 -0
  136. package/lib/types/coders/base/bytes.d.ts +5 -0
  137. package/lib/types/coders/base/bytes.d.ts.map +1 -0
  138. package/lib/types/coders/base/index.d.ts +12 -0
  139. package/lib/types/coders/base/index.d.ts.map +1 -0
  140. package/lib/types/coders/base/number.d.ts +5 -0
  141. package/lib/types/coders/base/number.d.ts.map +1 -0
  142. package/lib/types/coders/base/numbersLimits.d.ts +5 -0
  143. package/lib/types/coders/base/numbersLimits.d.ts.map +1 -0
  144. package/lib/types/coders/base/string.d.ts +5 -0
  145. package/lib/types/coders/base/string.d.ts.map +1 -0
  146. package/lib/types/coders/base/tuple.d.ts +8 -0
  147. package/lib/types/coders/base/tuple.d.ts.map +1 -0
  148. package/lib/types/coders/base/utils.d.ts +3 -0
  149. package/lib/types/coders/base/utils.d.ts.map +1 -0
  150. package/lib/types/coders/decode.d.ts +6 -0
  151. package/lib/types/coders/decode.d.ts.map +1 -0
  152. package/lib/types/coders/encode.d.ts +39 -0
  153. package/lib/types/coders/encode.d.ts.map +1 -0
  154. package/lib/types/coders/types.d.ts +17 -0
  155. package/lib/types/coders/types.d.ts.map +1 -0
  156. package/lib/types/coders/utils.d.ts +24 -0
  157. package/lib/types/coders/utils.d.ts.map +1 -0
  158. package/lib/types/decode_contract_error_data.d.ts +4 -0
  159. package/lib/types/decode_contract_error_data.d.ts.map +1 -0
  160. package/lib/types/eip_712.d.ts +51 -0
  161. package/lib/types/eip_712.d.ts.map +1 -0
  162. package/lib/types/index.d.ts +9 -0
  163. package/lib/types/index.d.ts.map +1 -0
  164. package/lib/types/utils.d.ts +44 -0
  165. package/lib/types/utils.d.ts.map +1 -0
  166. package/pa8cztln.cjs +1 -0
  167. package/package.json +56 -0
  168. package/src/api/errors_api.ts +45 -0
  169. package/src/api/events_api.ts +91 -0
  170. package/src/api/functions_api.ts +145 -0
  171. package/src/api/logs_api.ts +131 -0
  172. package/src/api/parameters_api.ts +287 -0
  173. package/src/coders/base/address.ts +75 -0
  174. package/src/coders/base/array.ts +120 -0
  175. package/src/coders/base/bool.ts +54 -0
  176. package/src/coders/base/bytes.ts +106 -0
  177. package/src/coders/base/index.ts +95 -0
  178. package/src/coders/base/number.ts +116 -0
  179. package/src/coders/base/numbersLimits.ts +39 -0
  180. package/src/coders/base/string.ts +38 -0
  181. package/src/coders/base/tuple.ts +130 -0
  182. package/src/coders/base/utils.ts +51 -0
  183. package/src/coders/decode.ts +32 -0
  184. package/src/coders/encode.ts +114 -0
  185. package/src/coders/types.ts +39 -0
  186. package/src/coders/utils.ts +128 -0
  187. package/src/decode_contract_error_data.ts +80 -0
  188. package/src/eip_712.ts +252 -0
  189. package/src/index.ts +25 -0
  190. package/src/utils.ts +266 -0
@@ -0,0 +1,140 @@
1
+ /*
2
+ This file is part of web3.js.
3
+
4
+ web3.js is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Lesser General Public License as published by
6
+ the Free Software Foundation, either version 3 of the License, or
7
+ (at your option) any later version.
8
+
9
+ web3.js is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU Lesser General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Lesser General Public License
15
+ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+ import { isNullish, keccak256 } from 'web3-utils';
18
+ import { AbiError } from 'web3-errors';
19
+ import { encodeParameters } from './coders/encode.js';
20
+ const TYPE_REGEX = /^\w+/;
21
+ const ARRAY_REGEX = /^(.*)\[([0-9]*?)]$/;
22
+ /**
23
+ * Get the dependencies of a struct type. If a struct has the same dependency multiple times, it's only included once
24
+ * in the resulting array.
25
+ */
26
+ const getDependencies = (typedData, type, dependencies = []) => {
27
+ const match = type.match(TYPE_REGEX);
28
+ const actualType = match[0];
29
+ if (dependencies.includes(actualType)) {
30
+ return dependencies;
31
+ }
32
+ if (!typedData.types[actualType]) {
33
+ return dependencies;
34
+ }
35
+ return [
36
+ actualType,
37
+ ...typedData.types[actualType].reduce((previous, _type) => [
38
+ ...previous,
39
+ ...getDependencies(typedData, _type.type, previous).filter(dependency => !previous.includes(dependency)),
40
+ ], []),
41
+ ];
42
+ };
43
+ /**
44
+ * Encode a type to a string. All dependant types are alphabetically sorted.
45
+ *
46
+ * @param {TypedData} typedData
47
+ * @param {string} type
48
+ * @param {Options} [options]
49
+ * @return {string}
50
+ */
51
+ const encodeType = (typedData, type) => {
52
+ const [primary, ...dependencies] = getDependencies(typedData, type);
53
+ // eslint-disable-next-line @typescript-eslint/require-array-sort-compare
54
+ const types = [primary, ...dependencies.sort()];
55
+ return types
56
+ .map(dependency =>
57
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
58
+ `${dependency}(${typedData.types[dependency].map(_type => `${_type.type} ${_type.name}`)})`)
59
+ .join('');
60
+ };
61
+ /**
62
+ * Get a type string as hash.
63
+ */
64
+ const getTypeHash = (typedData, type) => keccak256(encodeType(typedData, type));
65
+ /**
66
+ * Get encoded data as a hash. The data should be a key -> value object with all the required values. All dependant
67
+ * types are automatically encoded.
68
+ */
69
+ const getStructHash = (typedData, type, data) => keccak256(encodeData(typedData, type, data));
70
+ /**
71
+ * Get the EIP-191 encoded message to sign, from the typedData object. If `hash` is enabled, the message will be hashed
72
+ * with Keccak256.
73
+ */
74
+ export const getMessage = (typedData, hash) => {
75
+ const EIP_191_PREFIX = '1901';
76
+ const message = `0x${EIP_191_PREFIX}${getStructHash(typedData, 'EIP712Domain', typedData.domain).substring(2)}${getStructHash(typedData, typedData.primaryType, typedData.message).substring(2)}`;
77
+ if (hash) {
78
+ return keccak256(message);
79
+ }
80
+ return message;
81
+ };
82
+ /**
83
+ * Encodes a single value to an ABI serialisable string, number or Buffer. Returns the data as tuple, which consists of
84
+ * an array of ABI compatible types, and an array of corresponding values.
85
+ */
86
+ const encodeValue = (typedData, type, data) => {
87
+ const match = type.match(ARRAY_REGEX);
88
+ // Checks for array types
89
+ if (match) {
90
+ const arrayType = match[1];
91
+ const length = Number(match[2]) || undefined;
92
+ if (!Array.isArray(data)) {
93
+ throw new AbiError('Cannot encode data: value is not of array type', {
94
+ data,
95
+ });
96
+ }
97
+ if (length && data.length !== length) {
98
+ throw new AbiError(`Cannot encode data: expected length of ${length}, but got ${data.length}`, {
99
+ data,
100
+ });
101
+ }
102
+ const encodedData = data.map(item => encodeValue(typedData, arrayType, item));
103
+ const types = encodedData.map(item => item[0]);
104
+ const values = encodedData.map(item => item[1]);
105
+ return ['bytes32', keccak256(encodeParameters(types, values))];
106
+ }
107
+ if (typedData.types[type]) {
108
+ return ['bytes32', getStructHash(typedData, type, data)];
109
+ }
110
+ // Strings and arbitrary byte arrays are hashed to bytes32
111
+ if (type === 'string') {
112
+ return ['bytes32', keccak256(data)];
113
+ }
114
+ if (type === 'bytes') {
115
+ return ['bytes32', keccak256(data)];
116
+ }
117
+ return [type, data];
118
+ };
119
+ /**
120
+ * Encode the data to an ABI encoded Buffer. The data should be a key -> value object with all the required values. All
121
+ * dependant types are automatically encoded.
122
+ */
123
+ const encodeData = (typedData, type, data) => {
124
+ const [types, values] = typedData.types[type].reduce(([_types, _values], field) => {
125
+ if (isNullish(data[field.name]) || isNullish(field.type)) {
126
+ throw new AbiError(`Cannot encode data: missing data for '${field.name}'`, {
127
+ data,
128
+ field,
129
+ });
130
+ }
131
+ const value = data[field.name];
132
+ const [_type, encodedValue] = encodeValue(typedData, field.type, value);
133
+ return [
134
+ [..._types, _type],
135
+ [..._values, encodedValue],
136
+ ];
137
+ }, [['bytes32'], [getTypeHash(typedData, type)]]);
138
+ return encodeParameters(types, values);
139
+ };
140
+ //# sourceMappingURL=eip_712.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip_712.js","sourceRoot":"","sources":["../../src/eip_712.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /*
2
+ This file is part of web3.js.
3
+
4
+ web3.js is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Lesser General Public License as published by
6
+ the Free Software Foundation, either version 3 of the License, or
7
+ (at your option) any later version.
8
+
9
+ web3.js is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU Lesser General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Lesser General Public License
15
+ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+ export * from './api/errors_api.js';
18
+ export * from './api/events_api.js';
19
+ export * from './api/functions_api.js';
20
+ export * from './api/logs_api.js';
21
+ export * from './api/parameters_api.js';
22
+ export * from './utils.js';
23
+ export * from './decode_contract_error_data.js';
24
+ export { getMessage as getEncodedEip712Data } from './eip_712.js';
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;EAeE;AAEF,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1 @@
1
+ {"type": "module"}
@@ -0,0 +1,199 @@
1
+ /*
2
+ This file is part of web3.js.
3
+
4
+ web3.js is free software: you can redistribute it and/or modify
5
+ it under the terms of the GNU Lesser General Public License as published by
6
+ the Free Software Foundation, either version 3 of the License, or
7
+ (at your option) any later version.
8
+
9
+ web3.js is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU Lesser General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Lesser General Public License
15
+ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+ import { AbiError } from 'web3-errors';
18
+ import { isNullish, isUint8Array, leftPad, rightPad, toHex } from 'web3-utils';
19
+ export const isAbiFragment = (item) => !isNullish(item) &&
20
+ typeof item === 'object' &&
21
+ !isNullish(item.type) &&
22
+ ['function', 'event', 'constructor', 'error'].includes(item.type);
23
+ export const isAbiErrorFragment = (item) => !isNullish(item) &&
24
+ typeof item === 'object' &&
25
+ !isNullish(item.type) &&
26
+ item.type === 'error';
27
+ export const isAbiEventFragment = (item) => !isNullish(item) &&
28
+ typeof item === 'object' &&
29
+ !isNullish(item.type) &&
30
+ item.type === 'event';
31
+ export const isAbiFunctionFragment = (item) => !isNullish(item) &&
32
+ typeof item === 'object' &&
33
+ !isNullish(item.type) &&
34
+ item.type === 'function';
35
+ export const isAbiConstructorFragment = (item) => !isNullish(item) &&
36
+ typeof item === 'object' &&
37
+ !isNullish(item.type) &&
38
+ item.type === 'constructor';
39
+ /**
40
+ * Check if type is simplified struct format
41
+ */
42
+ export const isSimplifiedStructFormat = (type) => typeof type === 'object' &&
43
+ typeof type.components === 'undefined' &&
44
+ typeof type.name === 'undefined';
45
+ /**
46
+ * Maps the correct tuple type and name when the simplified format in encode/decodeParameter is used
47
+ */
48
+ export const mapStructNameAndType = (structName) => structName.includes('[]')
49
+ ? { type: 'tuple[]', name: structName.slice(0, -2) }
50
+ : { type: 'tuple', name: structName };
51
+ /**
52
+ * Maps the simplified format in to the expected format of the ABICoder
53
+ */
54
+ export const mapStructToCoderFormat = (struct) => {
55
+ const components = [];
56
+ for (const key of Object.keys(struct)) {
57
+ const item = struct[key];
58
+ if (typeof item === 'object') {
59
+ components.push(Object.assign(Object.assign({}, mapStructNameAndType(key)), { components: mapStructToCoderFormat(item) }));
60
+ }
61
+ else {
62
+ components.push({
63
+ name: key,
64
+ type: struct[key],
65
+ });
66
+ }
67
+ }
68
+ return components;
69
+ };
70
+ /**
71
+ * Map types if simplified format is used
72
+ */
73
+ export const mapTypes = (types) => {
74
+ const mappedTypes = [];
75
+ for (const type of types) {
76
+ let modifiedType = type;
77
+ // Clone object
78
+ if (typeof type === 'object') {
79
+ modifiedType = Object.assign({}, type);
80
+ }
81
+ // Remap `function` type params to bytes24 since Ethers does not
82
+ // recognize former type. Solidity docs say `Function` is a bytes24
83
+ // encoding the contract address followed by the function selector hash.
84
+ if (typeof type === 'object' && type.type === 'function') {
85
+ modifiedType = Object.assign(Object.assign({}, type), { type: 'bytes24' });
86
+ }
87
+ if (isSimplifiedStructFormat(modifiedType)) {
88
+ const structName = Object.keys(modifiedType)[0];
89
+ mappedTypes.push(Object.assign(Object.assign({}, mapStructNameAndType(structName)), { components: mapStructToCoderFormat(modifiedType[structName]) }));
90
+ }
91
+ else {
92
+ mappedTypes.push(modifiedType);
93
+ }
94
+ }
95
+ return mappedTypes;
96
+ };
97
+ /**
98
+ * returns true if input is a hexstring and is odd-lengthed
99
+ */
100
+ export const isOddHexstring = (param) => typeof param === 'string' && /^(-)?0x[0-9a-f]*$/i.test(param) && param.length % 2 === 1;
101
+ /**
102
+ * format odd-length bytes to even-length
103
+ */
104
+ export const formatOddHexstrings = (param) => isOddHexstring(param) ? `0x0${param.substring(2)}` : param;
105
+ const paramTypeBytes = /^bytes([0-9]*)$/;
106
+ const paramTypeBytesArray = /^bytes([0-9]*)\[\]$/;
107
+ const paramTypeNumber = /^(u?int)([0-9]*)$/;
108
+ const paramTypeNumberArray = /^(u?int)([0-9]*)\[\]$/;
109
+ /**
110
+ * Handle some formatting of params for backwards compatibility with Ethers V4
111
+ */
112
+ export const formatParam = (type, _param) => {
113
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
114
+ // clone if _param is an object
115
+ const param = typeof _param === 'object' && !Array.isArray(_param) ? Object.assign({}, _param) : _param;
116
+ // Format BN to string
117
+ if (param instanceof BigInt || typeof param === 'bigint') {
118
+ return param.toString(10);
119
+ }
120
+ if (paramTypeBytesArray.exec(type) || paramTypeNumberArray.exec(type)) {
121
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
122
+ const paramClone = [...param];
123
+ return paramClone.map(p => formatParam(type.replace('[]', ''), p));
124
+ }
125
+ // Format correct width for u?int[0-9]*
126
+ let match = paramTypeNumber.exec(type);
127
+ if (match) {
128
+ const size = parseInt(match[2] ? match[2] : '256', 10);
129
+ if (size / 8 < param.length) {
130
+ // pad to correct bit width
131
+ return leftPad(param, size);
132
+ }
133
+ }
134
+ // Format correct length for bytes[0-9]+
135
+ match = paramTypeBytes.exec(type);
136
+ if (match) {
137
+ const hexParam = isUint8Array(param) ? toHex(param) : param;
138
+ // format to correct length
139
+ const size = parseInt(match[1], 10);
140
+ if (size) {
141
+ let maxSize = size * 2;
142
+ if (param.startsWith('0x')) {
143
+ maxSize += 2;
144
+ }
145
+ // pad to correct length
146
+ const paddedParam = hexParam.length < maxSize
147
+ ? rightPad(param, size * 2)
148
+ : hexParam;
149
+ return formatOddHexstrings(paddedParam);
150
+ }
151
+ return formatOddHexstrings(hexParam);
152
+ }
153
+ return param;
154
+ };
155
+ /**
156
+ * used to flatten json abi inputs/outputs into an array of type-representing-strings
157
+ */
158
+ export const flattenTypes = (includeTuple, puts) => {
159
+ const types = [];
160
+ puts.forEach(param => {
161
+ if (typeof param.components === 'object') {
162
+ if (!param.type.startsWith('tuple')) {
163
+ throw new AbiError(`Invalid value given "${param.type}". Error: components found but type is not tuple.`);
164
+ }
165
+ const arrayBracket = param.type.indexOf('[');
166
+ const suffix = arrayBracket >= 0 ? param.type.substring(arrayBracket) : '';
167
+ const result = flattenTypes(includeTuple, param.components);
168
+ if (Array.isArray(result) && includeTuple) {
169
+ types.push(`tuple(${result.join(',')})${suffix}`);
170
+ }
171
+ else if (!includeTuple) {
172
+ types.push(`(${result.join(',')})${suffix}`);
173
+ }
174
+ else {
175
+ types.push(`(${result.join()})`);
176
+ }
177
+ }
178
+ else {
179
+ types.push(param.type);
180
+ }
181
+ });
182
+ return types;
183
+ };
184
+ /**
185
+ * Should be used to create full function/event name from json abi
186
+ * returns a string
187
+ */
188
+ export const jsonInterfaceMethodToString = (json) => {
189
+ var _a, _b, _c, _d;
190
+ if (isAbiErrorFragment(json) || isAbiEventFragment(json) || isAbiFunctionFragment(json)) {
191
+ if ((_a = json.name) === null || _a === void 0 ? void 0 : _a.includes('(')) {
192
+ return json.name;
193
+ }
194
+ return `${(_b = json.name) !== null && _b !== void 0 ? _b : ''}(${flattenTypes(false, (_c = json.inputs) !== null && _c !== void 0 ? _c : []).join(',')})`;
195
+ }
196
+ // Constructor fragment
197
+ return `(${flattenTypes(false, (_d = json.inputs) !== null && _d !== void 0 ? _d : []).join(',')})`;
198
+ };
199
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;EAeE;AAEF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAY/E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAa,EAAuB,EAAE,CACnE,CAAC,SAAS,CAAC,IAAI,CAAC;IAChB,OAAO,IAAI,KAAK,QAAQ;IACxB,CAAC,SAAS,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC3C,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAE,IAAyB,CAAC,IAAI,CAAC,CAAC;AAEzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAA4B,EAAE,CAC7E,CAAC,SAAS,CAAC,IAAI,CAAC;IAChB,OAAO,IAAI,KAAK,QAAQ;IACxB,CAAC,SAAS,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC1C,IAAyB,CAAC,IAAI,KAAK,OAAO,CAAC;AAE7C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAA4B,EAAE,CAC7E,CAAC,SAAS,CAAC,IAAI,CAAC;IAChB,OAAO,IAAI,KAAK,QAAQ;IACxB,CAAC,SAAS,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC1C,IAAyB,CAAC,IAAI,KAAK,OAAO,CAAC;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAa,EAA+B,EAAE,CACnF,CAAC,SAAS,CAAC,IAAI,CAAC;IAChB,OAAO,IAAI,KAAK,QAAQ;IACxB,CAAC,SAAS,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC1C,IAAyB,CAAC,IAAI,KAAK,UAAU,CAAC;AAEhD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAa,EAAkC,EAAE,CACzF,CAAC,SAAS,CAAC,IAAI,CAAC;IAChB,OAAO,IAAI,KAAK,QAAQ;IACxB,CAAC,SAAS,CAAE,IAAyB,CAAC,IAAI,CAAC;IAC1C,IAAyB,CAAC,IAAI,KAAK,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACvC,IAAwD,EACJ,EAAE,CACtD,OAAO,IAAI,KAAK,QAAQ;IACxB,OAAQ,IAAgC,CAAC,UAAU,KAAK,WAAW;IACnE,OAAQ,IAA0B,CAAC,IAAI,KAAK,WAAW,CAAC;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAkB,EAAa,EAAE,CACrE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;IACxB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IACpD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAiB,EAAyB,EAAE;IAClF,MAAM,UAAU,GAA0B,EAAE,CAAC;IAE7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC7B,UAAU,CAAC,IAAI,iCACX,oBAAoB,CAAC,GAAG,CAAC,KAC5B,UAAU,EAAE,sBAAsB,CAAC,IAA4B,CAAC,IAC/D,CAAC;SACH;aAAM;YACN,UAAU,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,MAAM,CAAC,GAAG,CAAW;aAC3B,CAAC,CAAC;SACH;KACD;IACD,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACvB,KAAiB,EACwC,EAAE;IAC3D,MAAM,WAAW,GAA2D,EAAE,CAAC;IAE/E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACzB,IAAI,YAAY,GAAG,IAAI,CAAC;QAExB,eAAe;QACf,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC7B,YAAY,qBAAQ,IAAI,CAAE,CAAC;SAC3B;QAED,gEAAgE;QAChE,mEAAmE;QACnE,wEAAwE;QACxE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YACzD,YAAY,mCAAQ,IAAI,KAAE,IAAI,EAAE,SAAS,GAAE,CAAC;SAC5C;QAED,IAAI,wBAAwB,CAAC,YAAY,CAAC,EAAE;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAyC,CAAC;YAExF,WAAW,CAAC,IAAI,iCACZ,oBAAoB,CAAC,UAAU,CAAC,KACnC,UAAU,EAAE,sBAAsB,CACjC,YAAY,CAAC,UAAU,CAAyB,CACnB,IAC7B,CAAC;SACH;aAAM;YACN,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC/B;KACD;IAED,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAW,EAAE,CACzD,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;AAEzF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAU,EAAE,CAC5D,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAE5D,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAClD,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAC5C,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AACrD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,MAAe,EAAW,EAAE;IACrE,mEAAmE;IAEnE,+BAA+B;IAC/B,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAM,MAAM,EAAG,CAAC,CAAC,MAAM,CAAC;IAE5F,sBAAsB;IACtB,IAAI,KAAK,YAAY,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACzD,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC1B;IAED,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACtE,+DAA+D;QAC/D,MAAM,UAAU,GAAG,CAAC,GAAI,KAAwB,CAAC,CAAC;QAClD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACnE;IAED,uCAAuC;IACvC,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK,EAAE;QACV,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,IAAI,GAAG,CAAC,GAAI,KAA4B,CAAC,MAAM,EAAE;YACpD,2BAA2B;YAC3B,OAAO,OAAO,CAAC,KAAe,EAAE,IAAI,CAAC,CAAC;SACtC;KACD;IAED,wCAAwC;IACxC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,EAAE;QACV,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAE5D,2BAA2B;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE;YACT,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;YAEvB,IAAK,KAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvC,OAAO,IAAI,CAAC,CAAC;aACb;YACD,wBAAwB;YACxB,MAAM,WAAW,GACf,QAAmB,CAAC,MAAM,GAAG,OAAO;gBACpC,CAAC,CAAC,QAAQ,CAAC,KAAe,EAAE,IAAI,GAAG,CAAC,CAAC;gBACrC,CAAC,CAAC,QAAQ,CAAC;YACb,OAAO,mBAAmB,CAAC,WAAqB,CAAC,CAAC;SAClD;QAED,OAAO,mBAAmB,CAAC,QAAkB,CAAC,CAAC;KAC/C;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC3B,YAAqB,EACrB,IAAiC,EACtB,EAAE;IACb,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACpB,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACpC,MAAM,IAAI,QAAQ,CACjB,wBAAwB,KAAK,CAAC,IAAI,mDAAmD,CACrF,CAAC;aACF;YACD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YAE5D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,YAAY,EAAE;gBAC1C,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;aAClD;iBAAM,IAAI,CAAC,YAAY,EAAE;gBACzB,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;aAC7C;iBAAM;gBACN,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACjC;SACD;aAAM;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACvB;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,IAAiB,EAAU,EAAE;;IACxE,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE;QACxF,IAAI,MAAA,IAAI,CAAC,IAAI,0CAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAC;SACjB;QAED,OAAO,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE,IAAI,YAAY,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;KACjF;IAED,uBAAuB;IACvB,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAChE,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { AbiErrorFragment } from 'web3-types';
2
+ /**
3
+ * Encodes the error name to its ABI signature, which are the sha3 hash of the error name including input types.
4
+ */
5
+ export declare const encodeErrorSignature: (functionName: string | AbiErrorFragment) => string;
6
+ //# sourceMappingURL=errors_api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors_api.d.ts","sourceRoot":"","sources":["../../../src/api/errors_api.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C;;GAEG;AACH,eAAO,MAAM,oBAAoB,iBAAkB,MAAM,GAAG,gBAAgB,KAAG,MAc9E,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { AbiEventFragment } from 'web3-types';
2
+ /**
3
+ * Encodes the event name to its ABI signature, which are the sha3 hash of the event name including input types.
4
+ * @param functionName - The event name to encode, or the {@link AbiEventFragment} object of the event. If string, it has to be in the form of `eventName(param1Type,param2Type,...)`. eg: myEvent(uint256,bytes32).
5
+ * @returns - The ABI signature of the event.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * const event = web3.eth.abi.encodeEventSignature({
10
+ * name: "myEvent",
11
+ * type: "event",
12
+ * inputs: [
13
+ * {
14
+ * type: "uint256",
15
+ * name: "myNumber",
16
+ * },
17
+ * {
18
+ * type: "bytes32",
19
+ * name: "myBytes",
20
+ * },
21
+ * ],
22
+ * });
23
+ * console.log(event);
24
+ * > 0xf2eeb729e636a8cb783be044acf6b7b1e2c5863735b60d6daae84c366ee87d97
25
+ *
26
+ * const event = web3.eth.abi.encodeEventSignature({
27
+ * inputs: [
28
+ * {
29
+ * indexed: true,
30
+ * name: "from",
31
+ * type: "address",
32
+ * },
33
+ * {
34
+ * indexed: true,
35
+ * name: "to",
36
+ * type: "address",
37
+ * },
38
+ * {
39
+ * indexed: false,
40
+ * name: "value",
41
+ * type: "uint256",
42
+ * },
43
+ * ],
44
+ * name: "Transfer",
45
+ * type: "event",
46
+ * });
47
+ * console.log(event);
48
+ * > 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
49
+ * ```
50
+ */
51
+ export declare const encodeEventSignature: (functionName: string | AbiEventFragment) => string;
52
+ //# sourceMappingURL=events_api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events_api.d.ts","sourceRoot":"","sources":["../../../src/api/events_api.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,eAAO,MAAM,oBAAoB,iBAAkB,MAAM,GAAG,gBAAgB,KAAG,MAc9E,CAAC"}
@@ -0,0 +1,93 @@
1
+ import { AbiFunctionFragment } from 'web3-types';
2
+ /**
3
+ * Encodes the function name to its ABI representation, which are the first 4 bytes of the sha3 of the function name including types.
4
+ * The JSON interface spec documentation https://docs.soliditylang.org/en/latest/abi-spec.html#json
5
+ * @param functionName - The function name to encode or the `JSON interface` object of the function.
6
+ * If the passed parameter is a string, it has to be in the form of `functionName(param1Type,param2Type,...)`. eg: myFunction(uint256,uint32[],bytes10,bytes)
7
+ * @returns - The ABI signature of the function.
8
+ * @example
9
+ * ```ts
10
+ * const signature = web3.eth.abi.encodeFunctionSignature({
11
+ * name: "myMethod",
12
+ * type: "function",
13
+ * inputs: [
14
+ * {
15
+ * type: "uint256",
16
+ * name: "myNumber",
17
+ * },
18
+ * {
19
+ * type: "string",
20
+ * name: "myString",
21
+ * },
22
+ * ],
23
+ * });
24
+ * console.log(signature);
25
+ * > 0x24ee0097
26
+ *
27
+ * const signature = web3.eth.abi.encodeFunctionSignature('myMethod(uint256,string)')
28
+ * console.log(signature);
29
+ * > 0x24ee0097
30
+ *
31
+ * const signature = web3.eth.abi.encodeFunctionSignature('safeTransferFrom(address,address,uint256,bytes)');
32
+ * console.log(signature);
33
+ * > 0xb88d4fde
34
+ * ```
35
+ */
36
+ export declare const encodeFunctionSignature: (functionName: string | AbiFunctionFragment) => string;
37
+ /**
38
+ * Encodes a function call using its `JSON interface` object and given parameters.
39
+ * The JSON interface spec documentation https://docs.soliditylang.org/en/latest/abi-spec.html#json
40
+ * @param jsonInterface - The `JSON interface` object of the function.
41
+ * @param params - The parameters to encode
42
+ * @returns - The ABI encoded function call, which, means the function signature and the parameters passed.
43
+ * @example
44
+ * ```ts
45
+ * const sig = web3.eth.abi.encodeFunctionCall(
46
+ * {
47
+ * name: "myMethod",
48
+ * type: "function",
49
+ * inputs: [
50
+ * {
51
+ * type: "uint256",
52
+ * name: "myNumber",
53
+ * },
54
+ * {
55
+ * type: "string",
56
+ * name: "myString",
57
+ * },
58
+ * ],
59
+ * },
60
+ * ["2345675643", "Hello!%"]
61
+ * );
62
+ * console.log(sig);
63
+ * > 0x24ee0097000000000000000000000000000000000000000000000000000000008bd02b7b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000748656c6c6f212500000000000000000000000000000000000000000000000000
64
+ *
65
+ *
66
+ *
67
+ * const sig = web3.eth.abi.encodeFunctionCall(
68
+ * {
69
+ * inputs: [
70
+ * {
71
+ * name: "account",
72
+ * type: "address",
73
+ * },
74
+ * ],
75
+ * name: "balanceOf",
76
+ * outputs: [
77
+ * {
78
+ * name: "",
79
+ * type: "uint256",
80
+ * },
81
+ * ],
82
+ * stateMutability: "view",
83
+ * type: "function",
84
+ * },
85
+ * ["0x1234567890123456789012345678901234567890"]
86
+ * );
87
+ *
88
+ * console.log(sig);
89
+ * > 0x70a082310000000000000000000000001234567890123456789012345678901234567890
90
+ * ```
91
+ */
92
+ export declare const encodeFunctionCall: (jsonInterface: AbiFunctionFragment, params: unknown[]) => string;
93
+ //# sourceMappingURL=functions_api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions_api.d.ts","sourceRoot":"","sources":["../../../src/api/functions_api.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,GAAG,mBAAmB,KAAG,MAcpF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,eAAO,MAAM,kBAAkB,kBACf,mBAAmB,UAC1B,OAAO,EAAE,KACf,MASF,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ *
3
+ * @module ABI
4
+ */
5
+ import { HexString, AbiParameter, DecodedParams } from 'web3-types';
6
+ /**
7
+ * Decodes ABI-encoded log data and indexed topic data.
8
+ * @param inputs - A {@link AbiParameter} input array. See the [Solidity documentation](https://docs.soliditylang.org/en/develop/types.html) for a list of types.
9
+ * @param data - The ABI byte code in the `data` field of a log.
10
+ * @param topics - An array with the index parameter topics of the log, without the topic[0] if its a non-anonymous event, otherwise with topic[0]
11
+ * @returns - The result object containing the decoded parameters.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * let res = web3.eth.abi.decodeLog(
16
+ * [
17
+ * {
18
+ * type: "string",
19
+ * name: "myString",
20
+ * },
21
+ * {
22
+ * type: "uint256",
23
+ * name: "myNumber",
24
+ * indexed: true,
25
+ * },
26
+ * {
27
+ * type: "uint8",
28
+ * name: "mySmallNumber",
29
+ * indexed: true,
30
+ * },
31
+ * ],
32
+ * "0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000748656c6c6f252100000000000000000000000000000000000000000000000000",
33
+ * [
34
+ * "0x000000000000000000000000000000000000000000000000000000000000f310",
35
+ * "0x0000000000000000000000000000000000000000000000000000000000000010",
36
+ * ]
37
+ * );
38
+ * > {
39
+ * '0': 'Hello%!',
40
+ * '1': 62224n,
41
+ * '2': 16n,
42
+ * __length__: 3,
43
+ * myString: 'Hello%!',
44
+ * myNumber: 62224n,
45
+ * mySmallNumber: 16n
46
+ * }
47
+ * ```
48
+ */
49
+ export declare const decodeLog: <ReturnType_1 extends DecodedParams>(inputs: Array<AbiParameter> | ReadonlyArray<AbiParameter>, data: HexString, topics: string | string[]) => ReturnType_1;
50
+ //# sourceMappingURL=logs_api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs_api.d.ts","sourceRoot":"","sources":["../../../src/api/logs_api.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,SAAS,+CACb,MAAM,YAAY,CAAC,GAAG,cAAc,YAAY,CAAC,QACnD,SAAS,UACP,MAAM,GAAG,MAAM,EAAE,iBAsDzB,CAAC"}