import { Slot, Root, Genesis, Fork, FinalityCheckpoints, Validator, ValidatorResponse, ValidatorBalance, Epoch, BeaconCommitteeResponse, SignedBeaconHeaderResponse, Attestation, CommitteeIndex, IndexedAttestation, ProposerSlashing, SignedVoluntaryExit } from '@chainsafe/lodestar-types' export type StateId = 'head' | 'genesis' | 'finalized' | 'justified' | Slot | Root export type BlockId = 'head' | 'genesis' | 'finalized' | Slot | Root export interface ETH2BeaconChain { getGenesis(): Promise getHashRoot(params: {stateId: StateId}): Promise<{ root: Root }> getForkData(params: {stateId: StateId}): Promise getFinalityCheckpoint(params: {stateId: StateId}): Promise getValidators(params: {stateId: StateId}): Promise getValidatorById(params: {stateId: StateId, validatorId: string}): Promise getValidatorBalances(params: {stateId: StateId}): Promise getEpochCommittees(params: {stateId: StateId, epoch: Epoch}): Promise getBlockHeaders(): Promise getBlockHeader(params: {blockId: BlockId}): Promise publishSignedBlock(): Promise getBlock(params: {blockId: BlockId}): Promise getBlockRoot(params: {blockId: BlockId}): Promise getBlockAttestations(params: {blockId: BlockId}): Promise getAttestationsFromPool(params: {slot: Slot, committee_index: CommitteeIndex}): Promise submitAttestation(): Promise getAttesterSlashings(): Promise<{ [index: string]: IndexedAttestation }> submitAttesterSlashings(): Promise getProposerSlashings(): Promise submitProposerSlashings(): Promise getSignedVoluntaryExits(): Promise submitVoluntaryExit(): Promise }