import { type BrandApiClientOptions } from "../api/client.js"; import { type BrandReviewInput, type BrandReviewResult, type BrandReviewScore, type BrandReviewSectionResult, type BrandReviewSelector } from "../api/types.js"; import type { components as BrandReviewComponents } from "../api/schema.brand-review.js"; type RawSectionReview = BrandReviewComponents["schemas"]["SectionReview"]; type RawFieldReview = BrandReviewComponents["schemas"]["FieldReview"]; export interface GenerateBrandReviewOptions { client: BrandApiClientOptions; input: BrandReviewInput; selector: BrandReviewSelector; signal?: AbortSignal; } /** * Conservative overall-score aggregation. The API does NOT return a * top-level overall score; scai derives one as the minimum across * every section + field score so a CI threshold gate reacts to the * worst finding rather than the average (which would hide outliers). * Empty responses default to 5 (no findings → max alignment). */ declare const aggregateOverall: (sectionResults: readonly BrandReviewSectionResult[]) => BrandReviewScore; /** * Generate a Brand Review for the given content against a brand kit. * * Wraps `POST /api/skills/v1/brandreview/generate`. Sync (~5s); no * batching server-side. The CLI's `scai brand review --glob` is a * client-side fan-out over this primitive (`runBrandReview` in * `src/brand/tasks/review.ts`). * * Selector quirks worth knowing: * - `brandKitId` is sent as `brandkitId` (lowercase 'k') over the * wire — the API uses the lowercase spelling. * - `sections` are objects with UUID `sectionId` + optional * `fieldIds`, not section name strings. Name → UUID lookup lands * when the Brand Management read primitives ship. */ export declare const generateBrandReview: (options: GenerateBrandReviewOptions) => Promise; export { aggregateOverall as _aggregateOverall }; export type { RawSectionReview, RawFieldReview };