import type { Account } from '@solana/kit';
import type { ProgramDeps } from '../../../../types.js';
import type { ProgramConfig } from '../../../../config/types.js';
import type { JobsProgram, Job, Market, Run } from '../JobsProgram.js';
import * as programClient from '@nosana/jobs-program';
import { type MonitorEvent, type SimpleMonitorEvent } from './types.js';
export interface MonitorDeps {
    deps: ProgramDeps;
    config: ProgramConfig;
    client: typeof programClient;
    transformJobAccount: (jobAccount: Account<programClient.JobAccount>) => Job;
    transformRunAccount: (runAccount: Account<programClient.RunAccount>) => Run;
    transformMarketAccount: (marketAccount: Account<programClient.MarketAccount>) => Market;
    mergeRunIntoJob: (job: Job, run: Run) => Job;
}
/**
 * Factory function to create monitor functions
 */
export declare function createMonitorFunctions(get: JobsProgram['get'], runs: JobsProgram['runs'], monitorDeps: MonitorDeps): {
    monitor(): Promise<[AsyncIterable<SimpleMonitorEvent>, () => void]>;
    monitorDetailed(): Promise<[AsyncIterable<MonitorEvent>, () => void]>;
};
//# sourceMappingURL=monitor.d.ts.map