import type React from 'react'; import type { FiasAddressElement } from './models/FiasAddressElement.js'; import type { FiasAddress } from './models/FiasAddress.js'; export type FiasId = string; export interface FiasEntity { id: string; fiasId: FiasId; level?: string; parentFiasId?: FiasId; parentFiasIds?: FiasId[]; postalCode?: string; okato?: string; oktmo?: string; ifnsfl?: string; ifnsul?: string; } export interface FiasAddressObject extends FiasEntity { name: string; official: string; abbreviation: string; code?: string; } export interface FiasStead extends FiasEntity { number: string; liveStatus: FiasLiveStatuses; } export interface FiasHouse extends FiasEntity { estateStatus: FiasEstateStatuses; structureStatus: FiasStructureStatuses; number?: string; structureNumber?: string; buildingNumber?: string; } export interface GarHouse extends FiasEntity { houseNum?: string; houseType?: GarHouseType; addNum1?: string; addType1?: GarHouseAddType; addNum2?: string; addType2?: GarHouseAddType; } export declare enum GarHouseType { None = "None", Hold = "Hold", House = "House", HouseHold = "HouseHold", Garage = "Garage", Building = "Building", Mine = "Mine", Structure = "Structure", Construction = "Construction", Litera = "Litera", Housing = "Housing", Basement = "Basement", BoilerRoom = "BoilerRoom", Cellar = "Cellar", UnfinishedConstruction = "UnfinishedConstruction" } export declare enum GarHouseAddType { None = "None", Structure = "Structure", Construction = "Construction", Litera = "Litera", Housing = "Housing" } export declare enum FiasDivision { Administrative = "administrative", Municipal = "municipal" } export declare enum FiasSchema { Fias = "fias", Gar = "gar" } export declare enum FiasSuggestLevels { House = "House", Room = "Room" } export interface FiasRoom extends FiasEntity { flatNumber: string; flatType: FiasFlatType; liveStatus: FiasLiveStatuses; flatFiasId?: FiasId; roomNumber?: string; roomType?: FiasRoomType; } export declare enum FiasEstateStatuses { None = "None", Hold = "Hold", House = "House", HouseHold = "HouseHold", Garage = "Garage", Building = "Building", Mine = "Mine", Basement = "Basement", BoilerRoom = "BoilerRoom", Cellar = "Cellar" } export declare enum FiasStructureStatuses { Structure = "Structure", Construction = "Construction", Liter = "Liter", None = "None" } export declare enum FiasLiveStatuses { active = "active", inactive = "inactive" } export declare enum FiasFlatType { None = 0, Placement = 1, Apartment = 2, Office = 3, Room = 4, WorkArea = 5, Stock = 6, ShoppingRoom = 7, Workshop = 8, Pavilion = 9, Basement = 10, BoilerRoom = 11, Cellar = 12, Garage = 13, CarPlace = 14 } export declare enum FiasRoomType { None = 0, Room = 1, Placement = 2 } export type FiasObject = FiasAddressObject | FiasStead | FiasHouse | GarHouse | FiasRoom; export declare enum FiasFields { region = "region", district = "district", municipaldistrict = "municipaldistrict", city = "city", intracityarea = "intracityarea", urbansettlement = "urbansettlement", settlement = "settlement", planningstructure = "planningstructure", street = "street", stead = "stead", house = "house", garhouse = "garhouse", room = "room", apartment = "apartment" } export declare enum FiasExtraFields { postalcode = "postalcode" } export type FiasAllFields = FiasFields | FiasExtraFields; export type FiasAddressFields = { [key in FiasFields]?: FiasAddressElement; }; export type FiasAdditionalFields = { [key in FiasExtraFields]?: string; }; export interface FiasValue { address: FiasAddressValue; addressString: string; addressErrors: FiasAddressErrors; fiasId: FiasId; postalCode: string; country?: FiasCountry; foreignAddress?: string; addressWithOriginalFields?: FiasAddressValue; division?: FiasDivision; } export type FiasAddressValue = { [key in FiasFields]?: { name: string; text: string; data?: FiasObject; }; }; export type FiasAddressResponse = { [key in FiasFields]?: FiasObject; }; export type FiasSearchResponse = FiasAddressResponse[]; export interface FiasVerifyResponse { address: FiasAddressResponse; isValid: boolean; invalidLevel?: FiasFields; } export type FiasAddressErrors = { [key in FiasAllFields]?: React.ReactNode; }; export declare enum FiasFormValidation { Error = "Error", Warning = "Warning", None = "None" } export interface FiasSearchOptions { fiasId?: FiasId; searchText?: string; field?: FiasFields; parentFiasId?: FiasId; limit?: number; fullAddress?: boolean; directParent?: boolean; } export interface FiasAPIProvider { search: (options: FiasSearchOptions) => Promise>; searchCountry: (options: { prefix: string; limit?: number; sources?: string[]; }) => Promise>; verify: (address: FiasAddress) => Promise>; baseUrl?: string; version?: string; division: FiasDivision; schema: FiasSchema; suggestUnknownParts?: boolean; suggestUnknownLevel?: FiasSuggestLevels; } export interface FiasAPIResult { success: boolean; data?: Data; error?: Error; } export type FiasFetchFn = (uri: string, options: { method?: 'GET' | 'POST'; body?: string; }) => Promise; export interface FiasFetchResponse { ok: boolean; status: number; statusText: string; json: () => Promise; } export type FiasFieldValue = Field extends FiasFields ? FiasAddressElement : Field extends FiasExtraFields.postalcode ? string : never; export interface FiasValidationFunc { (value: FiasFieldValue | undefined, field: Field, fiasError: React.ReactNode): React.ReactNode; } export interface FiasFieldSettings { visible?: boolean; validation?: boolean | FiasValidationFunc; } export type FiasFieldsSettings = { [Field in FiasAllFields]?: FiasFieldSettings; }; export interface FiasCountry { shortName?: string; fullName?: string; code: string; } export interface FiasModalProps { onClose?: () => any; onSave?: () => any; disabledFormSave?: boolean; isLoading?: boolean; }