import type { ModelId, SupportedModelCatalogEntry } from '../types.js'; export interface ModelDefinition { modelId: string; provider: string; displayName: string; category: string; pricingSourceUrl?: string; pricingNotes?: string; pricing: { usdPerSecond: number | null; usdPer1kInputTokens: number | null; usdPer1kOutputTokens: number | null; }; pricingRules?: PricingRules; inputOptions: { userConfigurable: string[]; pipelineManaged: string[]; fields: Record; }; } export type PricingRules = { basis: 'output_image_count'; usdPerImage: number; } | { basis: 'approximate_per_run'; usdPerImage: number; } | { basis: 'output_image_resolution'; tiers: Array<{ resolution: string; usdPerImage: number; }>; } | { basis: 'output_image_megapixels'; tiers: Array<{ maxMegapixels: number; usdPerImage: number; }>; }; export interface FieldDefinition { type: string; default?: unknown; required?: boolean; nullable?: boolean; enum?: string[]; minimum?: number; maximum?: number; allowAnyString?: boolean; recommendedValues?: string[]; } export type GenerationInputMode = 'aspect_ratio' | 'dimensions' | 'custom_dimensions'; export interface FamilyEntry { replicateModelIds: string[]; defaultReplicateModelId: string | null; generationEnabled: boolean; } export declare function getGenerationInputMode(definition: ModelDefinition): GenerationInputMode; export declare const ASPECT_RATIO_DIMENSIONS: Record; /** * Returns the aspect ratios supported by the given model definition. * - For `aspect_ratio` mode: returns the model's enum. * - For `dimensions` / `custom_dimensions` mode: returns all ratios from ASPECT_RATIO_DIMENSIONS. */ export declare function getSupportedAspectRatios(definition: ModelDefinition): string[]; export interface AspectRatioValidationResult { valid: boolean; supported: string[]; error?: string; } /** * Validates that the given aspect ratio is supported by the model. * Returns a structured result with an error message if invalid. */ export declare function validateAspectRatio(definition: ModelDefinition, ratio: string): AspectRatioValidationResult; /** * Resolves pixel dimensions for a given aspect ratio, applying an optional resolution scale. * The base dimensions are scaled, then rounded to the nearest multiple of 64. */ export declare function resolveDimensions(aspectRatio: string, scale?: number): { width: number; height: number; }; /** * Derives a resolution scale factor from a model's merged options. * Checks for known resolution-related fields (megapixels, size, resolution, image_size) * and returns a scale factor relative to the ~1MP base dimensions. */ export declare function getResolutionScale(definition: ModelDefinition, mergedOptions: Record): number; export declare const DEFINITIONS_BY_MODEL_ID: Record; export declare const FAMILY_REGISTRY: Record; export interface ValidationError { key: string; reason: string; } export interface ValidationResult { valid: boolean; coerced?: unknown; error?: ValidationError; } export declare function validateUserOption(definition: ModelDefinition, key: string, value: unknown): ValidationResult; export declare function getUserConfigurableFields(definition: ModelDefinition): Array<{ name: string; schema: FieldDefinition; }>; export declare function getSupportedModelCatalog(): SupportedModelCatalogEntry[]; /** * Resolve the Replicate model ID to use for generation. * Returns null if generation is not enabled for the family. * Throws if an override is provided but not in the family allowlist. */ export declare function resolveReplicateModelId(family: ModelId, override?: string): string; //# sourceMappingURL=registry.d.ts.map