import type { ApolloClient, ApolloError, FetchResult, Observable, OperationVariables, SubscriptionOptions, TypedDocumentNode } from '@apollo/client/core/index.js'; import type { DocumentNode } from 'graphql'; import type { Ref } from 'vue-demi'; import type { ReactiveFunction } from './util/ReactiveFunction'; export interface UseSubscriptionOptions extends Omit, 'query' | 'variables'> { clientId?: string; enabled?: boolean | Ref; throttle?: number; debounce?: number; } type DocumentParameter = DocumentNode | Ref | ReactiveFunction | TypedDocumentNode | Ref> | ReactiveFunction>; type VariablesParameter = TVariables | Ref | ReactiveFunction; type OptionsParameter = UseSubscriptionOptions | Ref> | ReactiveFunction>; export interface OnResultContext { client: ApolloClient; } export interface OnErrorContext { client: ApolloClient; } export interface UseSubscriptionReturn { result: Ref; loading: Ref; error: Ref; start: () => void; stop: () => void; restart: () => void; document: Ref; variables: Ref; options: UseSubscriptionOptions | Ref>; subscription: Ref, Record>> | null>; onResult: (fn: (param: FetchResult, Record>, context: OnResultContext) => void) => { off: () => void; }; onError: (fn: (param: ApolloError, context: OnErrorContext) => void) => { off: () => void; }; } /** * Use a subscription that does not require variables or options. */ export declare function useSubscription(document: DocumentParameter): UseSubscriptionReturn; /** * Use a subscription that requires options but not variables. */ export declare function useSubscription(document: DocumentParameter, variables: undefined | null, options: OptionsParameter): UseSubscriptionReturn; /** * Use a subscription that requires variables. */ export declare function useSubscription(document: DocumentParameter, variables: VariablesParameter): UseSubscriptionReturn; /** * Use a subscription that has optional variables. */ export declare function useSubscription(document: DocumentParameter): UseSubscriptionReturn; /** * Use a subscription that requires variables and options. */ export declare function useSubscription(document: DocumentParameter, variables: VariablesParameter, options: OptionsParameter): UseSubscriptionReturn; export {};