import { Tail } from './Tail'; import { Cast } from '../Any/Cast'; import { IterationOf } from '../Iteration/IterationOf'; import { Iteration } from '../Iteration/Iteration'; import { Way } from '../Iteration/_Internal'; import { List } from './List'; import { Pos } from '../Iteration/Pos'; import { Prev } from '../Iteration/Prev'; import { Prepend } from './Prepend'; import { Naked } from './_Internal'; import { Extends } from '../Any/Extends'; /** * @hidden */ declare type DropForth = { 0: DropForth, Prev>; 1: L; }[Extends<0, Pos>]; /** * @hidden */ declare type DropBack, LN extends List = []> = { 0: DropBack, Prepend]>>; 1: LN; }[Extends<-1, Pos>]; /** * @hidden */ declare type __Drop = { '->': DropForth; '<-': DropBack; }[way]; /** * @hidden */ export declare type _Drop = __Drop, IterationOf, way> extends infer X ? Cast : never; /** * Remove `N` entries out of `L` * @param L to remove from * @param N to remove out * @param way (?=`'->'`) from front: '->', from end: '<-' * @returns [[List]] * @example * ```ts * ``` */ export declare type Drop = L extends unknown ? N extends unknown ? _Drop : never : never; export {};