type _At = Arr extends (infer T)[] ? T | undefined : Arr extends RelativeIndexable ? T | undefined : never; export type At = Arr extends readonly [] ? undefined : Index extends 0 ? Arr extends readonly [infer a, ...unknown[]] ? a : _At : Index extends 1 ? Arr extends readonly [unknown, infer b, ...unknown[]] ? b : _At : Index extends -1 ? Arr extends readonly [...unknown[], infer z] ? z : _At : Index extends 2 ? Arr extends readonly [unknown, unknown, infer c, ...unknown[]] ? c : _At : Index extends -2 ? Arr extends readonly [...unknown[], infer y, unknown] ? y : _At : Index extends 3 ? Arr extends readonly [ unknown, unknown, unknown, infer d, ...unknown[] ] ? d : _At : Index extends -3 ? Arr extends readonly [...unknown[], infer x, unknown, unknown] ? x : _At : _At; export declare function isRelativeIndexable(array: unknown): array is RelativeIndexable; /** @throws On `undefined` return values */ export declare function at(array: Arr, index: Index): Exclude, undefined>; /** * Same as `at`, but does not throw - returns `undefined` if the element does * not exist. */ export declare function tryAt(array: Arr, index: Index): At; export {}; //# sourceMappingURL=At.d.ts.map