import { Injector, Type } from '@angular/core';
import { Validation } from 'io-ts';
import { ErrorStrategy } from '../error-strategy/error-strategy';
import { ConfigurationMeta } from '../metadata/configuration';
import * as i0 from "@angular/core";
export declare class ConfigurationService {
    private errorStrategy;
    private injector;
    private codecMap;
    constructor(errorStrategy: ErrorStrategy, injector: Injector);
    decode<T>(type: Type<T>, config: T, injector?: Injector): T;
    decode<T, C>(type: Type<T>, config: C, injector?: Injector): T | C;
    validate<T, C>(type: Type<T>, config: C): Validation<T | C>;
    getMetaOf(type: Type<any>): ConfigurationMeta[];
    private getCodecFor;
    private processFunctions;
    private bindFunction;
    private guardFunction;
    private resolveArg;
    static ɵfac: i0.ɵɵFactoryDeclaration<ConfigurationService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ConfigurationService>;
}
