import * as i0 from '@angular/core';
import { InjectionToken, NgZone } from '@angular/core';
import { ɵAngularFireSchedulers as _AngularFireSchedulers } from '@angular/fire';
import { AppCheckInstances } from '@angular/fire/app-check';
import { ɵPromiseProxy as _PromiseProxy } from '@angular/fire/compat';
import { HttpsCallableOptions } from '@firebase/functions-types';
import { FirebaseOptions } from 'firebase/app';
import firebase from 'firebase/compat/app';
import { Observable } from 'rxjs';

declare const ORIGIN: InjectionToken<string>;
declare const REGION: InjectionToken<string>;
declare const USE_EMULATOR: InjectionToken<[host: string, port: number]>;
interface AngularFireFunctions extends Omit<_PromiseProxy<firebase.functions.Functions>, 'httpsCallable'> {
}
declare class AngularFireFunctions {
    readonly httpsCallable: <T = any, R = any>(name: string, options?: HttpsCallableOptions) => (data: T) => Observable<R>;
    constructor(options: FirebaseOptions, name: string | null | undefined, zone: NgZone, schedulers: _AngularFireSchedulers, region: string | null, origin: string | null, _useEmulator: any, // can't use the tuple here
    _appCheckInstances: AppCheckInstances);
    static ɵfac: i0.ɵɵFactoryDeclaration<AngularFireFunctions, [null, { optional: true; }, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AngularFireFunctions>;
}

declare class AngularFireFunctionsModule {
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<AngularFireFunctionsModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AngularFireFunctionsModule, never, never, never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AngularFireFunctionsModule>;
}

export { AngularFireFunctions, AngularFireFunctionsModule, ORIGIN, REGION, USE_EMULATOR };
