import { Ast, CallAst, CustomCallAst } from "../ast/Ast"; import { SqrlParserState } from "../compile/SqrlParserState"; import { ArgumentCheck } from "../api/arg"; export interface SaveFunctionProperties { allowNull?: boolean; allowSqrlObjects?: boolean; args?: ArgumentCheck[]; async?: boolean; asyncSafe?: boolean; customTransform?: (state: SqrlParserState, ast: CustomCallAst) => Ast; name?: string; promiseArgs?: boolean; callbackArgs?: boolean; pure?: boolean; safe?: boolean; statement?: boolean; statementFeature?: string; transformAst?: (state: SqrlParserState, ast: CallAst) => Ast; jsonCache?: boolean; lazyArguments?: boolean; package?: string; argstring?: string; docstring?: string; vital?: boolean; background?: boolean; } export interface FunctionProperties extends SaveFunctionProperties { stateArg?: boolean; whenCauseArg: boolean; cost?: number; } export interface FunctionCostData { [name: string]: number; } export declare class StdlibRegistry { wrapped: SqrlInstance; packageName: string; constructor(wrapped: SqrlInstance, packageName: string); save(fn: (...args: any[]) => any | null, props?: SaveFunctionProperties): void; } export declare class SqrlInstance { static intCostMultiplier: number; readonly customFunctions: Set; pureFunction: { [name: string]: (...any: any[]) => any; }; functions: { [name: string]: (...any: any[]) => any; }; functionProperties: { [name: string]: FunctionProperties; }; statementFeatures: Set; functionStats: null | { [func: string]: { callCount: number; syncTimeNano: number; asyncTimeNano: number; }; }; trackingFunctionStats: boolean; functionCost: FunctionCostData | null; constructor(options?: { trackingFunctionStats?: boolean; functionCost?: FunctionCostData; traceFunctions?: string[]; }); private wrapStatTracking; createStdlibRegistry(packageName: string): StdlibRegistry; getCost(funcName: string): number; resetFunctionStats(): void; has(name: string): boolean; isStatement(name: string): boolean; assertStatementAst(ast?: any): void; statementFeature(name?: any): string; isAsync(name?: any): boolean; getProps(name: string): FunctionProperties; save(fn: (...args: any[]) => any | null, props?: SaveFunctionProperties): void; }