UNPKG

@arkasuryawan/gp-interfaces

Version:

Geonet Properties Data Interfaces

304 lines (303 loc) 8.93 kB
import { AuditInterface, BlogInterface, Cordinat, CountryInterface, MetaDataFileInterface, ProjectTypeInterface, RegionInterface, StateInterface, SuburbInterface } from "."; import { TenantInterface } from "./tenant.interface"; import { TALocation } from "./tripadvisor"; export declare type ProjectStatus = "DRAFT" | "AVAILABLE" | "NOTAVAILABLE" | "DELETED" | "LEASED" | "BOOKED" | "SOLD" | "HOLD" | "CONTRACT" | "PARTIAL"; export declare const ProjectStatusOptions: string[]; export declare type ProjectType = "Apartment" | "House & Land" | "Land" | "Office" | "Semi/Duplex" | "Block Of Units" | "Townhouse" | "Unit" | "Villa" | "Warehouse" | "Hotel/Leisure" | "Other" | "Motel" | "Resort" | "Retreat" | "Rural"; export declare type CurrencyId = "EUR" | "SGD" | "GBP" | "AUD" | "USD" | "IDR" | "THB"; export declare const CurrencyIdOptions: string[]; export declare type ProjectStatusType = "Off The Plan" | "Completed" | "Under Construction"; export declare const ProjectStatusTypeOptions: string[]; export interface AdditionalInformation { icon: string; headline: string; content: string; } export interface AdditionalOption { icon: string; headline: string; content: string; priceType: string; price: number; } export interface RentalRevenueEstimateInterface { headline: string; price: number; occupancy: number; rate: number; percentageCost: number; investmentTime: number; } export interface ProjectSummaryInterface { unitAvailable: number; sold: number; minPrice: number; bed: { min: number; max: number; }; bath: { min: number; max: number; }; garage: { min: number; max: number; }; area: { min: number; max: number; }; } export interface ProjectMainInformation extends AuditInterface { /** * */ status: ProjectStatus | string[]; headLine: string; shortDescription: string; content: string; featured: boolean; hideOnWebsite: boolean; address: string; addressCordinat: Cordinat | Cordinat[]; suburbId: string; suburb: SuburbInterface | string; suburbName: string; stateId: string; state: StateInterface | string; stateName: string; countryId: string; country: CountryInterface | string; countryName: string; region: RegionInterface | string; regionId: string; regionName: string; postcode: string; additionalInformation?: AdditionalInformation[]; taxIncluded?: boolean; tax?: number; tenantIds?: string[]; tenants?: TenantInterface[]; aggregatorIds?: string[]; aggregators?: TenantInterface[]; developerId?: string; developerDetail?: TenantInterface; developer?: TenantInterface; /** * @deprecated The method should not be used move to `projectTypeIds` */ projectTypeId: string; /** * @deprecated The method should not be used move to `projectTypes` */ projectType: ProjectTypeInterface; /** * @abstract New field moving from `projectTypeId` */ projectTypeIds?: string[]; /** * @abstract New field moving from `projectTypes` */ projectTypes?: ProjectTypeInterface[]; autdoorFeature: string[]; indoorFeatures: string[]; } export interface ProjectImageFileAndOtherInfo extends ProjectMainInformation { videoUrl: string[]; onlineTourUrl: string[]; images: string[]; interior: string[]; exterior: string[]; floorPlans: string[] | MetaDataFileInterface[]; brochure: string[] | MetaDataFileInterface[]; collateral: string[] | MetaDataFileInterface[]; specifications: string[] | MetaDataFileInterface[]; areaGuide: string; presentation: string; news: string[]; podcast: string[]; webinar: string; threesixty: string; } export interface ProjectLotMainInformation extends ProjectImageFileAndOtherInfo { projectId: string; project: ProjectInterface; scheme: string; aspect: string; guarantee: string; level?: string; lot?: string; bed?: number; bath?: number; garage: number; internal: number; external: number; total: number; living: number; /** * @deprecated The method should not be used */ type: string; price: number; /** * @abstract new field moving from developer */ builder: string; } export interface ProjectInterface extends ProjectImageFileAndOtherInfo { /** * @deprecated The method should not be used */ type: ProjectType; /** * @abstract Image URl */ sellingPoint: string; url: string; landingUrl: string; currency: CurrencyId; preSaleType: "Percentage" | "Fix Price"; preSalePercentage?: number; preSalePrice?: number; percentageDeposit: number; /** * @deprecated The method should not be used */ aboutProject: string; /** * @deprecated The method should not be used */ step1?: string; /** * @deprecated The method should not be used */ step2?: string; /** * @deprecated The method should not be used */ step3?: string; /** * @deprecated The method should not be used */ step4?: string; /** * @deprecated The method should not be used */ blogIds?: string[]; /** * @deprecated The method should not be used */ blogs?: BlogInterface[]; projectStatus?: ProjectStatusType; totalUnit?: number; startDate?: string; completionDate?: string; /** * @deprecated The method should not be used move to `projectlot` */ variationTitle: string; /** * @deprecated The method should not be used will be move to `projectvariance` */ variationPricing: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE"; rentalRevenueEstimate?: RentalRevenueEstimateInterface[]; /** * @abstract when `true` if sold ? no information on front end */ hidePriceOnSold?: boolean; summary?: ProjectSummaryInterface; /** * @abstract New field for summary by `proejctid` */ summaryByProjectTypeIds?: { [projectTypeId: string]: ProjectSummaryInterface; }; /** * @abstract Interfce only not for data to model * */ searchPrice?: number; searchPriceMin?: number; searchPriceMax?: number; /** * @abstract New field for summary by proejctid */ projectImageFileAndOtherInfoByTenants: { [tenantId: string]: ProjectImageFileAndOtherInfo; }; } export interface LotVariancesInterface { projectLotVarianceId: string; projectLotVariance: ProjectLotVarianceInterface; status: ProjectStatus; price: number; landPrice: number; housePrice: number; salesPackNumber: string; availabilityStock: number; additionalInformation?: AdditionalInformation[]; additionalConst?: number; projectTypeId: string; projectType?: ProjectTypeInterface; variationPricing?: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE"; } export interface ProjectLotInterface extends ProjectLotMainInformation { /** *@abstract moving from `Projects` */ variationTitle: string; /** * @deprecated The method should not be used move to `variances` */ projectLotVarianceIds?: string[]; /** * @deprecated The method should not be used move to `variances` */ projectLotVariances?: ProjectLotVarianceInterface[]; variances?: LotVariancesInterface[]; city: string; estate: string; landPrice: number; housePrice: number; salesPackNumber: string; landRegistration: string; stockType: "NORMAL" | "PARTIAL" | "FRACTIONAL"; /** * Default availability stock is 1 * when sold on variance availability stock 0-1 (100%) */ availabilityStock: number; projectImageFileAndOtherInfoByTenants: { [tenantId: string]: ProjectImageFileAndOtherInfo; }; } export interface ProjectLotVarianceInterface extends ProjectLotMainInformation { variationPricing: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE"; projectImageFileAndOtherInfoByTenants: { [tenantId: string]: ProjectImageFileAndOtherInfo; }; additionalOptions: AdditionalOption[]; projectTypeId: string; projectType: ProjectTypeInterface; } export interface ProjectRequestInterface extends AuditInterface { projectId: string; project?: ProjectInterface; agencyId: string; agency?: TenantInterface; developerId: string; developer?: TenantInterface; aggregatorId: string; aggregator?: TenantInterface; } /** * @deprecated The method should not be used */ export interface ProjectTripadvisorInterface extends AuditInterface { projectId: string; project: ProjectInterface; tripadvisorId: string; tripadvisor: TALocation; distance?: string; bearing?: string; }