import { IPersistable, IPersistence } from '@darlean/base';
import type { IPersistenceService } from '@darlean/persistence-suite';
import { IDeSer } from './infra/deser';
/**
 * Implementation of {@link IPersistence} that uses a distributed persistence service (like the one defined
 * in {@link @darlean/fs-persistence-suite}) to provide persistency.
 */
export declare class DistributedPersistence<T> implements IPersistence<T> {
    private service;
    private deser;
    private specifiers;
    constructor(service: IPersistenceService, deser: IDeSer, specifiers?: string[]);
    persistable(partitionKey: string[] | undefined, sortKey: string[] | undefined, value: T | undefined): IPersistable<T>;
    load(partitionKey?: string[], sortKey?: string[] | undefined): Promise<IPersistable<T>>;
    loadImpl(partitionKey?: string[], sortKey?: string[] | undefined): Promise<[value: T | undefined, version: string | undefined]>;
    storeImpl(partitionKey: string[] | undefined, sortKey: string[] | undefined, value: T | undefined, version: string | undefined): Promise<void>;
    sub(partitionKey?: string[] | undefined, sortKey?: string[] | undefined): IPersistence<T>;
}
