@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
TypeScript
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>;