export interface ScanRequest { agentDescription: string; securitySchema?: { allowedCapabilities: string[]; forbiddenCapabilities: string[]; sensitiveData: string[]; authenticationRequiredFor: string[]; }; agentConfig?: { type: 'simulated' | 'api' | 'openai' | 'anthropic'; description: string; apiUrl?: string; apiKey?: string; headers?: Record; model?: string; systemPrompt?: string; }; auditOptions?: { attackMode?: 'template' | 'llm' | 'hybrid'; attackCount?: number; attackCategories?: string[]; attackIds?: string[]; includeCustomTemplates?: boolean; }; webhookConfig?: { format?: string; inputField?: string; outputField?: string; authType?: string; authHeader?: string; method?: 'POST' | 'GET'; }; mode?: 'sync' | 'async'; notify?: boolean; } export interface AttackResult { attack: { id?: string; attack: string; targetedRule: string; name?: string; category?: string; severity?: string; }; agentResponse: string; analysis: { passed: boolean; severity: string; violations: { rule: string; description: string; severity: string; }[]; reason: string; analysisPath?: string; failureType?: string | null; }; } export interface ScanResult { sessionId: string; score: number; results: { attacks: AttackResult[]; totalViolations: number; highSeverityCount: number; mediumSeverityCount: number; lowSeverityCount: number; overallPassed: boolean; }; agentDescription: string; createdAt: string; reportUrl?: string; } export interface AsyncJobResponse { jobId: string; status: 'running' | 'completed' | 'failed'; message?: string; score?: number; session?: ScanResult; error?: string; } export interface CreditsResponse { plan: string; monthlyCredits: number; creditsUsed: number; remainingCredits: number; } export interface ApiError { success: false; error: string; code?: string; remaining?: number; } export interface SetupValidationResponse { organizationId: string; organizationName: string; shieldId: string; shieldName: string; shieldKeyRequired: boolean; gatewayMode: boolean; } export declare class BotGuardApi { private apiUrl; private apiKey; constructor(apiKey: string, apiUrl?: string); private request; startScan(req: ScanRequest): Promise; getScanStatus(jobId: string): Promise; pollUntilDone(jobId: string, intervalMs?: number, maxWaitMs?: number): Promise; getCredits(): Promise; validateSetup(input: { organizationId?: string; shieldId: string; shieldKey?: string; }): Promise; }