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

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