import type { UpdateTestRunStatsRequest, CompleteTestRunRequest, RunnerResponse, PageResponse, CreatePageStateRequest, PageStateResponse, ActionableItemResponse, PersonaResponse, UseCaseResponse, InputValueResponse, FormResponse, TestInteractionResponse, CreateTestRunRequest, TestRunResponse, CreateTestInteractionRunRequest, TestInteractionRunResponse, CompleteTestInteractionRunRequest, CreateTestSurfaceRunRequest, CompleteTestSurfaceRunRequest, TestSurfaceRunResponse, CreateTestSurfaceBundleRunRequest, CompleteTestSurfaceBundleRunRequest, TestSurfaceBundleRunResponse, TestSurfaceBundleResponse, TestSurfaceBundleSurfaceLinkResponse, TestSurfaceBundleInteractionLinkResponse, TestSurfaceBundleScenarioLinkResponse, TestScenarioResponse, CreateReportEmailRequest, HtmlElementResponse, ScaffoldResponse, FindOrCreateScaffoldRequest, PageHashes, DecomposedPageHashes, ActionableItem, TestInteraction, LegacyTestInteraction, FormInfo, CreateElementIdentityRequest, UpdateElementIdentityRequest, ElementIdentityResponse, PageStatePatternResponse, UiPattern, CreateTestActionRequest, TestActionResponse, CreateTestRunFindingRequest, EnsureTestRunFindingRequest, TestRunFindingResponse, ExpertiseResponse, CreateExpertiseRequest, ExpertiseRuleResponse, CreateExpertiseRuleRequest, TestSurface, TestSurfaceResponse, BatchTestInteractionRunsResponse, BatchTestInteractionItem, BatchTestInteractionResult, ScanBeginRequest, ScanNextRequest, ScanNextResponse, ScanEndRequest, ScanEndResponse, UserData } from "@sudobility/testomniac_types"; type StatusUpdatePayload = { status_update?: string; }; type CompleteRunPayload = CompleteTestRunRequest & StatusUpdatePayload; export declare class ApiClient { private baseUrl; private apiKey; private surfacesCache; private interactionsCache; private static SURFACES_CACHE_TTL_MS; private static INTERACTIONS_CACHE_TTL_MS; constructor(baseUrl: string, apiKey: string); invalidateSurfacesCache(): void; private request; private get; private post; private put; private patch; getPendingTestRun(): Promise; getTestRun(testRunId: number): Promise; getUserData(testEnvironmentId: number): Promise; updateTestRunStats(testRunId: number, stats: UpdateTestRunStatsRequest & StatusUpdatePayload): Promise; completeTestRun(testRunId: number, payload: CompleteRunPayload): Promise; createTestRun(request: CreateTestRunRequest): Promise; createTestInteractionRun(request: CreateTestInteractionRunRequest): Promise; completeTestInteractionRun(testInteractionRunId: number, payload: CompleteTestInteractionRunRequest & StatusUpdatePayload): Promise; completeTestInteractionRunBatch(ids: number[], payload: { status?: string; errorMessage?: string; status_update?: string; }): Promise; clearSupersededFindings(testInteractionRunId: number): Promise; getRunner(id: number): Promise; getPage(id: number): Promise; findOrCreatePage(runnerId: number, relativePath: string, testEnvironmentId?: number): Promise; markRequiresLogin(pageId: number): Promise; markIsLoginPage(pageId: number): Promise; getEntityCredential(credentialId: number): Promise<{ id: number; entityId: string; authProvider: string; loginUrl: string | null; email: string | null; username: string | null; password: string | null; twoFactorCode: string | null; }>; uploadScreenshot(imageBytes: Uint8Array, filename: string): Promise<{ path: string; thumbnailPath: string; }>; getPagesByRunner(runnerId: number): Promise; createDiscoveredPages(request: { testEnvironmentId: number; pages: Array<{ relativePath: string; sourcePagePath?: string; sourceLabel?: string; isPublic?: boolean; }>; }): Promise>; getDiscoveredPages(testEnvironmentId: number): Promise>; createPageVisit(request: { testRunId: number; testEnvironmentId: number; relativePath: string; status: string; redirectPath?: string; requiresLogin?: boolean; errorMessage?: string; }): Promise<{ id: number; testRunId: number; testEnvironmentId: number; relativePath: string; status: string; redirectPath: string | null; requiresLogin: boolean | null; errorMessage: string | null; createdAt: string | null; }>; getPageVisits(testRunId: number): Promise>; getPageState(id: number): Promise; getPageStates(pageId: number): Promise; getPageStatesBatch(pageIds: number[]): Promise>; createPageState(params: CreatePageStateRequest): Promise; updatePageStateDecomposedHashes(pageStateId: number, decomposedHashes: DecomposedPageHashes): Promise; findMatchingPageState(pageId: number, hashes: PageHashes, sizeClass: string): Promise; insertActionableItems(htmlElementId: number, items: ActionableItem[]): Promise; getItemsByPageState(pageStateId: number): Promise; getItemsByHtmlElement(htmlElementId: number): Promise; getActionableItem(id: number): Promise; createPersona(productId: number, title: string, description: string): Promise; getPersonasByProduct(productId: number): Promise; createUseCase(personaId: number, title: string, description: string): Promise; getUseCasesByPersona(personaId: number): Promise; createInputValue(useCaseId: number, fieldSelector: string, fieldName: string, value: string): Promise; getInputValuesByUseCase(useCaseId: number): Promise; getTestScenario(id: number): Promise; getTestScenarioSequencesByScenario(scenarioId: number): Promise>; getTestScenarioSequence(id: number): Promise<{ id: number; testScenarioId: number; testEnvironmentId: number; } | null>; getSequenceTestInteractions(sequenceId: number): Promise>; /** * Full environment row. Needed for `base_url`: a sequence test run without a * scanUrl makes the executor resolve relative startingPaths against bare * "http://localhost" (no port). */ getTestEnvironment(id: number): Promise<{ id: number; baseUrl: string; productId: number; } | null>; getSequenceRun(id: number): Promise<{ id: number; testScenarioSequenceId: number; status: string; } | null>; completeSequenceRun(id: number, payload: { status?: string; }): Promise; insertForm(pageStateId: number, form: FormInfo, formType?: string): Promise; getFormsByPageState(pageStateId: number): Promise; insertTestInteraction(runnerId: number, testInteraction: TestInteraction | LegacyTestInteraction, testSurfaceId?: number, testEnvironmentId?: number): Promise; /** * Fetch the runner's interactions. When `bundleRunId` is given, the API * returns only the scan's working set (interactions with runs in that bundle * run, closed under dependency chains, plus all navigation interactions) — * a few dozen rows instead of the runner's entire (often >10k) set. */ getTestInteractionsByRunner(runnerId: number, bundleRunId?: number): Promise; invalidateInteractionsCache(): void; /** * Load a single interaction by id (full row, incl. stepsJson). Used by the * executor instead of bulk-downloading the runner's entire interaction set * just to read one row. Returns null if the interaction does not exist. */ getTestInteraction(testInteractionId: number): Promise; createTestAction(params: CreateTestActionRequest): Promise; getTestActionsByCase(testInteractionId: number): Promise; getTestInteractionActions(testInteractionId: number): Promise; createTestRunFinding(params: CreateTestRunFindingRequest): Promise; ensureTestRunFinding(params: EnsureTestRunFindingRequest): Promise; ensureTestRunFindingBatch(items: EnsureTestRunFindingRequest[]): Promise; getExpertises(): Promise; getExpertiseRules(expertiseId: number): Promise; createExpertise(params: CreateExpertiseRequest): Promise; createExpertiseRule(params: CreateExpertiseRuleRequest): Promise; insertTestSurface(runnerId: number, testSurface: TestSurface, testEnvironmentId?: number): Promise; getTestSurfacesByRunner(runnerId: number): Promise; getTestSurface(id: number): Promise; createReportEmail(params: CreateReportEmailRequest): Promise; findOrCreateHtmlElement(html: string, hash: string): Promise; findOrCreateScaffold(params: FindOrCreateScaffoldRequest): Promise; findOrCreateScaffoldBatch(items: FindOrCreateScaffoldRequest[]): Promise; getScaffolds(runnerId: number): Promise; updateScaffoldScreenshot(scaffoldId: number, screenshotPath: string): Promise; linkPageStateScaffolds(pageStateId: number, scaffoldIds: number[]): Promise; findMatchingPageStateDecomposed(pageId: number, decomposedHashes: DecomposedPageHashes, sizeClass: string): Promise; findMatchingPageStateByContentBody(pageId: number, fixedBodyHash: string, sizeClass: string): Promise; insertPageStatePatterns(pageStateId: number, patterns: UiPattern[]): Promise; getPageStatePatterns(pageStateId: number): Promise; findOrCreateElementIdentity(params: CreateElementIdentityRequest): Promise; getElementIdentitiesByRunner(runnerId: number): Promise; updateElementIdentity(id: number, params: UpdateElementIdentityRequest): Promise; ensureTestSurfaceBundle(runnerId: number, title: string, uid?: string): Promise; ensureTestSurface(runnerId: number, testSurface: TestSurface, testEnvironmentId?: number): Promise; ensureTestSurfaceWithRun(params: { runnerId: number; testEnvironmentId?: number; testSurface: TestSurface; testSurfaceBundleId: number; testSurfaceBundleRunId: number; }): Promise<{ surface: TestSurfaceResponse; surfaceRun: TestSurfaceRunResponse; }>; ensureTestInteraction(runnerId: number, testSurfaceId: number, testInteraction: TestInteraction, testEnvironmentId?: number, existingTestInteractionId?: number): Promise; ensureTestInteractionBatch(items: BatchTestInteractionItem[]): Promise; retireTestInteractions(testInteractionIds: number[]): Promise; reconcileTestInteractions(params: { testSurfaceId: number; desiredKeys: string[]; dependencyTestInteractionId?: number; }): Promise<{ retiredIds: number[]; }>; ensureBundleSurfaceLink(testSurfaceBundleId: number, testSurfaceId: number): Promise; ensureBundleInteractionLink(testSurfaceBundleId: number, testInteractionId: number): Promise; ensureBundleScenarioLink(testSurfaceBundleId: number, testScenarioId: number): Promise; claimTestRun(testRunId: number, runnerInstanceId: string, runnerInstanceName: string): Promise; createTestSurfaceRun(request: CreateTestSurfaceRunRequest): Promise; completeTestSurfaceRun(id: number, payload: CompleteTestSurfaceRunRequest): Promise; completeTestSurfaceRunBatch(ids: number[], payload: { status?: string; }): Promise; createTestSurfaceBundleRun(request: CreateTestSurfaceBundleRunRequest): Promise; getTestSurfaceBundleRun(id: number): Promise; completeTestSurfaceBundleRun(id: number, payload: CompleteTestSurfaceBundleRunRequest): Promise; getTestInteractionsByTestSurface(testSurfaceId: number, includeInactive?: boolean): Promise; getTestSurfacesByBundle(bundleId: number): Promise; getTestInteractionsByBundle(bundleId: number): Promise; getTestScenariosByBundle(bundleId: number): Promise; getOpenTestInteractionRuns(testSurfaceRunId: number, includeBlocked?: boolean): Promise; getOpenTestInteractionRunsBatch(testSurfaceRunIds: number[]): Promise; getOpenTestSurfaceRuns(bundleRunId: number): Promise; getRunnerState(bundleRunId: number): Promise<{ openSurfaceRuns: TestSurfaceRunResponse[]; pendingInteractionRuns: BatchTestInteractionRunsResponse; }>; scanBegin(params: ScanBeginRequest): Promise; scanNext(params: ScanNextRequest): Promise; scanEnd(params: ScanEndRequest): Promise; } export declare function getApiClient(baseUrl?: string, apiKey?: string): ApiClient; export {}; //# sourceMappingURL=client.d.ts.map