import { N } from 'ts-toolbelt'; import type { IsNegative, IsPositive } from '.'; type MAX_DEPTH = 50; type More = (N.Greater extends 0 ? TLen extends 0 ? [TArr[number], ...TArr[number][]] : [TArr[number], ...More>] : TArr); type Less = (N.Greater extends 0 ? TLen extends 1 ? [] : [TArr[number], ...Less>] | Less> : TArr); type MoreOrEqual = (N.Greater extends 0 ? TLen extends 1 ? [TArr[number], ...TArr[number][]] : [TArr[number], ...MoreOrEqual>] : TArr); type LessOrEqual = (N.Greater extends 0 ? TLen extends 0 ? [] : [TArr[number], ...LessOrEqual>] | LessOrEqual> : TArr); type Equal = (number extends TLen ? TArr : N.Greater extends 0 ? TLen extends 0 ? [] : [TArr[number], ...Equal>] : TArr & { length: TLen; }); // @ts-expect-error export declare const isArrayLength: " | "<" | ">=" | "<=" | "===", TLen extends IsNegative extends true ? never : TOp extends "<" | ">=" ? IsPositive extends true ? TArr["length"] : never : TArr["length"]>(arr: TArr, op: TOp, length: TLen) => arr is TOp extends ">" ? More : TOp extends "<" ? Less : TOp extends ">=" ? MoreOrEqual : TOp extends "<=" ? LessOrEqual : Equal; export {};