export declare class EpochStorageError extends Error {
    constructor(message: string);
}
export declare class EpochDoesNotExistError extends EpochStorageError {
    constructor(epochSequenceId: string);
}
export declare class EpochAlreadyExistError extends EpochStorageError {
    constructor(epochSequenceId: string);
}
export declare class OmittedEpochError extends EpochStorageError {
    constructor(expectedOlderEpochSequenceId: string, expectedNewerEpochSequenceId: string, actualEpochSequenceId: string);
}
export declare class NoEpochExistsInEpochStorageError extends EpochStorageError {
    constructor();
}
export declare class NegativeEpochSequenceIdError extends EpochStorageError {
    constructor();
}
export type EpochSerialized = {
    id: string;
    sequenceId: string;
    rootKey: string;
};
export type Epoch = {
    id: string;
    sequenceId: string;
    rootKey: Uint8Array;
};
export type EpochWithoutId = {
    sequenceId: string;
    rootKey: Uint8Array;
};
export type EpochStorageSerialized = {
    newestEpochSequenceId: string | null;
    oldestEpochSequenceId: string | null;
    sequenceIdToEpoch: {
        [sequenceId: string]: EpochSerialized;
    };
};
export declare class EpochStorage {
    private newestEpochSequenceId;
    private oldestEpochSequenceId;
    private readonly sequenceIdToEpoch;
    private constructor();
    static deserialize(epochStorageSerialized: EpochStorageSerialized): EpochStorage;
    serialize(): EpochStorageSerialized;
    static createEmpty(): EpochStorage;
    getEpoch(sequenceId: string): Epoch;
    isEpochPresent(sequenceId: string): boolean;
    getOldestEpoch(): Epoch;
    getNewestEpoch(): Epoch;
    add(epochToAdd: Epoch): void;
}
//# sourceMappingURL=EpochStorage.d.ts.map