export type Division = 'IDENTIFICATION' | 'ENVIRONMENT' | 'DATA' | 'PROCEDURE' | 'COMPONENT' | 'AUDIT'; export interface NodeLocation { line: number; col: number; length: number; source: string; } export interface ParseWarning { code: string; message: string; hint: string; loc: NodeLocation; } export interface ReclProgram { identification: IdentificationDivision; environment: EnvironmentDivision; data: DataDivision; component: ComponentDivision; audit?: AuditDivision; procedure: ProcedureDivision; parseWarnings: ParseWarning[]; } export interface IdentificationDivision { programId: string; author?: string; dateWritten?: string; pageTitle: string; description?: string; favicon?: string; language?: string; programIdSet: boolean; pageTitleSet: boolean; } export interface PaletteKeyError { raw: string; loc: NodeLocation; } export interface EnvironmentDivision { viewport: 'RESPONSIVE' | 'FIXED-WIDTH' | 'FULL-WIDTH'; colorMode: 'DARK' | 'LIGHT' | 'SYSTEM'; fontPrimary?: string; fontSecondary?: string; language: string; palette: Record; paletteKeyErrors: PaletteKeyError[]; styleBlock?: string; plugins: string[]; suppressDefaultCss: boolean; } export type DataLevel = 1 | 5 | 10; export interface DataField { level: DataLevel; name: string; pic: string; value: string; valueSet: boolean; comment?: string; children: DataField[]; loc?: NodeLocation; } export interface DataDivision { workingStorage: DataField[]; items: DataField[]; } export interface AcceptsParam { name: string; required: boolean; } export interface ComponentDef { name: string; accepts: AcceptsParam[]; body: DisplayStatement; loc?: NodeLocation; } export interface ComponentDivision { components: ComponentDef[]; } export type AuditAuthorKind = 'Human' | 'AI compositor' | 'AI agent'; export interface AuditChangeEntry { date: string; subject: string; authorKind: AuditAuthorKind; note: string; loc?: NodeLocation; } export interface AuditDivision { createdBy: string; createdDate: string; changeLog: AuditChangeEntry[]; } export type DisplayElement = 'HEADING-1' | 'HEADING-2' | 'HEADING-3' | 'PARAGRAPH' | 'LABEL' | 'CODE-BLOCK' | 'BUTTON' | 'LINK' | 'IMAGE' | 'DIVIDER' | 'SECTION' | 'NAVIGATION' | 'FOOTER' | 'CARD-LIST' | 'INPUT' | 'BANNER' | 'TABLE' | 'STAT-GRID' | 'COPY'; export interface DisplayClause { key: string; value: string; } export interface DisplayStatement { element: DisplayElement | string; value?: string; intent?: string; clauses: DisplayClause[]; children: DisplayStatement[]; loc?: NodeLocation; } export interface ProcedureSection { name: string; statements: DisplayStatement[]; loc?: NodeLocation; } export interface ProcedureDivision { sections: ProcedureSection[]; hasStopRun: boolean; } export declare function parse(source: string): ReclProgram; //# sourceMappingURL=rcl.d.ts.map