import type { Optic, A, B, S, T, TryA, TryT } from './optic.js'; import type { ArrayOrStringExpected, StringExpected } from './errors.js'; import type { Eq } from '../utils.js'; interface AtA extends A { 0: TryA extends string ? string : S extends (infer Item)[] ? Item : ArrayOrStringExpected>>; } interface AtT extends T { 0: TryT extends string ? Eq, string> extends true ? string : StringExpected> : S extends (infer Item)[] ? (Item | B)[] : ArrayOrStringExpected>>; } export type At = Optic<'Prism', AtA, AtT, true>; export declare const at: (i: number) => At; export {};