/**
 * Listen to real-time Scope oracle price changes via WebSocket.
 *
 * One reconnect loop per address — NOT N TCP connections, since
 * `@solana/kit`'s RpcSubscriptions multiplexes every `.subscribe()` over a
 * single shared WebSocket.
 */
import { type Address, type Commitment, type RpcSubscriptions, type Slot, type SolanaRpcSubscriptionsApi } from '@solana/kit';
import { OraclePrices } from '@kamino-finance/scope-sdk/dist/@codegen/scope/accounts/OraclePrices';
import { type SubscriptionHandle } from './subscriptionHandle';
import type { WsCadenceOptions } from './wsCadenceOptions';
import type { WsListenerObservability } from './wsListenerObservability';
export interface OraclePriceChangeEvent {
    address: Address;
    oraclePrices: OraclePrices;
    slot: Slot;
}
export type OraclePriceChangeCallback = (event: OraclePriceChangeEvent) => void;
export interface OracleListenerParams extends WsListenerObservability, WsCadenceOptions {
    wsRpc: RpcSubscriptions<SolanaRpcSubscriptionsApi>;
    oracleAddresses: Address[];
    onChange: OraclePriceChangeCallback;
    /** Defaults to 'confirmed'. */
    commitment?: Commitment;
}
/**
 * `onBeforeReconnect` fires once per address. Scope normally stores all
 * prices in a single OraclePrices account so the array is usually length 1
 * — but if you subscribe to several, dedupe at the consumer.
 */
export declare function listenToOraclePriceChanges(params: OracleListenerParams): SubscriptionHandle;
//# sourceMappingURL=oracleListener.d.ts.map