/** * * This method checks whether cookie is enabled within current browser * @return true if cookie is enabled within current browser */ export declare function areCookiesEnabled(): boolean; /** * Throws an error if the provided assertion is falsy */ export declare const assert: (assertion: unknown, message: string) => void; /** * Returns an Error object suitable for throwing. */ export declare const assertionError: (message: string) => Error; /** Turn synchronous function into one called asynchronously. */ export declare function async(fn: Function, onError?: ErrorFn): Function; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ declare interface Base64 { byteToCharMap_: { [key: number]: string; } | null; charToByteMap_: { [key: string]: number; } | null; byteToCharMapWebSafe_: { [key: number]: string; } | null; charToByteMapWebSafe_: { [key: string]: number; } | null; ENCODED_VALS_BASE: string; readonly ENCODED_VALS: string; readonly ENCODED_VALS_WEBSAFE: string; HAS_NATIVE_SUPPORT: boolean; encodeByteArray(input: number[] | Uint8Array, webSafe?: boolean): string; encodeString(input: string, webSafe?: boolean): string; decodeString(input: string, webSafe: boolean): string; decodeStringToByteArray(input: string, webSafe: boolean): number[]; init_(): void; } export declare const base64: Base64; /** * URL-safe base64 decoding * * NOTE: DO NOT use the global atob() function - it does NOT support the * base64Url variant encoding. * * @param str To be decoded * @return Decoded result, if possible */ export declare const base64Decode: (str: string) => string | null; /** * URL-safe base64 encoding */ export declare const base64Encode: (str: string) => string; /** * URL-safe base64 encoding (without "." padding in the end). * e.g. Used in JSON Web Token (JWT) parts. */ export declare const base64urlEncodeWithoutPadding: (str: string) => string; /** * Based on the backoff method from * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js. * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around. */ export declare function calculateBackoffMillis(backoffCount: number, intervalMillis?: number, backoffFactor?: number): number; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ declare interface Claims { [key: string]: {}; } /** * @license * Copyright 2021 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ export declare interface Compat { _delegate: T; } export declare type CompleteFn = () => void; /** * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time. */ export declare const CONSTANTS: { /** * @define {boolean} Whether this is the client Node.js SDK. */ NODE_CLIENT: boolean; /** * @define {boolean} Whether this is the Admin Node.js SDK. */ NODE_ADMIN: boolean; /** * Firebase SDK Version */ SDK_VERSION: string; }; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ export declare function contains(obj: T, key: string): boolean; export declare function createMockUserToken(token: EmulatorMockTokenOptions, projectId?: string): string; /** * Helper to make a Subscribe function (just like Promise helps make a * Thenable). * * @param executor Function which can make calls to a single Observer * as a proxy. * @param onNoObservers Callback when count of Observers goes to zero. */ export declare function createSubscribe(executor: Executor, onNoObservers?: Executor): Subscribe; /** * Decodes a Firebase auth. token into constituent parts. * * Notes: * - May return with invalid / incomplete claims if there's no native base64 decoding support. * - Doesn't check if the token is actually valid. */ export declare const decode: (token: string) => DecodedToken; declare interface DecodedToken { header: object; claims: Claims; data: object; signature: string; } declare interface DecodedToken { header: object; claims: Claims; data: object; signature: string; } /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Do a deep-copy of basic JavaScript Objects or Arrays. */ export declare function deepCopy(value: T): T; /** * Deep equal two objects. Support Arrays and Objects. */ export declare function deepEqual(a: object, b: object): boolean; /** * Copy properties from source to target (recursively allows extension * of Objects and Arrays). Scalar values in the target are over-written. * If target is undefined, an object of the appropriate type will be created * (and returned). * * We recursively copy all child properties of plain Objects in the source- so * that namespace- like dictionaries are merged. * * Note that the target can be a function, in which case the properties in * the source Object are copied onto it as static properties of the Function. * * Note: we don't merge __proto__ to prevent prototype pollution */ export declare function deepExtend(target: unknown, source: unknown): unknown; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ export declare class Deferred { promise: Promise; reject: (value?: unknown) => void; resolve: (value?: unknown) => void; constructor(); /** * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback * and returns a node-style callback which will resolve or reject the Deferred's promise. */ wrapCallback(callback?: (error?: unknown, value?: unknown) => void): (error: unknown, value?: unknown) => void; } export declare type EmulatorMockTokenOptions = ({ user_id: string; } | { sub: string; }) & Partial; export declare interface ErrorData { [key: string]: unknown; } export declare class ErrorFactory { private readonly service; private readonly serviceName; private readonly errors; constructor(service: string, serviceName: string, errors: ErrorMap); create(code: K, ...data: K extends keyof ErrorParams ? [ErrorParams[K]] : []): FirebaseError; } export declare type ErrorFn = (error: Error) => void; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @fileoverview Standardized Firebase Error. * * Usage: * * // Typescript string literals for type-safe codes * type Err = * 'unknown' | * 'object-not-found' * ; * * // Closure enum for type-safe error codes * // at-enum {string} * var Err = { * UNKNOWN: 'unknown', * OBJECT_NOT_FOUND: 'object-not-found', * } * * let errors: Map = { * 'generic-error': "Unknown error", * 'file-not-found': "Could not find file: {$file}", * }; * * // Type-safe function - must pass a valid error code as param. * let error = new ErrorFactory('service', 'Service', errors); * * ... * throw error.create(Err.GENERIC); * ... * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName}); * ... * // Service: Could not file file: foo.txt (service/file-not-found). * * catch (e) { * assert(e.message === "Could not find file: foo.txt."); * if ((e as FirebaseError)?.code === 'service/file-not-found') { * console.log("Could not read file: " + e['file']); * } * } */ export declare type ErrorMap = { readonly [K in ErrorCode]: string; }; /** * Generates a string to prefix an error message about failed argument validation * * @param fnName The function name * @param argName The name of the argument * @return The prefix to add to the error thrown for validation. */ export declare function errorPrefix(fnName: string, argName: string): string; export declare type Executor = (observer: Observer) => void; /** * Extract the query string part of a URL, including the leading question mark (if present). */ export declare function extractQuerystring(url: string): string; export declare class FirebaseError extends Error { /** The error code for this error. */ readonly code: string; /** Custom data for this error. */ customData?: Record | undefined; /** The custom name for all FirebaseErrors. */ readonly name: string; constructor( /** The error code for this error. */ code: string, message: string, /** Custom data for this error. */ customData?: Record | undefined); } declare interface FirebaseIdToken { iss: string; aud: string; sub: string; iat: number; exp: number; user_id: string; auth_time: number; provider_id?: 'anonymous'; email?: string; email_verified?: boolean; phone_number?: string; name?: string; picture?: string; firebase: { sign_in_provider: FirebaseSignInProvider; identities?: { [provider in FirebaseSignInProvider]?: string[]; }; }; [claim: string]: unknown; uid?: never; } /** * @license * Copyright 2021 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ export declare type FirebaseSignInProvider = 'custom' | 'email' | 'password' | 'phone' | 'anonymous' | 'google.com' | 'facebook.com' | 'github.com' | 'twitter.com' | 'microsoft.com' | 'apple.com'; /** * Polyfill for `globalThis` object. * @returns the `globalThis` object for the given environment. */ export declare function getGlobal(): typeof globalThis; export declare function getModularInstance(service: Compat | ExpService): ExpService; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Returns navigator.userAgent string or '' if it's not defined. * @return user agent string */ export declare function getUA(): string; /** * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion. * * Notes: * - May return a false negative if there's no native base64 decoding support. * - Doesn't check if the token is actually valid. */ export declare const isAdmin: (token: string) => boolean; /** * Detect Browser Environment */ export declare function isBrowser(): boolean; export declare function isBrowserExtension(): boolean; /** Detects Electron apps. */ export declare function isElectron(): boolean; export declare function isEmpty(obj: object): obj is {}; /** Detects Internet Explorer. */ export declare function isIE(): boolean; /** * This method checks if indexedDB is supported by current browser/service worker context * @return true if indexedDB is supported by current browser/service worker context */ export declare function isIndexedDBAvailable(): boolean; /** * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device. * * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally * wait for a callback. */ export declare function isMobileCordova(): boolean; /** * Detect Node.js. * * @return true if Node.js environment is detected. */ export declare function isNode(): boolean; /** * Detect whether the current SDK build is the Node version. * * @return true if it's the Node SDK build. */ export declare function isNodeSdk(): boolean; /** * Detect React Native. * * @return true if ReactNative environment is detected. */ export declare function isReactNative(): boolean; /** Returns true if we are running in Safari. */ export declare function isSafari(): boolean; /** * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise. * * Notes: * - May return null if there's no native base64 decoding support. * - Doesn't check if the token is actually valid. */ export declare const issuedAtTime: (token: string) => number | null; /** Detects Universal Windows Platform apps. */ export declare function isUWP(): boolean; /** * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time. * * Notes: * - May return a false negative if there's no native base64 decoding support. * - Doesn't check if the token is actually valid. */ export declare const isValidFormat: (token: string) => boolean; /** * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims. * * Notes: * - May return a false negative if there's no native base64 decoding support. * - Doesn't check if the token is actually valid. */ export declare const isValidTimestamp: (token: string) => boolean; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Evaluates a JSON string into a javascript object. * * @param {string} str A string containing JSON. * @return {*} The javascript object representing the specified JSON. */ export declare function jsonEval(str: string): unknown; export declare function map(obj: { [key in K]: V; }, fn: (value: V, key: K, obj: { [key in K]: V; }) => U, contextObj?: unknown): { [key in K]: U; }; /** * The maximum milliseconds to increase to. * *

