import type { Workflow, SignalDefinition, QueryDefinition } from '@temporalio/workflow';
import type { UpdateDefinition } from '@temporalio/common';
import { WorkflowHandle } from '@temporalio/client';
import { TemporalClientService } from '../services/temporal-client.service';
import { WorkflowHandleWithMetadata, WorkflowStartOptions, WorkflowProxyConfig } from '../interfaces';
export interface IWorkflowProxy<T extends Workflow> {
    start(args: Parameters<T>, options?: WorkflowStartOptions): Promise<WorkflowHandleWithMetadata<T>>;
    getHandle(workflowId: string, runId?: string): Promise<WorkflowHandle<T>>;
    signal<TArgs extends unknown[]>(workflowId: string, signalDef: SignalDefinition<TArgs>, ...args: TArgs): Promise<void>;
    signalByName(workflowId: string, signalName: string, args?: readonly unknown[]): Promise<void>;
    query<TResult, TArgs extends unknown[] = []>(workflowId: string, queryDef: QueryDefinition<TResult, TArgs>, ...args: TArgs): Promise<TResult>;
    queryByName<TResult>(workflowId: string, queryName: string, args?: readonly unknown[]): Promise<TResult>;
    update<TResult, TArgs extends unknown[] = []>(workflowId: string, updateDef: UpdateDefinition<TResult, TArgs>, ...args: TArgs): Promise<TResult>;
    updateByName<TResult>(workflowId: string, updateName: string, args?: readonly unknown[]): Promise<TResult>;
    signalWithStart<TSignalArgs extends unknown[]>(signalDef: SignalDefinition<TSignalArgs>, signalArgs: TSignalArgs, workflowArgs: Parameters<T>, options?: WorkflowStartOptions): Promise<WorkflowHandleWithMetadata<T>>;
}
export declare class WorkflowProxy<T extends Workflow> implements IWorkflowProxy<T> {
    private readonly clientService;
    private readonly config;
    constructor(clientService: TemporalClientService, config: WorkflowProxyConfig);
    start(args: Parameters<T>, options?: WorkflowStartOptions): Promise<WorkflowHandleWithMetadata<T>>;
    getHandle(workflowId: string, runId?: string): Promise<WorkflowHandle<T>>;
    signal<TArgs extends unknown[]>(workflowId: string, signalDef: SignalDefinition<TArgs>, ...args: TArgs): Promise<void>;
    signalByName(workflowId: string, signalName: string, args?: readonly unknown[]): Promise<void>;
    query<TResult, TArgs extends unknown[] = []>(workflowId: string, queryDef: QueryDefinition<TResult, TArgs>, ...args: TArgs): Promise<TResult>;
    queryByName<TResult>(workflowId: string, queryName: string, args?: readonly unknown[]): Promise<TResult>;
    update<TResult, TArgs extends unknown[] = []>(workflowId: string, updateDef: UpdateDefinition<TResult, TArgs>, ...args: TArgs): Promise<TResult>;
    updateByName<TResult>(workflowId: string, updateName: string, args?: readonly unknown[]): Promise<TResult>;
    signalWithStart<TSignalArgs extends unknown[]>(signalDef: SignalDefinition<TSignalArgs>, signalArgs: TSignalArgs, workflowArgs: Parameters<T>, options?: WorkflowStartOptions): Promise<WorkflowHandleWithMetadata<T>>;
    private mergeOptions;
}
