import { type BountyTarget, type BugBountyResult } from '../core/bugBounty.js'; type Currency = string; export type SubmissionRunStatus = 'queued' | 'fuzzing' | 'chaining' | 'grading' | 'formatting' | 'submitted' | 'rewarded' | 'failed' | 'timeout'; export interface SubmissionJob { id: string; target: BountyTarget; status: SubmissionRunStatus; priority: number; createdAt: number; startedAt?: number; completedAt?: number; retries: number; maxRetries: number; timeout: number; result?: BugBountyResult; error?: string; payout?: number; } export interface OrchestratorConfig { maxConcurrent: number; maxQueueSize: number; defaultTimeout: number; maxRetries: number; ec2Instances: number; fuzzIterations: number; autoSubmit: boolean; platforms: ('hackerone' | 'bugcrowd' | 'direct')[]; currency: Currency; persistJobs: boolean; persistPath: string; } export interface OrchestratorStats { totalQueued: number; totalRunning: number; totalCompleted: number; totalFailed: number; totalRewarded: number; totalPayout: number; averageRuntimeMs: number; submissionsByPlatform: Record; submissionsBySeverity: Record; } export declare const BOUNTY_TARGETS: BountyTarget[]; export declare class BugBountyOrchestrator { private readonly config; private readonly queue; private readonly completed; private readonly failed; private running; private processing; private stats; private onJobUpdate?; constructor(config?: Partial); private emptyStats; /** Enqueue a single bounty target for processing */ enqueue(target: BountyTarget, priority?: number): string; /** Enqueue all pre-loaded bounty targets */ enqueueAll(targets?: BountyTarget[]): string[]; /** Process the queue with threaded parallel workers */ processQueue(maxConcurrent?: number): Promise; /** Process a single job through the full pipeline */ private processJob; private generatePrimitives; private generateSyntheticPrimitives; private simulateStage; /** Get orchestrator statistics */ getStats(): OrchestratorStats; /** Get all completed submissions */ getCompleted(): SubmissionJob[]; /** Get all failed submissions */ getFailed(): SubmissionJob[]; /** Get queue status */ getQueueStatus(): { queued: number; running: number; completed: number; failed: number; }; /** Set callback for job updates */ onUpdate(cb: (job: SubmissionJob) => void): void; /** Persist current queue + completed state to disk for crash recovery */ saveJobs(): void; /** Restore jobs from disk after a crash/restart */ private restoreJobs; /** Auto-save after each job completes */ private autoSave; /** Reset orchestrator */ reset(): void; } export declare function runBugBountyPipeline(config?: Partial & { targets?: BountyTarget[]; }): Promise<{ stats: OrchestratorStats; submissions: SubmissionJob[]; failures: SubmissionJob[]; }>; export declare const submissionOrchestrator: { create: (config?: Partial) => BugBountyOrchestrator; run: typeof runBugBountyPipeline; targets: BountyTarget[]; }; export {}; //# sourceMappingURL=submissionOrchestrator.d.ts.map