/** * @artemiskit/sdk * Utility types and helper functions */ import type { AdapterConfig, AnyManifest, CaseResult, Expected, RedTeamManifest, RunManifest, Scenario, StressManifest } from '@artemiskit/core'; import type { RedTeamResult, RunResult, StressResult } from '../types'; /** * All supported provider names as a union type */ export type ProviderName = AdapterConfig['provider']; /** * All supported expectation types */ export type ExpectationType = Expected['type']; /** * Union of all SDK result types */ export type AnyResult = RunResult | RedTeamResult | StressResult; /** * Union of all manifest types (re-export from core for convenience) */ export type { AnyManifest }; /** * Extract case results from a RunResult */ export type ExtractRunCases = RunResult['cases']; /** * Extract red team cases from a RedTeamResult */ export type ExtractRedTeamCases = RedTeamResult['manifest']['results']; /** * Extract stress results from a StressResult */ export type ExtractStressResults = StressResult['manifest']['sample_results']; /** * Extract the manifest type from any result type */ export type ExtractManifest = T extends RunResult ? RunManifest : T extends RedTeamResult ? RedTeamManifest : T extends StressResult ? StressManifest : never; /** * Deep partial utility type - makes all nested properties optional */ export type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial; } : T; /** * Partial scenario for incremental construction */ export type PartialScenario = DeepPartial; /** * Make specific fields required */ export type RequireFields = T & Required>; /** * Make specific fields optional */ export type OptionalFields = Omit & Partial>; /** * Strict version of AdapterConfig with all common fields required */ export type StrictAdapterConfig = RequireFields; /** * Type guard for RunResult */ export declare function isRunResult(result: AnyResult): result is RunResult; /** * Type guard for RedTeamResult */ export declare function isRedTeamResult(result: AnyResult): result is RedTeamResult; /** * Type guard for StressResult */ export declare function isStressResult(result: AnyResult): result is StressResult; /** * Type guard for RunManifest * * Uses structural field checks rather than absence-of-field logic for robustness. * Checks for RunManifest-specific fields: 'metrics.success_rate' and 'cases' array. */ export declare function isRunManifestType(manifest: AnyManifest): manifest is RunManifest; /** * Type guard for RedTeamManifest */ export declare function isRedTeamManifestType(manifest: AnyManifest): manifest is RedTeamManifest; /** * Type guard for StressManifest */ export declare function isStressManifestType(manifest: AnyManifest): manifest is StressManifest; /** * Assert that a value is defined (non-null, non-undefined) */ export declare function assertDefined(value: T | null | undefined, message?: string): asserts value is T; /** * Assert that a condition is true */ export declare function assert(condition: boolean, message?: string): asserts condition; /** * Get failed cases from a run result */ export declare function getFailedCases(result: RunResult): CaseResult[]; /** * Get passed cases from a run result */ export declare function getPassedCases(result: RunResult): CaseResult[]; /** * Get cases by tag from a run result */ export declare function getCasesByTag(result: RunResult, tag: string): CaseResult[]; /** * Calculate success rate from a run result */ export declare function calculateSuccessRate(result: RunResult): number; //# sourceMappingURL=index.d.ts.map