/// <reference types="node" />
import { Schema } from '@liskhq/lisk-codec';
import { IterateOptions } from '@liskhq/lisk-db';
import { ImmutableSubStore, SubStore } from '../state_machine/types';
export interface ImmutableOffchainStoreGetter {
    getOffchainStore: (moduleID: Buffer, storePrefix: Buffer) => ImmutableSubStore;
}
export interface OffchainStoreGetter {
    getOffchainStore: (moduleID: Buffer, storePrefix: Buffer) => SubStore;
}
export declare abstract class BaseOffchainStore<T> {
    private readonly _version;
    private readonly _storePrefix;
    private readonly _subStorePrefix;
    abstract schema: Schema;
    get key(): Buffer;
    get name(): string;
    constructor(moduleName: string, version?: number);
    get(ctx: ImmutableOffchainStoreGetter, key: Buffer): Promise<T>;
    has(ctx: ImmutableOffchainStoreGetter, key: Buffer): Promise<boolean>;
    iterate(ctx: ImmutableOffchainStoreGetter, options: IterateOptions): Promise<{
        key: Buffer;
        value: T;
    }[]>;
    set(ctx: OffchainStoreGetter, key: Buffer, value: T): Promise<void>;
    del(ctx: OffchainStoreGetter, key: Buffer): Promise<void>;
}
