export declare const version = "1.12.0"; export declare const clientName: string; export interface Config { varsnap: boolean; env: string; branch: string; producerToken?: string; consumerToken?: string; logger?: Logger; } type ConfigKeys = keyof Config; type rawJSONObject = ConsumeSnapResponse | ProduceTrialResponse | TrialGroupRequest | TrialGroupResponse | Record; export interface Logger { debug(s: string): void; log(s: string): void; error(s: string): void; } export declare class Util { static getConfig(config: Config, configKey: ConfigKeys): string; static setConfig(config: Config, configKey: ConfigKeys, configValue: string | boolean | Logger | undefined): Config; static getSignature(targetFunc: TargetFunction, funcName: string): string; static ajax(url: string, requestData: rawJSONObject): Promise; static debug(config: Config, data: string): void; static log(config: Config, data: string): void; static error(config: Config, data: string): void; static resetProducers(): void; static resetConsumers(): void; static getProducers(): Producer[]; static getConsumers(): Consumer[]; static limitString(x: TargetFunctionInput[] | TargetFunctionOutput): string; static isNode(): boolean; } export declare class Producer { targetFunc: TargetFunction; signature: string; config: Config; constructor(targetFunc: TargetFunction, signature: string, config: Config); isEnabled(): boolean; static serialize(data: TargetFunctionInput[] | TargetFunctionOutput): string; static serialize_formatted(data: TargetFunctionInput[] | TargetFunctionOutput): string; produce(args: TargetFunctionInput[], output: TargetFunctionOutput): Promise; } interface ConsumeSnapResponse { status: string; results: Snap[]; } interface Snap { id: string; inputs: string; prod_outputs: string; } interface ProduceTrialResponse { status: string; trial_url: string; } export declare class Consumer { targetFunc: TargetFunction; signature: string; config: Config; constructor(targetFunc: TargetFunction, signature: string, config: Config); isEnabled(): boolean; static deserialize(data: string): TargetFunctionInput[] | TargetFunctionOutput | undefined; consume(trialGroup: TrialGroupResponse): Promise; reportCentral(trialGroup: TrialGroupResponse, snap: Snap, prodOutputs: TargetFunctionOutput, localOutputs: TargetFunctionOutput, matches: boolean): Promise; reportLog(snapID: string, inputs: TargetFunctionInput[], prodOutputs: TargetFunctionOutput, localOutputs: TargetFunctionOutput, matches: boolean, trialURL: string | boolean): void; reportTrialGroup(trialGroup: TrialGroupResponse): void; } export type TargetFunctionInput = any; export type TargetFunctionOutput = any; export interface TargetFunction { (...args: TargetFunctionInput[]): TargetFunctionOutput; } export interface WrappedFunction { (...args: TargetFunctionInput[]): TargetFunctionOutput; producer: Producer; consumer: Consumer; signature: string; } export declare function varsnap(func: TargetFunction, funcName?: string): TargetFunction | WrappedFunction; export declare namespace varsnap { var _config: Config; var updateConfig: (newConfig: Config) => void; var reset: () => void; var version: string; var runTests: typeof import("./core.js").runTests; } interface TrialGroupRequest { branch: string; consumer_token: string; client: string; } interface TrialGroupResponse { status: string; project_id: string; trial_group_id: string; trial_group_url: string; } export declare function runTests(): Promise; export {};