Visible for testing */ export declare const MAX_VALUE_MILLIS: number; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ export declare type NextFn = (value: T) => void; export declare interface Observable { subscribe: Subscribe; } export declare interface Observer { next: NextFn; error: ErrorFn; complete: CompleteFn; } /** * @license * Copyright 2020 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Provide English ordinal letters after a number */ export declare function ordinal(i: number): string; export declare type PartialObserver = Partial>; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a * params object (e.g. {arg: 'val', arg2: 'val2'}) * Note: You must prepend it with ? when adding it to a URL. */ export declare function querystring(querystringParams: { [key: string]: string | number; }): string; /** * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object * (e.g. {arg: 'val', arg2: 'val2'}) */ export declare function querystringDecode(querystring: string): Record; /** * The percentage of backoff time to randomize by. * See * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic * for context. * *

Visible for testing */ export declare const RANDOM_FACTOR = 0.5; export declare function safeGet(obj: T, key: K): T[K] | undefined; /** * @license * Copyright 2017 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @fileoverview SHA-1 cryptographic hash. * Variable names follow the notation in FIPS PUB 180-3: * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf. * * Usage: * var sha1 = new sha1(); * sha1.update(bytes); * var hash = sha1.digest(); * * Performance: * Chrome 23: ~400 Mbit/s * Firefox 16: ~250 Mbit/s * */ /** * SHA-1 cryptographic hash constructor. * * The properties declared here are discussed in the above algorithm document. * @constructor * @final * @struct */ export declare class Sha1 { /** * Holds the previous values of accumulated variables a-e in the compress_ * function. * @private */ private chain_; /** * A buffer holding the partially computed hash result. * @private */ private buf_; /** * An array of 80 bytes, each a part of the message to be hashed. Referred to * as the message schedule in the docs. * @private */ private W_; /** * Contains data needed to pad messages less than 64 bytes. * @private */ private pad_; /** * @private {number} */ private inbuf_; /** * @private {number} */ private total_; blockSize: number; constructor(); reset(): void; /** * Internal compress helper function. * @param buf Block to compress. * @param offset Offset of the block in the buffer. * @private */ compress_(buf: number[] | Uint8Array | string, offset?: number): void; update(bytes?: number[] | Uint8Array | string, length?: number): void; /** @override */ digest(): number[]; } /** * Returns JSON representing a javascript object. * @param {*} data Javascript object to be stringified. * @return {string} The JSON contents of the object. */ export declare function stringify(data: unknown): string; /** * Calculate length without actually converting; useful for doing cheaper validation. * @param {string} str * @return {number} */ export declare const stringLength: (str: string) => number; export declare interface StringLike { toString(): string; } /** * @param {string} str * @return {Array} */ export declare const stringToByteArray: (str: string) => number[]; /** * The Subscribe interface has two forms - passing the inline function * callbacks, or a object interface with callback properties. */ export declare interface Subscribe { (next?: NextFn, error?: ErrorFn, complete?: CompleteFn): Unsubscribe; (observer: PartialObserver): Unsubscribe; } export declare type Unsubscribe = () => void; /** * Copied from https://stackoverflow.com/a/2117523 * Generates a new uuid. * @public */ export declare const uuidv4: () => string; /** * Check to make sure the appropriate number of arguments are provided for a public function. * Throws an error if it fails. * * @param fnName The function name * @param minCount The minimum number of arguments to allow for the function call * @param maxCount The maximum number of argument to allow for the function call * @param argCount The actual number of arguments provided. */ export declare const validateArgCount: (fnName: string, minCount: number, maxCount: number, argCount: number) => void; export declare function validateCallback(fnName: string, argumentName: string, callback: Function, optional: boolean): void; export declare function validateContextObject(fnName: string, argumentName: string, context: unknown, optional: boolean): void; /** * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject * if errors occur during the database open operation. * * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox * private browsing) */ export declare function validateIndexedDBOpenable(): Promise; /** * @param fnName * @param argumentNumber * @param namespace * @param optional */ export declare function validateNamespace(fnName: string, namespace: string, optional: boolean): void; export { }