export declare type WithWildcards = T & { [key: string]: unknown; }; export declare type BlockMeta = WithWildcards<{ previous?: Block; }>; export declare type BlockData = WithWildcards<{}>; export declare type History = Block[]; export interface Block { key: number; type: string; meta: BlockMeta; data: BlockData; } export interface BlockManager { add(data: BlockData, meta?: BlockMeta): Promise; setAll(blocks: Block[]): Promise; getAll(): Promise; get(key: number): Promise; remove(key: number): Promise; update(key: number, data: BlockData, meta?: BlockMeta): Promise; removeAll(): Promise; } export declare function createBlock(type: string, meta: BlockMeta, data: BlockData, key?: number): Block; export declare function blockManager(callback?: (history?: History) => void): { getAll: () => History; setAll: (blocks: Block[]) => void; get: (key: number) => Block; add: (block: Block) => number; update: (key: number, block: Block) => void; remove: (key: number) => void; clear: () => void; };