import type { ClientOptions } from 'ws';
import { IdResolver } from '@atproto/identity';
import { AccountEvt, CommitEvt, Event, IdentityEvt, SyncEvt } from '../events';
import { EventRunner } from '../runner';
import { type Account, type Commit, type Identity, type RepoEvent, type Sync } from './lexicons';
export type FirehoseOptions = ClientOptions & {
    idResolver: IdResolver;
    handleEvent: (evt: Event) => Awaited<void>;
    onError: (err: Error) => void;
    getCursor?: () => Awaited<number | undefined>;
    runner?: EventRunner;
    service?: string;
    subscriptionReconnectDelay?: number;
    unauthenticatedCommits?: boolean;
    unauthenticatedHandles?: boolean;
    filterCollections?: string[];
    excludeIdentity?: boolean;
    excludeAccount?: boolean;
    excludeCommit?: boolean;
    excludeSync?: boolean;
};
export declare class Firehose {
    opts: FirehoseOptions;
    private sub;
    private abortController;
    private destoryDefer;
    constructor(opts: FirehoseOptions);
    start(): any;
    private parseEvt;
    private processEvt;
    destroy(): Promise<void>;
}
export declare const parseCommitAuthenticated: (idResolver: IdResolver, evt: Commit, filterCollections?: string[], forceKeyRefresh?: boolean) => Promise<CommitEvt[]>;
export declare const parseCommitUnauthenticated: (evt: Commit, filterCollections?: string[]) => Promise<CommitEvt[]>;
export declare const parseSync: (evt: Sync) => Promise<SyncEvt | null>;
export declare const parseIdentity: (idResolver: IdResolver, evt: Identity, unauthenticated?: boolean) => Promise<IdentityEvt | null>;
export declare const parseAccount: (evt: Account) => AccountEvt | undefined;
export declare class FirehoseValidationError extends Error {
    value: unknown;
    constructor(err: unknown, value: unknown);
}
export declare class FirehoseParseError extends Error {
    event: RepoEvent;
    constructor(err: unknown, event: RepoEvent);
}
export declare class FirehoseSubscriptionError extends Error {
    constructor(err: unknown);
}
export declare class FirehoseHandlerError extends Error {
    event: Event;
    constructor(err: unknown, event: Event);
}
//# sourceMappingURL=index.d.ts.map