type EvolveTransform = Partial<{ [K in keyof O]: (a: O[K]) => O[K]; }>; type StrictKeys = T extends Record ? Exclude extends never ? T : T & { [K in `Invalid key: ${Exclude & string}`]: never; } : never; type Evolved = { [K in keyof O]: K extends keyof T ? T[K] extends (a: any) => infer R ? R : O[K] : O[K]; }; /** Immutably updates fields of a struct by applying transform functions. Wraps Effect's `Struct.evolve` with stricter key checking. */ export declare const evo: { >(t: StrictKeys): (obj: O) => Evolved; >(obj: O, t: StrictKeys): Evolved; }; /** Creates a variant of `evo` whose transforms are checked against a supertype. Useful in generic contexts where `evo`'s `StrictKeys` can't resolve `keyof` on an open type parameter. The returned function evolves a subtype model, preserving all fields not in the transform, and returns the subtype. */ export declare const makeConstrainedEvo: >() => (model: Model, transforms: EvolveTransform) => Model; export {}; //# sourceMappingURL=index.d.ts.map