import { Ast, CallAst } from "./Ast"; import { StateArgument, WhenCauseArgument, ArgumentCheck } from "./ArgumentCheck"; export declare type ArgsChecker = (ast: CallAst) => void; export declare type CompileCheckCallback = (argAst: Ast, srcAst?: Ast, message?: string) => void; export interface RuntimeTypeChecker { isOptional: boolean; isRepeated: boolean; compileTimeCheck: CompileCheckCallback; runtimeChecker?: (value: any) => string | null; } export declare type AstArgs = RuntimeTypeChecker[]; export interface CountedTypeChecker extends RuntimeTypeChecker { array: RuntimeTypeChecker; bool: RuntimeTypeChecker; instanceOf: RuntimeTypeChecker; entityId: RuntimeTypeChecker; number: RuntimeTypeChecker; object: RuntimeTypeChecker; sqrlEntity: RuntimeTypeChecker; sqrlEntityOrEntities: RuntimeTypeChecker; sqrlGeoPoint: RuntimeTypeChecker; string: RuntimeTypeChecker; } export interface TypeChecker extends CountedTypeChecker { optional: TypeChecker; repeated: TypeChecker; } declare function constantValue(val?: any): TypeChecker; declare function compileTypesInvariant(fnAst: CallAst, types: ArgumentCheck[]): void; declare function validateRuntime(fnArgs: any[], types: ArgumentCheck[]): any[]; declare function typeChecker(compileTimeCheck: CompileCheckCallback): TypeChecker; declare const AstTypes: { any: TypeChecker; constant: { array: TypeChecker; boolean: TypeChecker; number: TypeChecker & { gt: (expected?: any) => TypeChecker; lt: (expected?: any) => TypeChecker; }; string: TypeChecker; value: typeof constantValue; null: TypeChecker; featurePath: TypeChecker; objectKeys: TypeChecker; object: TypeChecker; }; feature: TypeChecker; list: TypeChecker; state: StateArgument; whenCause: WhenCauseArgument; custom: typeof typeChecker; compileTypesInvariant: typeof compileTypesInvariant; validateRuntime: typeof validateRuntime; }; export { AstTypes };