import { Arity1 } from '@typed/lambda';
import { Lens } from './Lens';
export interface PropLens<K extends PropertyKey> extends Lens<Readonly<Record<K, any>>, any> {
    readonly get: <R extends Readonly<Record<K, any>>>(r: R) => R[K];
    readonly update: {
        <B, R extends Readonly<Record<K, B>>>(update: Arity1<B, B>, r: R): R;
        <B>(update: Arity1<B, B>): <R extends Readonly<Record<K, B>>>(r: R) => R;
    };
}
export declare type PropLensKey<A> = A extends PropLens<infer K> ? K : never;
export declare const fromProp: <K extends string | number | symbol>(key: K) => PropLens<K>;
//# sourceMappingURL=PropLens.d.ts.map