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; } 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; } declare function runTests(): Promise; declare function varsnap(func: TargetFunction, funcName?: string): TargetFunction | WrappedFunction; declare namespace varsnap { var _config: Config; var updateConfig: (newConfig: Config) => void; var reset: () => void; var version: string; var runTests: typeof runTests; } export interface Config { varsnap: boolean; env: string; branch: string; producerToken?: string; consumerToken?: string; logger?: Logger; } export interface Logger { debug(s: string): void; log(s: string): void; error(s: string): void; } export interface Snap { id: string; inputs: string; prod_outputs: string; } export interface TargetFunction { (...args: TargetFunctionInput[]): TargetFunctionOutput; } export interface TrialGroupResponse { status: string; project_id: string; trial_group_id: string; trial_group_url: string; } export interface WrappedFunction { (...args: TargetFunctionInput[]): TargetFunctionOutput; producer: Producer; consumer: Consumer; signature: string; } export type TargetFunctionInput = any; export type TargetFunctionOutput = any; export { varsnap as default, };