import type { PythonAstFunctionDef } from "./ast";
import type { Metadata } from "./metadata";
import type { PeriodUnit } from "./periods";
import type { ReferencesByInstant } from "./references";
export interface Formula {
    ast?: PythonAstFunctionDef;
    documentation?: string;
    file_path: string;
    parameters?: string[];
    source_code?: string;
    start_line_number: number;
    stop_line_number: number;
    variables?: string[];
}
export interface InputByVariableName {
    [variableName: string]: VariableValues;
}
export interface Percentile {
    bucket_count: number;
    bucket_mean: number;
    bucket_stdev: number;
    bucket_sum: number;
    count_above_upper_bound: number;
    lower_bound: number;
    mean_above_upper_bound: number;
    ratio_count_above_upper_bound: number;
    sum_above_upper_bound: number;
    upper_bound: number;
}
export interface Variable {
    aggregate?: {
        deciles?: Percentile[];
        year: number;
    };
    default_value: VariableValue;
    definition_period: PeriodUnit;
    description?: ReferencesByInstant;
    documentation?: string;
    entity: string;
    file_path: string;
    formulas?: {
        [date: string]: Formula | null;
    };
    input?: boolean;
    label?: string;
    last_value_still_valid_on?: string;
    linked_other_variables?: string[];
    name: string;
    obsolete?: boolean;
    possible_values?: {
        [name: string]: string;
    };
    reference?: ReferencesByInstant;
    referring_variables?: string[];
    set_input?: string;
    start_line_number: number;
    stop_line_number: number;
    unit?: string;
    short_label?: string;
    value_type: "bool" | "date" | "Enum" | "float" | "int" | "str";
}
export interface VariableByName {
    [name: string]: Variable;
}
export type VariableValue = boolean | number | string;
export type VariableValues = boolean[] | number[] | string[];
export declare function getVariableFormula({ formulas }: Variable, date: string): Formula | null;
export declare function getVariableLatestFormulaDate({ formulas, }: Variable): string | null;
export declare function newFormulaRepositoryUrl(metadata: Metadata, formula: Formula): string | undefined;
export declare function newVariableRepositoryUrl(metadata: Metadata, variable: Variable): string | undefined;
