@feelyourprotocol/util 8141.0.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 (223) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +297 -0
  3. package/dist/cjs/account.d.ts +165 -0
  4. package/dist/cjs/account.d.ts.map +1 -0
  5. package/dist/cjs/account.js +530 -0
  6. package/dist/cjs/account.js.map +1 -0
  7. package/dist/cjs/address.d.ts +67 -0
  8. package/dist/cjs/address.d.ts.map +1 -0
  9. package/dist/cjs/address.js +136 -0
  10. package/dist/cjs/address.js.map +1 -0
  11. package/dist/cjs/authorization.d.ts +41 -0
  12. package/dist/cjs/authorization.d.ts.map +1 -0
  13. package/dist/cjs/authorization.js +135 -0
  14. package/dist/cjs/authorization.js.map +1 -0
  15. package/dist/cjs/bal.d.ts +129 -0
  16. package/dist/cjs/bal.d.ts.map +1 -0
  17. package/dist/cjs/bal.js +529 -0
  18. package/dist/cjs/bal.js.map +1 -0
  19. package/dist/cjs/binaryTree.d.ts +148 -0
  20. package/dist/cjs/binaryTree.d.ts.map +1 -0
  21. package/dist/cjs/binaryTree.js +240 -0
  22. package/dist/cjs/binaryTree.js.map +1 -0
  23. package/dist/cjs/blobs.d.ts +76 -0
  24. package/dist/cjs/blobs.d.ts.map +1 -0
  25. package/dist/cjs/blobs.js +175 -0
  26. package/dist/cjs/blobs.js.map +1 -0
  27. package/dist/cjs/bytes.d.ts +291 -0
  28. package/dist/cjs/bytes.d.ts.map +1 -0
  29. package/dist/cjs/bytes.js +606 -0
  30. package/dist/cjs/bytes.js.map +1 -0
  31. package/dist/cjs/constants.d.ts +91 -0
  32. package/dist/cjs/constants.d.ts.map +1 -0
  33. package/dist/cjs/constants.js +97 -0
  34. package/dist/cjs/constants.js.map +1 -0
  35. package/dist/cjs/db.d.ts +65 -0
  36. package/dist/cjs/db.d.ts.map +1 -0
  37. package/dist/cjs/db.js +14 -0
  38. package/dist/cjs/db.js.map +1 -0
  39. package/dist/cjs/env.d.ts +9 -0
  40. package/dist/cjs/env.d.ts.map +1 -0
  41. package/dist/cjs/env.js +13 -0
  42. package/dist/cjs/env.js.map +1 -0
  43. package/dist/cjs/errors.d.ts +3 -0
  44. package/dist/cjs/errors.d.ts.map +1 -0
  45. package/dist/cjs/errors.js +19 -0
  46. package/dist/cjs/errors.js.map +1 -0
  47. package/dist/cjs/helpers.d.ts +21 -0
  48. package/dist/cjs/helpers.d.ts.map +1 -0
  49. package/dist/cjs/helpers.js +50 -0
  50. package/dist/cjs/helpers.js.map +1 -0
  51. package/dist/cjs/index.d.ts +67 -0
  52. package/dist/cjs/index.d.ts.map +1 -0
  53. package/dist/cjs/index.js +93 -0
  54. package/dist/cjs/index.js.map +1 -0
  55. package/dist/cjs/internal.d.ts +72 -0
  56. package/dist/cjs/internal.d.ts.map +1 -0
  57. package/dist/cjs/internal.js +182 -0
  58. package/dist/cjs/internal.js.map +1 -0
  59. package/dist/cjs/kzg.d.ts +14 -0
  60. package/dist/cjs/kzg.d.ts.map +1 -0
  61. package/dist/cjs/kzg.js +3 -0
  62. package/dist/cjs/kzg.js.map +1 -0
  63. package/dist/cjs/lock.d.ts +15 -0
  64. package/dist/cjs/lock.d.ts.map +1 -0
  65. package/dist/cjs/lock.js +45 -0
  66. package/dist/cjs/lock.js.map +1 -0
  67. package/dist/cjs/mapDB.d.ts +17 -0
  68. package/dist/cjs/mapDB.d.ts.map +1 -0
  69. package/dist/cjs/mapDB.js +46 -0
  70. package/dist/cjs/mapDB.js.map +1 -0
  71. package/dist/cjs/package.json +3 -0
  72. package/dist/cjs/provider.d.ts +46 -0
  73. package/dist/cjs/provider.d.ts.map +1 -0
  74. package/dist/cjs/provider.js +84 -0
  75. package/dist/cjs/provider.js.map +1 -0
  76. package/dist/cjs/request.d.ts +20 -0
  77. package/dist/cjs/request.d.ts.map +1 -0
  78. package/dist/cjs/request.js +35 -0
  79. package/dist/cjs/request.js.map +1 -0
  80. package/dist/cjs/signature.d.ts +47 -0
  81. package/dist/cjs/signature.d.ts.map +1 -0
  82. package/dist/cjs/signature.js +147 -0
  83. package/dist/cjs/signature.js.map +1 -0
  84. package/dist/cjs/tasks.d.ts +32 -0
  85. package/dist/cjs/tasks.d.ts.map +1 -0
  86. package/dist/cjs/tasks.js +51 -0
  87. package/dist/cjs/tasks.js.map +1 -0
  88. package/dist/cjs/types.d.ts +64 -0
  89. package/dist/cjs/types.d.ts.map +1 -0
  90. package/dist/cjs/types.js +78 -0
  91. package/dist/cjs/types.js.map +1 -0
  92. package/dist/cjs/units.d.ts +22 -0
  93. package/dist/cjs/units.d.ts.map +1 -0
  94. package/dist/cjs/units.js +51 -0
  95. package/dist/cjs/units.js.map +1 -0
  96. package/dist/cjs/withdrawal.d.ts +72 -0
  97. package/dist/cjs/withdrawal.d.ts.map +1 -0
  98. package/dist/cjs/withdrawal.js +93 -0
  99. package/dist/cjs/withdrawal.js.map +1 -0
  100. package/dist/esm/account.d.ts +165 -0
  101. package/dist/esm/account.d.ts.map +1 -0
  102. package/dist/esm/account.js +505 -0
  103. package/dist/esm/account.js.map +1 -0
  104. package/dist/esm/address.d.ts +67 -0
  105. package/dist/esm/address.d.ts.map +1 -0
  106. package/dist/esm/address.js +125 -0
  107. package/dist/esm/address.js.map +1 -0
  108. package/dist/esm/authorization.d.ts +41 -0
  109. package/dist/esm/authorization.d.ts.map +1 -0
  110. package/dist/esm/authorization.js +126 -0
  111. package/dist/esm/authorization.js.map +1 -0
  112. package/dist/esm/bal.d.ts +129 -0
  113. package/dist/esm/bal.d.ts.map +1 -0
  114. package/dist/esm/bal.js +522 -0
  115. package/dist/esm/bal.js.map +1 -0
  116. package/dist/esm/binaryTree.d.ts +148 -0
  117. package/dist/esm/binaryTree.d.ts.map +1 -0
  118. package/dist/esm/binaryTree.js +226 -0
  119. package/dist/esm/binaryTree.js.map +1 -0
  120. package/dist/esm/blobs.d.ts +76 -0
  121. package/dist/esm/blobs.d.ts.map +1 -0
  122. package/dist/esm/blobs.js +163 -0
  123. package/dist/esm/blobs.js.map +1 -0
  124. package/dist/esm/bytes.d.ts +291 -0
  125. package/dist/esm/bytes.d.ts.map +1 -0
  126. package/dist/esm/bytes.js +562 -0
  127. package/dist/esm/bytes.js.map +1 -0
  128. package/dist/esm/constants.d.ts +91 -0
  129. package/dist/esm/constants.d.ts.map +1 -0
  130. package/dist/esm/constants.js +94 -0
  131. package/dist/esm/constants.js.map +1 -0
  132. package/dist/esm/db.d.ts +65 -0
  133. package/dist/esm/db.d.ts.map +1 -0
  134. package/dist/esm/db.js +11 -0
  135. package/dist/esm/db.js.map +1 -0
  136. package/dist/esm/env.d.ts +9 -0
  137. package/dist/esm/env.d.ts.map +1 -0
  138. package/dist/esm/env.js +9 -0
  139. package/dist/esm/env.js.map +1 -0
  140. package/dist/esm/errors.d.ts +3 -0
  141. package/dist/esm/errors.d.ts.map +1 -0
  142. package/dist/esm/errors.js +14 -0
  143. package/dist/esm/errors.js.map +1 -0
  144. package/dist/esm/helpers.d.ts +21 -0
  145. package/dist/esm/helpers.d.ts.map +1 -0
  146. package/dist/esm/helpers.js +43 -0
  147. package/dist/esm/helpers.js.map +1 -0
  148. package/dist/esm/index.d.ts +67 -0
  149. package/dist/esm/index.d.ts.map +1 -0
  150. package/dist/esm/index.js +67 -0
  151. package/dist/esm/index.js.map +1 -0
  152. package/dist/esm/internal.d.ts +72 -0
  153. package/dist/esm/internal.d.ts.map +1 -0
  154. package/dist/esm/internal.js +170 -0
  155. package/dist/esm/internal.js.map +1 -0
  156. package/dist/esm/kzg.d.ts +14 -0
  157. package/dist/esm/kzg.d.ts.map +1 -0
  158. package/dist/esm/kzg.js +2 -0
  159. package/dist/esm/kzg.js.map +1 -0
  160. package/dist/esm/lock.d.ts +15 -0
  161. package/dist/esm/lock.d.ts.map +1 -0
  162. package/dist/esm/lock.js +41 -0
  163. package/dist/esm/lock.js.map +1 -0
  164. package/dist/esm/mapDB.d.ts +17 -0
  165. package/dist/esm/mapDB.d.ts.map +1 -0
  166. package/dist/esm/mapDB.js +42 -0
  167. package/dist/esm/mapDB.js.map +1 -0
  168. package/dist/esm/package.json +3 -0
  169. package/dist/esm/provider.d.ts +46 -0
  170. package/dist/esm/provider.d.ts.map +1 -0
  171. package/dist/esm/provider.js +79 -0
  172. package/dist/esm/provider.js.map +1 -0
  173. package/dist/esm/request.d.ts +20 -0
  174. package/dist/esm/request.d.ts.map +1 -0
  175. package/dist/esm/request.js +30 -0
  176. package/dist/esm/request.js.map +1 -0
  177. package/dist/esm/signature.d.ts +47 -0
  178. package/dist/esm/signature.d.ts.map +1 -0
  179. package/dist/esm/signature.js +137 -0
  180. package/dist/esm/signature.js.map +1 -0
  181. package/dist/esm/tasks.d.ts +32 -0
  182. package/dist/esm/tasks.d.ts.map +1 -0
  183. package/dist/esm/tasks.js +47 -0
  184. package/dist/esm/tasks.js.map +1 -0
  185. package/dist/esm/types.d.ts +64 -0
  186. package/dist/esm/types.d.ts.map +1 -0
  187. package/dist/esm/types.js +71 -0
  188. package/dist/esm/types.js.map +1 -0
  189. package/dist/esm/units.d.ts +22 -0
  190. package/dist/esm/units.d.ts.map +1 -0
  191. package/dist/esm/units.js +46 -0
  192. package/dist/esm/units.js.map +1 -0
  193. package/dist/esm/withdrawal.d.ts +72 -0
  194. package/dist/esm/withdrawal.d.ts.map +1 -0
  195. package/dist/esm/withdrawal.js +86 -0
  196. package/dist/esm/withdrawal.js.map +1 -0
  197. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  198. package/dist/tsconfig.prod.esm.tsbuildinfo +1 -0
  199. package/package.json +116 -0
  200. package/src/account.ts +630 -0
  201. package/src/address.ts +158 -0
  202. package/src/authorization.ts +180 -0
  203. package/src/bal.ts +761 -0
  204. package/src/binaryTree.ts +353 -0
  205. package/src/blobs.ts +209 -0
  206. package/src/bytes.ts +659 -0
  207. package/src/constants.ts +125 -0
  208. package/src/db.ts +86 -0
  209. package/src/env.ts +9 -0
  210. package/src/errors.ts +28 -0
  211. package/src/helpers.ts +46 -0
  212. package/src/index.ts +88 -0
  213. package/src/internal.ts +212 -0
  214. package/src/kzg.ts +24 -0
  215. package/src/lock.ts +42 -0
  216. package/src/mapDB.ts +57 -0
  217. package/src/provider.ts +109 -0
  218. package/src/request.ts +48 -0
  219. package/src/signature.ts +202 -0
  220. package/src/tasks.ts +59 -0
  221. package/src/types.ts +177 -0
  222. package/src/units.ts +56 -0
  223. package/src/withdrawal.ts +133 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Withdrawal = void 0;
