export type Resolved> = T extends keyof R ? (R[T] extends never ? undefined : R[T]) : undefined; export type Resolver, R extends Record> = { (type: T, config: C[T]): Resolved; __configs?: C; __results?: R; }; export type ResolverConfigs> = Exclude; export type ResolverResults> = Exclude; export type Chain, R2 extends Record> = R1 & Omit; export declare function chain, R2 extends Resolver>(source: R1, fallback: R2): Resolver, ResolverConfigs>, Chain, ResolverResults>>; export declare function fromRecord>(record: R): Resolver, R>; export declare function fromFactories any>>(factories: R): Resolver<{ [K in keyof R]: Parameters[0]; }, { [K in keyof R]: ReturnType; }>; export declare function overrideByRecord, O extends Partial>>(resolver: R, override: O): Resolver, undefined>, Exclude>, Chain, Exclude>>; export declare function extendByRecord, E extends Record>(resolver: R, extension: E): Resolver, Exclude, undefined>>, Chain, Exclude>>;