import { TaskRequest, TaskResponse } from '../types/performer';
/**
 * IWorker interface that users must implement to handle tasks
 * This mirrors the Go IWorker interface pattern
 */
export interface IWorker {
    /**
     * Validate a task before execution
     * @param task The task request to validate
     * @throws TaskValidationError if task is invalid
     */
    validateTask(task: TaskRequest): Promise<void>;
    /**
     * Handle and execute a task
     * @param task The task request to handle
     * @returns The task response with result
     * @throws TaskExecutionError if task execution fails
     */
    handleTask(task: TaskRequest): Promise<TaskResponse>;
}
/**
 * Abstract base class for Workers that provides common functionality
 * Users can extend this class for convenience
 */
export declare abstract class BaseWorker implements IWorker {
    /**
     * Default validation - can be overridden by subclasses
     * @param task The task request to validate
     */
    validateTask(task: TaskRequest): Promise<void>;
    /**
     * Handle task - can be overridden in two ways:
     * 1. Override this method for full TaskRequest/TaskResponse handling
     * 2. Override handleTask(input) for simplified payload handling
     */
    handleTask(task: TaskRequest): Promise<TaskResponse>;
    /**
     * Simplified task handler - override this for easy development
     * @param input Parsed input from task payload
     * @returns Result to be encoded and returned
     */
    handleSimpleTask(input: any): Promise<any>;
    /**
     * Helper method to create a task response
     * @param taskId The task ID
     * @param result The result as bytes
     * @returns TaskResponse object
     */
    protected createResponse(taskId: string, result: Uint8Array): TaskResponse;
    /**
     * Parse payload from bytes to JavaScript object
     * @param payload The raw payload bytes
     * @returns Parsed object
     */
    protected parsePayload(payload: Uint8Array): any;
    /**
     * Encode result to bytes
     * @param result The result to encode
     * @returns Encoded bytes
     */
    protected encodePayload(result: any): Uint8Array;
    /**
     * Simple start method for one-line usage
     */
    start(port?: number): Promise<void>;
}
/**
 * Simple worker implementation for testing and examples
 */
export declare class EchoWorker extends BaseWorker {
    /**
     * Echo worker that returns the input payload as result
     * @param task The task request
     * @returns The task response with the same payload
     */
    handleTask(task: TaskRequest): Promise<TaskResponse>;
}
//# sourceMappingURL=iWorker.d.ts.map