import { InjectionToken, ProviderToken } from '@angular/core';
export declare function provide<T>(token: InjectionToken<T>, value: T | (() => T), multi?: boolean): {
    provide: InjectionToken<T>;
    useFactory: (() => T) | (T & Function);
    multi: boolean;
    useClass?: undefined;
    useValue?: undefined;
} | {
    provide: InjectionToken<T>;
    useClass: T;
    multi: boolean;
    useFactory?: undefined;
    useValue?: undefined;
} | {
    provide: InjectionToken<T>;
    useValue: T;
    multi: boolean;
    useFactory?: undefined;
    useClass?: undefined;
};
export declare function componentWithDefaultConfig<T>(component: any, token: InjectionToken<T>, defaultValues?: Partial<T>): void;
export declare function injectOptional<T>(token: ProviderToken<T>): T | undefined;
