@lodestar/api 1.19.0 → 1.20.0-dev.0c5adec4eb

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 (228) hide show
  1. package/README.md +2 -2
  2. package/lib/beacon/client/beacon.d.ts +4 -3
  3. package/lib/beacon/client/beacon.js +3 -36
  4. package/lib/beacon/client/beacon.js.map +1 -1
  5. package/lib/beacon/client/config.d.ts +4 -3
  6. package/lib/beacon/client/config.js +3 -6
  7. package/lib/beacon/client/config.js.map +1 -1
  8. package/lib/beacon/client/debug.d.ts +4 -3
  9. package/lib/beacon/client/debug.js +4 -45
  10. package/lib/beacon/client/debug.js.map +1 -1
  11. package/lib/beacon/client/events.d.ts +5 -2
  12. package/lib/beacon/client/events.js +32 -35
  13. package/lib/beacon/client/events.js.map +1 -1
  14. package/lib/beacon/client/index.d.ts +6 -3
  15. package/lib/beacon/client/index.js +2 -2
  16. package/lib/beacon/client/index.js.map +1 -1
  17. package/lib/beacon/client/lightclient.d.ts +4 -3
  18. package/lib/beacon/client/lightclient.js +4 -7
  19. package/lib/beacon/client/lightclient.js.map +1 -1
  20. package/lib/beacon/client/lodestar.d.ts +4 -3
  21. package/lib/beacon/client/lodestar.js +4 -7
  22. package/lib/beacon/client/lodestar.js.map +1 -1
  23. package/lib/beacon/client/node.d.ts +4 -3
  24. package/lib/beacon/client/node.js +4 -7
  25. package/lib/beacon/client/node.js.map +1 -1
  26. package/lib/beacon/client/proof.d.ts +5 -4
  27. package/lib/beacon/client/proof.js +5 -61
  28. package/lib/beacon/client/proof.js.map +1 -1
  29. package/lib/beacon/client/validator.d.ts +4 -3
  30. package/lib/beacon/client/validator.js +4 -7
  31. package/lib/beacon/client/validator.js.map +1 -1
  32. package/lib/beacon/index.d.ts +5 -5
  33. package/lib/beacon/index.js.map +1 -1
  34. package/lib/beacon/routes/beacon/block.d.ts +282 -164
  35. package/lib/beacon/routes/beacon/block.js +324 -116
  36. package/lib/beacon/routes/beacon/block.js.map +1 -1
  37. package/lib/beacon/routes/beacon/index.d.ts +6 -588
  38. package/lib/beacon/routes/beacon/index.js +16 -26
  39. package/lib/beacon/routes/beacon/index.js.map +1 -1
  40. package/lib/beacon/routes/beacon/pool.d.ts +155 -117
  41. package/lib/beacon/routes/beacon/pool.js +146 -42
  42. package/lib/beacon/routes/beacon/pool.js.map +1 -1
  43. package/lib/beacon/routes/beacon/rewards.d.ts +113 -101
  44. package/lib/beacon/routes/beacon/rewards.js +98 -63
  45. package/lib/beacon/routes/beacon/rewards.js.map +1 -1
  46. package/lib/beacon/routes/beacon/state.d.ts +172 -226
  47. package/lib/beacon/routes/beacon/state.js +204 -126
  48. package/lib/beacon/routes/beacon/state.js.map +1 -1
  49. package/lib/beacon/routes/config.d.ts +21 -36
  50. package/lib/beacon/routes/config.js +45 -24
  51. package/lib/beacon/routes/config.js.map +1 -1
  52. package/lib/beacon/routes/debug.d.ts +32 -95
  53. package/lib/beacon/routes/debug.js +87 -45
  54. package/lib/beacon/routes/debug.js.map +1 -1
  55. package/lib/beacon/routes/events.d.ts +20 -16
  56. package/lib/beacon/routes/events.js +39 -17
  57. package/lib/beacon/routes/events.js.map +1 -1
  58. package/lib/beacon/routes/index.d.ts +19 -19
  59. package/lib/beacon/routes/index.js +1 -0
  60. package/lib/beacon/routes/index.js.map +1 -1
  61. package/lib/beacon/routes/lightclient.d.ts +33 -55
  62. package/lib/beacon/routes/lightclient.js +107 -47
  63. package/lib/beacon/routes/lightclient.js.map +1 -1
  64. package/lib/beacon/routes/lodestar.d.ts +74 -148
  65. package/lib/beacon/routes/lodestar.js +126 -77
  66. package/lib/beacon/routes/lodestar.js.map +1 -1
  67. package/lib/beacon/routes/node.d.ts +48 -82
  68. package/lib/beacon/routes/node.js +90 -57
  69. package/lib/beacon/routes/node.js.map +1 -1
  70. package/lib/beacon/routes/proof.d.ts +25 -31
  71. package/lib/beacon/routes/proof.js +44 -24
  72. package/lib/beacon/routes/proof.js.map +1 -1
  73. package/lib/beacon/routes/validator.d.ts +547 -320
  74. package/lib/beacon/routes/validator.js +494 -213
  75. package/lib/beacon/routes/validator.js.map +1 -1
  76. package/lib/beacon/server/beacon.d.ts +3 -4
  77. package/lib/beacon/server/beacon.js +4 -57
  78. package/lib/beacon/server/beacon.js.map +1 -1
  79. package/lib/beacon/server/config.d.ts +3 -4
  80. package/lib/beacon/server/config.js +4 -5
  81. package/lib/beacon/server/config.js.map +1 -1
  82. package/lib/beacon/server/debug.d.ts +3 -4
  83. package/lib/beacon/server/debug.js +4 -54
  84. package/lib/beacon/server/debug.js.map +1 -1
  85. package/lib/beacon/server/events.d.ts +4 -4
  86. package/lib/beacon/server/events.js +17 -23
  87. package/lib/beacon/server/events.js.map +1 -1
  88. package/lib/beacon/server/index.d.ts +7 -8
  89. package/lib/beacon/server/index.js +13 -14
  90. package/lib/beacon/server/index.js.map +1 -1
  91. package/lib/beacon/server/lightclient.d.ts +3 -4
  92. package/lib/beacon/server/lightclient.js +4 -5
  93. package/lib/beacon/server/lightclient.js.map +1 -1
  94. package/lib/beacon/server/lodestar.d.ts +3 -4
  95. package/lib/beacon/server/lodestar.js +4 -5
  96. package/lib/beacon/server/lodestar.js.map +1 -1
  97. package/lib/beacon/server/node.d.ts +3 -4
  98. package/lib/beacon/server/node.js +4 -18
  99. package/lib/beacon/server/node.js.map +1 -1
  100. package/lib/beacon/server/proof.d.ts +3 -4
  101. package/lib/beacon/server/proof.js +4 -36
  102. package/lib/beacon/server/proof.js.map +1 -1
  103. package/lib/beacon/server/validator.d.ts +3 -4
  104. package/lib/beacon/server/validator.js +4 -21
  105. package/lib/beacon/server/validator.js.map +1 -1
  106. package/lib/builder/client.d.ts +4 -6
  107. package/lib/builder/client.js +3 -9
  108. package/lib/builder/client.js.map +1 -1
  109. package/lib/builder/index.d.ts +8 -5
  110. package/lib/builder/index.js +4 -1
  111. package/lib/builder/index.js.map +1 -1
  112. package/lib/builder/routes.d.ts +24 -38
  113. package/lib/builder/routes.js +77 -33
  114. package/lib/builder/routes.js.map +1 -1
  115. package/lib/builder/server/index.d.ts +6 -6
  116. package/lib/builder/server/index.js +7 -8
  117. package/lib/builder/server/index.js.map +1 -1
  118. package/lib/index.d.ts +9 -6
  119. package/lib/index.js +5 -4
  120. package/lib/index.js.map +1 -1
  121. package/lib/keymanager/client.d.ts +4 -3
  122. package/lib/keymanager/client.js +4 -7
  123. package/lib/keymanager/client.js.map +1 -1
  124. package/lib/keymanager/index.d.ts +5 -4
  125. package/lib/keymanager/index.js +1 -1
  126. package/lib/keymanager/index.js.map +1 -1
  127. package/lib/keymanager/routes.d.ts +155 -177
  128. package/lib/keymanager/routes.js +236 -123
  129. package/lib/keymanager/routes.js.map +1 -1
  130. package/lib/keymanager/server/index.d.ts +6 -6
  131. package/lib/keymanager/server/index.js +7 -8
  132. package/lib/keymanager/server/index.js.map +1 -1
  133. package/lib/server/index.d.ts +2 -0
  134. package/lib/server/index.js +3 -0
  135. package/lib/server/index.js.map +1 -0
  136. package/lib/utils/client/error.d.ts +6 -0
  137. package/lib/utils/client/error.js +8 -0
  138. package/lib/utils/client/error.js.map +1 -0
  139. package/lib/utils/client/httpClient.d.ts +35 -75
  140. package/lib/utils/client/httpClient.js +201 -153
  141. package/lib/utils/client/httpClient.js.map +1 -1
  142. package/lib/utils/client/index.d.ts +6 -2
  143. package/lib/utils/client/index.js +6 -2
  144. package/lib/utils/client/index.js.map +1 -1
  145. package/lib/utils/client/method.d.ts +11 -0
  146. package/lib/utils/client/method.js +27 -0
  147. package/lib/utils/client/method.js.map +1 -0
  148. package/lib/utils/client/request.d.ts +33 -0
  149. package/lib/utils/client/request.js +66 -0
  150. package/lib/utils/client/request.js.map +1 -0
  151. package/lib/utils/client/response.d.ts +36 -0
  152. package/lib/utils/client/response.js +167 -0
  153. package/lib/utils/client/response.js.map +1 -0
  154. package/lib/utils/codecs.d.ts +28 -0
  155. package/lib/utils/codecs.js +105 -0
  156. package/lib/utils/codecs.js.map +1 -0
  157. package/lib/utils/fork.d.ts +8 -0
  158. package/lib/utils/fork.js +35 -0
  159. package/lib/utils/fork.js.map +1 -0
  160. package/lib/utils/headers.d.ts +37 -0
  161. package/lib/utils/headers.js +134 -0
  162. package/lib/utils/headers.js.map +1 -0
  163. package/lib/utils/httpStatusCode.js.map +1 -0
  164. package/lib/utils/index.d.ts +1 -1
  165. package/lib/utils/index.js +1 -1
  166. package/lib/utils/index.js.map +1 -1
  167. package/lib/utils/metadata.d.ts +88 -0
  168. package/lib/utils/metadata.js +126 -0
  169. package/lib/utils/metadata.js.map +1 -0
  170. package/lib/utils/schema.d.ts +31 -17
  171. package/lib/utils/schema.js +18 -6
  172. package/lib/utils/schema.js.map +1 -1
  173. package/lib/utils/serdes.d.ts +3 -0
  174. package/lib/utils/serdes.js +13 -0
  175. package/lib/utils/serdes.js.map +1 -1
  176. package/lib/utils/server/{errors.d.ts → error.d.ts} +2 -2
  177. package/lib/utils/server/{errors.js → error.js} +1 -1
  178. package/lib/utils/server/error.js.map +1 -0
  179. package/lib/utils/server/handler.d.ts +11 -0
  180. package/lib/utils/server/handler.js +115 -0
  181. package/lib/utils/server/handler.js.map +1 -0
  182. package/lib/utils/server/index.d.ts +5 -4
  183. package/lib/utils/server/index.js +5 -4
  184. package/lib/utils/server/index.js.map +1 -1
  185. package/lib/utils/server/method.d.ts +35 -0
  186. package/lib/utils/server/method.js +2 -0
  187. package/lib/utils/server/method.js.map +1 -0
  188. package/lib/utils/server/parser.d.ts +3 -0
  189. package/lib/utils/server/parser.js +20 -0
  190. package/lib/utils/server/parser.js.map +1 -0
  191. package/lib/utils/server/route.d.ts +20 -0
  192. package/lib/utils/server/route.js +19 -0
  193. package/lib/utils/server/route.js.map +1 -0
  194. package/lib/utils/types.d.ts +116 -104
  195. package/lib/utils/types.js +2 -155
  196. package/lib/utils/types.js.map +1 -1
  197. package/lib/utils/urlFormat.d.ts +2 -2
  198. package/lib/utils/urlFormat.js +3 -3
  199. package/lib/utils/urlFormat.js.map +1 -1
  200. package/lib/utils/wireFormat.d.ts +8 -0
  201. package/lib/utils/wireFormat.js +23 -0
  202. package/lib/utils/wireFormat.js.map +1 -0
  203. package/package.json +9 -6
  204. package/lib/interfaces.d.ts +0 -44
  205. package/lib/interfaces.js +0 -2
  206. package/lib/interfaces.js.map +0 -1
  207. package/lib/utils/acceptHeader.d.ts +0 -9
  208. package/lib/utils/acceptHeader.js +0 -62
  209. package/lib/utils/acceptHeader.js.map +0 -1
  210. package/lib/utils/client/client.d.ts +0 -29
  211. package/lib/utils/client/client.js +0 -88
  212. package/lib/utils/client/client.js.map +0 -1
  213. package/lib/utils/client/httpStatusCode.js.map +0 -1
  214. package/lib/utils/routes.d.ts +0 -6
  215. package/lib/utils/routes.js +0 -31
  216. package/lib/utils/routes.js.map +0 -1
  217. package/lib/utils/server/errors.js.map +0 -1
  218. package/lib/utils/server/genericJsonServer.d.ts +0 -13
  219. package/lib/utils/server/genericJsonServer.js +0 -32
  220. package/lib/utils/server/genericJsonServer.js.map +0 -1
  221. package/lib/utils/server/registerRoute.d.ts +0 -3
  222. package/lib/utils/server/registerRoute.js +0 -13
  223. package/lib/utils/server/registerRoute.js.map +0 -1
  224. package/lib/utils/server/types.d.ts +0 -22
  225. package/lib/utils/server/types.js +0 -2
  226. package/lib/utils/server/types.js.map +0 -1
  227. /package/lib/utils/{client/httpStatusCode.d.ts → httpStatusCode.d.ts} +0 -0
  228. /package/lib/utils/{client/httpStatusCode.js → httpStatusCode.js} +0 -0
