export interface Tag { typename: T; } export declare type Class = new (...args: any[]) => T; export declare type AClass = Function & { prototype: T; }; export declare function classOf(x: T): Class; export declare function className(o: Object): string; export declare function as(x: U, C: AClass): T; export declare function asOpt(x: U, cls: AClass): T; export declare function assert(b: boolean, msg?: string, ...x̅: unknown[]): any; export declare function absurd(msg?: string, ...x̅: unknown[]): any; export declare function id(x: T): T; export declare function userError(msg: string, ...x̅: unknown[]): any; export declare function notYetImplemented(): any; export declare function abstractMethodError(this_: Object): T; export declare function __nonNull(x: T | null | undefined, msg?: string): T; export declare function __log(x: T, msg?: (it: T) => string, transform?: (it: T) => T): T; export declare function __check(x: T, predicate: (it: T) => boolean): T;