import luau from ".."; export type NoInfer = [A][A extends any ? 0 : never]; declare const LIST_MARKER: unique symbol; export type ListNode = { prev?: luau.ListNode; next?: luau.ListNode; value: T; }; export type List = { [LIST_MARKER]: true; head?: luau.ListNode; tail?: luau.ListNode; readonly: boolean; }; export declare namespace list { function makeNode(value: T): luau.ListNode; function make(...values: Array): luau.List; function isList(value: unknown): value is luau.List; function clone(list: luau.List): luau.List; function push(list: luau.List, value: NoInfer): void; function pushList(list: luau.List, other: luau.List): void; function shift(list: luau.List): T | undefined; function unshift(list: luau.List, value: NoInfer): void; function unshiftList(list: luau.List, other: luau.List): void; function isEmpty(list: luau.List): boolean; function isNonEmpty(list: luau.List): list is Required>; function forEach(list: luau.List, callback: (value: NoInfer) => void): void; function forEachListNode(list: luau.List, callback: (value: luau.ListNode) => void): void; function mapToArray(list: luau.List, callback: (value: NoInfer) => U): Array; function toArray(list: luau.List): Array; function every(list: luau.List, callback: (value: NoInfer) => boolean): boolean; function some(list: luau.List, callback: (value: NoInfer) => boolean): boolean; function size(list: luau.List): number; } export {};