import type { Optic, TryA, TryT, A, B, S, T, Try } from './optic.js'; import type { ArrayExpected, TraversalExpected } from './errors.js'; import { Apply, Apply2 } from '../hkt.js'; import { Compose, ComposeArg } from './compose.js'; interface PartsOfA> extends A { 0: TryA ? Apply> extends infer R ? Try : never : never>; } interface PartsOfT> extends T { 0: TryT ? B extends (infer Item)[] ? Apply2, Item> : ArrayExpected> : never>; } export declare function partsOf>(traversal: Traversal): Optic<'Lens', PartsOfA, PartsOfT>; export declare function partsOf(...args: Args): Compose extends infer O ? O extends Optic<'Traversal', any, any> ? Optic<'Lens', PartsOfA, PartsOfT> : TraversalExpected : never; export {};