import { ValueProvider, ClassProvider, FactoryProvider, Provider, EnvironmentProviders, InjectionToken } from '@angular/core';
import { IncomingMessage, IncomingHttpHeaders } from 'node:http';

declare const UNIVERSAL_ANIMATION_FRAME: ValueProvider;

declare function identity<T>(v: T): T;
declare function emptyFunction(): void;
declare function emptyArray(): any[];
declare function emptyObject(): object;
declare function alwaysFalse(): boolean;
declare function alwaysNull(): null;
declare function alwaysZero(): number;
declare function alwaysRejected(): Promise<any>;

declare const CACHES_MOCK: {
    delete: () => Promise<boolean>;
    has: () => Promise<boolean>;
    keys: () => Promise<never[]>;
    match: typeof alwaysRejected;
    open: typeof alwaysRejected;
};
declare const UNIVERSAL_CACHES: ValueProvider;

declare const CRYPTO_MOCK: {
    subtle: {};
    getRandomValues: typeof identity;
};
declare const UNIVERSAL_CRYPTO: ValueProvider;

declare const HISTORY_MOCK: {
    length: number;
    scrollRestoration: string;
    state: {};
    back: typeof emptyFunction;
    forward: typeof emptyFunction;
    go: typeof emptyFunction;
    pushState: typeof emptyFunction;
    replaceState: typeof emptyFunction;
};
declare const UNIVERSAL_HISTORY: ValueProvider;

declare const UNIVERSAL_LOCAL_STORAGE: ClassProvider;

declare const UNIVERSAL_LOCATION: FactoryProvider;

declare const UNIVERSAL_MEDIA_DEVICES: ValueProvider;

declare const NAVIGATOR_MOCK: Navigator;
declare const UNIVERSAL_NAVIGATOR: FactoryProvider;

declare function performanceFactory(): Performance;
declare const UNIVERSAL_PERFORMANCE: FactoryProvider;

declare const UNIVERSAL_PROVIDERS: Provider[];
declare function provideUniversal(): Array<EnvironmentProviders | Provider>;

declare const UNIVERSAL_SESSION_STORAGE: ClassProvider;

declare const SPEECH_SYNTHESIS_MOCK: SpeechSynthesis;
declare const UNIVERSAL_SPEECH_SYNTHESIS: ValueProvider;

declare const UNIVERSAL_USER_AGENT: FactoryProvider;

declare const UNIVERSAL_WINDOW: FactoryProvider;

declare const WA_SSR_LOCATION: InjectionToken<Location>;

declare const WA_SSR_USER_AGENT: InjectionToken<string>;

declare const EVENT_TARGET: EventTarget;

declare function provideLocation(req: IncomingMessage): ValueProvider;

declare function provideUserAgent(req: {
    headers: IncomingHttpHeaders;
}): ValueProvider;

export { CACHES_MOCK, CRYPTO_MOCK, EVENT_TARGET, HISTORY_MOCK, NAVIGATOR_MOCK, SPEECH_SYNTHESIS_MOCK, UNIVERSAL_ANIMATION_FRAME, UNIVERSAL_CACHES, UNIVERSAL_CRYPTO, UNIVERSAL_HISTORY, UNIVERSAL_LOCAL_STORAGE, UNIVERSAL_LOCATION, UNIVERSAL_MEDIA_DEVICES, UNIVERSAL_NAVIGATOR, UNIVERSAL_PERFORMANCE, UNIVERSAL_PROVIDERS, UNIVERSAL_SESSION_STORAGE, UNIVERSAL_SPEECH_SYNTHESIS, UNIVERSAL_USER_AGENT, UNIVERSAL_WINDOW, WA_SSR_LOCATION, WA_SSR_USER_AGENT, alwaysFalse, alwaysNull, alwaysRejected, alwaysZero, emptyArray, emptyFunction, emptyObject, identity, performanceFactory, provideLocation, provideUniversal, provideUserAgent };
