UNPKG

@axmit/investment-analytics-types

Version:

Types for investment-analytics services

303 lines (302 loc) 10.2 kB
import { Omit, Required } from './typeHelpers'; import { ILongTerm } from './staticStatisticsTypes/longTerm'; export interface IBasicStatisticsInputLocation { postcode: string; } export interface IBasicStatisticsLocation extends IBasicStatisticsInputLocation { districts: string; ceremonialCounty: string; regions: string; } export interface IBasicStatisticsInputPurchase { askingPrice: number; stampDutyType?: string; stampDuty?: number; stampDutyIsOverridden?: boolean; solicitorsFeePercent?: number; sourcingFeePercent?: number; otherFeesPercent?: number; otherPurchaseCosts?: number; } export interface IBasicStatisticsPurchase extends Required<IBasicStatisticsInputPurchase> { solicitorsFee: number; sourcingFee: number; otherFees: number; totalPurchaseCosts: number; } export interface IBasicStatisticsInputTimeline { projectDuration: number; } export interface IBasicStatisticsTimeline extends IBasicStatisticsInputTimeline { } export interface IBasicStatisticsInputUnit { type: string; quantity: number; averageMarketRent?: number; averageMarketPrice?: number; estimatedSize?: number; estimatedBuildCostPerSqFt?: number; } export interface IBasicStatisticsReportUnit extends Required<IBasicStatisticsInputUnit> { buildCost: number; } export interface IBasicStatisticsGrossDevelopmentValue { resiUnitsBMValuation: number; resiUnitsCommercialValuation: number; commUnitsCommercialValuation: number; totalBasedOnBMValuation: number; totalBasedOnCommercialValuation: number; } export interface IBasicStatisticsInputConstruction { typeOfProject: string; estimatedTypeOfConstructionCosts: string; otherDevelopmentFeesPercent?: number; totalDevelopmentCosts?: number; professionalFeesPercent?: number; otherDevelopmentCosts?: number; totalDevelopmentCostsIsOverridden?: boolean; planningCosts?: number; finalSize?: number; finalSizeIsOverridden?: boolean; } export interface IBasicStatisticsConstruction extends Required<IBasicStatisticsInputConstruction> { typeOfConstructionWorks: string; finalNumberOfUnits: number; buildingCostsForAllUnits: number; averageCostsPerUnit: number; averageCostsPerFt: number; professionalFees: number; otherDevelopmentFees: number; } export interface IBasicStatisticsInputFinancing { typeOfFinancing: string; timeForLending: number; ltvAmountForPurchasePercent?: number; loanCost?: number; lendingInterestRate?: number; entryFeePercent?: number; exitFeePercent?: number; brokerFeePercent?: number; otherFinancingCosts?: number; ltvAmountForConstructionPercent?: number; incomeFromProperty?: number; } export interface IBasicStatisticsFinancing extends Required<IBasicStatisticsInputFinancing> { loanAmountForPurchase: number; loanAmountForConstruction: number; incomeFromPropertyDuringProjectTime: number; loanAmountForPurchaseInclOtherPropertyIncome: number; totalFees: number; entryFee: number; exitFee: number; brokerFee: number; purchaseEquity: number; developmentEquity: number; totalMoneyNeeded: number; totalLoanToBeReceived: number; totalOwnCapitalNeeded: number; } export interface IBasicStatisticsInputCashFlowStrategy { rentalVoidsPercent?: number; rentalManagementCostsPercent?: number; rentalMOEPercent?: number; repaymentYearsBMValuation?: number; repaymentYearsCommValuation?: number; } export interface IBasicStatisticsInputLongTerm { appreciationRate?: number; incomeInflationRate?: number; expenseInflationRate?: number; otherSalesCosts?: number; vacancyRate?: number; propertySaleYear?: number; loanPaymentFrequency?: string; loanType?: string; } declare type ExcludedFields = 'repaymentYearsBMValuation' | 'repaymentYearsCommValuation'; export interface ICashFlowStrategy extends Required<Omit<IBasicStatisticsInputCashFlowStrategy, ExcludedFields>> { GDVResiUnits: number; GDVCommUnits: number; totalGDV: number; totalRentsWeeklyResiUnits: number; totalRentsMonthlyResiUnits: number; totalRentsPerYearResiUnits: number; totalRentsWeeklyCommUnits: number; totalRentsMonthlyCommUnits: number; totalRentsPerYearCommUnits: number; totalRentsMonthlyResiAndCommUnits: number; totalRentsPerYearResiAndCommUnits: number; averageRentPerUnitMonthlyResiUnits: number; averageRentPerSqFtResiUnits: number; voidsPerMonth: number; voidsPerYear: number; grossCashFlowPerYear: number; grossCashFlowPerMonth: number; managementCostsPerYear: number; managementCostsPerMonth: number; MOEPerYear: number; MOEPerMonth: number; cashFlowPerYearBeforeMortgage: number; cashFlowPerMonthBeforeMortgage: number; mortgagePaymentBMValuation: number; netCashFlowPerMonthBMValuation: number; netCashFLowPerYearBMValuation: number; mortgagePaymentCommValuation: number; netCashFlowPerMonthCommValuation: number; netCashFLowPerYearCommValuation: number; } interface IBasicStatisticsInputRefinancing { LTV?: number; interestRate?: number; } interface IRefinancing extends Required<IBasicStatisticsInputRefinancing> { repaymentYears: number; loanValue: number; moneyLeftInTheDeal: number; } export interface IRefinancingCommercial extends IRefinancing { initialMoneySpent: number; } export interface IRefinancingBM extends IRefinancing { initialMoneyInvested: number; multipleUsed: number; } export interface IBasicStatisticsInputDivestmentStrategy { legalFeesPercent?: number; otherSalesCostsPercent?: number; marketingCostsPercent?: number; showHomeStagingPercent?: number; } export interface IDivestmentStrategy extends Required<IBasicStatisticsInputDivestmentStrategy> { GDVResiUnits: number; GDVCommUnits: number; totalGDV: number; expectedPricePerUnit: number; totalSalesCosts: number; legalFees: number; marketingCosts: number; showHomeStaging: number; otherSalesCosts: number; netSalesFinalPrice: number; valueAdded: number; netProfit: number; } export interface IReturnMultiples { cashROIAfterRefinancingBMValuation: number; grossYieldBMValuation: number; capRateBMValuation: number; ROICBMValuation: number; annualisedROIC: number; ROIOnInitialInvestedEquity: number; annualisedROI: number; debtCoverageBMValuation: number; commercialToBMValuationMultiple: number; grossYieldCommValuation: number; capRateCommValuation: number; cashROIAfterRefinancingCommercial: number; debtCoverageCommValuation: number; } export interface IBasicStatisticsReport { specialistComment?: string; location: IBasicStatisticsLocation; purchase: IBasicStatisticsPurchase; timeline: IBasicStatisticsTimeline; units: IBasicStatisticsReportUnit[]; grossDevelopmentValue: IBasicStatisticsGrossDevelopmentValue; construction: IBasicStatisticsConstruction; financing: IBasicStatisticsFinancing; cashFlowStrategy: ICashFlowStrategy; refinancing: { commercialValuation: IRefinancingCommercial; BMValuation: IRefinancingBM; }; divestmentStrategy: IDivestmentStrategy; returnMultiples: IReturnMultiples; commercial?: IBasicStatisticsInputCommercial; } export interface IBasicStatisticsInputCommercial { commercialUnitsAmount?: number; totalRentsPerAnnumCommercial?: number; totalValueOfCommercialUnits?: number; } export interface IInputRefinancingBM extends IBasicStatisticsInputRefinancing { repaymentYears?: number; multipleUsed?: number; } export interface IInputRefinancingCommercial extends IBasicStatisticsInputRefinancing { repaymentYears?: number; } export interface IBasicStatisticsInputData { dealName?: string; description?: string; sourceLink?: string; location: IBasicStatisticsInputLocation; purchase: IBasicStatisticsInputPurchase; timeline: IBasicStatisticsInputTimeline; units: IBasicStatisticsInputUnit[]; commercial?: IBasicStatisticsInputCommercial; construction: IBasicStatisticsInputConstruction; financing: IBasicStatisticsInputFinancing; refinancing?: { BMValuation?: IInputRefinancingBM; commercialValuation?: IInputRefinancingCommercial; }; longTermOptions?: IBasicStatisticsInputLongTerm; cashFlowStrategy?: IBasicStatisticsInputCashFlowStrategy; divestmentStrategy?: IBasicStatisticsInputDivestmentStrategy; } export declare enum ECalculationTypes { Default = "default", User = "user", Specialist = "specialist", LongTerm = "longTerm", SalesHistory = "salesHistory", ConfirmedHints = "confirmedHints" } export declare enum EBasicStatisticsReportStatuses { New = "new", Pending = "pending", Success = "success" } export interface IBasicStatisticsReportDocumentCalculation { type: ECalculationTypes; data: IBasicStatisticsReport | ILongTerm | ISalesHistory[] | { url: string; }; } export interface IBasicStatisticsReportDocument { _id: string; status: EBasicStatisticsReportStatuses; calculations: IBasicStatisticsReportDocumentCalculation[]; configuration: IBasicStatisticsInputData; calculationsTypes: ECalculationTypes[]; customData: any; createdAt: Date; calculatedAt: Date; issuerId: string; } export interface ISalesHistory { pricePaid: number; deedDate: Date; postcode: string; typeOfProperty: string; newBuild: boolean; estateType: string; saon: string; paon: string | number; street: string; locality: string; town: string; district: string; county: string; transactionCategory: string; linkedDataUri: string; } export declare type IEnumTpProp<IValueType> = { [key in ECalculationTypes]?: IValueType; }; export interface IBasicStatisticsSpecialistReportCalculations extends IBasicStatisticsReport { } export interface IBasicStatisticsSpecialistDocumentCalculation extends IEnumTpProp<IBasicStatisticsSpecialistReportCalculations> { } export {};