import type { ReferencesByInstant } from "./references";
export interface Customization extends DecompositionCore {
    description?: ReferencesByInstant;
    input?: boolean;
    linked_other_variables?: string[];
    main_parameters?: string[];
    reference?: ReferencesByInstant;
    variables?: string[];
}
export type CustomizationByName = {
    [name: string]: Customization;
};
export interface Decomposition extends DecompositionCore {
    label: string;
}
export type DecompositionByName = {
    [name: string]: Decomposition;
};
interface DecompositionCore {
    children?: DecompositionReference[];
    description?: ReferencesByInstant;
    hidden?: boolean;
    label?: string;
    last_value_still_valid_on?: string;
    obsolete?: boolean;
    options?: DecompositionOptions[];
    reference?: ReferencesByInstant;
    short_label?: string;
    virtual?: boolean;
}
export type DecompositionOptions = VariablesOptions | WaterfallOptions;
export interface DecompositionReference {
    name: string;
    negate?: boolean;
}
export interface VariablesCustomization {
    hidden?: boolean;
}
export type VariablesOptions = {
    else?: VariablesCustomization;
    then?: VariablesCustomization;
} & {
    [name: string]: boolean[] | string[];
};
export interface WaterfallCustomization {
    children?: DecompositionReference[];
    hidden?: boolean;
}
export interface WaterfallOptions {
    else?: WaterfallCustomization;
    then?: WaterfallCustomization;
    waterfall?: string[];
}
export {};
