import * as z from "zod"; export declare const reportTypeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ kind: z.ZodLiteral<"money">; currency: z.ZodLiteral<"SAR">; }, z.core.$strict>, z.ZodObject<{ kind: z.ZodEnum<{ boolean: "boolean"; date: "date"; integer: "integer"; text: "text"; }>; }, z.core.$strict>], "kind">; export type ReportType = z.infer; /** Ordered expressions form a finite typed graph. References only point backwards. */ export declare const reportExpressionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"field">; path: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"literal">; type: z.ZodDiscriminatedUnion<[z.ZodObject<{ kind: z.ZodLiteral<"money">; currency: z.ZodLiteral<"SAR">; }, z.core.$strict>, z.ZodObject<{ kind: z.ZodEnum<{ boolean: "boolean"; date: "date"; integer: "integer"; text: "text"; }>; }, z.core.$strict>], "kind">; value: z.ZodUnion; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"parameter">; name: z.ZodEnum<{ observationAt: "observationAt"; periodEnd: "periodEnd"; periodStart: "periodStart"; }>; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodEnum<{ and: "and"; atMost: "atMost"; daysBetween: "daysBetween"; equal: "equal"; less: "less"; maximum: "maximum"; minimum: "minimum"; or: "or"; subtract: "subtract"; sum: "sum"; }>; left: z.ZodString; right: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"not">; value: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"choose">; condition: z.ZodString; yes: z.ZodString; no: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"bucket">; value: z.ZodString; unit: z.ZodEnum<{ month: "month"; quarter: "quarter"; }>; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"ratio">; numerator: z.ZodString; denominator: z.ZodString; scale: z.ZodNumber; rounding: z.ZodEnum<{ floor: "floor"; halfUp: "halfUp"; }>; zero: z.ZodEnum<{ null: "null"; refuse: "refuse"; }>; }, z.core.$strict>], "op">; export declare const reportDefinitionSchema: z.ZodObject<{ identity: z.ZodObject<{ id: z.ZodString; version: z.ZodNumber; description: z.ZodString; }, z.core.$strict>; scope: z.ZodObject<{ kind: z.ZodEnum<{ company: "company"; product: "product"; }>; classification: z.ZodEnum<{ internal: "internal"; personal: "personal"; restricted: "restricted"; }>; currency: z.ZodLiteral<"SAR">; }, z.core.$strict>; datasets: z.ZodArray; instruments: z.ZodArray; rowKey: z.ZodString; columns: z.ZodArray; currency: z.ZodLiteral<"SAR">; }, z.core.$strict>, z.ZodObject<{ kind: z.ZodEnum<{ boolean: "boolean"; date: "date"; integer: "integer"; text: "text"; }>; }, z.core.$strict>], "kind">; required: z.ZodBoolean; }, z.core.$strict>>; expressions: z.ZodArray; path: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"literal">; type: z.ZodDiscriminatedUnion<[z.ZodObject<{ kind: z.ZodLiteral<"money">; currency: z.ZodLiteral<"SAR">; }, z.core.$strict>, z.ZodObject<{ kind: z.ZodEnum<{ boolean: "boolean"; date: "date"; integer: "integer"; text: "text"; }>; }, z.core.$strict>], "kind">; value: z.ZodUnion; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"parameter">; name: z.ZodEnum<{ observationAt: "observationAt"; periodEnd: "periodEnd"; periodStart: "periodStart"; }>; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodEnum<{ and: "and"; atMost: "atMost"; daysBetween: "daysBetween"; equal: "equal"; less: "less"; maximum: "maximum"; minimum: "minimum"; or: "or"; subtract: "subtract"; sum: "sum"; }>; left: z.ZodString; right: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"not">; value: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"choose">; condition: z.ZodString; yes: z.ZodString; no: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"bucket">; value: z.ZodString; unit: z.ZodEnum<{ month: "month"; quarter: "quarter"; }>; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"ratio">; numerator: z.ZodString; denominator: z.ZodString; scale: z.ZodNumber; rounding: z.ZodEnum<{ floor: "floor"; halfUp: "halfUp"; }>; zero: z.ZodEnum<{ null: "null"; refuse: "refuse"; }>; }, z.core.$strict>], "op">>; selection: z.ZodOptional; }, z.core.$strict>>; time: z.ZodObject<{ timezone: z.ZodLiteral<"Asia/Riyadh">; boundary: z.ZodLiteral<"startInclusiveEndExclusive">; observation: z.ZodLiteral<"periodEnd">; history: z.ZodLiteral<"retainedOnly">; }, z.core.$strict>; selection: z.ZodObject<{ dataset: z.ZodString; predicate: z.ZodOptional; }, z.core.$strict>; calculation: z.ZodObject<{ joins: z.ZodArray; missing: z.ZodEnum<{ allow: "allow"; refuse: "refuse"; }>; aggregates: z.ZodArray; rounding: z.ZodOptional>; value: z.ZodOptional; }, z.core.$strict>>; }, z.core.$strict>>; expressions: z.ZodArray; path: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"literal">; type: z.ZodDiscriminatedUnion<[z.ZodObject<{ kind: z.ZodLiteral<"money">; currency: z.ZodLiteral<"SAR">; }, z.core.$strict>, z.ZodObject<{ kind: z.ZodEnum<{ boolean: "boolean"; date: "date"; integer: "integer"; text: "text"; }>; }, z.core.$strict>], "kind">; value: z.ZodUnion; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"parameter">; name: z.ZodEnum<{ observationAt: "observationAt"; periodEnd: "periodEnd"; periodStart: "periodStart"; }>; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodEnum<{ and: "and"; atMost: "atMost"; daysBetween: "daysBetween"; equal: "equal"; less: "less"; maximum: "maximum"; minimum: "minimum"; or: "or"; subtract: "subtract"; sum: "sum"; }>; left: z.ZodString; right: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"not">; value: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"choose">; condition: z.ZodString; yes: z.ZodString; no: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"bucket">; value: z.ZodString; unit: z.ZodEnum<{ month: "month"; quarter: "quarter"; }>; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"ratio">; numerator: z.ZodString; denominator: z.ZodString; scale: z.ZodNumber; rounding: z.ZodEnum<{ floor: "floor"; halfUp: "halfUp"; }>; zero: z.ZodEnum<{ null: "null"; refuse: "refuse"; }>; }, z.core.$strict>], "op">>; groupBy: z.ZodArray; aggregates: z.ZodArray; rounding: z.ZodOptional>; value: z.ZodOptional; }, z.core.$strict>>; resultExpressions: z.ZodArray; path: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"literal">; type: z.ZodDiscriminatedUnion<[z.ZodObject<{ kind: z.ZodLiteral<"money">; currency: z.ZodLiteral<"SAR">; }, z.core.$strict>, z.ZodObject<{ kind: z.ZodEnum<{ boolean: "boolean"; date: "date"; integer: "integer"; text: "text"; }>; }, z.core.$strict>], "kind">; value: z.ZodUnion; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"parameter">; name: z.ZodEnum<{ observationAt: "observationAt"; periodEnd: "periodEnd"; periodStart: "periodStart"; }>; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodEnum<{ and: "and"; atMost: "atMost"; daysBetween: "daysBetween"; equal: "equal"; less: "less"; maximum: "maximum"; minimum: "minimum"; or: "or"; subtract: "subtract"; sum: "sum"; }>; left: z.ZodString; right: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"not">; value: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"choose">; condition: z.ZodString; yes: z.ZodString; no: z.ZodString; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"bucket">; value: z.ZodString; unit: z.ZodEnum<{ month: "month"; quarter: "quarter"; }>; }, z.core.$strict>, z.ZodObject<{ id: z.ZodString; op: z.ZodLiteral<"ratio">; numerator: z.ZodString; denominator: z.ZodString; scale: z.ZodNumber; rounding: z.ZodEnum<{ floor: "floor"; halfUp: "halfUp"; }>; zero: z.ZodEnum<{ null: "null"; refuse: "refuse"; }>; }, z.core.$strict>], "op">>; }, z.core.$strict>; validation: z.ZodObject<{ empty: z.ZodEnum<{ noEligibleFacilities: "noEligibleFacilities"; refuse: "refuse"; }>; required: z.ZodArray; rowReconcile: z.ZodArray>; reconcile: z.ZodArray>; unavailableFacts: z.ZodArray; }, z.core.$strict>; output: z.ZodObject<{ profile: z.ZodLiteral<"internal.v1">; formats: z.ZodArray>; columns: z.ZodArray; currency: z.ZodLiteral<"SAR">; }, z.core.$strict>, z.ZodObject<{ kind: z.ZodEnum<{ boolean: "boolean"; date: "date"; integer: "integer"; text: "text"; }>; }, z.core.$strict>], "kind">; }, z.core.$strict>>; sort: z.ZodArray; }, z.core.$strict>; authority: z.ZodObject<{ request: z.ZodArray; read: z.ZodArray; release: z.ZodArray; retention: z.ZodObject<{ policy: z.ZodString; years: z.ZodNumber; }, z.core.$strict>; }, z.core.$strict>; }, z.core.$strict>; export type ReportDefinition = z.infer; export type ReportExpression = z.infer; //# sourceMappingURL=reporting.d.ts.map