import type { PluginCustomFieldValue, PluginGame, PluginHost, PluginInvocation, PluginSession, PluginPermission, PluginRuntimeContext, PluginGameSourceCandidate, PluginGameSourceDraft, PluginGameSourcePatch, PluginGameSourcePageCapture, PluginGameSourceSearchPayload, PluginGameSourceResolvePayload, PluginGameSourceRefreshPayload, PluginGameSourceParsePagePayload, XLibraryPlugin } from './index'; export type PluginTestNetworkResponse = { status: number; contentType?: string; body: string; }; export type PluginTestCall = { operation: string; payload: unknown; }; export type PluginValidationIssue = { path: Array; code: string; message: string; hint?: string; }; export declare class PluginContractValidationError extends Error { readonly issues: PluginValidationIssue[]; constructor(message: string, issues: PluginValidationIssue[]); } export type PluginTestHostOptions = { plugin?: PluginRuntimeContext['plugin']; permissions?: PluginPermission[]; games?: PluginGame[]; sessions?: PluginSession[]; settings?: Record; storage?: Record; cache?: Record; gameFields?: Record>; importInputs?: Record; network?: (input: { url: string; method?: 'GET' | 'POST'; body?: string; headers?: Record; }) => Promise | PluginTestNetworkResponse; auth?: Record; authRequest?: (authId: string, input: { url: string; method?: 'GET' | 'POST'; body?: string; headers?: Record; }) => Promise | PluginTestNetworkResponse; }; export type PluginTestHost = { host: PluginHost; context: PluginRuntimeContext; calls: ReadonlyArray; notifications: ReadonlyArray<{ title: string; message: string; level: 'info' | 'warn' | 'error'; }>; exportChunks: readonly string[]; diagnostics: ReadonlyArray<{ level: 'debug' | 'info' | 'warn' | 'error'; event: string; message: string; context?: Record; }>; importInputs: ReadonlyMap; storage: ReadonlyMap; cache: ReadonlyMap; setNow(value: Date): void; now(): Date; }; /** * In-memory, deterministic implementation of the public plugin host contract. * Unknown host operations fail closed, so unit tests cannot accidentally rely * on capabilities that production would not grant. */ export declare function createPluginTestHost(options?: PluginTestHostOptions): PluginTestHost; export declare function runPluginInvocation(plugin: XLibraryPlugin, invocation: PluginInvocation, testHost: PluginTestHost): Promise; export declare function assertGameSourceDraft(value: unknown): asserts value is { externalId: string; canonicalUrl: string; name: string; }; export declare function assertGameSourceCandidates(value: unknown): asserts value is { candidates: PluginGameSourceCandidate[]; nextCursor?: string; }; export declare function assertBrowserPageCapture(value: unknown): asserts value is PluginGameSourcePageCapture; export declare function assertGameSourcePatch(value: unknown): asserts value is PluginGameSourcePatch; export declare function runGameSourceSearch(plugin: XLibraryPlugin, payload: PluginGameSourceSearchPayload, testHost: PluginTestHost): Promise<{ candidates: PluginGameSourceCandidate[]; nextCursor?: string; }>; export declare function runGameSourceResolve(plugin: XLibraryPlugin, payload: PluginGameSourceResolvePayload | PluginGameSourceParsePagePayload, testHost: PluginTestHost): Promise; export declare function runGameSourceRefresh(plugin: XLibraryPlugin, payload: PluginGameSourceRefreshPayload, testHost: PluginTestHost): Promise; export declare function createBrowserPageCapture(input?: Partial): PluginGameSourcePageCapture; //# sourceMappingURL=testing.d.ts.map