@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.
- package/LICENSE +373 -0
- package/README.md +297 -0
- package/dist/cjs/account.d.ts +165 -0
- package/dist/cjs/account.d.ts.map +1 -0
- package/dist/cjs/account.js +530 -0
- package/dist/cjs/account.js.map +1 -0
- package/dist/cjs/address.d.ts +67 -0
- package/dist/cjs/address.d.ts.map +1 -0
- package/dist/cjs/address.js +136 -0
- package/dist/cjs/address.js.map +1 -0
- package/dist/cjs/authorization.d.ts +41 -0
- package/dist/cjs/authorization.d.ts.map +1 -0
- package/dist/cjs/authorization.js +135 -0
- package/dist/cjs/authorization.js.map +1 -0
- package/dist/cjs/bal.d.ts +129 -0
- package/dist/cjs/bal.d.ts.map +1 -0
- package/dist/cjs/bal.js +529 -0
- package/dist/cjs/bal.js.map +1 -0
- package/dist/cjs/binaryTree.d.ts +148 -0
- package/dist/cjs/binaryTree.d.ts.map +1 -0
- package/dist/cjs/binaryTree.js +240 -0
- package/dist/cjs/binaryTree.js.map +1 -0
- package/dist/cjs/blobs.d.ts +76 -0
- package/dist/cjs/blobs.d.ts.map +1 -0
- package/dist/cjs/blobs.js +175 -0
- package/dist/cjs/blobs.js.map +1 -0
- package/dist/cjs/bytes.d.ts +291 -0
- package/dist/cjs/bytes.d.ts.map +1 -0
- package/dist/cjs/bytes.js +606 -0
- package/dist/cjs/bytes.js.map +1 -0
- package/dist/cjs/constants.d.ts +91 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +97 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/db.d.ts +65 -0
- package/dist/cjs/db.d.ts.map +1 -0
- package/dist/cjs/db.js +14 -0
- package/dist/cjs/db.js.map +1 -0
- package/dist/cjs/env.d.ts +9 -0
- package/dist/cjs/env.d.ts.map +1 -0
- package/dist/cjs/env.js +13 -0
- package/dist/cjs/env.js.map +1 -0
- package/dist/cjs/errors.d.ts +3 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +19 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/helpers.d.ts +21 -0
- package/dist/cjs/helpers.d.ts.map +1 -0
- package/dist/cjs/helpers.js +50 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.d.ts +67 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +93 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal.d.ts +72 -0
- package/dist/cjs/internal.d.ts.map +1 -0
- package/dist/cjs/internal.js +182 -0
- package/dist/cjs/internal.js.map +1 -0
- package/dist/cjs/kzg.d.ts +14 -0
- package/dist/cjs/kzg.d.ts.map +1 -0
- package/dist/cjs/kzg.js +3 -0
- package/dist/cjs/kzg.js.map +1 -0
- package/dist/cjs/lock.d.ts +15 -0
- package/dist/cjs/lock.d.ts.map +1 -0
- package/dist/cjs/lock.js +45 -0
- package/dist/cjs/lock.js.map +1 -0
- package/dist/cjs/mapDB.d.ts +17 -0
- package/dist/cjs/mapDB.d.ts.map +1 -0
- package/dist/cjs/mapDB.js +46 -0
- package/dist/cjs/mapDB.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/provider.d.ts +46 -0
- package/dist/cjs/provider.d.ts.map +1 -0
- package/dist/cjs/provider.js +84 -0
- package/dist/cjs/provider.js.map +1 -0
- package/dist/cjs/request.d.ts +20 -0
- package/dist/cjs/request.d.ts.map +1 -0
- package/dist/cjs/request.js +35 -0
- package/dist/cjs/request.js.map +1 -0
- package/dist/cjs/signature.d.ts +47 -0
- package/dist/cjs/signature.d.ts.map +1 -0
- package/dist/cjs/signature.js +147 -0
- package/dist/cjs/signature.js.map +1 -0
- package/dist/cjs/tasks.d.ts +32 -0
- package/dist/cjs/tasks.d.ts.map +1 -0
- package/dist/cjs/tasks.js +51 -0
- package/dist/cjs/tasks.js.map +1 -0
- package/dist/cjs/types.d.ts +64 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +78 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/units.d.ts +22 -0
- package/dist/cjs/units.d.ts.map +1 -0
- package/dist/cjs/units.js +51 -0
- package/dist/cjs/units.js.map +1 -0
- package/dist/cjs/withdrawal.d.ts +72 -0
- package/dist/cjs/withdrawal.d.ts.map +1 -0
- package/dist/cjs/withdrawal.js +93 -0
- package/dist/cjs/withdrawal.js.map +1 -0
- package/dist/esm/account.d.ts +165 -0
- package/dist/esm/account.d.ts.map +1 -0
- package/dist/esm/account.js +505 -0
- package/dist/esm/account.js.map +1 -0
- package/dist/esm/address.d.ts +67 -0
- package/dist/esm/address.d.ts.map +1 -0
- package/dist/esm/address.js +125 -0
- package/dist/esm/address.js.map +1 -0
- package/dist/esm/authorization.d.ts +41 -0
- package/dist/esm/authorization.d.ts.map +1 -0
- package/dist/esm/authorization.js +126 -0
- package/dist/esm/authorization.js.map +1 -0
- package/dist/esm/bal.d.ts +129 -0
- package/dist/esm/bal.d.ts.map +1 -0
- package/dist/esm/bal.js +522 -0
- package/dist/esm/bal.js.map +1 -0
- package/dist/esm/binaryTree.d.ts +148 -0
- package/dist/esm/binaryTree.d.ts.map +1 -0
- package/dist/esm/binaryTree.js +226 -0
- package/dist/esm/binaryTree.js.map +1 -0
- package/dist/esm/blobs.d.ts +76 -0
- package/dist/esm/blobs.d.ts.map +1 -0
- package/dist/esm/blobs.js +163 -0
- package/dist/esm/blobs.js.map +1 -0
- package/dist/esm/bytes.d.ts +291 -0
- package/dist/esm/bytes.d.ts.map +1 -0
- package/dist/esm/bytes.js +562 -0
- package/dist/esm/bytes.js.map +1 -0
- package/dist/esm/constants.d.ts +91 -0
- package/dist/esm/constants.d.ts.map +1 -0
- package/dist/esm/constants.js +94 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/db.d.ts +65 -0
- package/dist/esm/db.d.ts.map +1 -0
- package/dist/esm/db.js +11 -0
- package/dist/esm/db.js.map +1 -0
- package/dist/esm/env.d.ts +9 -0
- package/dist/esm/env.d.ts.map +1 -0
- package/dist/esm/env.js +9 -0
- package/dist/esm/env.js.map +1 -0
- package/dist/esm/errors.d.ts +3 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +14 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/helpers.d.ts +21 -0
- package/dist/esm/helpers.d.ts.map +1 -0
- package/dist/esm/helpers.js +43 -0
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/index.d.ts +67 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +67 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal.d.ts +72 -0
- package/dist/esm/internal.d.ts.map +1 -0
- package/dist/esm/internal.js +170 -0
- package/dist/esm/internal.js.map +1 -0
- package/dist/esm/kzg.d.ts +14 -0
- package/dist/esm/kzg.d.ts.map +1 -0
- package/dist/esm/kzg.js +2 -0
- package/dist/esm/kzg.js.map +1 -0
- package/dist/esm/lock.d.ts +15 -0
- package/dist/esm/lock.d.ts.map +1 -0
- package/dist/esm/lock.js +41 -0
- package/dist/esm/lock.js.map +1 -0
- package/dist/esm/mapDB.d.ts +17 -0
- package/dist/esm/mapDB.d.ts.map +1 -0
- package/dist/esm/mapDB.js +42 -0
- package/dist/esm/mapDB.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/provider.d.ts +46 -0
- package/dist/esm/provider.d.ts.map +1 -0
- package/dist/esm/provider.js +79 -0
- package/dist/esm/provider.js.map +1 -0
- package/dist/esm/request.d.ts +20 -0
- package/dist/esm/request.d.ts.map +1 -0
- package/dist/esm/request.js +30 -0
- package/dist/esm/request.js.map +1 -0
- package/dist/esm/signature.d.ts +47 -0
- package/dist/esm/signature.d.ts.map +1 -0
- package/dist/esm/signature.js +137 -0
- package/dist/esm/signature.js.map +1 -0
- package/dist/esm/tasks.d.ts +32 -0
- package/dist/esm/tasks.d.ts.map +1 -0
- package/dist/esm/tasks.js +47 -0
- package/dist/esm/tasks.js.map +1 -0
- package/dist/esm/types.d.ts +64 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +71 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/units.d.ts +22 -0
- package/dist/esm/units.d.ts.map +1 -0
- package/dist/esm/units.js +46 -0
- package/dist/esm/units.js.map +1 -0
- package/dist/esm/withdrawal.d.ts +72 -0
- package/dist/esm/withdrawal.d.ts.map +1 -0
- package/dist/esm/withdrawal.js +86 -0
- package/dist/esm/withdrawal.js.map +1 -0
- package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.prod.esm.tsbuildinfo +1 -0
- package/package.json +116 -0
- package/src/account.ts +630 -0
- package/src/address.ts +158 -0
- package/src/authorization.ts +180 -0
- package/src/bal.ts +761 -0
- package/src/binaryTree.ts +353 -0
- package/src/blobs.ts +209 -0
- package/src/bytes.ts +659 -0
- package/src/constants.ts +125 -0
- package/src/db.ts +86 -0
- package/src/env.ts +9 -0
- package/src/errors.ts +28 -0
- package/src/helpers.ts +46 -0
- package/src/index.ts +88 -0
- package/src/internal.ts +212 -0
- package/src/kzg.ts +24 -0
- package/src/lock.ts +42 -0
- package/src/mapDB.ts +57 -0
- package/src/provider.ts +109 -0
- package/src/request.ts +48 -0
- package/src/signature.ts +202 -0
- package/src/tasks.ts +59 -0
- package/src/types.ts +177 -0
- package/src/units.ts +56 -0
- package/src/withdrawal.ts +133 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Address } from './address.ts'
|
|
2
|
+
import { bigIntToHex, bytesToHex, toBytes } from './bytes.ts'
|
|
3
|
+
import { BIGINT_0 } from './constants.ts'
|
|
4
|
+
import { TypeOutput, toType } from './types.ts'
|
|
5
|
+
|
|
6
|
+
import type { AddressLike, BigIntLike, PrefixedHexString } from './types.ts'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Flexible input data type for EIP-4895 withdrawal data with amount in Gwei to
|
|
10
|
+
* match CL representation and for eventual ssz withdrawalsRoot
|
|
11
|
+
*/
|
|
12
|
+
export type WithdrawalData = {
|
|
13
|
+
index: BigIntLike
|
|
14
|
+
validatorIndex: BigIntLike
|
|
15
|
+
address: AddressLike
|
|
16
|
+
amount: BigIntLike
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* JSON RPC interface for EIP-4895 withdrawal data with amount in Gwei to
|
|
21
|
+
* match CL representation and for eventual ssz withdrawalsRoot
|
|
22
|
+
*/
|
|
23
|
+
export interface JSONRPCWithdrawal {
|
|
24
|
+
index: PrefixedHexString // QUANTITY - bigint 8 bytes
|
|
25
|
+
validatorIndex: PrefixedHexString // QUANTITY - bigint 8 bytes
|
|
26
|
+
address: PrefixedHexString // DATA, 20 Bytes address to withdraw to
|
|
27
|
+
amount: PrefixedHexString // QUANTITY - bigint amount in Gwei 8 bytes
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export type WithdrawalBytes = [Uint8Array, Uint8Array, Uint8Array, Uint8Array]
|
|
31
|
+
/**
|
|
32
|
+
* Convert a withdrawal to a byte array
|
|
33
|
+
* @param withdrawal the withdrawal to convert
|
|
34
|
+
* @returns byte array of the withdrawal
|
|
35
|
+
*/
|
|
36
|
+
export function withdrawalToBytesArray(withdrawal: Withdrawal | WithdrawalData): WithdrawalBytes {
|
|
37
|
+
const { index, validatorIndex, address, amount } = withdrawal
|
|
38
|
+
const indexBytes =
|
|
39
|
+
toType(index, TypeOutput.BigInt) === BIGINT_0
|
|
40
|
+
? new Uint8Array()
|
|
41
|
+
: toType(index, TypeOutput.Uint8Array)
|
|
42
|
+
const validatorIndexBytes =
|
|
43
|
+
toType(validatorIndex, TypeOutput.BigInt) === BIGINT_0
|
|
44
|
+
? new Uint8Array()
|
|
45
|
+
: toType(validatorIndex, TypeOutput.Uint8Array)
|
|
46
|
+
const addressBytes =
|
|
47
|
+
address instanceof Address ? address.bytes : toType(address, TypeOutput.Uint8Array)
|
|
48
|
+
|
|
49
|
+
const amountBytes =
|
|
50
|
+
toType(amount, TypeOutput.BigInt) === BIGINT_0
|
|
51
|
+
? new Uint8Array()
|
|
52
|
+
: toType(amount, TypeOutput.Uint8Array)
|
|
53
|
+
|
|
54
|
+
return [indexBytes, validatorIndexBytes, addressBytes, amountBytes]
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Representation of EIP-4895 withdrawal data
|
|
58
|
+
*/
|
|
59
|
+
export class Withdrawal {
|
|
60
|
+
public readonly index: bigint
|
|
61
|
+
public readonly validatorIndex: bigint
|
|
62
|
+
public readonly address: Address
|
|
63
|
+
public readonly amount: bigint
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* This constructor assigns and validates the values.
|
|
67
|
+
* Use the static factory methods to assist in creating a Withdrawal object from varying data types.
|
|
68
|
+
* Its amount is in Gwei to match CL representation and for eventual ssz withdrawalsRoot
|
|
69
|
+
*/
|
|
70
|
+
constructor(index: bigint, validatorIndex: bigint, address: Address, amount: bigint) {
|
|
71
|
+
this.index = index
|
|
72
|
+
this.validatorIndex = validatorIndex
|
|
73
|
+
this.address = address
|
|
74
|
+
this.amount = amount
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
raw() {
|
|
78
|
+
return withdrawalToBytesArray(this)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
toValue() {
|
|
82
|
+
return {
|
|
83
|
+
index: this.index,
|
|
84
|
+
validatorIndex: this.validatorIndex,
|
|
85
|
+
address: this.address.bytes,
|
|
86
|
+
amount: this.amount,
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
toJSON() {
|
|
91
|
+
return {
|
|
92
|
+
index: bigIntToHex(this.index),
|
|
93
|
+
validatorIndex: bigIntToHex(this.validatorIndex),
|
|
94
|
+
address: bytesToHex(this.address.bytes),
|
|
95
|
+
amount: bigIntToHex(this.amount),
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Creates a validator withdrawal request to be submitted to the consensus layer
|
|
102
|
+
* @param withdrawalData the consensus layer index and validator index values for the
|
|
103
|
+
* validator requesting the withdrawal and the address and withdrawal amount of the request
|
|
104
|
+
* @returns a {@link Withdrawal} object
|
|
105
|
+
*/
|
|
106
|
+
export function createWithdrawal(withdrawalData: WithdrawalData) {
|
|
107
|
+
const {
|
|
108
|
+
index: indexData,
|
|
109
|
+
validatorIndex: validatorIndexData,
|
|
110
|
+
address: addressData,
|
|
111
|
+
amount: amountData,
|
|
112
|
+
} = withdrawalData
|
|
113
|
+
const index = toType(indexData, TypeOutput.BigInt)
|
|
114
|
+
const validatorIndex = toType(validatorIndexData, TypeOutput.BigInt)
|
|
115
|
+
const address = addressData instanceof Address ? addressData : new Address(toBytes(addressData))
|
|
116
|
+
const amount = toType(amountData, TypeOutput.BigInt)
|
|
117
|
+
|
|
118
|
+
return new Withdrawal(index, validatorIndex, address, amount)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Creates a validator withdrawal request to be submitted to the consensus layer from
|
|
123
|
+
* an RLP list
|
|
124
|
+
* @param withdrawalArray decoded RLP list of withdrawal data elements
|
|
125
|
+
* @returns a {@link Withdrawal} object
|
|
126
|
+
*/
|
|
127
|
+
export function createWithdrawalFromBytesArray(withdrawalArray: WithdrawalBytes) {
|
|
128
|
+
if (withdrawalArray.length !== 4) {
|
|
129
|
+
throw Error(`Invalid withdrawalArray length expected=4 actual=${withdrawalArray.length}`)
|
|
130
|
+
}
|
|
131
|
+
const [index, validatorIndex, address, amount] = withdrawalArray
|
|
132
|
+
return createWithdrawal({ index, validatorIndex, address, amount })
|
|
133
|
+
}
|