import type { JobContext, JobProcess } from './job.js';
export declare const AGENT_DEFINITION_SYMBOL: unique symbol;
/** @see {@link defineAgent} */
export interface AgentDefinition<ProcessUserData = Record<string, unknown>> {
    entry: (ctx: JobContext<ProcessUserData>) => Promise<void>;
    prewarm?: (proc: JobProcess<ProcessUserData>) => unknown;
}
export type Agent<ProcessUserData = Record<string, unknown>> = AgentDefinition<ProcessUserData>;
/** Helper to check if an object is an agent before running it.
 *
 * @internal
 */
export declare function isAgent(obj: unknown): obj is AgentDefinition;
/**
 * Helper to define an agent according to the required interface.
 * @example A basic agent with entry and prewarm functions
 * ```
 * export default defineAgent({
 *   entry: async (ctx: JobContext) => { ... },
 *   prewarm: (proc: JobProcess) => { ... },
 * })
 * ```
 */
export declare function defineAgent<ProcessUserData = Record<string, unknown>>(agent: AgentDefinition<ProcessUserData>): AgentDefinition<ProcessUserData>;
//# sourceMappingURL=generator.d.ts.map