export type TraitEffect = { type: 'stat-modifier'; stat: string; amount: number; } | { type: 'resource-modifier'; resource: string; amount: number; } | { type: 'grant-tag'; tag: string; } | { type: 'verb-access'; verb: string; } | { type: 'faction-modifier'; faction: string; amount: number; }; export type ArchetypeDefinition = { id: string; name: string; description: string; statPriorities: Record; resourceOverrides?: Record; startingTags: string[]; startingInventory?: string[]; progressionTreeId: string; grantedVerbs?: string[]; }; export type BackgroundDefinition = { id: string; name: string; description: string; statModifiers: Record; startingTags: string[]; startingInventory?: string[]; factionModifiers?: Record; }; export type TraitCategory = 'perk' | 'flaw'; export type TraitDefinition = { id: string; name: string; description: string; category: TraitCategory; effects: TraitEffect[]; incompatibleWith?: string[]; }; export type DisciplineDefinition = { id: string; name: string; description: string; grantedVerb: string; passive: TraitEffect; drawback: TraitEffect; requiredTags?: string[]; }; export type CrossDisciplineTitle = { archetypeId: string; disciplineId: string; title: string; tags: string[]; }; export type ClassEntanglement = { id: string; archetypeId: string; disciplineId: string; description: string; effects: TraitEffect[]; }; /** Current CharacterBuild schema version (mirrors CharacterProfile's PROFILE_VERSION). */ export declare const BUILD_VERSION = 1; export type CharacterBuild = { /** * Schema version for migration. Stamped by serializeBuild/deserializeBuild; * optional so hand-constructed in-memory builds and legacy JSON (which * predates versioning) remain valid. Legacy builds are treated as v1. */ version?: number; name: string; archetypeId: string; backgroundId: string; traitIds: string[]; disciplineId?: string; statAllocations?: Record; portraitRef?: string; }; export type BuildCatalog = { packId: string; statBudget: number; maxTraits: number; requiredFlaws: number; archetypes: ArchetypeDefinition[]; backgrounds: BackgroundDefinition[]; traits: TraitDefinition[]; disciplines: DisciplineDefinition[]; crossTitles: CrossDisciplineTitle[]; entanglements: ClassEntanglement[]; }; export type BuildValidationResult = { ok: boolean; errors: string[]; warnings: string[]; resolvedTitle?: string; resolvedTags: string[]; finalStats: Record; finalResources: Record; }; //# sourceMappingURL=types.d.ts.map