@layr-labs/hourglass-performer
Version:
TypeScript SDK for building Hourglass AVS performers
78 lines • 2.65 kB
TypeScript
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