/**
 * Composes {@link runReconnectLoop} + {@link createBufferedDispatcher} +
 * {@link makeSubscriptionHandle} for single-source listeners (slot, native SOL).
 *
 * Multi-source listeners (oracle, fan-out per address) compose these
 * primitives directly — they share one dispatcher across multiple loops,
 * which is outside this helper's single-source shape.
 */
import { type RpcSubscriptions, type SolanaRpcSubscriptionsApi } from '@solana/kit';
import { type SubscriptionHandle } from './subscriptionHandle';
import type { WsCadenceOptions } from './wsCadenceOptions';
import type { WsListenerObservability } from './wsListenerObservability';
export interface StandaloneSubscriptionOptions<TEvent, TMessage> extends WsListenerObservability, WsCadenceOptions {
    wsRpc: RpcSubscriptions<SolanaRpcSubscriptionsApi>;
    /** Omit for single-slot (latest-wins). Pass for per-key buckets. */
    keyOf?: (event: TEvent) => unknown;
    subscribe: (wsRpc: RpcSubscriptions<SolanaRpcSubscriptionsApi>, abortSignal: AbortSignal) => Promise<AsyncIterable<TMessage>>;
    toEvent: (message: TMessage) => TEvent;
    onChange: (event: TEvent) => void;
    /** Prefix for the default `console.error` fallback (e.g. `'[listenToSlotChanges]'`). */
    errorPrefix: string;
    /** Function name used in validation error messages (e.g. `'listenToSlotChanges'`). */
    callSiteName: string;
}
export declare function createStandaloneSubscription<TEvent, TMessage>(opts: StandaloneSubscriptionOptions<TEvent, TMessage>): SubscriptionHandle;
//# sourceMappingURL=createStandaloneSubscription.d.ts.map