4
+ exports.withdrawalToBytesArray = withdrawalToBytesArray;
5
+ exports.createWithdrawal = createWithdrawal;
6
+ exports.createWithdrawalFromBytesArray = createWithdrawalFromBytesArray;
7
+ const address_ts_1 = require("./address.js");
8
+ const bytes_ts_1 = require("./bytes.js");
9
+ const constants_ts_1 = require("./constants.js");
10
+ const types_ts_1 = require("./types.js");
11
+ /**
12
+ * Convert a withdrawal to a byte array
13
+ * @param withdrawal the withdrawal to convert
14
+ * @returns byte array of the withdrawal
15
+ */
16
+ function withdrawalToBytesArray(withdrawal) {
17
+ const { index, validatorIndex, address, amount } = withdrawal;
18
+ const indexBytes = (0, types_ts_1.toType)(index, types_ts_1.TypeOutput.BigInt) === constants_ts_1.BIGINT_0
19
+ ? new Uint8Array()
20
+ : (0, types_ts_1.toType)(index, types_ts_1.TypeOutput.Uint8Array);
21
+ const validatorIndexBytes = (0, types_ts_1.toType)(validatorIndex, types_ts_1.TypeOutput.BigInt) === constants_ts_1.BIGINT_0
22
+ ? new Uint8Array()
23
+ : (0, types_ts_1.toType)(validatorIndex, types_ts_1.TypeOutput.Uint8Array);
24
+ const addressBytes = address instanceof address_ts_1.Address ? address.bytes : (0, types_ts_1.toType)(address, types_ts_1.TypeOutput.Uint8Array);
25
+ const amountBytes = (0, types_ts_1.toType)(amount, types_ts_1.TypeOutput.BigInt) === constants_ts_1.BIGINT_0
26
+ ? new Uint8Array()
27
+ : (0, types_ts_1.toType)(amount, types_ts_1.TypeOutput.Uint8Array);
28
+ return [indexBytes, validatorIndexBytes, addressBytes, amountBytes];
29
+ }
30
+ /**
31
+ * Representation of EIP-4895 withdrawal data
32
+ */
33
+ class Withdrawal {
34
+ /**
35
+ * This constructor assigns and validates the values.
36
+ * Use the static factory methods to assist in creating a Withdrawal object from varying data types.
37
+ * Its amount is in Gwei to match CL representation and for eventual ssz withdrawalsRoot
38
+ */
39
+ constructor(index, validatorIndex, address, amount) {
40
+ this.index = index;
41
+ this.validatorIndex = validatorIndex;
42
+ this.address = address;
43
+ this.amount = amount;
44
+ }
45
+ raw() {
46
+ return withdrawalToBytesArray(this);
47
+ }
48
+ toValue() {
49
+ return {
50
+ index: this.index,
51
+ validatorIndex: this.validatorIndex,
52
+ address: this.address.bytes,
53
+ amount: this.amount,
54
+ };
55
+ }
56
+ toJSON() {
57
+ return {
58
+ index: (0, bytes_ts_1.bigIntToHex)(this.index),
59
+ validatorIndex: (0, bytes_ts_1.bigIntToHex)(this.validatorIndex),
60
+ address: (0, bytes_ts_1.bytesToHex)(this.address.bytes),
61
+ amount: (0, bytes_ts_1.bigIntToHex)(this.amount),
62
+ };
63
+ }
64
+ }
65
+ exports.Withdrawal = Withdrawal;
66
+ /**
67
+ * Creates a validator withdrawal request to be submitted to the consensus layer
68
+ * @param withdrawalData the consensus layer index and validator index values for the
69
+ * validator requesting the withdrawal and the address and withdrawal amount of the request
70
+ * @returns a {@link Withdrawal} object
71
+ */
72
+ function createWithdrawal(withdrawalData) {
73
+ const { index: indexData, validatorIndex: validatorIndexData, address: addressData, amount: amountData, } = withdrawalData;
74
+ const index = (0, types_ts_1.toType)(indexData, types_ts_1.TypeOutput.BigInt);
75
+ const validatorIndex = (0, types_ts_1.toType)(validatorIndexData, types_ts_1.TypeOutput.BigInt);
76
+ const address = addressData instanceof address_ts_1.Address ? addressData : new address_ts_1.Address((0, bytes_ts_1.toBytes)(addressData));
77
+ const amount = (0, types_ts_1.toType)(amountData, types_ts_1.TypeOutput.BigInt);
78
+ return new Withdrawal(index, validatorIndex, address, amount);
79
+ }
80
+ /**
81
+ * Creates a validator withdrawal request to be submitted to the consensus layer from
82
+ * an RLP list
83
+ * @param withdrawalArray decoded RLP list of withdrawal data elements
84
+ * @returns a {@link Withdrawal} object
85
+ */
86
+ function createWithdrawalFromBytesArray(withdrawalArray) {
87
+ if (withdrawalArray.length !== 4) {
88
+ throw Error(`Invalid withdrawalArray length expected=4 actual=${withdrawalArray.length}`);
89
+ }
90
+ const [index, validatorIndex, address, amount] = withdrawalArray;
91
+ return createWithdrawal({ index, validatorIndex, address, amount });
92
+ }
93
+ //# sourceMappingURL=withdrawal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withdrawal.js","sourceRoot":"","sources":["../../src/withdrawal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ import type { BigIntLike, BytesLike, PrefixedHexString } from './types.ts';
2
+ export interface AccountData {
3
+ nonce?: BigIntLike;
4
+ balance?: BigIntLike;
5
+ storageRoot?: BytesLike;
6
+ codeHash?: BytesLike;
7
+ }
8
+ export interface PartialAccountData {
9
+ nonce?: BigIntLike | null;
10
+ balance?: BigIntLike | null;
11
+ storageRoot?: BytesLike | null;
12
+ codeHash?: BytesLike | null;
13
+ codeSize?: BigIntLike | null;
14
+ version?: BigIntLike | null;
15
+ }
16
+ export type AccountBodyBytes = [Uint8Array, Uint8Array, Uint8Array, Uint8Array];
17
+ /**
18
+ * Account class to load and maintain the basic account objects.
19
+ * Supports partial loading and access required for stateless with null
20
+ * as the placeholder.
21
+ *
22
+ * Note: passing undefined in constructor is different from null
23
+ * While undefined leads to default assignment, null is retained
24
+ * to track the information not available/loaded because of partial
25
+ * witness access
26
+ */
27
+ export declare class Account {
28
+ _nonce: bigint | null;
29
+ _balance: bigint | null;
30
+ _storageRoot: Uint8Array | null;
31
+ _codeHash: Uint8Array | null;
32
+ _codeSize: number | null;
33
+ _version: number | null;
34
+ get version(): number;
35
+ set version(_version: number);
36
+ get nonce(): bigint;
37
+ set nonce(_nonce: bigint);
38
+ get balance(): bigint;
39
+ set balance(_balance: bigint);
40
+ get storageRoot(): Uint8Array;
41
+ set storageRoot(_storageRoot: Uint8Array);
42
+ get codeHash(): Uint8Array;
43
+ set codeHash(_codeHash: Uint8Array);
44
+ get codeSize(): number;
45
+ set codeSize(_codeSize: number);
46
+ /**
47
+ * This constructor assigns and validates the values.
48
+ * It is not recommended to use this constructor directly. Instead use the static
49
+ * factory methods to assist in creating an Account from varying data types.
50
+ * undefined get assigned with the defaults, but null args are retained as is
51
+ * @deprecated
52
+ */
53
+ constructor(nonce?: bigint | null, balance?: bigint | null, storageRoot?: Uint8Array | null, codeHash?: Uint8Array | null, codeSize?: number | null, version?: number | null);
54
+ private _validate;
55
+ /**
56
+ * Returns an array of Uint8Arrays of the raw bytes for the account, in order.
57
+ */
58
+ raw(): Uint8Array[];
59
+ /**
60
+ * Returns the RLP serialization of the account as a `Uint8Array`.
61
+ */
62
+ serialize(): Uint8Array;
63
+ serializeWithPartialInfo(): Uint8Array;
64
+ /**
65
+ * Returns a `Boolean` determining if the account is a contract.
66
+ */
67
+ isContract(): boolean;
68
+ /**
69
+ * Returns a `Boolean` determining if the account is empty complying to the definition of
70
+ * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):
71
+ * "An account is considered empty when it has no code and zero nonce and zero balance."
72
+ */
73
+ isEmpty(): boolean;
74
+ }
75
+ export declare function createAccount(accountData: AccountData): Account;
76
+ export declare function createAccountFromBytesArray(values: Uint8Array[]): Account;
77
+ export declare function createPartialAccount(partialAccountData: PartialAccountData): Account;
78
+ export declare function createAccountFromRLP(serialized: Uint8Array): Account;
79
+ export declare function createPartialAccountFromRLP(serialized: Uint8Array): Account;
80
+ /**
81
+ * Checks if the address is a valid. Accepts checksummed addresses too.
82
+ */
83
+ export declare const isValidAddress: (hexAddress: string) => hexAddress is PrefixedHexString;
84
+ /**
85
+ * Returns a checksummed address.
86
+ *
87
+ * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This
88
+ * has the effect of checksummed addresses for one chain having invalid checksums for others.
89
+ * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).
90
+ *
91
+ * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not
92
+ * backwards compatible to the original widely adopted checksum format standard introduced in
93
+ * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.
94
+ * Usage of this EIP is therefore discouraged unless you have a very targeted use case.
95
+ */
96
+ export declare const toChecksumAddress: (hexAddress: string, eip1191ChainId?: BigIntLike) => PrefixedHexString;
97
+ /**
98
+ * Checks if the address is a valid checksummed address.
99
+ *
100
+ * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.
101
+ */
102
+ export declare const isValidChecksumAddress: (hexAddress: string, eip1191ChainId?: BigIntLike) => boolean;
103
+ /**
104
+ * Generates an address of a newly created contract.
105
+ * @param from The address which is creating this new address
106
+ * @param nonce The nonce of the from account
107
+ */
108
+ export declare const generateAddress: (from: Uint8Array, nonce: Uint8Array) => Uint8Array;
109
+ /**
110
+ * Generates an address for a contract created using CREATE2.
111
+ * @param from The address which is creating this new address
112
+ * @param salt A salt
113
+ * @param initCode The init code of the contract being created
114
+ */
115
+ export declare const generateAddress2: (from: Uint8Array, salt: Uint8Array, initCode: Uint8Array) => Uint8Array;
116
+ /**
117
+ * Checks if the private key satisfies the rules of the curve secp256k1.
118
+ */
119
+ export declare const isValidPrivate: (privateKey: Uint8Array) => boolean;
120
+ /**
121
+ * Checks if the public key satisfies the rules of the curve secp256k1
122
+ * and the requirements of Ethereum.
123
+ * @param publicKey The two points of an uncompressed key, unless sanitize is enabled
124
+ * @param sanitize Accept public keys in other formats
125
+ */
126
+ export declare const isValidPublic: (publicKey: Uint8Array, sanitize?: boolean) => boolean;
127
+ /**
128
+ * Returns the ethereum address of a given public key.
129
+ * Accepts "Ethereum public keys" and SEC1 encoded keys.
130
+ * @param pubKey The two points of an uncompressed key, unless sanitize is enabled
131
+ * @param sanitize Accept public keys in other formats
132
+ */
133
+ export declare const pubToAddress: (pubKey: Uint8Array, sanitize?: boolean) => Uint8Array;
134
+ export declare const publicToAddress: (pubKey: Uint8Array, sanitize?: boolean) => Uint8Array;
135
+ /**
136
+ * Returns the ethereum public key of a given private key.
137
+ * @param privateKey A private key must be 256 bits wide
138
+ */
139
+ export declare const privateToPublic: (privateKey: Uint8Array) => Uint8Array;
140
+ /**
141
+ * Returns the ethereum address of a given private key.
142
+ * @param privateKey A private key must be 256 bits wide
143
+ */
144
+ export declare const privateToAddress: (privateKey: Uint8Array) => Uint8Array;
145
+ /**
146
+ * Converts a public key to the Ethereum format.
147
+ */
148
+ export declare const importPublic: (publicKey: Uint8Array) => Uint8Array;
149
+ /**
150
+ * Returns the zero address.
151
+ */
152
+ export declare const zeroAddress: () => PrefixedHexString;
153
+ /**
154
+ * Checks if a given address is the zero address.
155
+ */
156
+ export declare const isZeroAddress: (hexAddress: string) => boolean;
157
+ export declare function accountBodyFromSlim(body: AccountBodyBytes): Uint8Array<ArrayBufferLike>[];
158
+ export declare function accountBodyToSlim(body: AccountBodyBytes): Uint8Array<ArrayBufferLike>[];
159
+ /**
160
+ * Converts a slim account (per snap protocol spec) to the RLP encoded version of the account
161
+ * @param body Array of 4 Uint8Array-like items to represent the account
162
+ * @returns RLP encoded version of the account
163
+ */
164
+ export declare function accountBodyToRLP(body: AccountBodyBytes, couldBeSlim?: boolean): Uint8Array<ArrayBufferLike>;
165
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/account.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAoB,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE5F,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACzB,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CAC5B;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AA+B/E;;;;;;;;;GASG;AACH,qBAAa,OAAO;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAO;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAC9B,YAAY,EAAE,UAAU,GAAG,IAAI,CAAO;IACtC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAO;IAEnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAO;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAO;IAE9B,IAAI,OAAO,IAOW,MAAM,CAD3B;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAE3B;IAED,IAAI,KAAK,IAOS,MAAM,CADvB;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,MAAM,EAEvB;IAED,IAAI,OAAO,IAOW,MAAM,CAD3B;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAE3B;IAED,IAAI,WAAW,IAOe,UAAU,CADvC;IACD,IAAI,WAAW,CAAC,YAAY,EAAE,UAAU,EAEvC;IAED,IAAI,QAAQ,IAOY,UAAU,CADjC;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,UAAU,EAEjC;IAED,IAAI,QAAQ,IAOY,MAAM,CAD7B;IACD,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,EAE7B;IAED;;;;;;OAMG;gBAED,KAAK,GAAE,MAAM,GAAG,IAAe,EAC/B,OAAO,GAAE,MAAM,GAAG,IAAe,EACjC,WAAW,GAAE,UAAU,GAAG,IAAoB,EAC9C,QAAQ,GAAE,UAAU,GAAG,IAAqB,EAC5C,QAAQ,GAAE,MAAM,GAAG,IAAQ,EAC3B,OAAO,GAAE,MAAM,GAAG,IAAQ;IAgB5B,OAAO,CAAC,SAAS;IAkBjB;;OAEG;IACH,GAAG,IAAI,UAAU,EAAE;IASnB;;OAEG;IACH,SAAS,IAAI,UAAU;IAIvB,wBAAwB,IAAI,UAAU;IA4CtC;;OAEG;IACH,UAAU,IAAI,OAAO;IAUrB;;;;OAIG;IACH,OAAO,IAAI,OAAO;CAgBnB;AAID,wBAAgB,aAAa,CAAC,WAAW,EAAE,WAAW,WAYrD;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,WAI/D;AAED,wBAAgB,oBAAoB,CAAC,kBAAkB,EAAE,kBAAkB,WAsB1E;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,UAAU,WAQ1D;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,WAuBjE;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAa,YAAY,MAAM,KAAG,UAAU,IAAI,iBAQ1E,CAAA;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAC5B,YAAY,MAAM,EAClB,iBAAiB,UAAU,KAC1B,iBAuBF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GACjC,YAAY,MAAM,EAClB,iBAAiB,UAAU,KAC1B,OAEF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAa,MAAM,UAAU,EAAE,OAAO,UAAU,KAAG,UAY9E,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,UAAU,EAChB,MAAM,UAAU,EAChB,UAAU,UAAU,KACnB,UAeF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAa,YAAY,UAAU,KAAG,OAEhE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAa,WAAW,UAAU,EAAE,WAAU,OAAe,KAAG,OAuBzF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAa,QAAQ,UAAU,EAAE,WAAU,OAAe,KAAG,UAUrF,CAAA;AACD,eAAO,MAAM,eAAe,WAXkB,UAAU,aAAY,OAAO,KAAW,UAW3C,CAAA;AAE3C;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAa,YAAY,UAAU,KAAG,UAIjE,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAa,YAAY,UAAU,KAAG,UAElE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAa,WAAW,UAAU,KAAG,UAM7D,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,QAAgB,iBAEvC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAa,YAAY,MAAM,KAAG,OAS3D,CAAA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,iCAQzD;AAGD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,iCAQvD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,EAAE,WAAW,UAAO,+BAG1E"}