@@ -1,10 +1,9 @@
1
- import { ForkBlobs, ForkPreBlobs, ForkExecution } from "@lodestar/params";
2
- import { allForks, altair, BLSPubkey, BLSSignature, CommitteeIndex, Epoch, phase0, bellatrix, Root, Slot, UintNum64, UintBn64, ValidatorIndex, RootHex, SubcommitteeIndex, Wei, ProducedBlockSource } from "@lodestar/types";
3
- import { ApiClientResponse } from "../../interfaces.js";
4
- import { HttpStatusCode } from "../../utils/client/httpStatusCode.js";
5
- import { RoutesData, ReturnTypes, ReqSerializers } from "../../utils/index.js";
6
- import { U64Str } from "../../utils/serdes.js";
7
- import { ExecutionOptimistic } from "./beacon/block.js";
1
+ import { ContainerType, Type, ValueOf } from "@chainsafe/ssz";
2
+ import { ChainForkConfig } from "@lodestar/config";
3
+ import { allForks, altair, BLSSignature, CommitteeIndex, Epoch, phase0, Root, Slot, UintBn64, ValidatorIndex, ProducedBlockSource } from "@lodestar/types";
4
+ import { Endpoint, RouteDefinitions } from "../../utils/index.js";
5
+ import { EmptyMeta, EmptyResponseData } from "../../utils/codecs.js";
6
+ import { ExecutionOptimisticAndDependentRootMeta, ExecutionOptimisticMeta, VersionMeta } from "../../utils/metadata.js";
8
7
  export declare enum BuilderSelection {
9
8
  Default = "default",
10
9
  BuilderAlways = "builderalways",
@@ -15,113 +14,396 @@ export declare enum BuilderSelection {
15
14
  /** Only builds execution block*/
16
15
  ExecutionOnly = "executiononly"
17
16
  }
18
- export type ExtraProduceBlockOps = {
17
+ /** Lodestar-specific (non-standardized) options */
18
+ export type ExtraProduceBlockOpts = {
19
19
  feeRecipient?: string;
20
20
  builderSelection?: BuilderSelection;
21
- builderBoostFactor?: UintBn64;
22
21
  strictFeeRecipientCheck?: boolean;
23
22
  blindedLocal?: boolean;
24
23
  };
25
- export type ProduceBlockOrContentsRes = {
26
- executionPayloadValue: Wei;
27
- consensusBlockValue: Wei;
28
- } & ({
29
- data: allForks.BeaconBlock;
30
- version: ForkPreBlobs;
31
- } | {
32
- data: allForks.BlockContents;
33
- version: ForkBlobs;
34
- });
35
- export type ProduceBlindedBlockRes = {
36
- executionPayloadValue: Wei;
37
- consensusBlockValue: Wei;
38
- } & {
39
- data: allForks.BlindedBeaconBlock;
40
- version: ForkExecution;
41
- };
42
- export type ProduceFullOrBlindedBlockOrContentsRes = {
24
+ export declare const ProduceBlockV3MetaType: ContainerType<{
25
+ /** Specifies whether the response contains full or blinded block */
26
+ executionPayloadBlinded: import("@chainsafe/ssz").BooleanType;
27
+ /** Execution payload value in Wei */
28
+ executionPayloadValue: import("@chainsafe/ssz").UintBigintType;
29
+ /** Consensus rewards paid to the proposer for this block, in Wei */
30
+ consensusBlockValue: import("@chainsafe/ssz").UintBigintType;
31
+ version: import("@lodestar/types").StringType<import("@lodestar/params").ForkName>;
32
+ }>;
33
+ export type ProduceBlockV3Meta = ValueOf<typeof ProduceBlockV3MetaType> & {
34
+ /** Lodestar-specific (non-standardized) value */
43
35
  executionPayloadSource: ProducedBlockSource;
44
- } & ((ProduceBlockOrContentsRes & {
45
- executionPayloadBlinded: false;
46
- }) | (ProduceBlindedBlockRes & {
47
- executionPayloadBlinded: true;
48
- }));
49
- export type BeaconCommitteeSubscription = {
50
- validatorIndex: ValidatorIndex;
51
- committeeIndex: number;
52
- committeesAtSlot: number;
53
- slot: Slot;
54
- isAggregator: boolean;
55
- };
56
- /**
57
- * From https://github.com/ethereum/beacon-APIs/pull/136
58
- */
59
- export type SyncCommitteeSubscription = {
60
- validatorIndex: ValidatorIndex;
61
- syncCommitteeIndices: number[];
62
- untilEpoch: Epoch;
63
- };
64
- /**
65
- * The types used here are string instead of ssz based because the use of proposer data
66
- * is just validator --> beacon json api call for `beaconProposerCache` cache update.
67
- */
68
- export type ProposerPreparationData = {
69
- validatorIndex: string;
70
- feeRecipient: string;
71
- };
72
- export type ProposerDuty = {
73
- slot: Slot;
74
- validatorIndex: ValidatorIndex;
75
- pubkey: BLSPubkey;
76
- };
77
- export type AttesterDuty = {
78
- pubkey: BLSPubkey;
79
- validatorIndex: ValidatorIndex;
80
- committeeIndex: CommitteeIndex;
81
- committeeLength: UintNum64;
82
- committeesAtSlot: UintNum64;
83
- validatorCommitteeIndex: UintNum64;
84
- slot: Slot;
85
36
  };
37
+ export declare const BlockContentsType: ContainerType<{
38
+ block: ContainerType<{
39
+ body: ContainerType<{
40
+ executionPayload: ContainerType<{
41
+ blobGasUsed: import("@chainsafe/ssz").UintBigintType;
42
+ excessBlobGas: import("@chainsafe/ssz").UintBigintType;
43
+ withdrawals: import("@chainsafe/ssz").ListCompositeType<ContainerType<{
44
+ index: import("@chainsafe/ssz").UintNumberType;
45
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
46
+ address: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
47
+ /**
48
+ * Get block proposers duties
49
+ * Request beacon node to provide all validators that are scheduled to propose a block in the given epoch.
50
+ * Duties should only need to be checked once per epoch, however a chain reorganization could occur that results in a change of duties. For full safety, you should monitor head events and confirm the dependent root in this response matches:
51
+ * - event.current_duty_dependent_root when `compute_epoch_at_slot(event.slot) == epoch`
52
+ * - event.block otherwise
53
+ * The dependent_root value is `get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch) - 1)` or the genesis block root in the case of underflow.
54
+ */
55
+ amount: import("@chainsafe/ssz").UintBigintType;
56
+ }>>;
57
+ transactions: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteListType>;
58
+ parentHash: import("@chainsafe/ssz").ByteVectorType;
59
+ feeRecipient: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
60
+ stateRoot: import("@chainsafe/ssz").ByteVectorType;
61
+ receiptsRoot: import("@chainsafe/ssz").ByteVectorType;
62
+ logsBloom: import("@chainsafe/ssz").ByteVectorType;
63
+ prevRandao: import("@chainsafe/ssz").ByteVectorType;
64
+ blockNumber: import("@chainsafe/ssz").UintNumberType;
65
+ gasLimit: import("@chainsafe/ssz").UintNumberType;
66
+ gasUsed: import("@chainsafe/ssz").UintNumberType;
67
+ timestamp: import("@chainsafe/ssz").UintNumberType;
68
+ extraData: import("@chainsafe/ssz").ByteListType;
69
+ baseFeePerGas: import("@chainsafe/ssz").UintBigintType;
70
+ blockHash: import("@chainsafe/ssz").ByteVectorType;
71
+ }>;
72
+ blsToExecutionChanges: import("@chainsafe/ssz").ListCompositeType<ContainerType<{
73
+ message: ContainerType<{
74
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
75
+ fromBlsPubkey: import("@chainsafe/ssz").ByteVectorType;
76
+ toExecutionAddress: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
77
+ }>;
78
+ signature: import("@chainsafe/ssz").ByteVectorType;
79
+ }>>;
80
+ blobKzgCommitments: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteVectorType>;
81
+ syncAggregate: ContainerType<{
82
+ syncCommitteeBits: import("@chainsafe/ssz").BitVectorType;
83
+ syncCommitteeSignature: import("@chainsafe/ssz").ByteVectorType;
84
+ }>;
85
+ randaoReveal: import("@chainsafe/ssz").ByteVectorType;
86
+ eth1Data: ContainerType<{
87
+ depositRoot: import("@chainsafe/ssz").ByteVectorType;
88
+ depositCount: import("@chainsafe/ssz").UintNumberType;
89
+ blockHash: import("@chainsafe/ssz").ByteVectorType;
90
+ }>;
91
+ graffiti: import("@chainsafe/ssz").ByteVectorType;
92
+ proposerSlashings: import("@chainsafe/ssz").ListCompositeType<ContainerType<{
93
+ signedHeader1: ContainerType<{
94
+ message: ContainerType<{
95
+ slot: import("@chainsafe/ssz").UintBigintType;
96
+ proposerIndex: import("@chainsafe/ssz").UintNumberType;
97
+ parentRoot: import("@chainsafe/ssz").ByteVectorType;
98
+ stateRoot: import("@chainsafe/ssz").ByteVectorType;
99
+ bodyRoot: import("@chainsafe/ssz").ByteVectorType;
100
+ }>;
101
+ signature: import("@chainsafe/ssz").ByteVectorType;
102
+ }>;
103
+ signedHeader2: ContainerType<{
104
+ message: ContainerType<{
105
+ slot: import("@chainsafe/ssz").UintBigintType;
106
+ proposerIndex: import("@chainsafe/ssz").UintNumberType;
107
+ parentRoot: import("@chainsafe/ssz").ByteVectorType;
108
+ stateRoot: import("@chainsafe/ssz").ByteVectorType;
109
+ bodyRoot: import("@chainsafe/ssz").ByteVectorType;
110
+ }>;
111
+ signature: import("@chainsafe/ssz").ByteVectorType;
112
+ }>;
113
+ }>>;
114
+ attesterSlashings: import("@chainsafe/ssz").ListCompositeType<ContainerType<{
115
+ attestation1: ContainerType<{
116
+ attestingIndices: import("@chainsafe/ssz").ListBasicType<import("@chainsafe/ssz").UintNumberType>;
117
+ data: ContainerType<{
118
+ slot: import("@chainsafe/ssz").UintBigintType;
119
+ index: import("@chainsafe/ssz").UintBigintType;
120
+ beaconBlockRoot: import("@chainsafe/ssz").ByteVectorType;
121
+ source: ContainerType<{
122
+ epoch: import("@chainsafe/ssz").UintBigintType;
123
+ root: import("@chainsafe/ssz").ByteVectorType;
124
+ }>;
125
+ target: ContainerType<{
126
+ epoch: import("@chainsafe/ssz").UintBigintType;
127
+ root: import("@chainsafe/ssz").ByteVectorType;
128
+ }>;
129
+ }>;
130
+ signature: import("@chainsafe/ssz").ByteVectorType;
131
+ }>;
132
+ attestation2: ContainerType<{
133
+ attestingIndices: import("@chainsafe/ssz").ListBasicType<import("@chainsafe/ssz").UintNumberType>;
134
+ data: ContainerType<{
135
+ slot: import("@chainsafe/ssz").UintBigintType;
136
+ index: import("@chainsafe/ssz").UintBigintType;
137
+ beaconBlockRoot: import("@chainsafe/ssz").ByteVectorType;
138
+ source: ContainerType<{
139
+ epoch: import("@chainsafe/ssz").UintBigintType;
140
+ root: import("@chainsafe/ssz").ByteVectorType;
141
+ }>;
142
+ target: ContainerType<{
143
+ epoch: import("@chainsafe/ssz").UintBigintType;
144
+ root: import("@chainsafe/ssz").ByteVectorType;
145
+ }>;
146
+ }>;
147
+ signature: import("@chainsafe/ssz").ByteVectorType;
148
+ }>;
149
+ }>>;
150
+ attestations: import("@chainsafe/ssz").ListCompositeType<ContainerType<{
151
+ aggregationBits: import("@chainsafe/ssz").BitListType;
152
+ data: ContainerType<{
153
+ slot: import("@chainsafe/ssz").UintNumberType;
154
+ index: import("@chainsafe/ssz").UintNumberType;
155
+ beaconBlockRoot: import("@chainsafe/ssz").ByteVectorType;
156
+ source: ContainerType<{
157
+ epoch: import("@chainsafe/ssz").UintNumberType;
158
+ root: import("@chainsafe/ssz").ByteVectorType;
159
+ }>;
160
+ target: ContainerType<{
161
+ epoch: import("@chainsafe/ssz").UintNumberType;
162
+ root: import("@chainsafe/ssz").ByteVectorType;
163
+ }>;
164
+ }>;
165
+ signature: import("@chainsafe/ssz").ByteVectorType;
166
+ }>>;
167
+ deposits: import("@chainsafe/ssz").ListCompositeType<ContainerType<{
168
+ proof: import("@chainsafe/ssz").VectorCompositeType<import("@chainsafe/ssz").ByteVectorType>;
169
+ data: ContainerType<{
170
+ pubkey: import("@chainsafe/ssz").ByteVectorType;
171
+ withdrawalCredentials: import("@chainsafe/ssz").ByteVectorType;
172
+ amount: import("@chainsafe/ssz").UintNumberType;
173
+ signature: import("@chainsafe/ssz").ByteVectorType;
174
+ }>;
175
+ }>>;
176
+ voluntaryExits: import("@chainsafe/ssz").ListCompositeType<ContainerType<{
177
+ message: ContainerType<{
178
+ epoch: import("@chainsafe/ssz").UintNumberType;
179
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
180
+ }>;
181
+ signature: import("@chainsafe/ssz").ByteVectorType;
182
+ }>>;
183
+ }>;
184
+ slot: import("@chainsafe/ssz").UintNumberType;
185
+ proposerIndex: import("@chainsafe/ssz").UintNumberType;
186
+ parentRoot: import("@chainsafe/ssz").ByteVectorType;
187
+ stateRoot: import("@chainsafe/ssz").ByteVectorType;
188
+ }>;
189
+ kzgProofs: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteVectorType>;
190
+ blobs: import("@chainsafe/ssz").ListCompositeType<import("@chainsafe/ssz").ByteVectorType>;
191
+ }>;
192
+ export declare const AttesterDutyType: ContainerType<{
193
+ /** The validator's public key, uniquely identifying them */
194
+ pubkey: import("@chainsafe/ssz").ByteVectorType;
195
+ /** Index of validator in validator registry */
196
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
197
+ /** Index of the committee */
198
+ committeeIndex: import("@chainsafe/ssz").UintNumberType;
199
+ /** Number of validators in committee */
200
+ committeeLength: import("@chainsafe/ssz").UintNumberType;
201
+ /** Number of committees at the provided slot */
202
+ committeesAtSlot: import("@chainsafe/ssz").UintNumberType;
203
+ /** Index of validator in committee */
204
+ validatorCommitteeIndex: import("@chainsafe/ssz").UintNumberType;
205
+ /** The slot at which the validator must attest */
206
+ slot: import("@chainsafe/ssz").UintNumberType;
207
+ }>;
208
+ export declare const ProposerDutyType: ContainerType<{
209
+ slot: import("@chainsafe/ssz").UintNumberType;
210
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
211
+ pubkey: import("@chainsafe/ssz").ByteVectorType;
212
+ }>;
86
213
  /**
87
214
  * From https://github.com/ethereum/beacon-APIs/pull/134
88
215
  */
89
- export type SyncDuty = {
90
- pubkey: BLSPubkey;
216
+ export declare const SyncDutyType: ContainerType<{
217
+ pubkey: import("@chainsafe/ssz").ByteVectorType;
91
218
  /** Index of validator in validator registry. */
92
- validatorIndex: ValidatorIndex;
219
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
93
220
  /** The indices of the validator in the sync committee. */
94
- validatorSyncCommitteeIndices: number[];
95
- };
221
+ validatorSyncCommitteeIndices: import("@chainsafe/ssz").ArrayType<Type<number>, unknown, unknown>;
222
+ }>;
223
+ export declare const BeaconCommitteeSubscriptionType: ContainerType<{
224
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
225
+ committeeIndex: import("@chainsafe/ssz").UintNumberType;
226
+ committeesAtSlot: import("@chainsafe/ssz").UintNumberType;
227
+ slot: import("@chainsafe/ssz").UintNumberType;
228
+ isAggregator: import("@chainsafe/ssz").BooleanType;
229
+ }>;
230
+ /**
231
+ * From https://github.com/ethereum/beacon-APIs/pull/136
232
+ */
233
+ export declare const SyncCommitteeSubscriptionType: ContainerType<{
234
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
235
+ syncCommitteeIndices: import("@chainsafe/ssz").ArrayType<Type<number>, unknown, unknown>;
236
+ untilEpoch: import("@chainsafe/ssz").UintNumberType;
237
+ }>;
238
+ export declare const ProposerPreparationDataType: ContainerType<{
239
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
240
+ feeRecipient: import("@lodestar/types").StringType<string>;
241
+ }>;
96
242
  /**
97
243
  * From https://github.com/ethereum/beacon-APIs/pull/224
98
244
  */
99
- export type BeaconCommitteeSelection = {
245
+ export declare const BeaconCommitteeSelectionType: ContainerType<{
100
246
  /** Index of the validator */
101
- validatorIndex: ValidatorIndex;
247
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
102
248
  /** The slot at which a validator is assigned to attest */
103
- slot: Slot;
249
+ slot: import("@chainsafe/ssz").UintNumberType;
104
250
  /** The `slot_signature` calculated by the validator for the upcoming attestation slot */
105
- selectionProof: BLSSignature;
106
- };
251
+ selectionProof: import("@chainsafe/ssz").ByteVectorType;
252
+ }>;
107
253
  /**
108
254
  * From https://github.com/ethereum/beacon-APIs/pull/224
109
255
  */
110
- export type SyncCommitteeSelection = {
256
+ export declare const SyncCommitteeSelectionType: ContainerType<{
111
257
  /** Index of the validator */
112
- validatorIndex: ValidatorIndex;
258
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
113
259
  /** The slot at which validator is assigned to produce a sync committee contribution */
114
- slot: Slot;
260
+ slot: import("@chainsafe/ssz").UintNumberType;
115
261
  /** SubcommitteeIndex to which the validator is assigned */
116
- subcommitteeIndex: SubcommitteeIndex;
262
+ subcommitteeIndex: import("@chainsafe/ssz").UintNumberType;
117
263
  /** The `slot_signature` calculated by the validator for the upcoming sync committee slot */
118
- selectionProof: BLSSignature;
119
- };
120
- export type LivenessResponseData = {
121
- index: ValidatorIndex;
122
- isLive: boolean;
123
- };
124
- export type Api = {
264
+ selectionProof: import("@chainsafe/ssz").ByteVectorType;
265
+ }>;
266
+ export declare const LivenessResponseDataType: ContainerType<{
267
+ index: import("@chainsafe/ssz").UintNumberType;
268
+ isLive: import("@chainsafe/ssz").BooleanType;
269
+ }>;
270
+ export declare const ValidatorIndicesType: import("@chainsafe/ssz").ArrayType<Type<number>, unknown, unknown>;
271
+ export declare const AttesterDutyListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
272
+ /** The validator's public key, uniquely identifying them */
273
+ pubkey: import("@chainsafe/ssz").ByteVectorType;
274
+ /** Index of validator in validator registry */
275
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
276
+ /** Index of the committee */
277
+ committeeIndex: import("@chainsafe/ssz").UintNumberType;
278
+ /** Number of validators in committee */
279
+ committeeLength: import("@chainsafe/ssz").UintNumberType;
280
+ /** Number of committees at the provided slot */
281
+ committeesAtSlot: import("@chainsafe/ssz").UintNumberType;
282
+ /** Index of validator in committee */
283
+ validatorCommitteeIndex: import("@chainsafe/ssz").UintNumberType;
284
+ /** The slot at which the validator must attest */
285
+ slot: import("@chainsafe/ssz").UintNumberType;
286
+ }>>, unknown, unknown>;
287
+ export declare const ProposerDutyListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
288
+ slot: import("@chainsafe/ssz").UintNumberType;
289
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
290
+ pubkey: import("@chainsafe/ssz").ByteVectorType;
291
+ }>>, unknown, unknown>;
292
+ export declare const SyncDutyListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
293
+ pubkey: import("@chainsafe/ssz").ByteVectorType;
294
+ /** Index of validator in validator registry. */
295
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
296
+ /** The indices of the validator in the sync committee. */
297
+ validatorSyncCommitteeIndices: import("@chainsafe/ssz").ArrayType<Type<number>, unknown, unknown>;
298
+ }>>, unknown, unknown>;
299
+ export declare const SignedAggregateAndProofListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
300
+ message: ContainerType<{
301
+ aggregatorIndex: import("@chainsafe/ssz").UintNumberType;
302
+ aggregate: ContainerType<{
303
+ aggregationBits: import("@chainsafe/ssz").BitListType;
304
+ data: ContainerType<{
305
+ slot: import("@chainsafe/ssz").UintNumberType;
306
+ index: import("@chainsafe/ssz").UintNumberType;
307
+ beaconBlockRoot: import("@chainsafe/ssz").ByteVectorType;
308
+ source: ContainerType<{
309
+ epoch: import("@chainsafe/ssz").UintNumberType;
310
+ root: import("@chainsafe/ssz").ByteVectorType;
311
+ }>;
312
+ target: ContainerType<{
313
+ epoch: import("@chainsafe/ssz").UintNumberType;
314
+ root: import("@chainsafe/ssz").ByteVectorType;
315
+ }>;
316
+ }>;
317
+ signature: import("@chainsafe/ssz").ByteVectorType;
318
+ }>;
319
+ selectionProof: import("@chainsafe/ssz").ByteVectorType;
320
+ }>;
321
+ signature: import("@chainsafe/ssz").ByteVectorType;
322
+ }>>, unknown, unknown>;
323
+ export declare const SignedContributionAndProofListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
324
+ message: ContainerType<{
325
+ aggregatorIndex: import("@chainsafe/ssz").UintNumberType;
326
+ contribution: ContainerType<{
327
+ slot: import("@chainsafe/ssz").UintNumberType; /** Execution payload value in Wei */
328
+ beaconBlockRoot: import("@chainsafe/ssz").ByteVectorType;
329
+ subcommitteeIndex: import("@chainsafe/ssz").UintNumberType;
330
+ aggregationBits: import("@chainsafe/ssz").BitVectorType;
331
+ signature: import("@chainsafe/ssz").ByteVectorType;
332
+ }>;
333
+ selectionProof: import("@chainsafe/ssz").ByteVectorType;
334
+ }>;
335
+ signature: import("@chainsafe/ssz").ByteVectorType;
336
+ }>>, unknown, unknown>;
337
+ export declare const BeaconCommitteeSubscriptionListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
338
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
339
+ committeeIndex: import("@chainsafe/ssz").UintNumberType;
340
+ committeesAtSlot: import("@chainsafe/ssz").UintNumberType;
341
+ slot: import("@chainsafe/ssz").UintNumberType;
342
+ isAggregator: import("@chainsafe/ssz").BooleanType;
343
+ }>>, unknown, unknown>;
344
+ export declare const SyncCommitteeSubscriptionListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
345
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
346
+ syncCommitteeIndices: import("@chainsafe/ssz").ArrayType<Type<number>, unknown, unknown>;
347
+ untilEpoch: import("@chainsafe/ssz").UintNumberType;
348
+ }>>, unknown, unknown>;
349
+ export declare const ProposerPreparationDataListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
350
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
351
+ feeRecipient: import("@lodestar/types").StringType<string>;
352
+ }>>, unknown, unknown>;
353
+ export declare const BeaconCommitteeSelectionListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
354
+ /** Index of the validator */
355
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
356
+ /** The slot at which a validator is assigned to attest */
357
+ slot: import("@chainsafe/ssz").UintNumberType;
358
+ /** The `slot_signature` calculated by the validator for the upcoming attestation slot */
359
+ selectionProof: import("@chainsafe/ssz").ByteVectorType;
360
+ }>>, unknown, unknown>;
361
+ export declare const SyncCommitteeSelectionListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
362
+ /** Index of the validator */
363
+ validatorIndex: import("@chainsafe/ssz").UintNumberType;
364
+ /** The slot at which validator is assigned to produce a sync committee contribution */
365
+ slot: import("@chainsafe/ssz").UintNumberType;
366
+ /** SubcommitteeIndex to which the validator is assigned */
367
+ subcommitteeIndex: import("@chainsafe/ssz").UintNumberType;
368
+ /** The `slot_signature` calculated by the validator for the upcoming sync committee slot */
369
+ selectionProof: import("@chainsafe/ssz").ByteVectorType;
370
+ }>>, unknown, unknown>;
371
+ export declare const LivenessResponseDataListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
372
+ index: import("@chainsafe/ssz").UintNumberType;
373
+ isLive: import("@chainsafe/ssz").BooleanType;
374
+ }>>, unknown, unknown>;
375
+ export declare const SignedValidatorRegistrationV1ListType: import("@chainsafe/ssz").ArrayType<Type<import("@chainsafe/ssz").ValueOfFields<{
376
+ message: ContainerType<{
377
+ feeRecipient: import("@lodestar/types/lib/utils/executionAddress.js").ExecutionAddressType;
378
+ gasLimit: import("@chainsafe/ssz").UintNumberType;
379
+ timestamp: import("@chainsafe/ssz").UintNumberType;
380
+ pubkey: import("@chainsafe/ssz").ByteVectorType;
381
+ }>;
382
+ signature: import("@chainsafe/ssz").ByteVectorType;
383
+ }>>, unknown, unknown>;
384
+ export type ValidatorIndices = ValueOf<typeof ValidatorIndicesType>;
385
+ export type AttesterDuty = ValueOf<typeof AttesterDutyType>;
386
+ export type AttesterDutyList = ValueOf<typeof AttesterDutyListType>;
387
+ export type ProposerDuty = ValueOf<typeof ProposerDutyType>;
388
+ export type ProposerDutyList = ValueOf<typeof ProposerDutyListType>;
389
+ export type SyncDuty = ValueOf<typeof SyncDutyType>;
390
+ export type SyncDutyList = ValueOf<typeof SyncDutyListType>;
391
+ export type SignedAggregateAndProofList = ValueOf<typeof SignedAggregateAndProofListType>;
392
+ export type SignedContributionAndProofList = ValueOf<typeof SignedContributionAndProofListType>;
393
+ export type BeaconCommitteeSubscription = ValueOf<typeof BeaconCommitteeSubscriptionType>;
394
+ export type BeaconCommitteeSubscriptionList = ValueOf<typeof BeaconCommitteeSubscriptionListType>;
395
+ export type SyncCommitteeSubscription = ValueOf<typeof SyncCommitteeSubscriptionType>;
396
+ export type SyncCommitteeSubscriptionList = ValueOf<typeof SyncCommitteeSubscriptionListType>;
397
+ export type ProposerPreparationData = ValueOf<typeof ProposerPreparationDataType>;
398
+ export type ProposerPreparationDataList = ValueOf<typeof ProposerPreparationDataListType>;
399
+ export type BeaconCommitteeSelection = ValueOf<typeof BeaconCommitteeSelectionType>;
400
+ export type BeaconCommitteeSelectionList = ValueOf<typeof BeaconCommitteeSelectionListType>;
401
+ export type SyncCommitteeSelection = ValueOf<typeof SyncCommitteeSelectionType>;
402
+ export type SyncCommitteeSelectionList = ValueOf<typeof SyncCommitteeSelectionListType>;
403
+ export type LivenessResponseData = ValueOf<typeof LivenessResponseDataType>;
404
+ export type LivenessResponseDataList = ValueOf<typeof LivenessResponseDataListType>;
405
+ export type SignedValidatorRegistrationV1List = ValueOf<typeof SignedValidatorRegistrationV1ListType>;
406
+ export type Endpoints = {
125
407
  /**
126
408
  * Get attester duties
127
409
  * Requests the beacon node to provide a set of attestation duties, which should be performed by validators, for a particular epoch.
@@ -130,18 +412,18 @@ export type Api = {
130
412
  * - event.current_duty_dependent_root when `compute_epoch_at_slot(event.slot) + 1 == epoch`
131
413
  * - event.block otherwise
132
414
  * The dependent_root value is `get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch - 1) - 1)` or the genesis block root in the case of underflow.
133
- * @param epoch Should only be allowed 1 epoch ahead
134
- * @param requestBody An array of the validator indices for which to obtain the duties.
135
- * @returns any Success response
136
- * @throws ApiError
137
415
  */
138
- getAttesterDuties(epoch: Epoch, validatorIndices: ValidatorIndex[]): Promise<ApiClientResponse<{
139
- [HttpStatusCode.OK]: {
140
- data: AttesterDuty[];
141
- executionOptimistic: ExecutionOptimistic;
142
- dependentRoot: RootHex;
416
+ getAttesterDuties: Endpoint<"POST", {
417
+ /** Should only be allowed 1 epoch ahead */
418
+ epoch: Epoch;
419
+ /** An array of the validator indices for which to obtain the duties */
420
+ indices: ValidatorIndices;
421
+ }, {
422
+ params: {
423
+ epoch: Epoch;
143
424
  };
144
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
425
+ body: unknown;
426
+ }, AttesterDutyList, ExecutionOptimisticAndDependentRootMeta>;
145
427
  /**
146
428
  * Get block proposers duties
147
429
  * Request beacon node to provide all validators that are scheduled to propose a block in the given epoch.
@@ -149,110 +431,164 @@ export type Api = {
149
431
  * - event.current_duty_dependent_root when `compute_epoch_at_slot(event.slot) == epoch`
150
432
  * - event.block otherwise
151
433
  * The dependent_root value is `get_block_root_at_slot(state, compute_start_slot_at_epoch(epoch) - 1)` or the genesis block root in the case of underflow.
152
- * @param epoch
153
- * @returns any Success response
154
- * @throws ApiError
155
434
  */
156
- getProposerDuties(epoch: Epoch): Promise<ApiClientResponse<{
157
- [HttpStatusCode.OK]: {
158
- data: ProposerDuty[];
159
- executionOptimistic: ExecutionOptimistic;
160
- dependentRoot: RootHex;
435
+ getProposerDuties: Endpoint<"GET", {
436
+ epoch: Epoch;
437
+ }, {
438
+ params: {
439
+ epoch: Epoch;
161
440
  };
162
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
163
- getSyncCommitteeDuties(epoch: number, validatorIndices: ValidatorIndex[]): Promise<ApiClientResponse<{
164
- [HttpStatusCode.OK]: {
165
- data: SyncDuty[];
166
- executionOptimistic: ExecutionOptimistic;
441
+ }, ProposerDutyList, ExecutionOptimisticAndDependentRootMeta>;
442
+ getSyncCommitteeDuties: Endpoint<"POST", {
443
+ epoch: number;
444
+ indices: ValidatorIndices;
445
+ }, {
446
+ params: {
447
+ epoch: Epoch;
167
448
  };
168
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
449
+ body: unknown;
450
+ }, SyncDutyList, ExecutionOptimisticMeta>;
169
451
  /**
170
452
  * Produce a new block, without signature.
171
453
  * Requests a beacon node to produce a valid block, which can then be signed by a validator.
172
- * @param slot The slot for which the block should be proposed.
173
- * @param randaoReveal The validator's randao reveal value.
174
- * @param graffiti Arbitrary data validator wants to include in block.
175
- * @returns any Success response
176
- * @throws ApiError
177
454
  */
178
- produceBlock(slot: Slot, randaoReveal: BLSSignature, graffiti: string): Promise<ApiClientResponse<{
179
- [HttpStatusCode.OK]: {
180
- data: allForks.BeaconBlock;
455
+ produceBlock: Endpoint<"GET", {
456
+ /** The slot for which the block should be proposed. */
457
+ slot: Slot;
458
+ /** The validator's randao reveal value */
459
+ randaoReveal: BLSSignature;
460
+ /** Arbitrary data validator wants to include in block */
461
+ graffiti: string;
462
+ }, {
463
+ params: {
464
+ slot: number;
465
+ };
466
+ query: {
467
+ randao_reveal: string;
468
+ graffiti: string;
181
469
  };
182
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
470
+ }, allForks.BeaconBlock, VersionMeta>;
183
471
  /**
184
472
  * Requests a beacon node to produce a valid block, which can then be signed by a validator.
185
473
  * Metadata in the response indicates the type of block produced, and the supported types of block
186
474
  * will be added to as forks progress.
187
- * @param slot The slot for which the block should be proposed.
188
- * @param randaoReveal The validator's randao reveal value.
189
- * @param graffiti Arbitrary data validator wants to include in block.
190
- * @returns any Success response
191
- * @throws ApiError
192
475
  */
193
- produceBlockV2(slot: Slot, randaoReveal: BLSSignature, graffiti: string): Promise<ApiClientResponse<{
194
- [HttpStatusCode.OK]: ProduceBlockOrContentsRes;
195
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
476
+ produceBlockV2: Endpoint<"GET", {
477
+ /** The slot for which the block should be proposed */
478
+ slot: Slot;
479
+ /** The validator's randao reveal value */
480
+ randaoReveal: BLSSignature;
481
+ /** Arbitrary data validator wants to include in block */
482
+ graffiti: string;
483
+ } & Omit<ExtraProduceBlockOpts, "blindedLocal">, {
484
+ params: {
485
+ slot: number;
486
+ };
487
+ query: {
488
+ randao_reveal: string;
489
+ graffiti: string;
490
+ fee_recipient?: string;
491
+ builder_selection?: string;
492
+ strict_fee_recipient_check?: boolean;
493
+ };
494
+ }, allForks.BeaconBlockOrContents, VersionMeta>;
196
495
  /**
197
496
  * Requests a beacon node to produce a valid block, which can then be signed by a validator.
198
497
  * Metadata in the response indicates the type of block produced, and the supported types of block
199
498
  * will be added to as forks progress.
200
- * @param slot The slot for which the block should be proposed.
201
- * @param randaoReveal The validator's randao reveal value.
202
- * @param graffiti Arbitrary data validator wants to include in block.
203
- * @returns any Success response
204
- * @throws ApiError
205
499
  */
206
- produceBlockV3(slot: Slot, randaoReveal: BLSSignature, graffiti: string, skipRandaoVerification?: boolean, opts?: ExtraProduceBlockOps): Promise<ApiClientResponse<{
207
- [HttpStatusCode.OK]: ProduceFullOrBlindedBlockOrContentsRes;
208
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
209
- produceBlindedBlock(slot: Slot, randaoReveal: BLSSignature, graffiti: string): Promise<ApiClientResponse<{
210
- [HttpStatusCode.OK]: ProduceBlindedBlockRes;
211
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
500
+ produceBlockV3: Endpoint<"GET", {
501
+ /** The slot for which the block should be proposed */
502
+ slot: Slot;
503
+ /** The validator's randao reveal value */
504
+ randaoReveal: BLSSignature;
505
+ /** Arbitrary data validator wants to include in block */
506
+ graffiti: string;
507
+ skipRandaoVerification?: boolean;
508
+ builderBoostFactor?: UintBn64;
509
+ } & ExtraProduceBlockOpts, {
510
+ params: {
511
+ slot: number;
512
+ };
513
+ query: {
514
+ randao_reveal: string;
515
+ graffiti: string;
516
+ skip_randao_verification?: string;
517
+ fee_recipient?: string;
518
+ builder_selection?: string;
519
+ builder_boost_factor?: string;
520
+ strict_fee_recipient_check?: boolean;
521
+ blinded_local?: boolean;
522
+ };
523
+ }, allForks.FullOrBlindedBeaconBlockOrContents, ProduceBlockV3Meta>;
524
+ produceBlindedBlock: Endpoint<"GET", {
525
+ slot: Slot;
526
+ randaoReveal: BLSSignature;
527
+ graffiti: string;
528
+ }, {
529
+ params: {
530
+ slot: number;
531
+ };
532
+ query: {
533
+ randao_reveal: string;
534
+ graffiti: string;
535
+ };
536
+ }, allForks.BlindedBeaconBlock, VersionMeta>;
212
537
  /**
213
538
  * Produce an attestation data
214
539
  * Requests that the beacon node produce an AttestationData.
215
- * @param slot The slot for which an attestation data should be created.
216
- * @param committeeIndex The committee index for which an attestation data should be created.
217
- * @returns any Success response
218
- * @throws ApiError
219
540
  */
220
- produceAttestationData(index: CommitteeIndex, slot: Slot): Promise<ApiClientResponse<{
221
- [HttpStatusCode.OK]: {
222
- data: phase0.AttestationData;
541
+ produceAttestationData: Endpoint<"GET", {
542
+ /** The committee index for which an attestation data should be created */
543
+ committeeIndex: CommitteeIndex;
544
+ /** The slot for which an attestation data should be created */
545
+ slot: Slot;
546
+ }, {
547
+ query: {
548
+ slot: number;
549
+ committee_index: number;
223
550
  };
224
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
225
- produceSyncCommitteeContribution(slot: Slot, subcommitteeIndex: number, beaconBlockRoot: Root): Promise<ApiClientResponse<{
226
- [HttpStatusCode.OK]: {
227
- data: altair.SyncCommitteeContribution;
551
+ }, phase0.AttestationData, EmptyMeta>;
552
+ produceSyncCommitteeContribution: Endpoint<"GET", {
553
+ slot: Slot;
554
+ subcommitteeIndex: number;
555
+ beaconBlockRoot: Root;
556
+ }, {
557
+ query: {
558
+ slot: number;
559
+ subcommittee_index: number;
560
+ beacon_block_root: string;
228
561
  };
229
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
562
+ }, altair.SyncCommitteeContribution, EmptyMeta>;
230
563
  /**
231
564
  * Get aggregated attestation
232
565
  * Aggregates all attestations matching given attestation data root and slot
233
- * @param attestationDataRoot HashTreeRoot of AttestationData that validator want's aggregated
234
- * @param slot
235
- * @returns any Returns aggregated `Attestation` object with same `AttestationData` root.
236
- * @throws ApiError
566
+ * Returns an aggregated `Attestation` object with same `AttestationData` root.
237
567
  */
238
- getAggregatedAttestation(attestationDataRoot: Root, slot: Slot): Promise<ApiClientResponse<{
239
- [HttpStatusCode.OK]: {
240
- data: phase0.Attestation;
568
+ getAggregatedAttestation: Endpoint<"GET", {
569
+ /** HashTreeRoot of AttestationData that validator want's aggregated */
570
+ attestationDataRoot: Root;
571
+ slot: Slot;
572
+ }, {
573
+ query: {
574
+ attestation_data_root: string;
575
+ slot: number;
241
576
  };
242
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.NOT_FOUND>>;
577
+ }, phase0.Attestation, EmptyMeta>;
243
578
  /**
244
579
  * Publish multiple aggregate and proofs
245
580
  * Verifies given aggregate and proofs and publishes them on appropriate gossipsub topic.
246
- * @param requestBody
247
- * @returns any Successful response
248
- * @throws ApiError
249
581
  */
250
- publishAggregateAndProofs(signedAggregateAndProofs: phase0.SignedAggregateAndProof[]): Promise<ApiClientResponse<{
251
- [HttpStatusCode.OK]: void;
252
- }, HttpStatusCode.BAD_REQUEST>>;
253
- publishContributionAndProofs(contributionAndProofs: altair.SignedContributionAndProof[]): Promise<ApiClientResponse<{
254
- [HttpStatusCode.OK]: void;
255
- }, HttpStatusCode.BAD_REQUEST>>;
582
+ publishAggregateAndProofs: Endpoint<"POST", {
583
+ signedAggregateAndProofs: SignedAggregateAndProofList;
584
+ }, {
585
+ body: unknown;
586
+ }, EmptyResponseData, EmptyMeta>;
587
+ publishContributionAndProofs: Endpoint<"POST", {
588
+ contributionAndProofs: SignedContributionAndProofList;
589
+ }, {
590
+ body: unknown;
591
+ }, EmptyResponseData, EmptyMeta>;
256
592
  /**
257
593
  * Signal beacon node to prepare for a committee subnet
258
594
  * After beacon node receives this request,
@@ -262,22 +598,25 @@ export type Api = {
262
598
  * - announce subnet topic subscription on gossipsub
263
599
  * - aggregate attestations received on that subnet
264
600
  *
265
- * @param requestBody
266
- * @returns any Slot signature is valid and beacon node has prepared the attestation subnet.
601
+ * Returns if slot signature is valid and beacon node has prepared the attestation subnet.
267
602
  *
268
- * Note that, we cannot be certain Beacon node will find peers for that subnet for various reasons,"
269
- *
270
- * @throws ApiError
603
+ * Note that we cannot be certain the Beacon node will find peers for that subnet for various reasons.
271
604
  */
272
- prepareBeaconCommitteeSubnet(subscriptions: BeaconCommitteeSubscription[]): Promise<ApiClientResponse<{
273
- [HttpStatusCode.OK]: void;
274
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
275
- prepareSyncCommitteeSubnets(subscriptions: SyncCommitteeSubscription[]): Promise<ApiClientResponse<{
276
- [HttpStatusCode.OK]: void;
277
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.SERVICE_UNAVAILABLE>>;
278
- prepareBeaconProposer(proposers: ProposerPreparationData[]): Promise<ApiClientResponse<{
279
- [HttpStatusCode.OK]: void;
280
- }, HttpStatusCode.BAD_REQUEST>>;
605
+ prepareBeaconCommitteeSubnet: Endpoint<"POST", {
606
+ subscriptions: BeaconCommitteeSubscriptionList;
607
+ }, {
608
+ body: unknown;
609
+ }, EmptyResponseData, EmptyMeta>;
610
+ prepareSyncCommitteeSubnets: Endpoint<"POST", {
611
+ subscriptions: SyncCommitteeSubscriptionList;
612
+ }, {
613
+ body: unknown;
614
+ }, EmptyResponseData, EmptyMeta>;
615
+ prepareBeaconProposer: Endpoint<"POST", {
616
+ proposers: ProposerPreparationDataList;
617
+ }, {
618
+ body: unknown;
619
+ }, EmptyResponseData, EmptyMeta>;
281
620
  /**
282
621
  * Determine if a distributed validator has been selected to aggregate attestations
283
622
  *
@@ -288,15 +627,14 @@ export type Api = {
288
627
  *
289
628
  * Note that this endpoint is not implemented by the beacon node and will return a 501 error
290
629
  *
291
- * @param requestBody An array of partial beacon committee selection proofs
292
- * @returns An array of threshold aggregated beacon committee selection proofs
293
- * @throws ApiError
630
+ * Returns an array of threshold aggregated beacon committee selection proofs
294
631
  */
295
- submitBeaconCommitteeSelections(selections: BeaconCommitteeSelection[]): Promise<ApiClientResponse<{
296
- [HttpStatusCode.OK]: {
297
- data: BeaconCommitteeSelection[];
298
- };
299
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.NOT_IMPLEMENTED | HttpStatusCode.SERVICE_UNAVAILABLE>>;
632
+ submitBeaconCommitteeSelections: Endpoint<"POST", {
633
+ /** An array of partial beacon committee selection proofs */
634
+ selections: BeaconCommitteeSelectionList;
635
+ }, {
636
+ body: unknown;
637
+ }, BeaconCommitteeSelectionList, EmptyMeta>;
300
638
  /**
301
639
  * Determine if a distributed validator has been selected to make a sync committee contribution
302
640
  *
@@ -307,140 +645,29 @@ export type Api = {
307
645
  *
308
646
  * Note that this endpoint is not implemented by the beacon node and will return a 501 error
309
647
  *
310
- * @param requestBody An array of partial sync committee selection proofs
311
- * @returns An array of threshold aggregated sync committee selection proofs
312
- * @throws ApiError
648
+ * Returns an array of threshold aggregated sync committee selection proofs
313
649
  */
314
- submitSyncCommitteeSelections(selections: SyncCommitteeSelection[]): Promise<ApiClientResponse<{
315
- [HttpStatusCode.OK]: {
316
- data: SyncCommitteeSelection[];
317
- };
318
- }, HttpStatusCode.BAD_REQUEST | HttpStatusCode.NOT_IMPLEMENTED | HttpStatusCode.SERVICE_UNAVAILABLE>>;
650
+ submitSyncCommitteeSelections: Endpoint<"POST", {
651
+ /** An array of partial sync committee selection proofs */
652
+ selections: SyncCommitteeSelectionList;
653
+ }, {
654
+ body: unknown;
655
+ }, SyncCommitteeSelectionList, EmptyMeta>;
319
656
  /** Returns validator indices that have been observed to be active on the network */
320
- getLiveness(epoch: Epoch, validatorIndices: ValidatorIndex[]): Promise<ApiClientResponse<{
321
- [HttpStatusCode.OK]: {
322
- data: LivenessResponseData[];
323
- };
324
- }, HttpStatusCode.BAD_REQUEST>>;
325
- registerValidator(registrations: bellatrix.SignedValidatorRegistrationV1[]): Promise<ApiClientResponse<{
326
- [HttpStatusCode.OK]: void;
327
- }, HttpStatusCode.BAD_REQUEST>>;
328
- };
329
- /**
330
- * Define javascript values for each route
331
- */
332
- export declare const routesData: RoutesData<Api>;
333
- export type ReqTypes = {
334
- getAttesterDuties: {
657
+ getLiveness: Endpoint<"POST", {
658
+ epoch: Epoch;
659
+ indices: ValidatorIndex[];
660
+ }, {
335
661
  params: {
336
662
  epoch: Epoch;
337
663
  };
338
- body: U64Str[];
339
- };
340
- getProposerDuties: {
341
- params: {
342
- epoch: Epoch;
343
- };
344
- };
345
- getSyncCommitteeDuties: {
346
- params: {
347
- epoch: Epoch;
348
- };
349
- body: U64Str[];
350
- };
351
- produceBlock: {
352
- params: {
353
- slot: number;
354
- };
355
- query: {
356
- randao_reveal: string;
357
- graffiti: string;
358
- };
359
- };
360
- produceBlockV2: {
361
- params: {
362
- slot: number;
363
- };
364
- query: {
365
- randao_reveal: string;
366
- graffiti: string;
367
- fee_recipient?: string;
368
- };
369
- };
370
- produceBlockV3: {
371
- params: {
372
- slot: number;
373
- };
374
- query: {
375
- randao_reveal: string;
376
- graffiti: string;
377
- skip_randao_verification?: string;
378
- fee_recipient?: string;
379
- builder_selection?: string;
380
- builder_boost_factor?: string;
381
- strict_fee_recipient_check?: boolean;
382
- blinded_local?: boolean;
383
- };
384
- };
385
- produceBlindedBlock: {
386
- params: {
387
- slot: number;
388
- };
389
- query: {
390
- randao_reveal: string;
391
- graffiti: string;
392
- };
393
- };
394
- produceAttestationData: {
395
- query: {
396
- slot: number;
397
- committee_index: number;
398
- };
399
- };
400
- produceSyncCommitteeContribution: {
401
- query: {
402
- slot: number;
403
- subcommittee_index: number;
404
- beacon_block_root: string;
405
- };
406
- };
407
- getAggregatedAttestation: {
408
- query: {
409
- attestation_data_root: string;
410
- slot: number;
411
- };
412
- };
413
- publishAggregateAndProofs: {
414
664
  body: unknown;
415
- };
416
- publishContributionAndProofs: {
417
- body: unknown;
418
- };
419
- prepareBeaconCommitteeSubnet: {
420
- body: unknown;
421
- };
422
- prepareSyncCommitteeSubnets: {
423
- body: unknown;
424
- };
425
- prepareBeaconProposer: {
426
- body: unknown;
427
- };
428
- submitBeaconCommitteeSelections: {
429
- body: unknown;
430
- };
431
- submitSyncCommitteeSelections: {
432
- body: unknown;
433
- };
434
- getLiveness: {
435
- params: {
436
- epoch: Epoch;
437
- };
438
- body: U64Str[];
439
- };
440
- registerValidator: {
665
+ }, LivenessResponseDataList, EmptyMeta>;
666
+ registerValidator: Endpoint<"POST", {
667
+ registrations: SignedValidatorRegistrationV1List;
668
+ }, {
441
669
  body: unknown;
442
- };
670
+ }, EmptyResponseData, EmptyMeta>;
443
671
  };
444
- export declare function getReqSerializers(): ReqSerializers<Api, ReqTypes>;
445
- export declare function getReturnTypes(): ReturnTypes<Api>;
672
+ export declare function getDefinitions(_config: ChainForkConfig): RouteDefinitions<Endpoints>;
446
673
  //# sourceMappingURL=validator.d.ts.map