/**
 * Composes {@link makeWsErrorReporter} + decode-then-fire +
 * {@link AccountSubscriptionManager.subscribeProgramAccounts} for token /
 * reserve / obligation listeners.
 */
import type { Address, Commitment, Slot } from '@solana/kit';
import { type AccountSubscriptionManager, type ProgramFilter } from './accountSubscriptionManager';
import type { SubscriptionHandle } from './subscriptionHandle';
import type { WsCadenceOptions } from './wsCadenceOptions';
export interface ManagerSubscriptionOptions<TEvent> extends WsCadenceOptions {
    manager: AccountSubscriptionManager;
    programId: Address;
    filters: readonly ProgramFilter[];
    commitment?: Commitment;
    onReconnect?: () => void | Promise<void>;
    /** Return `undefined` to skip a notification (e.g. fail-soft on unknown discriminator). */
    decode: (address: Address, buffer: Uint8Array, slot: Slot) => TEvent | undefined;
    onChange: (event: TEvent) => void;
    onError?: (error: unknown) => void;
    /** Prefix for the default `console.error` fallback (e.g. `'[listenToReserveChanges]'`). */
    errorPrefix: string;
}
export declare function createManagerSubscription<TEvent>(opts: ManagerSubscriptionOptions<TEvent>): SubscriptionHandle;
//# sourceMappingURL=createManagerSubscription.d.ts.map