export type PtkEngine = "DAST" | "IAST" | "SAST" | "SCA" | string; export interface PtkPageLike { evaluate(pageFunction: Function | string, arg?: unknown): Promise; goto?(url: string, options?: object): Promise; waitForTimeout?(ms: number): Promise; } export interface PtkScanOptions { project?: string; engines?: PtkEngine[]; deferStart?: boolean; bootstrapUrl?: string; bootstrapWaitUntil?: "load" | "domcontentloaded" | "networkidle" | string; bootstrapTimeoutMs?: number; bootstrapRetries?: number; bootstrapRetryDelayMs?: number; bootstrap?: { url?: string; waitUntil?: "load" | "domcontentloaded" | "networkidle" | string; timeout?: number; timeoutMs?: number; retries?: number; maxRetries?: number; retryDelay?: number; retryDelayMs?: number; }; resultsDir?: string; artifactMode?: "report" | "debug" | "diagnostic" | "diagnostics" | "full" | "legacy" | string; artifacts?: { mode?: "report" | "debug" | "diagnostic" | "diagnostics" | "full" | "legacy" | string; }; findingsLimit?: number; wait?: { timeoutMs?: number; pollMs?: number; activate?: boolean; bootstrapUrl?: string; }; stop?: { wait?: boolean; immediateAnalysis?: boolean; }; collect?: { beforeStop?: boolean | { progress?: boolean; findings?: boolean; stats?: boolean; }; afterStop?: boolean | { progress?: boolean; findings?: boolean; stats?: boolean; }; export?: boolean; timeoutMs?: number; pollMs?: number; limit?: number; }; engineConfigs?: { DAST?: { allowCaptureWithoutInteraction?: boolean; [key: string]: unknown; }; [key: string]: unknown; }; throwOnError?: boolean; [key: string]: unknown; } export interface PtkStartScanResult { session: unknown; ptk: PtkBridge; } export type StartPtkScan = (options?: { wait?: object; session?: object; scan?: object; scanOptions?: object; [key: string]: unknown; }) => Promise; export interface PtkScanLifecycle { deferred?: boolean; lifecycleStatus?: string | null; scanStarted?: boolean; scanStartedAt?: string | null; scanStartUrl?: string | null; sessionStarted?: boolean; sessionStopped?: boolean; } export interface PtkScanSuccess { ok: true; deferred?: boolean; lifecycleStatus?: string | null; scanStarted?: boolean; scanStartedAt?: string | null; scanStartUrl?: string | null; sessionStarted?: boolean; sessionStopped?: boolean; session?: unknown; beforeStop?: unknown; afterStop?: unknown; stop?: unknown; bootstrap?: unknown; resultsDir?: string | null; journeyResult?: T; } export interface PtkScanFailure { ok: false; deferred?: boolean; lifecycleStatus?: string | null; scanStarted?: boolean; scanStartedAt?: string | null; scanStartUrl?: string | null; sessionStarted?: boolean; sessionStopped?: boolean; session?: unknown; beforeStop?: unknown; afterStop?: unknown; stop?: unknown; bootstrap?: unknown; error?: unknown; stopError?: unknown; resultsDir?: string | null; } export type PtkScanResult = PtkScanSuccess | PtkScanFailure; export interface PtkBridge { sessionId?: string | null; ping(): Promise; waitReady(options?: object): Promise; requestActivation(options?: object): Promise; startSession(options?: object): Promise; endSession(options?: object): Promise; getStats(options?: object): Promise; getFindings(options?: object | number): Promise; getSessionProgress(options?: object): Promise; exportScan(options?: object): Promise; call(method: string, options?: object): Promise; } export class PTKBridge implements PtkBridge { constructor(page: PtkPageLike, options?: object); sessionId?: string | null; ping(): Promise; waitReady(options?: object): Promise; requestActivation(options?: object): Promise; startSession(options?: object): Promise; endSession(options?: object): Promise; getStats(options?: object): Promise; getFindings(options?: object | number): Promise; getSessionProgress(options?: object): Promise; exportScan(options?: object): Promise; call(method: string, options?: object): Promise; } export class PtkBridgeError extends Error { code: string; details?: unknown; } export class PtkScanError extends Error { code?: string; result?: unknown; } export function createPtkBridge(page: PtkPageLike, options?: object): PtkBridge; export function waitForPtk(page: PtkPageLike, options?: object): Promise; export function bootstrapPtkPage(page: PtkPageLike, options?: PtkScanOptions): Promise; export function collectPtkResults(pageOrBridge: PtkPageLike | PtkBridge, session?: unknown, options?: object): Promise; export function writePtkResults(result: unknown, resultsDir: string, options?: object): string[]; export function resolveArtifactMode(options?: object): "report" | "debug"; export function countFindings(payload: unknown): number; export function applyAutomationScanDefaults(options?: PtkScanOptions): PtkScanOptions; export function withPtkScan( page: PtkPageLike, options: PtkScanOptions & { throwOnError: false }, runJourney: (ctx: { page: PtkPageLike; ptk: PtkBridge; session: unknown; startPtkScan: StartPtkScan }) => Promise ): Promise>; export function withPtkScan( page: PtkPageLike, options: PtkScanOptions, runJourney: (ctx: { page: PtkPageLike; ptk: PtkBridge; session: unknown; startPtkScan: StartPtkScan }) => Promise ): Promise>; declare const api: { PTKBridge: typeof PTKBridge; PtkBridgeError: typeof PtkBridgeError; PtkScanError: typeof PtkScanError; createPtkBridge: typeof createPtkBridge; waitForPtk: typeof waitForPtk; bootstrapPtkPage: typeof bootstrapPtkPage; withPtkScan: typeof withPtkScan; collectPtkResults: typeof collectPtkResults; applyAutomationScanDefaults: typeof applyAutomationScanDefaults; writePtkResults: typeof writePtkResults; resolveArtifactMode: typeof resolveArtifactMode; countFindings: typeof countFindings; }; export default api;