import { Observable } from 'rxjs';
import { ConnectionStrategy, FilledRxNostrConfig } from '../config/index.js';
import { ConnectionState, ConnectionStatePacket, ErrorPacket, EventPacket, LazyREQ, MessagePacket, OkPacketAgainstEvent, OutgoingMessagePacket } from '../packet.js';
import { FinPacket } from './subscribe.js';
import * as Nostr from "nostr-typedef";
export interface SubscribeOptions {
    overwrite: boolean;
    autoclose: boolean;
    mode: REQMode;
}
/**
 * - `"default"`: Subscriptions are active only while the relay is marked as a default relay.
 * - `"temporary"`: Subscriptions are always active.
 */
export type REQMode = "default" | "temporary";
export declare class NostrConnection {
    private relay;
    private pubProxy;
    private subProxy;
    private defaultSubscriptionIds;
    private communicating;
    private strategy;
    private disconnectTimeout;
    private disconnectTimer?;
    private isDefaultRelay;
    private disposed;
    private _url;
    get url(): string;
    constructor(url: string, config: FilledRxNostrConfig);
    setConnectionStrategy(strategy: ConnectionStrategy): void;
    private resetConnection;
    markAsDefault(flag: boolean): void;
    publish(event: Nostr.Event<number>): Promise<void>;
    confirmOK(eventId: string): void;
    subscribe(req: LazyREQ, options?: Partial<SubscribeOptions>): void;
    unsubscribe(subId: string): void;
    getEventObservable(): Observable<EventPacket>;
    getFinObservable(): Observable<FinPacket>;
    getOkAgainstEventObservable(): Observable<OkPacketAgainstEvent>;
    getAllMessageObservable(): Observable<MessagePacket>;
    getOutgoingMessageObservable(): Observable<OutgoingMessagePacket>;
    getConnectionStateObservable(): Observable<ConnectionStatePacket>;
    get connectionState(): ConnectionState;
    getErrorObservable(): Observable<ErrorPacket>;
    connectManually(): void;
    dispose(): void;
    [Symbol.dispose](): void;
}
//# sourceMappingURL=connection.d.ts.map