import { Identifier } from "./identifier"; import type { Type } from "../type"; export type MissingBindings = "missing-bindings"; export type MissingDeepBindings = "missing-deep-bindings"; export type HasBindings = "has-bindings"; export type Bindings = MissingBindings | MissingDeepBindings | HasBindings; export type Kind = Kind.Interface | Kind.Elementary | Kind.Array | Kind.Struct; export declare namespace Kind { interface Elementary { type: Type.Elementary; hints?: { internalType?: string; }; } const isElementary: (kind: Kind) => kind is Elementary; interface UserDefinedValueType extends Elementary { identifier: Identifier; hints: { internalType: string; }; } const isUserDefinedValueType: (kind: Kind) => kind is UserDefinedValueType; interface Array { itemKind: Kind; length?: number; hints?: {}; } const isArray: (kind: Kind) => kind is Array; namespace Array { interface Static extends Array { length: number; } const isStatic: (kind: Kind) => kind is Static; interface Dynamic extends Array { length: never; } const isDynamic: (kind: Kind) => kind is Dynamic; } type Struct = { signature: string; hints?: { internalType?: string; }; } & (B extends HasBindings ? { identifier: Identifier; members: Struct.Member[]; } : B extends MissingDeepBindings ? { identifier: Identifier; members: Struct.Member[]; } : B extends MissingBindings ? { identifier?: Identifier; members: Struct.Member[]; } : { identifier?: Identifier; members: Struct.Member[]; }); const isStruct: (kind: Kind) => kind is Struct; namespace Struct { interface Member { name?: string; kind: Kind; } } type Interface = B extends HasBindings ? { identifier: Identifier; } : B extends MissingDeepBindings ? { identifier: Identifier; } : B extends MissingBindings ? { identifier?: Identifier; } : { identifier?: Identifier; }; const isInterface: (kind: Kind) => kind is Interface; } //# sourceMappingURL=kind.d.ts.map