/** * Firebase Data Connect * * @packageDocumentation */ import { FirebaseApp } from '@firebase/app'; import { AppCheckInternalComponentName } from '@firebase/app-check-interop-types'; import { FirebaseAuthInternalName } from '@firebase/auth-interop-types'; import { Provider } from '@firebase/component'; import { LogLevelString } from '@firebase/logger'; import { FirebaseError } from '@firebase/util'; export declare interface CancellableOperation extends PromiseLike<{ data: T; }> { cancel: () => void; } /** * Connect to the DataConnect Emulator * @param dc Data Connect instance * @param host host of emulator server * @param port port of emulator server * @param sslEnabled use https */ export declare function connectDataConnectEmulator(dc: DataConnect, host: string, port?: number, sslEnabled?: boolean): void; /** * Connector Config for calling Data Connect backend. */ export declare interface ConnectorConfig { location: string; connector: string; service: string; } /** * Class representing Firebase Data Connect */ export declare class DataConnect { readonly app: FirebaseApp; private readonly dataConnectOptions; isEmulator: boolean; constructor(app: FirebaseApp, dataConnectOptions: DataConnectOptions, _authProvider: Provider, _appCheckProvider: Provider); getSettings(): ConnectorConfig; setInitialized(): void; enableEmulator(transportOptions: TransportOptions): void; } /** * DataConnectOptions including project id */ export declare interface DataConnectOptions extends ConnectorConfig { projectId: string; } export declare interface DataConnectResult extends OpResult { ref: OperationRef; } /** * Representation of user provided subscription options. */ export declare interface DataConnectSubscription { userCallback: OnResultSubscription; errCallback?: (e?: FirebaseError) => void; unsubscribe: () => void; } /* Excluded from this release type: DataConnectTransport */ export declare type DataSource = typeof SOURCE_CACHE | typeof SOURCE_SERVER; /** * Execute Mutation * @param mutationRef mutation to execute * @returns `MutationRef` */ export declare function executeMutation(mutationRef: MutationRef): MutationPromise; /** * Execute Query * @param queryRef query to execute. * @returns `QueryPromise` */ export declare function executeQuery(queryRef: QueryRef): QueryPromise; /** * Initialize DataConnect instance * @param options ConnectorConfig */ export declare function getDataConnect(options: ConnectorConfig): DataConnect; /** * Initialize DataConnect instance * @param app FirebaseApp to initialize to. * @param options ConnectorConfig */ export declare function getDataConnect(app: FirebaseApp, options: ConnectorConfig): DataConnect; export declare const MUTATION_STR = "mutation"; /* Excluded from this release type: MutationManager */ /** * Mutation return value from `executeMutation` */ export declare interface MutationPromise extends PromiseLike> { } export declare interface MutationRef extends OperationRef { refType: typeof MUTATION_STR; } /** * Creates a `MutationRef` * @param dcInstance Data Connect instance * @param mutationName name of mutation */ export declare function mutationRef(dcInstance: DataConnect, mutationName: string): MutationRef; /** * * @param dcInstance Data Connect instance * @param mutationName name of mutation * @param variables variables to send with mutation */ export declare function mutationRef(dcInstance: DataConnect, mutationName: string, variables: Variables): MutationRef; /** * Mutation Result from `executeMutation` */ export declare interface MutationResult extends DataConnectResult { ref: MutationRef; } /** * `OnCompleteSubscription` */ export declare type OnCompleteSubscription = () => void; /** * Signature for `OnErrorSubscription` for `subscribe` */ export declare type OnErrorSubscription = (err?: FirebaseError) => void; /** * Signature for `OnResultSubscription` for `subscribe` */ export declare type OnResultSubscription = (res: QueryResult) => void; export declare interface OperationRef<_Data, Variables> { name: string; variables: Variables; refType: ReferenceType; dataConnect: DataConnect; } export declare interface OpResult { data: Data; source: DataSource; fetchTime: string; } /* Excluded from this release type: parseOptions */ export declare const QUERY_STR = "query"; /** * Promise returned from `executeQuery` */ export declare interface QueryPromise extends PromiseLike> { } /** * QueryRef object */ export declare interface QueryRef extends OperationRef { refType: typeof QUERY_STR; } /** * Execute Query * @param dcInstance Data Connect instance to use. * @param queryName Query to execute * @returns `QueryRef` */ export declare function queryRef(dcInstance: DataConnect, queryName: string): QueryRef; /** * Execute Query * @param dcInstance Data Connect instance to use. * @param queryName Query to execute * @param variables Variables to execute with * @returns `QueryRef` */ export declare function queryRef(dcInstance: DataConnect, queryName: string, variables: Variables): QueryRef; /** * Result of `executeQuery` */ export declare interface QueryResult extends DataConnectResult { ref: QueryRef; toJSON: () => SerializedRef; } /** * Signature for unsubscribe from `subscribe` */ export declare type QueryUnsubscribe = () => void; export declare type ReferenceType = typeof QUERY_STR | typeof MUTATION_STR; /** * Serialized RefInfo as a result of `QueryResult.toJSON().refInfo` */ export declare interface RefInfo { name: string; variables: Variables; connectorConfig: DataConnectOptions; } /** * Serialized Ref as a result of `QueryResult.toJSON()` */ export declare interface SerializedRef extends OpResult { refInfo: RefInfo; } export declare function setLogLevel(logLevel: LogLevelString): void; export declare const SOURCE_CACHE = "CACHE"; export declare const SOURCE_SERVER = "SERVER"; /** * Subscribe to a `QueryRef` * @param queryRefOrSerializedResult query ref or serialized result. * @param observer observer object to use for subscribing. * @returns `SubscriptionOptions` */ export declare function subscribe(queryRefOrSerializedResult: QueryRef | SerializedRef, observer: SubscriptionOptions): QueryUnsubscribe; /** * Subscribe to a `QueryRef` * @param queryRefOrSerializedResult query ref or serialized result. * @param onNext Callback to call when result comes back. * @param onError Callback to call when error gets thrown. * @param onComplete Called when subscription completes. * @returns `SubscriptionOptions` */ export declare function subscribe(queryRefOrSerializedResult: QueryRef | SerializedRef, onNext: OnResultSubscription, onError?: OnErrorSubscription, onComplete?: OnCompleteSubscription): QueryUnsubscribe; /** * Representation of full observer options in `subscribe` */ export declare interface SubscriptionOptions { onNext?: OnResultSubscription; onErr?: OnErrorSubscription; onComplete?: OnCompleteSubscription; } /** * Delete DataConnect instance * @param dataConnect DataConnect instance * @returns */ export declare function terminate(dataConnect: DataConnect): Promise; /** * Converts serialized ref to query ref * @param serializedRef ref to convert to `QueryRef` * @returns `QueryRef` */ export declare function toQueryRef(serializedRef: SerializedRef): QueryRef; /* Excluded from this release type: TransportClass */ /** * Options to connect to emulator */ export declare interface TransportOptions { host: string; sslEnabled?: boolean; port?: number; } /* Excluded from this release type: validateArgs */ /* Excluded from this release type: validateDCOptions */ export {};