/** * Agentic QE v3 - Contract Testing Domain Plugin * Integrates the contract testing domain into the kernel */ import { DomainName, DomainEvent, Result } from '../../shared/types/index.js'; import type { EventBus, MemoryBackend, AgentCoordinator } from '../../kernel/interfaces.js'; import { BaseDomainPlugin } from '../domain-interface.js'; import { FilePath } from '../../shared/value-objects/index.js'; import type { ApiContract, ProviderVerificationReport, PreReleaseReport, ValidationReport, SchemaValidationResult, OpenAPIValidationResult, CompatibilityReport, BreakingChange, MigrationGuide, SchemaDefinition, GraphQLValidationResult, SchemaComparisonResult, IContractValidationService, IApiCompatibilityService, ISchemaValidationService } from './interfaces.js'; import { ContractTestingCoordinator, CoordinatorConfig, WorkflowStatus } from './coordinator.js'; import { ContractValidatorConfig } from './services/contract-validator.js'; import { ApiCompatibilityConfig } from './services/api-compatibility.js'; import { SchemaValidatorConfig } from './services/schema-validator.js'; /** * Plugin configuration options */ export interface ContractTestingPluginConfig { coordinator?: Partial; contractValidator?: Partial; apiCompatibility?: Partial; schemaValidator?: Partial; } /** * Contract Testing Domain API */ export interface ContractTestingAPI { registerContract(contract: ApiContract): Promise>; verifyAllConsumers(providerName: string, providerUrl: string): Promise>; preReleaseCheck(providerName: string, newContractPath: FilePath): Promise>; importFromOpenAPI(specPath: FilePath): Promise>; exportToOpenAPI(contractId: string): Promise>; validateContract(contract: ApiContract): Promise>; validateRequest(request: unknown, schema: SchemaDefinition): Promise>; validateResponse(response: unknown, schema: SchemaDefinition): Promise>; validateOpenAPI(spec: string): Promise>; compareVersions(oldContract: ApiContract, newContract: ApiContract): Promise>; isBackwardCompatible(oldContract: ApiContract, newContract: ApiContract): Promise>; getBreakingChanges(oldContract: ApiContract, newContract: ApiContract): Promise>; generateMigrationGuide(breakingChanges: BreakingChange[]): Promise>; validateJsonSchema(data: unknown, schema: object): Promise>; validateGraphQLSchema(schema: string): Promise>; compareSchemas(oldSchema: SchemaDefinition, newSchema: SchemaDefinition): Promise>; inferSchema(samples: unknown[]): Promise>; } /** * Extended API with internal access */ export interface ContractTestingExtendedAPI extends ContractTestingAPI { /** Get the internal coordinator */ getCoordinator(): ContractTestingCoordinator; /** Get the contract validator service */ getContractValidator(): IContractValidationService; /** Get the API compatibility service */ getApiCompatibility(): IApiCompatibilityService; /** Get the schema validator service */ getSchemaValidator(): ISchemaValidationService; /** Get active workflows */ getActiveWorkflows(): WorkflowStatus[]; } /** * Contract Testing Domain Plugin * Provides API contract validation, consumer-driven contracts, and schema validation */ export declare class ContractTestingPlugin extends BaseDomainPlugin { private readonly agentCoordinator; private coordinator; private contractValidator; private apiCompatibility; private schemaValidator; private readonly pluginConfig; constructor(eventBus: EventBus, memory: MemoryBackend, agentCoordinator: AgentCoordinator, config?: ContractTestingPluginConfig); get name(): DomainName; get version(): string; get dependencies(): DomainName[]; /** * Get the domain's public API */ getAPI(): T; protected onInitialize(): Promise; protected onDispose(): Promise; protected subscribeToEvents(): void; protected onEvent(event: DomainEvent): Promise; private registerContract; private verifyAllConsumers; private preReleaseCheck; private importFromOpenAPI; private exportToOpenAPI; private validateContract; private validateRequest; private validateResponse; private validateOpenAPI; private compareVersions; private isBackwardCompatible; private getBreakingChanges; private generateMigrationGuide; private validateJsonSchema; private validateGraphQLSchema; private compareSchemas; private inferSchema; private handleImpactAnalysis; private handleQualityGate; private handlePreRelease; private ensureInitialized; private handleError; private trackSuccessfulOperation; private trackFailedOperation; } /** * Factory function to create a ContractTestingPlugin */ export declare function createContractTestingPlugin(eventBus: EventBus, memory: MemoryBackend, agentCoordinator: AgentCoordinator, config?: ContractTestingPluginConfig): ContractTestingPlugin; //# sourceMappingURL=plugin.d.ts.map