/** * What a List, Map, Set or Record publishes under a name: the contract a * member access resolves to, before any argument of a call is looked at. * * D115 §三: these were four public methods of `CollectionInference` and the * three shape helpers they are written with. They are the compiler's answer to * "what does this collection have", asked by member access, by completion, and * by the surface-version gate — none of which is a call — so they are a file of * their own. Nothing here writes a diagnostic or a lowering fact, which is why * `CollectionMembersHost` is two names wide. */ import { type ValueType } from "../../types.ts"; /** * A synchronous cursor returns an optional wrapper rather than `T?` directly. * The wrapper keeps exhaustion distinct from a legitimate `null` collection * value: `null` means there is no next item, while `{value: null}` is an item. */ export declare const iteratorOf: (value: ValueType) => ValueType; /** What the member resolvers ask of the analyzer that hosts them, and nothing more. */ export interface CollectionMembersHost { expandAliases(type: ValueType): ValueType; readonlyDataViewOf(type: ValueType): ValueType; } export declare class CollectionMembers { private readonly host; constructor(host: CollectionMembersHost); /** * What a List publishes under `property`, or null when it publishes nothing * under that name. The two halves own disjoint member names and neither * writes anything, so the answer is the answer the one switch gave. */ listMember(list: Extract, property: string): ValueType | null; /** The positional, mutating, probing and ordering members. */ private listCoreMember; /** * D114 S3: the pipeline members. Each answers a fresh container, so a * read-only receiver publishes them exactly as `map` and `filter`. */ private listPipelineMember; mapMember(map: Extract, property: string): ValueType | null; recordMember(record: Extract, property: string): ValueType | null; setMember(set: Extract, property: string): ValueType | null; } //# sourceMappingURL=members.d.ts.map