UNPKG

@arkasuryawan/m2-interfaces

Version:

Squaremetre Data Interfaces

1,798 lines (1,766 loc) 65.6 kB
import mongoose from 'mongoose'; interface OfficesInterface extends AuditInterface { legalName?: string; name?: string; status?: "Active" | "Archived"; externalId?: string; address?: AddressInterface[]; website?: string; email?: string; phone?: string; phone2?: string; } interface OfficesInterfaceServer extends AuditInterface { legalName?: string; name?: string; status?: "Active" | "Archived"; externalId?: string; address?: mongoose.Types.ObjectId[]; website?: string; email?: string; phone?: string; phone2?: string; } declare type TenantAggregatorRequestType = "Requesting" | "Approved" | "Rejected"; interface TenantInterface extends AuditInterface { legalName?: string; name?: string; status?: "Active" | "Archived"; /** * @deprecated The method should not be used move to `tenantTypes` */ tenantType?: TenantType; coa?: string; /** * @abstract New field moving from `tenantType` */ tenantTypes?: string[]; bannerURL?: string; thumbnailURL?: string; externalId?: string; slug?: string; shortDescription?: string; description?: string; address?: AddressInterface[]; website?: string; email?: string; phone?: string; phone2?: string; legalName_lower?: string; name_lower?: string; website_lower?: string; email_lower?: string; accessToken?: string; referenceCode?: string; aggregatorIds?: string[]; aggregators?: TenantInterface[]; integrationTokens: { provider: string; token: any; }[]; packageId?: string; package?: TenantPackageInterface; } interface TenantInterfaceServer extends AuditInterface { legalName?: string; name?: string; status?: "Active" | "Archived"; /** * @deprecated The method should not be used move to `tenantTypes` */ tenantType?: TenantType; coa?: string; /** * @abstract New field moving from `tenantType` */ tenantTypes?: string[]; bannerURL?: string; thumbnailURL?: string; externalId?: string; slug?: string; shortDescription?: string; description?: string; address?: mongoose.Types.ObjectId[]; website?: string; email?: string; phone?: string; phone2?: string; legalName_lower?: string; name_lower?: string; website_lower?: string; email_lower?: string; accessToken?: string; referenceCode?: string; aggregatorIds?: string[]; aggregators?: mongoose.Types.ObjectId[]; integrationTokens: { provider: string; token: any; }[]; packageId?: string; package?: mongoose.Types.ObjectId; } interface TenantPackageInterface extends AuditInterface { name: string; description: string; } interface TenantAggregatorRequestInterface extends AuditInterface { agencyId: string; agency?: TenantInterface; aggregatorId: string; aggregator?: TenantInterface; status: TenantAggregatorRequestType; } interface TenantAggregatorRequestInterfaceServer extends AuditInterface { agencyId: string; agency?: mongoose.Types.ObjectId; aggregatorId: string; aggregator?: mongoose.Types.ObjectId; status: TenantAggregatorRequestType; } interface TenantExcludeProjectInterface extends AuditInterface { tenantId: string; projectId: string; } interface TenantProjectInterface extends AuditInterface { tenantId: string; tenant: TenantInterface; projectId: string; project: ProjectInterface; projectLotIds: string[]; projectLots: ProjectLotInterface[]; } interface TenantProjectInterfaceServer extends AuditInterface { tenantId: string; tenant: mongoose.Types.ObjectId; projectId: string; project: mongoose.Types.ObjectId; projectLotIds: string[]; projectLots: mongoose.Types.ObjectId[]; } interface AgentInterface extends AuditInterface { uid?: string; fullName: string; firstName: string; lastName?: string; mobile?: string; phone?: string; image: string; email: string; dateOfBirth?: string; licenceNumber?: string; licenceExpiryDate?: string; address?: AddressInterface; /** * @deprecated The method should not be used move to `officeId` */ OfficeId?: string; officeId?: string; office?: OfficesInterface; jobTitle?: string; specialistAreas?: string[]; awards?: string[]; employeeType?: EmployeeType; coa?: string; /** * @deprecated The method should not be used move to `tenantTypes` */ tenantType?: TenantType; /** * @abstract New field moving from `tenantType` */ tenantTypes?: TenantType[]; tenantId?: string; tenant?: TenantInterface; aggregatorIds?: string[]; aggregators?: TenantInterface[]; profile?: string; profileVideo?: string; startDate?: string; contractValedDate?: string; showOnWeb: boolean; status: "Active" | "Archived"; customToken?: string; facebookUrl?: string; instagramUrl?: string; linkedInUrl?: string; twitterUrl?: string; keyword?: string; callCalenderUrl?: string; agentLanguages?: string[]; deviceToken?: string[]; integrationTokens?: { provider: string; token: any; }[]; groupId?: string; group?: GroupInterface; /** * @abstract just for JWT */ groupAccess?: GroupAccessInterface[]; } interface AgentInterfaceServer extends AuditInterface { uid?: string; fullName: string; firstName: string; lastName?: string; mobile?: string; phone?: string; image: string; email: string; dateOfBirth?: string; licenceNumber?: string; licenceExpiryDate?: string; address?: mongoose.Types.ObjectId; OfficeId?: string; office?: mongoose.Types.ObjectId; jobTitle?: string; specialistAreas?: string[]; awards?: string[]; employeeType?: EmployeeType; /** * @deprecated The method should not be used move to `tenantTypes` */ tenantType?: TenantType; /** * @abstract New field moving from `tenantType` */ tenantTypes?: TenantType[]; tenantId?: string; tenant?: mongoose.Types.ObjectId; aggregatorIds?: string[]; aggregators?: mongoose.Types.ObjectId[]; profile?: string; profileVideo?: string; startDate?: string; contractValedDate?: string; showOnWeb: boolean; status: "Active" | "Archived"; customToken?: string; facebookUrl?: string; instagramUrl?: string; linkedInUrl?: string; twitterUrl?: string; keyword?: string; callCalenderUrl?: string; agentLanguages?: string[]; deviceToken?: string[]; integrationTokens?: { provider: string; token: any; }[]; groupId?: string; group?: mongoose.Types.ObjectId; /** * @abstract just for JWT */ groupAccess?: mongoose.Types.ObjectId[]; } interface GroupInterface extends AuditInterface { name: string; description: string; tenantType: TenantType; } /** * @abstract TODO: Think letter */ interface GroupAccessContex extends AuditInterface { groupId: string; group: GroupInterface; } interface GroupAccessContexServer extends AuditInterface { groupId: string; group: mongoose.Types.ObjectId; } interface GroupAccessInterface extends AuditInterface { groupId: string; group: GroupInterface; /** * @abstract ModelName -- Menu */ menu: string; /** * @abstract Array of Field Name of model eq: ["name", "address", "date"] * @abstract * for all field ["*"] * @abstract !name => Except ["!name", "!address", "!date"] */ view: string[]; /** * @abstract Array of Field Name of model eq: ["name", "address", "date"] * @abstract * for all field * @abstract !name => Except ["!name", "!address", "!date"] */ create: string[]; /** * @abstract Array of Field Name of model eq: ["name", "address", "date"] * @abstract * for all field * @abstract !name => Except ["!name", "!address", "!date"] */ update: string[]; delete: boolean; exceptField?: string[]; } interface GroupAccessInterfaceServer extends AuditInterface { groupId: string; group: mongoose.Types.ObjectId; /** * @abstract ModelName -- Menu */ menu: string; /** * @abstract Array of Field Name of model eq: ["name", "address", "date"] * @abstract * for all field ["*"] * @abstract !name => Except ["!name", "!address", "!date"] */ view: string[]; /** * @abstract Array of Field Name of model eq: ["name", "address", "date"] * @abstract * for all field * @abstract !name => Except ["!name", "!address", "!date"] */ create: string[]; /** * @abstract Array of Field Name of model eq: ["name", "address", "date"] * @abstract * for all field * @abstract !name => Except ["!name", "!address", "!date"] */ update: string[]; delete: boolean; exceptField?: string[]; } interface GooglePlacesInterface extends AuditInterface { business_status?: string; geometry: { location: { lat: number; lng: number; }; viewport: { northeast: { lat: number; lng: number; }; southwest: { lat: number; lng: number; }; }; }; icon: string; icon_background_color: string; icon_mask_base_uri: string; name: string; opening_hours?: any; photos: [ { height: 1252; html_attributions: string[]; photo_reference: string; width: 1600; } ]; place_id: string; plus_code: any; reference: string; rating?: number; scope: string; types: string[]; vicinity: string; user_ratings_total?: string[]; } interface ProjectGooglePlacesInterface extends AuditInterface { projectId: string; project: ProjectInterface; googlePlacesId: string; googlePlaces: GooglePlacesInterface; } declare const PaymentGatewayOption: string[]; declare type PaymentGatewayType = "SQUAREUP" | "DOKU" | "BRAINTREE" | "TAZAPAY" | "NAB" | "PAYPALL"; declare const SocialMediaName: string[]; declare type SocialMediaNameType = "FACEBOOK" | "INSTAGRAM" | "YOUTUBE" | "LINKEDIN" | "TIKTOK" | "GOOGLE+" | "TWITER" | "PINTEREST"; declare const TemplateTypeData: string[]; declare type TemplateType = "NAVBAR" | "FOOTER" | "SECTION"; interface MenuType { name: any; url: string; subItems?: MenuType[]; class?: string; col?: number; active?: boolean; } interface CustomRelationshipManagement { name?: string; credential?: unknown; active?: boolean; } interface WhiteLabelInterface extends AuditInterface { logo: string; cssRoot: string; menu?: MenuType[]; footer: string; type: "MULTI PROJECTS" | "SINGLE PROJECT"; accessToken: string; domainName: string; proejctUrl?: string; favicon?: string; metaTitle?: string; metaDescription?: string; keyword?: string; bannerUrl?: string; metaImage?: string; menus?: { [code: string]: MenuType[]; }; /** * @abstract New Field for Whitelabel */ tenantId: string; tenant: TenantInterface; headerTracker?: string; footerTracker?: string; /** * @abstract New available on version 1.1.17 */ socialMedia?: SocialMediaInterface[]; darkLogo?: string; lightLogo?: string; pipedriveToken?: string; customerRelationshipManagement?: CustomRelationshipManagement[]; officeTime?: { iconUrl?: string; title?: string; description?: string; }; } interface WhiteLabelInterfaceServer extends AuditInterface { logo: string; cssRoot: string; menu?: MenuType[]; footer: string; type: "MULTI PROJECTS" | "SINGLE PROJECT"; accessToken: string; domainName: string; proejctUrl?: string; favicon?: string; metaTitle?: string; metaDescription?: string; keyword?: string; bannerUrl?: string; metaImage?: string; menus?: { [code: string]: MenuType[]; }; /** * @abstract New Field for Whitelabel */ tenantId: string; tenant: mongoose.Types.ObjectId; headerTracker?: string; footerTracker?: string; /** * @abstract New available on version 1.1.17 */ socialMedia?: mongoose.Types.ObjectId[]; darkLogo?: string; lightLogo?: string; officeTime?: { iconUrl?: string; title?: string; description?: string; }; } /** * @abstract New available on version 1.1.17 */ interface TemplateDesignInterface extends AuditInterface { name: string; imageUrl: string; type: TemplateType; exampleURL?: string; dataType?: "ARRAY" | "OBJECT"; templateDataType: string; } interface SocialMediaInterface { name: SocialMediaNameType; url: string; tile: string; } interface NavbarDataInterface { } interface FooterSectionInterface { title?: string; image?: string; shortDescription?: string; menus?: MenuType[]; listStyle?: "list-none" | "list-disc" | "list-decimal"; listStylePosition?: "list-inside" | "list-outside"; listPosition?: "row" | "Col"; listStyleImage?: string; lineHeight?: number; } interface FooterDataInterface { [code: number]: FooterSectionInterface[]; } interface WhitelabelTemplateInterface { navbarDesignId: string; navbarDesign: TemplateDesignInterface; navbarData: NavbarDataInterface; footerDesignId: string; footerDesign: TemplateDesignInterface; footerData: FooterDataInterface; } interface WhitelabelTemplateInterfaceServer { navbarDesignId: string; navbarDesign: mongoose.Types.ObjectId; navbarData: NavbarDataInterface; footerDesignId: string; footerDesign: mongoose.Types.ObjectId; footerData: FooterDataInterface; } /** * @abstract ===== END update version */ interface WhiteLabelPaymentGatewayInterface extends AuditInterface { whitelableId: string; whiteLabel: WhiteLabelInterface; projectId: string; project: ProjectInterface; paymentGateway: PaymentGatewayType; token: any; } interface WhiteLabelPaymentGatewayInterfaceServer extends AuditInterface { whitelableId: string; whiteLabel: mongoose.Types.ObjectId; projectId: string; project: mongoose.Types.ObjectId; paymentGateway: PaymentGatewayType; token: any; } interface BlogInterface extends AuditInterface { title?: string; slug?: string; shortDescription?: string; description?: string; categoryIds?: string[]; categories?: CategoryInterface[]; status?: StatusType; blogDisplay?: BlogDisplay; bannerURL?: string; thumbnailURL?: string; videoUrl?: string; author?: string; } interface AdditionalInformationContact { name: string; value: string; } interface AdditionalInformationContactServer extends AdditionalInformationContact { } interface ContactInterfaceServer extends AuditInterface { firstName: string; lastName: string; phoneNumber: string; mobileNumber?: string; email: string; source?: SourceList; address: mongoose.Types.ObjectId; canSeeContactAgentIds?: string[]; canSeeContactAgents?: mongoose.Types.ObjectId[]; belongsToAgentId?: string; belongsToAgent?: mongoose.Types.ObjectId; image: string; subscribed: string[]; status: "Active" | "Archived"; } interface ContactInterface extends AuditInterface { firstName: string; lastName: string; phoneNumber: string; mobileNumber?: string; email: string; source?: SourceList; address: AddressInterface; canSeeContactAgentIds?: string[]; canSeeContactAgents?: AgentInterface[]; belongsToAgentId?: string; belongsToAgent?: AgentInterface; image: string; subscribed: string[]; status: "Active" | "Archived"; id?: string; dealId?: string; leadsId?: string; pipedrivePersonId?: string; organization?: string; owner?: string; date?: string; country?: string; birthday?: string; jobTitle?: string; postCode?: string; leadSource?: string; campaign?: string; adset?: string; ads?: string; pageUrl?: string; message?: string; note?: string; extras?: object; whiteLabel?: string; } interface LeadsInterface extends AuditInterface { _id?: string; id?: string; dealId?: string; leadsId?: string; organization?: string; owner?: string; date?: string; firstName?: string; lastName?: string; email?: string; phoneNumber?: string; country?: string; birthday?: string; jobTitle?: string; postCode?: string; leadSource?: string; campaign?: string; adset?: string; ads?: string; pageUrl?: string; message?: string; note?: string; extras?: object; } interface TAAddress { street1: string; street2: string; city: string; state: string; country: string; postalcode: string; address_string: string; phone: string; latitude: number; longitude: number; } interface TARankingData { geo_location_id: number; ranking_string: string; geo_location_name: string; ranking_out_of: number; } interface TAAncestor { abbrv: string; level: string; name: string; location_id: number; latitude: number; longitude: number; timezone: string; email: string; phone: string; website: string; write_review: string; ranking_data: TARankingData; ranking: number; } interface TAAward { award_type: string; year: number; images: { tiny: string; small: string; large: string; }; categories: string[]; display_name: string; } interface TALocalize { name: string; localized_name: string; rating_image_url?: string; value?: string; } interface TALocation extends AuditInterface { location_id: number; name: string; description?: string; web_url?: string; address_obj: TAAddress; ancestors?: TAAncestor[]; rating_image_url?: string; num_reviews?: string; review_rating_count?: { [code: string]: string; }; subratings?: { [code: string]: TALocalize; }; photo_count?: number; see_all_photos?: string; price_level?: string; hours?: { periods: { open: { day: number; time: string; }; close: { day: number; time: string; }; }[]; weekday_text: string[]; subcategory: TALocalize; }; amenities?: string[]; features?: string[]; cuisine?: TALocalize[]; parent_brand?: string; brand?: string; category?: TALocalize; subcategory?: TALocalize[]; groups?: TALocalize[]; styles?: string[]; neighborhood_info?: TALocation[]; trip_types?: TALocalize[]; awards?: TAAward[]; distance?: string; rating?: string; bearing?: string; } interface GdriveMetaData { id: string; name: string; modifiedTime: string; mimeType: string; parents?: string[]; } interface ProjectDriveIntegration extends GdriveMetaData { watch: boolean; provider: string; listDataFile?: GdriveMetaData; interior?: GdriveMetaData; exterior?: GdriveMetaData; floorPlans?: GdriveMetaData; brochure?: GdriveMetaData; collateral?: GdriveMetaData; specifications?: GdriveMetaData; lotsData?: GdriveMetaData; } interface ProjectMainInformation extends AuditInterface { /** * */ status: ProjectStatus; headLine: string; shortDescription: string; content: string; featured: boolean; hideOnWebsite: boolean; featuredByTenant?: { [tenantId: string]: boolean; }; hideOnWebsiteByTenant?: { [tenantId: string]: boolean; }; address: string; addressCordinat: Cordinat | Cordinat[]; suburbId: string; suburb: SuburbInterface; suburbName: string; stateId: string; state: StateInterface; stateName: string; countryId: string; country: CountryInterface; countryName: string; region: RegionInterface; 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; projectOwnerId?: string; projectOwner?: 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[]; driveIntegration?: ProjectDriveIntegration; } interface ProjectMainInformationServer extends AuditInterface { /** * */ status: ProjectStatus; headLine: string; shortDescription: string; content: string; featured: boolean; hideOnWebsite: boolean; featuredByTenant?: { [tenantId: string]: boolean; }; hideOnWebsiteByTenant?: { [tenantId: string]: boolean; }; address: string; addressCordinat: Cordinat | Cordinat[]; suburbId: string; suburb: mongoose.Types.ObjectId; suburbName: string; stateId: string; state: mongoose.Types.ObjectId; stateName: string; countryId: string; country: mongoose.Types.ObjectId; countryName: string; region: mongoose.Types.ObjectId; regionId: string; regionName: string; postcode: string; additionalInformation?: AdditionalInformation[]; taxIncluded?: boolean; tax?: number; tenantIds?: string[]; tenants?: mongoose.Types.ObjectId[]; aggregatorIds?: string[]; aggregators?: mongoose.Types.ObjectId[]; developerId?: string; developerDetail?: mongoose.Types.ObjectId; developer?: mongoose.Types.ObjectId; projectOwnerId?: string; projectOwner?: mongoose.Types.ObjectId; /** * @deprecated The method should not be used move to `projectTypeIds` */ projectTypeId: string; /** * @deprecated The method should not be used move to `projectTypes` */ projectType: mongoose.Types.ObjectId; /** * @abstract New field moving from `projectTypeId` */ projectTypeIds?: string[]; /** * @abstract New field moving from `projectTypes` */ projectTypes?: mongoose.Types.ObjectId[]; autdoorFeature: string[]; indoorFeatures: string[]; driveIntegration?: ProjectDriveIntegration; } interface ProjectInterface extends ProjectImageFileAndOtherInfo { /** * @deprecated The method should not be used */ type: ProjectType; coa: string; /** * @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; }; /** *@abstract New field stating from version 1.1.14 */ fractionalAvailable: boolean; } interface ProjectInterfaceServer extends ProjectImageFileAndOtherInfoServer { /** * @deprecated The method should not be used */ type: ProjectType; coa: string; /** * @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?: mongoose.Types.ObjectId[]; /** * @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; }; /** *@abstract New field stating from version 1.1.14 */ fractionalAvailable: boolean; } interface ProjectDesignInterface extends AuditInterface { projectId: string; project?: ProjectInterface; name: string; shortDescription: string; content?: string; bannerURL?: string; thumbnailURL?: string; gelleries?: string[]; } interface ProjectDesignInterfaceServer extends AuditInterface { projectId: string; project?: mongoose.Types.ObjectId; name: string; shortDescription: string; content?: string; bannerURL?: string; thumbnailURL?: string; gelleries?: string[]; } interface ProjectSummaryInterface extends AuditInterface { unitAvailable: number; sold: number; minPrice: number; maxPrice: number; bed?: { min: number; max: number; }; bath?: { min: number; max: number; }; garage?: { min: number; max: number; }; area?: { min: number; max: number; }; prc?: number; booked?: number; onHold?: number; headLine?: string; value?: any[]; } interface ProjectLotMainInformation extends ProjectImageFileAndOtherInfo { projectId: string; project: ProjectInterface; tenantIds?: string[]; tenants?: TenantInterface[]; 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; cogs?: number; projectUrl?: string; stage?: string; builder?: string; additionalOptions?: AdditionalOption[]; builderId?: string; builderDetail?: TenantInterface; projectDesignId?: string; projectDesign?: ProjectDesignInterface; projectFacadeId?: string; projectFacade?: ProjectFacadeInterface; builders?: string[]; builderIds?: string[]; builderDetails?: TenantInterface[]; projectDesignIds?: string[]; projectDesigns?: ProjectDesignInterface[]; projectFacadeIds?: string[]; projectFacades?: ProjectFacadeInterface[]; } interface ProjectLotMainInformationServer extends ProjectImageFileAndOtherInfoServer { projectId: string; project: mongoose.Types.ObjectId; tenantIds?: string[]; tenants?: mongoose.Types.ObjectId[]; scheme: string; aspect: string; guarantee: string; level?: string; lot?: string; bed?: number; bath?: number; garage: number; internal: number; external: number; total: number; living: number; type: string; price: number; cogs?: number; projectUrl?: string; stage?: string; builder?: string; additionalOptions?: AdditionalOption[]; builderId?: string; builderDetail?: mongoose.Types.ObjectId; projectDesignId?: string; projectDesign?: mongoose.Types.ObjectId; projectFacadeId?: string; projectFacade?: mongoose.Types.ObjectId; builders?: string[]; builderIds?: string[]; builderDetails?: mongoose.Types.ObjectId[]; projectDesignIds?: string[]; projectDesigns?: mongoose.Types.ObjectId[]; projectFacadeIds?: string[]; projectFacades?: mongoose.Types.ObjectId[]; } interface ProjectLotVarianceInterface extends ProjectLotMainInformation { variationPricing: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE" | "FRACTIONAL"; fractionalValue: number; projectImageFileAndOtherInfoByTenants: { [tenantId: string]: ProjectImageFileAndOtherInfo; }; additionalOptions: AdditionalOption[]; projectTypeId: string; projectType: ProjectTypeInterface; builder?: string; builderId?: string; builderDetail?: TenantInterface; projectDesignId?: string; projectDesign?: ProjectDesignInterface; projectFacadeId?: string; projectFacade?: ProjectFacadeInterface; } interface ProjectLotVarianceInterfaceServer extends ProjectLotMainInformationServer { variationPricing: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE" | "FRACTIONAL"; fractionalValue: number; projectImageFileAndOtherInfoByTenants: { [tenantId: string]: ProjectImageFileAndOtherInfo; }; additionalOptions: AdditionalOption[]; projectTypeId: string; projectType: mongoose.Types.ObjectId; builder?: string; builderId?: string; builderDetail?: mongoose.Types.ObjectId; projectDesignId?: string; projectDesign?: mongoose.Types.ObjectId; projectFacadeId?: string; projectFacade?: mongoose.Types.ObjectId; } 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"; fractional?: boolean; fractionalRange?: number; } interface LotVariancesInterfaceServer { projectLotVarianceId: string; projectLotVariance: mongoose.Types.ObjectId; status: ProjectStatus; price: number; landPrice: number; housePrice: number; salesPackNumber: string; availabilityStock: number; additionalInformation?: AdditionalInformation[]; additionalConst?: number; projectTypeId: string; projectType?: mongoose.Types.ObjectId; variationPricing?: "ADD" | "REPLACE" | "MULTIPLE" | "DEVIDE"; fractional?: boolean; fractionalRange?: number; } interface ProjectLotInterface extends ProjectLotMainInformation { /** *@abstract moving from `Projects` */ variationTitle: string; fractionalIds?: string[]; fractionals: ProjectLotInterface[]; /** * @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"; stock: number; /** * Default availability stock is 1 * when sold on variance availability stock 0-1 (100) equal to 100% */ availabilityStock: number; /** * @abstract setup lot available for fractional */ fractional?: number; fractionalRange?: number; projectImageFileAndOtherInfoByTenants: { [tenantId: string]: ProjectImageFileAndOtherInfo; }; /** *@abstract New field stating from version 1.1.14 */ fractionalAvailable: boolean; } interface ProjectLotInterfaceServer extends ProjectLotMainInformationServer { /** *@abstract moving from `Projects` */ variationTitle: string; fractionalIds?: string[]; fractionals: mongoose.Types.ObjectId[]; /** * @deprecated The method should not be used move to `variances` */ projectLotVarianceIds?: string[]; /** * @deprecated The method should not be used move to `variances` */ projectLotVariances?: mongoose.Types.ObjectId[]; variances?: mongoose.Types.ObjectId[]; city: string; estate: string; landPrice: number; housePrice: number; salesPackNumber: string; landRegistration: string; stockType: "NORMAL" | "PARTIAL" | "FRACTIONAL"; stock: number; /** * Default availability stock is 1 * when sold on variance availability stock 0-1 (100) equal to 100% */ availabilityStock: number; /** * @abstract setup lot available for fractional */ fractional?: boolean; fractionalRange?: number; projectImageFileAndOtherInfoByTenants: { [tenantId: string]: ProjectImageFileAndOtherInfo; }; /** *@abstract New field stating from version 1.1.14 */ fractionalAvailable: boolean; } interface ProjectRequestInterface extends AuditInterface { projectId: string; project?: ProjectInterface; agencyId: string; agency?: TenantInterface; developerId: string; developer?: TenantInterface; aggregatorId: string; aggregator?: TenantInterface; } interface ProjectRequestInterfaceServer extends AuditInterface { projectId: string; project?: mongoose.Types.ObjectId; agencyId: string; agency?: mongoose.Types.ObjectId; developerId: string; developer?: mongoose.Types.ObjectId; aggregatorId: string; aggregator?: mongoose.Types.ObjectId; } declare type ProjectStatus = "DRAFT" | "AVAILABLE" | "NOTAVAILABLE" | "DELETED" | "LEASED" | "BOOKED" | "SOLD" | "HOLD" | "CONTRACT" | "PARTIAL"; declare const ProjectStatusOptions: string[]; declare type ProjectType = "Apartment" | "House & Land" | "Land" | "Office" | "Semi/Duplex" | "Block Of Units" | "Townhouse" | "Unit" | "Villa" | "Warehouse" | "Hotel/Leisure" | "Other" | "Motel" | "Resort" | "Retreat" | "Rural"; declare type CurrencyId = "EUR" | "SGD" | "GBP" | "AUD" | "USD" | "IDR" | "THB"; declare const CurrencyIdOptions: string[]; declare type ProjectStatusType = "Off The Plan" | "Completed" | "Under Construction"; declare const ProjectStatusTypeOptions: string[]; interface AdditionalInformation { icon: string; headline: string; content: string; } interface AdditionalOption { icon: string; headline: string; content: string; priceType: string; price: number; } interface RentalRevenueEstimateInterface { headline: string; price: number; occupancy: number; rate: number; percentageCost: number; investmentTime: number; } 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[]; constractionUpdate: MetaDataFileInterface[]; areaGuide: string; presentation: string; news: string[]; podcast: string[]; webinar: string; threesixty: string; threesixtys: { headline: string; link: string; imageUrl: string; }[]; } interface ProjectImageFileAndOtherInfoServer extends ProjectMainInformationServer { videoUrl: string[]; onlineTourUrl: string[]; images: string[]; interior: string[]; exterior: string[]; floorPlans: string[] | MetaDataFileInterface[]; brochure: string[] | MetaDataFileInterface[]; collateral: string[] | MetaDataFileInterface[]; specifications: string[] | MetaDataFileInterface[]; constractionUpdate: MetaDataFileInterface[]; areaGuide: string; presentation: string; news: string[]; podcast: string[]; webinar: string; threesixty: string; threesixtys: { headline: string; link: string; imageUrl: string; }[]; } interface ProjectFacadeInterface extends ProjectDesignInterface { } /** * @deprecated The method should not be used */ interface ProjectTripadvisorInterface extends AuditInterface { projectId: string; project: ProjectInterface | mongoose.Types.ObjectId; tripadvisorId: string; tripadvisor: TALocation; distance?: string; bearing?: string; } declare type ListingType = "Sale" | "Lease" | "Sale & Lease"; declare type ListingStatus = "Appraisal" | "Presentation" | "Pending" | "Available" | "Conditional" | "Unconditional" | "Settled" | "Leased" | "Withdrawn" | "Archived"; declare type MarketingStatusType = "Not Listed" | "Available" | "Under Contract" | "Sold" | "Leased" | "Available Under Contract"; declare type PropertyType = "Residential" | "Rural" | "Commercial" | "Holiday" | "Business"; declare type PropertyCategory = "Apartment" | "Development" | "Factory" | "House" | "Land" | "Office" | "Semi/Duplex" | "Retail" | "Studio" | "Block Of Units" | "Terrace" | "Townhouse" | "Unit" | "Villa" | "Warehouse" | "Showroom" | "Cropping" | "Dairy" | "Farmlet" | "Horticulture" | "Lifestyle" | "Livestock" | "Viticulture" | "Mixed Farming" | "Acreage" | "Hotel/Leisure" | "Medical/Consulting" | "Other" | "BackpackerHostel" | "BedAndBreakfast" | "Campground" | "CaravanHolidayPark" | "ExecutiveRental" | "FarmStay" | "Flat" | "HouseBoat" | "Lodge" | "Motel" | "Resort" | "Retreat" | "SelfContainedCottage" | "ServicedApartment" | "Car Space" | "Accommodation/Tourism" | "Automotive" | "Beauty/Health" | "Food/Hospitality" | "Import/Export/Whole" | "Services" | "Education/Training" | "Franchise" | "Home/Garden" | "Industrial/Manufacturing" | "Leisure/Entertainment" | "Professional" | "Rural" | "Transport/Distribution"; declare type OrederBy = "soldPrice" | "searchPrice" | "address" | "lastModified" | "firstCreated" | "listedDate" | "nextInspectionDate" | "onMarketDate" | "auctionDate" | "soldDate" | "appraisalDate" | "presentationDate" | "status" | "marketingStatus" | "leasedDate"; declare type AuthorityType = "Exclusive" | "Multi List" | "Conjunctional" | "Open" | "Sale by Negotiation"; interface ListingParam { id?: string; page: number; limit: number; orderBy?: string; include?: string; order?: "ASC" | "DESC"; filter?: ListingInterface; select?: string; } interface ListingInterface extends AppraisalInterface { fullAddressDisplay: boolean; addressDisplay?: string; marketingStatus: MarketingStatusType; authority: AuthorityType; listingDate?: string; listingExpiryDate?: string; priceDisplay?: string; price: number; } interface PropectSearchParams { id?: string; page: number; limit: number; orderBy?: string; include?: string; order?: "ASC" | "DESC"; filter: ProspectInterface; select?: string; } interface ProspectInterface extends AuditInterface, AddressInterface { propertyType: PropertyType; propertyCategory: PropertyCategory; listingType: ListingType; interestLevel: "HOT" | "WARM" | "COLD"; status: "Active" | "Archived"; canSeeContactAgentIds?: string[]; canSeeContactAgents?: AgentInterface[]; belongsToAgentId?: string; belongsToAgent?: AgentInterface; officeId?: string; office?: OfficesInterface; ownerIds?: string[]; owners?: ContactInterface[]; tenantIds?: string[]; tenants?: ContactInterface[]; listingId?: string; listing?: ListingInterface; appraisalId?: string; appraisal?: AppraisalInterface; } interface AppraisalInterface extends ProspectInterface { displayName: string; displayName_lower: string; description?: string; description_lower?: string; agentIds?: string[]; agents?: AgentInterface[]; bedrooms?: number; bathrooms?: number; ensuites?: number; toilets?: number; frontage?: number; rearDepth?: number; landSize?: number; livingAreas?: number; buildingSize?: number; garageSpaces?: number; carportSpaces?: number; openCarSpaces?: number; outDoorFeatures?: string[]; inDoorFeatures?: string[]; allowances?: string[]; expectedPrice?: number; rentalEstimate?: number; minPrice: number; maxPrice: number; note: string; note_lower: string; occupancyTitle: "Whole Building" | "Parcial Building"; prospectId?: string; prospect?: ProspectInterface; appraisalDate?: string; appraisalDocuments?: string[]; appraisalDocumentsWithMetaData?: MetaDataFileInterface[]; videoUrls?: string[]; onlineTourUrl?: string; documents?: string[]; documentsWithMetaData?: MetaDataFileInterface[]; images?: string[]; thumbnails?: { small: string; medium: string; large: string; }[]; imagesMetaDataFile?: MetaDataFileInterface[]; floorPlans?: string[]; floorPlansMetaDataFile?: MetaDataFileInterface[]; } interface TestimonialButton { type: string; label: string; } interface TestimonialInterface extends AuditInterface { order: number; imageUrl: string; headline: string; description: string; name: string; role: string; rating: number; status: string; reviewUrl: string; button: TestimonialButton; } interface TestimonialInterfaceServer extends AuditInterface { order: number; imageUrl: string; headline: string; description: string; name: string; role: string; rating: number; status: string; } interface TokenData { token: string; expiresIn: number; } interface DataStoredInToken { _id: string; } interface UserInterface extends AuditInterface { uid: string; name?: string; fullname?: string; fullName: string; displayName?: string; firstName?: string; lastName?: string; email?: string; email_verified?: boolean; emailVerified?: boolean; phoneNumber?: string; isAnonymous?: boolean; photoURL?: string; address?: AddressInterface; status: StatusType; validThrough?: string; slug?: string; birthDay?: string; nationality?: string; socialMedia?: { [code: string]: string; }; wishlist?: string[]; mobile?: string; phone?: string; image: string; dateOfBirth?: string; licenceNumber?: string; licenceExpiryDate?: string; jobTitle?: string; tenantId?: string; tenant?: TenantInterface; profile?: string; profileVideo?: string; startDate?: string; contractValedDate?: string; showOnWeb: boolean; customToken?: string; facebookUrl?: string; instagramUrl?: string; linkedInUrl?: string; twitterUrl?: string; keyword?: string; callCalenderUrl?: string; deviceToken?: string[]; groupId?: string; } interface UserInterfaceServer extends AuditInterface { uid: string; name?: string; fullname?: string; fullName: string; displayName?: string; firstName?: string; lastName?: string; email?: string; email_verified?: boolean; emailVerified?: boolean; phoneNumber?: string; isAnonymous?: boolean; photoURL?: string; address?: mongoose.Types.ObjectId; status: StatusType; validThrough?: string; slug?: string; birthDay?: string; nationality?: string; socialMedia?: { [code: string]: string; }; wishlist?: string[]; mobile?: string; phone?: string; image: string; dateOfBirth?: string; licenceNumber?: string; licenceExpiryDate?: string; jobTitle?: string; tenantId?: string; tenant?: mongoose.Types.ObjectId; profile?: string; profileVideo?: string; startDate?: string; contractValedDate?: string; showOnWeb: boolean; customToken?: string; facebookUrl?: string; instagramUrl?: string; linkedInUrl?: string; twitterUrl?: string; keyword?: string; callCalenderUrl?: string; deviceToken?: string[]; groupId?: string; } interface UserWishlistInterface extends AuditInterface { uid: string; userId: string; user: UserInterface; projectId: string; Project: ProjectInterface; } interface UserWishlistInterfaceServer extends AuditInterface { uid: string; userId: string; user: mongoose.Types.ObjectId; projectId: string; Project: mongoose.Types.ObjectId; } declare type NotificationType = "NEW" | "READED"; interface NotificationInterface extends AuditInterface { headline?: string; description?: string; link?: string; userIdReaded?: string[]; status?: string; type?: string; to?: { type: "USER" | "TENANT"; id: string; }[]; } interface IndustryReportInterface extends AuditInterface { title?: string; file?: string; thumbnailUrl?: string; } declare type TransactionType = "EOI" | "HOLD" | "CONTRACT" | "DEPOSIT" | "FALL OVER" | "SOLD" | "BOOKED" | "ACTIVE"; declare type TransactionCategory = "FRACTIONAL" | "NORMAL" | "PARTIAL"; interface TransactionInterface extends AuditInterface { id: string; projectId: string; project: ProjectInterface; fractionalId?: string; fractional?: ProjectLotInterface; fractionalLabel?: string; lotId?: string; lot?: ProjectLotInterface; lotVarianceId?: string; lotVariance?: ProjectLotVarianceInterface; lastStatus: TransactionType; whiteLabelId?: string; whiteLabel?: WhiteLabelInterface; whiteLabelDomain: string; tenantId?: string; tenant?: TenantInterface; description?: string; clientId: string; client: ContactInterface; realPrice?: number; promoCode?: string; promoValue?: number; pipedriveDealId?: number; pipedriveDeal?: any; promoType?: "Percentage" | "Fix Price"; price: number; expiredDate?: string; deposit: number; currency: CurrencyId; salesRefId?: string; salesRef?: AgentInterface; salesRefIds?: string[]; salesRefs?: AgentInterface[]; leadSource?: string; ownership?: number; transactionType: "FRACTIONAL" | "NORMAL" | "PARTIAL"; paymentStatus?: string; paymentType?: string; financing?: string; note?: string; transactionUrl?: string; } interface TransactionInterfaceServer extends AuditInterface { id: string; projectId: string; project: mongoose.Types.ObjectId; fractionalId?: string; fractional?: mongoose.Types.ObjectId; fractionalLabel?: string; lotId?: string; lot?: mongoose.Types.ObjectId; lotVarianceId?: string; lotVariance?: mongoose.Types.ObjectId; lastStatus: TransactionType; whiteLabelId?: string; whiteLabel?: mongoose.Types.ObjectId; whiteLabelDomain: string; tenantId?: string; tenant: mongoose.Types.ObjectId; description?: string; clientId: strin