import { ComputedRef, Ref, ShallowRef } from 'vue'; import { JobsStatusTrayAdapter, PluginJobCenterSource } from './useJobsStatusTray'; import { GeneratedAnalysisJob, GeneratedAnalysisResult, GeneratedSession, GeneratedAnalysisManifest, PluginJobPathInput, PluginJobPathUpload, PluginJobStagedPartInput, PluginJobStagedPartUploadResult, PluginJobStaging, PluginJobStagingPagination } from '../types/generated-ui'; export type GeneratedAnalysisTransport = (input: RequestInfo | URL, init?: RequestInit) => Promise; export interface GeneratedAnalysisTransportOptions { fetcher?: typeof fetch; getAccessToken?: () => string | null | undefined; } export interface UsePluginJobsOptions { baseUrl: string; transport?: GeneratedAnalysisTransport; storage?: Storage; createId?: () => string; pollInterval?: number; stream?: boolean; streamReconnectDelay?: number; immediate?: boolean; } export type GeneratedAnalysisOptions = UsePluginJobsOptions; export interface PluginJobWaitOptions { signal?: AbortSignal; rejectOnFailure?: boolean; } export interface PluginJobRequestOptions { signal?: AbortSignal; } export interface UsePluginJobsReturn extends PluginJobCenterSource { manifest: ShallowRef; session: ShallowRef; jobs: ShallowRef; latestResult: ComputedRef; isLoading: Ref; isSubmitting: Ref; error: ShallowRef; status: ShallowRef<'idle' | 'initializing' | 'ready' | 'paused' | 'error' | 'disposed'>; initialize: () => Promise; ready: () => Promise; uploadPath: (input: PluginJobPathInput, definitionId?: string) => Promise; uploadStagedPart: (input: PluginJobStagedPartInput) => Promise>; getJobStaging: (job: GeneratedAnalysisJob | string, pagination?: PluginJobStagingPagination) => Promise>; sealJob: (job: GeneratedAnalysisJob | string) => Promise; submit: (definitionId: string, inputs: Record) => Promise; loadResult: (job: GeneratedAnalysisJob) => Promise; resultForJob: (jobId: string) => GeneratedAnalysisResult | null; refreshJobs: () => Promise; refresh: () => Promise; getJob: (jobId: string, options?: PluginJobRequestOptions) => Promise; waitForJob: (job: GeneratedAnalysisJob | string, options?: PluginJobWaitOptions) => Promise; jobsFor: (definitionId: string) => GeneratedAnalysisJob[]; cancelJob: (job: GeneratedAnalysisJob | string) => Promise; deleteJob: (job: GeneratedAnalysisJob | string) => Promise; clearFinishedJobs: (definitionId?: string) => Promise; pause: () => void; resume: () => void; dispose: () => void; /** @deprecated Pass the runtime itself to SDK job UI as its source. */ jobsAdapter: JobsStatusTrayAdapter; } export type UseGeneratedAnalysisReturn = UsePluginJobsReturn; export declare function createGeneratedAnalysisTransport(options?: GeneratedAnalysisTransportOptions): GeneratedAnalysisTransport; export declare function useGeneratedAnalysis(options: GeneratedAnalysisOptions): UseGeneratedAnalysisReturn; /** * Connect a custom plugin frontend to the SDK-owned job lifecycle. * * @example Recommended * ```ts * const jobs = usePluginJobs({ baseUrl: '/api/leaf/jobs' }) * await jobs.initialize() * ``` */ export declare function usePluginJobs(options: UsePluginJobsOptions): UsePluginJobsReturn;