import * as DiscoveryServices from '@bsv/overlay-discovery-services';
import { BanService } from './BanService.js';
type SHIPStorage = InstanceType<typeof DiscoveryServices.SHIPStorage>;
type SLAPStorage = InstanceType<typeof DiscoveryServices.SLAPStorage>;
/**
 * Prevents banned SHIP records from being written to discovery storage.
 */
export declare class BanAwareSHIPStorage {
    private readonly wrapped;
    private readonly banService;
    private readonly logger;
    constructor(wrapped: SHIPStorage, banService: BanService, logger?: typeof console);
    ensureIndexes(): Promise<void>;
    hasDuplicateRecord(identityKey: string, domain: string, topic: string): Promise<boolean>;
    storeSHIPRecord(txid: string, outputIndex: number, identityKey: string, domain: string, topic: string): Promise<void>;
    deleteSHIPRecord(txid: string, outputIndex: number): Promise<void>;
    findRecord(...args: Parameters<SHIPStorage['findRecord']>): ReturnType<SHIPStorage['findRecord']>;
    findAll(...args: Parameters<SHIPStorage['findAll']>): ReturnType<SHIPStorage['findAll']>;
}
/**
 * Prevents banned SLAP records from being written to discovery storage.
 */
export declare class BanAwareSLAPStorage {
    private readonly wrapped;
    private readonly banService;
    private readonly logger;
    constructor(wrapped: SLAPStorage, banService: BanService, logger?: typeof console);
    ensureIndexes(): Promise<void>;
    hasDuplicateRecord(identityKey: string, domain: string, service: string): Promise<boolean>;
    storeSLAPRecord(txid: string, outputIndex: number, identityKey: string, domain: string, service: string): Promise<void>;
    deleteSLAPRecord(txid: string, outputIndex: number): Promise<void>;
    findRecord(...args: Parameters<SLAPStorage['findRecord']>): ReturnType<SLAPStorage['findRecord']>;
    findAll(...args: Parameters<SLAPStorage['findAll']>): ReturnType<SLAPStorage['findAll']>;
}
export {};
//# sourceMappingURL=BanAwareDiscoveryStorage.d.ts.map