UNPKG

@openfisca/json-model

Version:

Library to handle informations extracted in JSON or YAML format from OpenFisca parameters, variables, etc

204 lines (203 loc) 7.4 kB
import type { Metadata } from "./metadata"; import type { Reference, ReferencesByInstant } from "./references"; export interface AmountBracket extends BracketBase { amount: { [instant: string]: NumberValue | "expected"; }; } export interface AmountBracketAtInstant extends BracketAtInstantBase { amount: NumberValue | "expected"; } export interface BooleanParameter extends ValueParameterBase { type: ValueType.Boolean; values: { [instant: string]: MaybeBooleanValue | "expected"; }; } export interface BooleanValue extends ValueBase { value: boolean; } export type Bracket = AmountBracket | RateBracket; export type BracketAtInstant = AmountBracketAtInstant | RateBracketAtInstant; export interface BracketAtInstantBase { threshold: MaybeNumberValue | "expected"; } export interface BracketBase { threshold: { [instant: string]: MaybeNumberValue | "expected"; }; } export type BracketValueAtInstant = MaybeNumberValue | NumberValue | "expected"; export interface LinearAverageRateScaleParameter extends ScaleParameterBase { brackets: RateBracket[]; rate_unit?: string; type: ScaleType.LinearAverageRate; } export interface MarginalAmountScaleParameter extends ScaleParameterBase { amount_unit?: string; brackets: AmountBracket[]; type: ScaleType.MarginalAmount; } export interface MarginalRateScaleParameter extends ScaleParameterBase { brackets: RateBracket[]; rate_unit?: string; type: ScaleType.MarginalRate; } export interface MaybeBooleanValue extends ValueBase { value: boolean | null; } export interface MaybeNumberValue extends ValueBase { value: number | null; } export interface MaybeStringArrayValue extends ValueBase { value: Array<string | null> | null; } export interface MaybeStringByStringValue extends ValueBase { value: { [key: string]: string | null; } | null; } export interface NodeParameter extends ParameterBase { children?: { [id: string]: Parameter; }; class: ParameterClass.Node; order?: string[]; unit?: string; } export interface NumberValue extends ValueBase { value: number; } export interface NumberParameter extends ValueParameterBase { type: ValueType.Number; values: { [instant: string]: MaybeNumberValue | "expected"; }; } export type OfficialJournalDatesByInstant = { [instant: string]: string | null; }; export type Parameter = NodeParameter | ScaleParameter | ValueParameter; export interface ParameterBase { class: ParameterClass; description?: string; label_en?: string; documentation?: string; documentation_start?: boolean; file_path?: string; id?: string; inflator?: string; inflator_reference?: ReferencesByInstant; last_value_still_valid_on?: string; name?: string; notes?: ReferencesByInstant; official_journal_date?: OfficialJournalDatesByInstant; parent?: NodeParameter; reference?: ReferencesByInstant; referring_variables?: string[]; short_label?: string; short_label_en?: string; title?: string; titles?: string[]; } export declare enum ParameterClass { Node = "Node", Scale = "Scale", Value = "Value" } export interface ParameterWithAncestors { parameter: Parameter; ancestors: NodeParameter[]; } export interface RateBracket extends BracketBase { base?: { [instant: string]: NumberValue | "expected"; }; rate: { [instant: string]: MaybeNumberValue | "expected"; }; } export interface RateBracketAtInstant extends BracketAtInstantBase { base?: NumberValue | "expected"; rate: MaybeNumberValue | "expected"; } export type ScaleAtInstant = BracketAtInstant[]; export type ScaleParameter = LinearAverageRateScaleParameter | MarginalAmountScaleParameter | MarginalRateScaleParameter | SingleAmountScaleParameter; export interface ScaleParameterBase extends ParameterBase { brackets: AmountBracket[] | RateBracket[]; class: ParameterClass.Scale; ipp_csv_id?: string | { [bracketName: string]: string; }; threshold_unit?: string; type: ScaleType; } export declare enum ScaleType { LinearAverageRate = "linear_average_rate", MarginalAmount = "marginal_amount", MarginalRate = "marginal_rate", SingleAmount = "single_amount" } export interface SingleAmountScaleParameter extends ScaleParameterBase { amount_unit?: string; brackets: AmountBracket[]; type: ScaleType.SingleAmount; } export interface StringArrayParameter extends ValueParameterBase { type: ValueType.StringArray; values: { [instant: string]: MaybeStringArrayValue; }; } export interface StringByStringParameter extends ValueParameterBase { type: ValueType.StringByString; values: { [instant: string]: MaybeStringByStringValue; }; } export type ValueAtInstant = BooleanValue | MaybeBooleanValue | MaybeNumberValue | MaybeStringArrayValue | MaybeStringByStringValue | NumberValue | "expected"; export interface ValueBase { reference?: Reference[]; unit?: string; value?: unknown; } export type ValueParameter = BooleanParameter | NumberParameter | StringArrayParameter | StringByStringParameter; export interface ValueParameterBase extends ParameterBase { class: ParameterClass.Value; ipp_csv_id?: string; type: ValueType; unit?: string; values: { [instant: string]: ValueAtInstant; }; } export declare enum ValueType { Boolean = "boolean", Number = "number", StringArray = "string_array", StringByString = "string_by_string" } export declare function accessParameterFromIds(parameter: Parameter, ids: string[]): [Parameter, unknown]; export declare function bracketsFromScaleByInstant(scaleByInstant: { [instant: string]: ScaleAtInstant; }): AmountBracket[] | RateBracket[]; export declare function improveParameter(parameter: Parameter, parent?: NodeParameter | undefined | null, ids?: string[]): void; export declare function isAmountScaleParameter(parameter: ScaleParameter): boolean; export declare function isRateScaleParameter(parameter: ScaleParameter): boolean; export declare function isVectorialNodeParameter(node: NodeParameter): boolean; export declare function iterParameterAncestors(parameter?: Parameter | undefined | null): Generator<Parameter, void, unknown>; export declare function mergeParameters(parameters: Parameter[]): { [id: string]: Parameter; }; export declare function mergeReferences(references1: Reference[] | undefined | null, references2: Reference[] | undefined | null): Reference[] | undefined; export declare function newParameterRepositoryUrl(metadata: Metadata, parameter: Parameter): string | undefined; export declare function parameterLastReviewOrChange(parameter: Parameter): string | undefined; export declare function parameterWithoutChildren(parameter: Parameter): Parameter; export declare function patchParameter<ParameterType extends Parameter>(parameter: ParameterType, patch: { [key: string]: unknown; }): ParameterType; export declare function scaleByInstantFromBrackets(brackets: Bracket[]): { [instant: string]: ScaleAtInstant; }; export declare function scaleParameterUsesBase(parameter: ScaleParameter): boolean; export declare function walkParameters(parameter: Parameter, depthFirst?: boolean): Generator<Parameter, void, unknown>;