import type { AbstractLevel } from 'abstract-level';
import type { BearerIdentity } from './bearer-identity.js';
import type { DidResolverCache } from '@enbox/dids';
import type { EnboxPlatformAgent } from './types/agent.js';
import type { KeyValueStore } from '@enbox/common';
import type { Dwn, EventLog } from '@enbox/dwn-sdk-js';
import { DataStoreLevel, MessageStoreLevel, ResumableTaskStoreLevel } from '@enbox/dwn-sdk-js';
import { LocalKeyManager } from './local-key-manager.js';
import { DwnDidStore } from './store-did.js';
import { DwnIdentityStore } from './store-identity.js';
import { DwnKeyStore } from './store-key.js';
type PlatformAgentTestHarnessParams = {
    agent: EnboxPlatformAgent<LocalKeyManager>;
    agentStores: 'dwn' | 'memory';
    didResolverCache: DidResolverCache;
    dwn: Dwn;
    dwnDataStore: DataStoreLevel;
    dwnEventLog: EventLog;
    dwnMessageStore: MessageStoreLevel;
    dwnResumableTaskStore: ResumableTaskStoreLevel;
    /** Backing KeyValueStore for VaultBackedSecretStore (disk mode only). */
    secretStore?: KeyValueStore<string, string>;
    syncStore: AbstractLevel<string | Buffer | Uint8Array>;
    vaultStore: KeyValueStore<string, string>;
    dwnStores: {
        keyStore: DwnKeyStore;
        identityStore: DwnIdentityStore;
        didStore: DwnDidStore;
        clear: () => void;
    };
};
export declare class PlatformAgentTestHarness {
    agent: EnboxPlatformAgent<LocalKeyManager>;
    agentStores: 'dwn' | 'memory';
    didResolverCache: DidResolverCache;
    dwn: Dwn;
    dwnDataStore: DataStoreLevel;
    dwnEventLog: EventLog;
    dwnMessageStore: MessageStoreLevel;
    dwnResumableTaskStore: ResumableTaskStoreLevel;
    secretStore?: KeyValueStore<string, string>;
    syncStore: AbstractLevel<string | Buffer | Uint8Array>;
    vaultStore: KeyValueStore<string, string>;
    /**
     * Custom DWN Stores for `keyStore`, `identityStore` and `didStore`.
     * This allows us to clear the store cache between tests
     */
    dwnStores: {
        keyStore: DwnKeyStore;
        identityStore: DwnIdentityStore;
        didStore: DwnDidStore;
        /** clears the protocol initialization caches */
        clear: () => void;
    };
    constructor(params: PlatformAgentTestHarnessParams);
    clearStorage(): Promise<void>;
    /**
     * Clear only DWN-level stores (data, messages, resumable tasks, sync,
     * permissions) and the DWN-backed store caches — but preserve the
     * agent DID, vault, and all key/DID/identity material.
     *
     * Use this in `beforeEach` when `createAgentDid()` (and optionally
     * `createIdentity()`) was called once in `beforeAll` to avoid expensive
     * DID re-creation on every test.
     */
    clearDwnStores(): Promise<void>;
    closeStorage(): Promise<void>;
    private clearSyncStore;
    private resetDwnEventLog;
    createAgentDid(): Promise<void>;
    createIdentity({ name, testDwnUrls }: {
        name: string;
        testDwnUrls: string[];
    }): Promise<BearerIdentity>;
    static setup({ agentClass, agentStores, testDataLocation }: {
        agentClass: new (params: any) => EnboxPlatformAgent<LocalKeyManager>;
        agentStores?: 'dwn' | 'memory';
        testDataLocation?: string;
    }): Promise<PlatformAgentTestHarness>;
    private static useDiskStores;
    private static useMemoryStores;
}
export {};
//# sourceMappingURL=test-harness.d.ts.map