import { SdkTransport, Subscription, SubscriptionTopic } from "@onflow/typedefs"; import { SubscribeParams } from "./types"; import { SdkContext } from "../../context/context"; export declare function createSubscribeAsync(contextPromise: Promise | SdkContext): ({ topic, args, onData, onError }: SubscribeParams, opts?: { node?: string; transport?: SdkTransport; }) => Subscription; export declare function createSubscribe(context: SdkContext): ({ topic, args, onData, onError }: SubscribeParams, opts?: { node?: string; transport?: SdkTransport; }) => Subscription; /** * Subscribe to real-time data from the Flow blockchain and automatically decode the responses. * * This is a utility function used for subscribing to real-time data from the WebSocket Streaming API. Data returned will be automatically decoded via the 'decode' function. * * Available topics include: `events`, `blocks`, `block_headers`, `block_digests`, `transaction_statuses`, `account_statuses`. * * @param params The parameters for the subscription including topic, arguments, and callbacks * @param params.topic The subscription topic (e.g., 'events', 'blocks', 'transaction_statuses') * @param params.args Parameters specific to the topic (e.g., event types, block height, transaction ID) * @param params.onData Callback function called with decoded data when new messages are received * @param params.onError Callback function called if an error occurs during the subscription * @param opts Additional options for the subscription * @param opts.node Custom node endpoint to be used for the subscription * @param opts.transport Custom transport implementation for handling the connection * @returns A subscription object that allows you to manage the subscription (e.g., to unsubscribe later) * * @example * import * as fcl from "@onflow/fcl"; * import { SubscriptionTopic } from "@onflow/sdk"; * * // Subscribe to events * const subscription = fcl.subscribe({ * topic: SubscriptionTopic.EVENTS, * args: { * eventTypes: ["A.7e60df042a9c0868.FlowToken.TokensWithdrawn"] * }, * onData: (events) => { * console.log("Received events:", events); * }, * onError: (error) => { * console.error("Subscription error:", error); * } * }); * * // Subscribe to blocks * const blockSubscription = fcl.subscribe({ * topic: SubscriptionTopic.BLOCKS, * args: { * blockStatus: "finalized" * }, * onData: (block) => { * console.log("New block:", block); * }, * onError: (error) => { * console.error("Block subscription error:", error); * } * }); * * // Later, to unsubscribe: * subscription.unsubscribe(); * blockSubscription.unsubscribe(); */ export declare function subscribe({ topic, args, onData, onError }: SubscribeParams, opts?: { node?: string; transport?: SdkTransport; }): Subscription;