import { Intersection, Primitive, Serial, Dictionary } from 'type-core'; type Select = Exclude] & T['default'], A extends true ? undefined : never>; declare namespace Select { interface Options { name?: string; assert?: A; strategy?: G; } type Strategy = 'fallback' | 'shallow' | 'merge' | 'deep'; type Selector = Intersection, S = Dictionary> = S & { [P in Value]?: Serial; }; type Value> = (T extends string ? T : never) | (T extends undefined ? 'undefined' : never) | (T extends void ? 'undefined' : never) | (T extends null ? 'null' : never) | (T extends boolean ? 'true' | 'false' : never) | (T extends number ? string : never); } declare function select, S extends Select.Selector, A extends boolean = false, G extends Select.Strategy = 'fallback'>(data: T, selector: Select.Selector, options?: Select.Options): Select; export { Select, select };