import * as Specification from "../specification"; export declare type IntrinsicFunction = (...args: Specification.Value[]) => Specification.Value; export interface IntrinsicFunctionInfo { internalName?: string; name: string; argTypes: string[]; returnType: string; javascriptImplementation: (...args: Specification.Value[]) => Specification.Value; } export interface TypeConversionInfo { internalName: string; rank: number; } export interface ConstantInfo { name: string; type: string; value: Specification.Value; } export declare function getInternalName(func: { name: string; argTypes: string[]; returnType: string; }): string; export declare function getIntrinsicFunction(internalName: string): IntrinsicFunctionInfo; export declare function forEachIntrinsicFunction(callback: (info: IntrinsicFunctionInfo) => any): void; export declare function addIntrinsicFunction(func: IntrinsicFunctionInfo): void; export declare function addConstant(name: string, type: string, value: Specification.Value): void; export declare function forEachConstant(callback: (info: ConstantInfo) => any): void; export declare function forEachTypeConversion(callback: (info: TypeConversionInfo) => any): void; export declare function getTypeConversion(srcType: string, destType: string): TypeConversionInfo;