@uwmd/core 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts +4 -2
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +3 -2
- package/dist/browser.js.map +1 -1
- package/dist/capital-stack.d.ts +116 -0
- package/dist/capital-stack.d.ts.map +1 -0
- package/dist/capital-stack.js +227 -0
- package/dist/capital-stack.js.map +1 -0
- package/dist/defaults.d.ts +18 -0
- package/dist/defaults.d.ts.map +1 -1
- package/dist/defaults.js +64 -0
- package/dist/defaults.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/packs/index.d.ts +1 -0
- package/dist/packs/index.d.ts.map +1 -1
- package/dist/packs/index.js +3 -0
- package/dist/packs/index.js.map +1 -1
- package/dist/packs/mixed-use.d.ts +3 -0
- package/dist/packs/mixed-use.d.ts.map +1 -0
- package/dist/packs/mixed-use.js +204 -0
- package/dist/packs/mixed-use.js.map +1 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +79 -0
- package/dist/protocol.js.map +1 -1
- package/dist/validator.d.ts.map +1 -1
- package/dist/validator.js +246 -6
- package/dist/validator.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/browser.d.ts
CHANGED
|
@@ -45,7 +45,7 @@ export type { DCFDerivation } from './dcf.js';
|
|
|
45
45
|
export { evaluateCalc, parseExpression, evaluate, BUILTINS, CalcError, calcError } from './calc/index.js';
|
|
46
46
|
export type { CalcValue, Builtin, CalcErrorCode } from './calc/index.js';
|
|
47
47
|
export { quantizeDecimal, resolveRoundTo, DEFAULT_ROUND_TO, DEFAULT_ROUND_TO_BY_UNIT, MAX_ROUND_TO, } from './calc/index.js';
|
|
48
|
-
export { MULTIFAMILY_PACK, OFFICE_PACK, RETAIL_PACK, INDUSTRIAL_PACK, SELF_STORAGE_PACK, HOSPITALITY_PACK, SENIOR_HOUSING_PACK, STUDENT_HOUSING_PACK, LAND_PACK, getPackForAssetClass, emitFromAst, emitExcelFormula, emitCalcExcelFormula, ExcelEmitError, } from './packs/index.js';
|
|
48
|
+
export { MULTIFAMILY_PACK, OFFICE_PACK, RETAIL_PACK, INDUSTRIAL_PACK, SELF_STORAGE_PACK, HOSPITALITY_PACK, SENIOR_HOUSING_PACK, STUDENT_HOUSING_PACK, LAND_PACK, MIXED_USE_PACK, getPackForAssetClass, emitFromAst, emitExcelFormula, emitCalcExcelFormula, ExcelEmitError, } from './packs/index.js';
|
|
49
49
|
export type { ExcelEmitOptions } from './packs/index.js';
|
|
50
50
|
export { loadModuleManifest, createModuleRegistry, getModuleCalculationsForAssetClass, ModuleRegistryError, } from './modules.js';
|
|
51
51
|
export type { ModuleRegistry, LoadModuleOptions, CreateModuleRegistryOptions } from './modules.js';
|
|
@@ -77,7 +77,7 @@ export { rankGaps } from './refinement.js';
|
|
|
77
77
|
export type { RankGapsOptions, RankGapsResult, RankedGap, OutputSensitivity, NonMonotonicWarning, } from './refinement.js';
|
|
78
78
|
export { inferGaps, summarizeGaps, readGapsContent } from './gaps.js';
|
|
79
79
|
export type { GapItem, GapSummary, GapsContent, GapReason, InferGapsOptions } from './gaps.js';
|
|
80
|
-
export { getAssetClassDefaults, getDefaultRange, listDefaultedFields, MULTIFAMILY_DEFAULTS, OFFICE_DEFAULTS, RETAIL_DEFAULTS, INDUSTRIAL_DEFAULTS, SELF_STORAGE_DEFAULTS, HOSPITALITY_DEFAULTS, SENIOR_HOUSING_DEFAULTS, STUDENT_HOUSING_DEFAULTS, LAND_DEFAULTS, } from './defaults.js';
|
|
80
|
+
export { getAssetClassDefaults, getDefaultRange, listDefaultedFields, MULTIFAMILY_DEFAULTS, OFFICE_DEFAULTS, RETAIL_DEFAULTS, INDUSTRIAL_DEFAULTS, SELF_STORAGE_DEFAULTS, HOSPITALITY_DEFAULTS, SENIOR_HOUSING_DEFAULTS, STUDENT_HOUSING_DEFAULTS, LAND_DEFAULTS, MIXED_USE_DEFAULTS, } from './defaults.js';
|
|
81
81
|
export type { AssetClassDefaults, DefaultRange, DefaultUnit } from './defaults.js';
|
|
82
82
|
export { getExprDependencies, extractDependencyGraph } from './calc/dependencies.js';
|
|
83
83
|
export type { DependencyGraph, ExtractDependencyGraphOptions } from './calc/dependencies.js';
|
|
@@ -92,4 +92,6 @@ export type { InitOptions } from './init.js';
|
|
|
92
92
|
export { CORE_PACKAGE_NAME, CORE_VERSION } from './version.js';
|
|
93
93
|
export { UW_RECEIPT_VERSION, SUPPORTED_RECEIPT_VERSIONS, ROLLUP_FUNCTIONS, PORTFOLIO_ROLLUP_SECTION, verifyRollup, evaluateRollup, validateRollupAggregate, UW_LITE_CANONICALIZATION, UW_LITE_CANONICALIZATION_VERSION, UWX_CANONICALIZATION, UWX_CANONICALIZATION_VERSION, RECEIPT_RESULT_TOLERANCE, BUILTIN_POLICY_SET, BUILTIN_POLICY_SET_VERSION, ReceiptError, resolveReceiptSubject, computeReceiptResults, computeResultsDigest, issueReceipt, receiptSigningPayload, verifyReceipt, assertUWReceipt, } from './receipts.js';
|
|
94
94
|
export type { UWReceipt, UWReceiptSubject, UWReceiptResult, UWReceiptComputation, UWReceiptPolicy, UWReceiptSignature, UWReceiptCanonicalization, UWReceiptVerdict, UWReceiptIssue, UWReceiptIssueCode, UWReceiptVerification, UWReceiptInputProvenance, UWReceiptInputSource, UWReceiptInputResolver, RollupFn, UWRollupAggregate, RollupMember, RollupAggregateResult, RollupVerification, ReceiptErrorCode, ReceiptSignatureVerifier, ReceiptSubjectOptions, ReceiptSubjectResolution, ReceiptIssuanceOptions, ReceiptVerificationOptions, } from './receipts.js';
|
|
95
|
+
export { verifyCapitalStack, recomputeSizing, trancheAnnualDebtService, isDebtTranche, capitalStackContext, CAPITAL_STACK_SIZING_DECIMALS, } from './capital-stack.js';
|
|
96
|
+
export type { Tranche, TrancheClass, Accrual, SizingFn, SizingFigure, CapitalStack, CapitalStackContext, CapitalStackVerdict, CapitalStackIssueCode, CapitalStackIssue, SizingResult, CapitalStackVerification, } from './capital-stack.js';
|
|
95
97
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/browser.js
CHANGED
|
@@ -39,7 +39,7 @@ export { evaluateCalc, parseExpression, evaluate, BUILTINS, CalcError, calcError
|
|
|
39
39
|
// The §VIII.5 quantization boundary — browser-safe, and the web editor needs it
|
|
40
40
|
// to quantize hand-overridden fields the same way pack results are quantized.
|
|
41
41
|
export { quantizeDecimal, resolveRoundTo, DEFAULT_ROUND_TO, DEFAULT_ROUND_TO_BY_UNIT, MAX_ROUND_TO, } from './calc/index.js';
|
|
42
|
-
export { MULTIFAMILY_PACK, OFFICE_PACK, RETAIL_PACK, INDUSTRIAL_PACK, SELF_STORAGE_PACK, HOSPITALITY_PACK, SENIOR_HOUSING_PACK, STUDENT_HOUSING_PACK, LAND_PACK, getPackForAssetClass, emitFromAst, emitExcelFormula, emitCalcExcelFormula, ExcelEmitError, } from './packs/index.js';
|
|
42
|
+
export { MULTIFAMILY_PACK, OFFICE_PACK, RETAIL_PACK, INDUSTRIAL_PACK, SELF_STORAGE_PACK, HOSPITALITY_PACK, SENIOR_HOUSING_PACK, STUDENT_HOUSING_PACK, LAND_PACK, MIXED_USE_PACK, getPackForAssetClass, emitFromAst, emitExcelFormula, emitCalcExcelFormula, ExcelEmitError, } from './packs/index.js';
|
|
43
43
|
export { loadModuleManifest, createModuleRegistry, getModuleCalculationsForAssetClass, ModuleRegistryError, } from './modules.js';
|
|
44
44
|
// ─── RFC 0018: document profiles, lease abstracts, deal packages ─────────────
|
|
45
45
|
// All browser-safe: no I/O, no network, no hashing implementation imported.
|
|
@@ -63,7 +63,7 @@ export { generateBlankUWFile } from './init.js';
|
|
|
63
63
|
export { resolveValue, readInFile } from './cascade.js';
|
|
64
64
|
export { rankGaps } from './refinement.js';
|
|
65
65
|
export { inferGaps, summarizeGaps, readGapsContent } from './gaps.js';
|
|
66
|
-
export { getAssetClassDefaults, getDefaultRange, listDefaultedFields, MULTIFAMILY_DEFAULTS, OFFICE_DEFAULTS, RETAIL_DEFAULTS, INDUSTRIAL_DEFAULTS, SELF_STORAGE_DEFAULTS, HOSPITALITY_DEFAULTS, SENIOR_HOUSING_DEFAULTS, STUDENT_HOUSING_DEFAULTS, LAND_DEFAULTS, } from './defaults.js';
|
|
66
|
+
export { getAssetClassDefaults, getDefaultRange, listDefaultedFields, MULTIFAMILY_DEFAULTS, OFFICE_DEFAULTS, RETAIL_DEFAULTS, INDUSTRIAL_DEFAULTS, SELF_STORAGE_DEFAULTS, HOSPITALITY_DEFAULTS, SENIOR_HOUSING_DEFAULTS, STUDENT_HOUSING_DEFAULTS, LAND_DEFAULTS, MIXED_USE_DEFAULTS, } from './defaults.js';
|
|
67
67
|
export { getExprDependencies, extractDependencyGraph } from './calc/dependencies.js';
|
|
68
68
|
export { DEFAULT_THRESHOLDS, ASSET_CLASSES } from './types.js';
|
|
69
69
|
export { formatCurrency, formatPercent, formatRatio, formatCount, formatDate, formatNull, formatValue, formatPercentCsv, formatNumberCsv, } from './format.js';
|
|
@@ -73,4 +73,5 @@ export { PROTOCOL_VERSION, FORMAT_VERSION, DEFAULT_NUMBER_FORMAT, DEFAULT_DATE_F
|
|
|
73
73
|
// is bundled here.
|
|
74
74
|
export { CORE_PACKAGE_NAME, CORE_VERSION } from './version.js';
|
|
75
75
|
export { UW_RECEIPT_VERSION, SUPPORTED_RECEIPT_VERSIONS, ROLLUP_FUNCTIONS, PORTFOLIO_ROLLUP_SECTION, verifyRollup, evaluateRollup, validateRollupAggregate, UW_LITE_CANONICALIZATION, UW_LITE_CANONICALIZATION_VERSION, UWX_CANONICALIZATION, UWX_CANONICALIZATION_VERSION, RECEIPT_RESULT_TOLERANCE, BUILTIN_POLICY_SET, BUILTIN_POLICY_SET_VERSION, ReceiptError, resolveReceiptSubject, computeReceiptResults, computeResultsDigest, issueReceipt, receiptSigningPayload, verifyReceipt, assertUWReceipt, } from './receipts.js';
|
|
76
|
+
export { verifyCapitalStack, recomputeSizing, trancheAnnualDebtService, isDebtTranche, capitalStackContext, CAPITAL_STACK_SIZING_DECIMALS, } from './capital-stack.js';
|
|
76
77
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,SAAS;AACT,EAAE;AACF,gFAAgF;AAChF,mFAAmF;AACnF,4EAA4E;AAC5E,EAAE;AACF,6EAA6E;AAC7E,qEAAqE;AAErE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,8BAA8B,EAC9B,0BAA0B,EAC1B,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,aAAa,EACb,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAOpC,OAAO,EACL,WAAW,EACX,WAAW,EACX,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAUnB,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,2BAA2B,EAC3B,oCAAoC,EACpC,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAavB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AASvB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQzD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG1E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAQhE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE1G,gFAAgF;AAChF,8EAA8E;AAC9E,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kCAAkC,EAClC,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,gFAAgF;AAChF,4EAA4E;AAC5E,OAAO,EACL,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,cAAc,EACd,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,6BAA6B,EAC7B,2BAA2B,EAC3B,gCAAgC,EAChC,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,6BAA6B,EAC7B,+BAA+B,EAC/B,kBAAkB,EAClB,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAkBpF,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,qCAAqC,EACrC,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAS1B,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIhD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,kCAAkC;AAClC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQ3C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,aAAa,
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { ParsedUWFile } from './types.js';
|
|
2
|
+
/** A tranche's type. Closed and non-extensible. */
|
|
3
|
+
export type TrancheClass = 'senior_debt' | 'mezzanine_debt' | 'preferred_equity' | 'common_equity' | 'bridge' | 'seller_financing' | 'other_debt';
|
|
4
|
+
/** Cash-pay vs PIK. Accrued obligations do not enter cash coverage. */
|
|
5
|
+
export type Accrual = 'cash' | 'accrued';
|
|
6
|
+
/** One layer of the capital stack (UW_FORMAT_SPEC §4.24). */
|
|
7
|
+
export interface Tranche {
|
|
8
|
+
id: string;
|
|
9
|
+
class: TrancheClass;
|
|
10
|
+
position: number;
|
|
11
|
+
amount: number;
|
|
12
|
+
rate?: number | null;
|
|
13
|
+
accrual?: Accrual | null;
|
|
14
|
+
amortization_months?: number | null;
|
|
15
|
+
io_months?: number | null;
|
|
16
|
+
term_months?: number | null;
|
|
17
|
+
}
|
|
18
|
+
/** The closed sizing function vocabulary. */
|
|
19
|
+
export type SizingFn = 'coverage' | 'blended_coverage' | 'debt_yield_through' | 'ltc_through' | 'ltv_through' | 'weighted_cost';
|
|
20
|
+
/** One stated sizing figure a verifier recomputes. */
|
|
21
|
+
export interface SizingFigure {
|
|
22
|
+
id: string;
|
|
23
|
+
fn: SizingFn;
|
|
24
|
+
/** Single-tranche selector: a tranche id, or `*` for the whole stack. */
|
|
25
|
+
over?: string;
|
|
26
|
+
/** Cumulative selector: a position; covers all tranches at or above it. */
|
|
27
|
+
through?: number;
|
|
28
|
+
value: number;
|
|
29
|
+
}
|
|
30
|
+
/** The `capital_stack` section content. */
|
|
31
|
+
export interface CapitalStack {
|
|
32
|
+
tranches: Tranche[];
|
|
33
|
+
sizing?: SizingFigure[];
|
|
34
|
+
}
|
|
35
|
+
/** The property-level inputs the sizing figures divide. */
|
|
36
|
+
export interface CapitalStackContext {
|
|
37
|
+
/** `noi_model.net_operating_income`. */
|
|
38
|
+
noi: number | null;
|
|
39
|
+
/** Total cost / total capitalization, for `ltc_through`. */
|
|
40
|
+
total_cost?: number | null;
|
|
41
|
+
/** Underwritten value, for `ltv_through`. */
|
|
42
|
+
total_value?: number | null;
|
|
43
|
+
}
|
|
44
|
+
export type CapitalStackVerdict = 'verified' | 'failed' | 'unverifiable';
|
|
45
|
+
export type CapitalStackIssueCode =
|
|
46
|
+
/** A stated sizing figure disagrees with recomputation. */
|
|
47
|
+
'CS-SIZING-DISAGREES'
|
|
48
|
+
/** A sizing figure reads inputs the document does not supply — undecided, never zero. */
|
|
49
|
+
| 'CS-SIZING-UNEVALUABLE';
|
|
50
|
+
export interface CapitalStackIssue {
|
|
51
|
+
code: CapitalStackIssueCode;
|
|
52
|
+
severity: 'failure' | 'indeterminate';
|
|
53
|
+
message: string;
|
|
54
|
+
expected?: string;
|
|
55
|
+
actual?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface SizingResult {
|
|
58
|
+
id: string;
|
|
59
|
+
fn: SizingFn;
|
|
60
|
+
stated: number;
|
|
61
|
+
recomputed: number | null;
|
|
62
|
+
agrees: boolean;
|
|
63
|
+
}
|
|
64
|
+
export interface CapitalStackVerification {
|
|
65
|
+
verdict: CapitalStackVerdict;
|
|
66
|
+
issues: CapitalStackIssue[];
|
|
67
|
+
sizing: SizingResult[];
|
|
68
|
+
}
|
|
69
|
+
/** Debt-class tranches, whose balances make up "debt" for a debt-yield/LTC. */
|
|
70
|
+
export declare function isDebtTranche(t: Tranche): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* A tranche's annual CASH debt service — what enters coverage. An accrued/PIK
|
|
73
|
+
* tranche pays nothing in cash (returns 0). Common equity has no service.
|
|
74
|
+
* A debt or preferred tranche with no `rate` is uncomputable (returns null).
|
|
75
|
+
*
|
|
76
|
+
* Debt: the fully-amortizing constant when `amortization_months > 0`, otherwise
|
|
77
|
+
* interest-only (`amount × rate`). `io_months` describes when amortization
|
|
78
|
+
* begins — a multi-period schedule concern (RFC 0026 Phase 2) — and does not
|
|
79
|
+
* change this stabilized annual constant. Preferred equity that is cash-pay
|
|
80
|
+
* contributes its current return (`amount × rate`).
|
|
81
|
+
*/
|
|
82
|
+
export declare function trancheAnnualDebtService(t: Tranche): number | null;
|
|
83
|
+
/**
|
|
84
|
+
* The decimal quantum each sizing figure is compared at, keyed by `fn`. Coverage
|
|
85
|
+
* ratios are stated to 2 places (a DSCR reads as 1.85); rates and yields to 4.
|
|
86
|
+
* An author who states a correctly-rounded value verifies and a materially wrong
|
|
87
|
+
* one does not. Exported so an emitting surface (the Excel workbook's sizing
|
|
88
|
+
* block) quantizes at the same boundary this verifier does, rather than keeping
|
|
89
|
+
* its own copy of the table.
|
|
90
|
+
*/
|
|
91
|
+
export declare const CAPITAL_STACK_SIZING_DECIMALS: Readonly<Record<SizingFn, number>>;
|
|
92
|
+
/**
|
|
93
|
+
* Recompute one sizing figure over the tranches. Returns null when the figure
|
|
94
|
+
* reads an input the document does not supply (a missing NOI, an absent
|
|
95
|
+
* cost/value, a division by a zero denominator, or a selector that resolves to
|
|
96
|
+
* no tranche) — never a misleading zero.
|
|
97
|
+
*/
|
|
98
|
+
export declare function recomputeSizing(fig: SizingFigure, tranches: readonly Tranche[], ctx: CapitalStackContext): number | null;
|
|
99
|
+
/**
|
|
100
|
+
* Recompute every stated sizing figure and report a three-state verdict:
|
|
101
|
+
* - a figure disagrees beyond its quantum → `failed` (CS-SIZING-DISAGREES)
|
|
102
|
+
* - a figure reads an input the document does not supply → `unverifiable`
|
|
103
|
+
* - otherwise → `verified`
|
|
104
|
+
*
|
|
105
|
+
* A `verified` stack means the stated sizing follows deterministically from the
|
|
106
|
+
* tranche terms as they stand. It does not mean the terms are the right terms.
|
|
107
|
+
*/
|
|
108
|
+
export declare function verifyCapitalStack(stack: CapitalStack, ctx: CapitalStackContext): CapitalStackVerification;
|
|
109
|
+
/**
|
|
110
|
+
* Pull the property-level sizing inputs from a parsed document: NOI from
|
|
111
|
+
* `noi_model`, total cost from `sources_uses` (uses total), and underwritten
|
|
112
|
+
* value from `valuation`. Any absent input becomes `null`, which makes the
|
|
113
|
+
* figures that need it `unverifiable` rather than wrong.
|
|
114
|
+
*/
|
|
115
|
+
export declare function capitalStackContext(parsed: ParsedUWFile): CapitalStackContext;
|
|
116
|
+
//# sourceMappingURL=capital-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capital-stack.d.ts","sourceRoot":"","sources":["../src/capital-stack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
// Capital stack — state-and-verify sizing (RFC 0026, UW_FORMAT_SPEC §4.24).
|
|
2
|
+
//
|
|
3
|
+
// A deal states an ordered array of typed capital tranches and the stack-aware
|
|
4
|
+
// sizing figures a lender underwrites to (per-tranche and blended coverage,
|
|
5
|
+
// attachment-point debt yield, LTC/LTV by layer, weighted cost of capital). This
|
|
6
|
+
// module recomputes each stated figure over a FIXED, CLOSED function vocabulary
|
|
7
|
+
// and reports a three-state verdict — the same state-and-verify shape RFC 0021 §6
|
|
8
|
+
// uses for portfolio rollups (`verifyRollup`).
|
|
9
|
+
//
|
|
10
|
+
// This deliberately does NOT touch the Tier-3 calc engine. The sandbox has no
|
|
11
|
+
// iteration or array indexing (RFC 0019 §1), so a variable-length tranche array
|
|
12
|
+
// is not addressable by a pack formula. A deterministic TypeScript verifier is
|
|
13
|
+
// not so constrained: it walks the array directly, exactly as `verifyRollup`
|
|
14
|
+
// walks a variable member list. Browser-safe; performs no I/O.
|
|
15
|
+
//
|
|
16
|
+
// Scope (RFC 0026 v1): tranche representation, the sizing vocabulary below, and
|
|
17
|
+
// preferred-equity cash-vs-accrued. The multi-period distribution waterfall
|
|
18
|
+
// (promote, hurdles, tiers, catch-up) is out of scope and refused by the
|
|
19
|
+
// validator (CS-WATERFALL-UNSUPPORTED); it needs a hold-period cash-flow
|
|
20
|
+
// primitive the format does not yet have (RFC 0026 §E).
|
|
21
|
+
import { getSection, deepGet } from './parser.js';
|
|
22
|
+
// ─── Tranche classification + debt service ───────────────────────────────────
|
|
23
|
+
const DEBT_CLASSES = new Set([
|
|
24
|
+
'senior_debt',
|
|
25
|
+
'mezzanine_debt',
|
|
26
|
+
'bridge',
|
|
27
|
+
'seller_financing',
|
|
28
|
+
'other_debt',
|
|
29
|
+
]);
|
|
30
|
+
/** Debt-class tranches, whose balances make up "debt" for a debt-yield/LTC. */
|
|
31
|
+
export function isDebtTranche(t) {
|
|
32
|
+
return DEBT_CLASSES.has(t.class);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A tranche's annual CASH debt service — what enters coverage. An accrued/PIK
|
|
36
|
+
* tranche pays nothing in cash (returns 0). Common equity has no service.
|
|
37
|
+
* A debt or preferred tranche with no `rate` is uncomputable (returns null).
|
|
38
|
+
*
|
|
39
|
+
* Debt: the fully-amortizing constant when `amortization_months > 0`, otherwise
|
|
40
|
+
* interest-only (`amount × rate`). `io_months` describes when amortization
|
|
41
|
+
* begins — a multi-period schedule concern (RFC 0026 Phase 2) — and does not
|
|
42
|
+
* change this stabilized annual constant. Preferred equity that is cash-pay
|
|
43
|
+
* contributes its current return (`amount × rate`).
|
|
44
|
+
*/
|
|
45
|
+
export function trancheAnnualDebtService(t) {
|
|
46
|
+
if (t.accrual === 'accrued')
|
|
47
|
+
return 0;
|
|
48
|
+
if (t.class === 'common_equity')
|
|
49
|
+
return 0;
|
|
50
|
+
if (t.rate === null || t.rate === undefined)
|
|
51
|
+
return null;
|
|
52
|
+
if (t.class === 'preferred_equity')
|
|
53
|
+
return t.amount * t.rate;
|
|
54
|
+
const amort = t.amortization_months ?? 0;
|
|
55
|
+
if (amort <= 0)
|
|
56
|
+
return t.amount * t.rate; // interest-only / non-amortizing
|
|
57
|
+
const mr = t.rate / 12;
|
|
58
|
+
const monthly = mr === 0 ? t.amount / amort : (t.amount * mr) / (1 - (1 + mr) ** -amort);
|
|
59
|
+
return monthly * 12;
|
|
60
|
+
}
|
|
61
|
+
// ─── Sizing recomputation ────────────────────────────────────────────────────
|
|
62
|
+
/**
|
|
63
|
+
* The decimal quantum each sizing figure is compared at, keyed by `fn`. Coverage
|
|
64
|
+
* ratios are stated to 2 places (a DSCR reads as 1.85); rates and yields to 4.
|
|
65
|
+
* An author who states a correctly-rounded value verifies and a materially wrong
|
|
66
|
+
* one does not. Exported so an emitting surface (the Excel workbook's sizing
|
|
67
|
+
* block) quantizes at the same boundary this verifier does, rather than keeping
|
|
68
|
+
* its own copy of the table.
|
|
69
|
+
*/
|
|
70
|
+
export const CAPITAL_STACK_SIZING_DECIMALS = {
|
|
71
|
+
coverage: 2,
|
|
72
|
+
blended_coverage: 2,
|
|
73
|
+
debt_yield_through: 4,
|
|
74
|
+
ltc_through: 4,
|
|
75
|
+
ltv_through: 4,
|
|
76
|
+
weighted_cost: 4,
|
|
77
|
+
};
|
|
78
|
+
function roundTo(value, decimals) {
|
|
79
|
+
const f = 10 ** decimals;
|
|
80
|
+
return Math.round(value * f) / f;
|
|
81
|
+
}
|
|
82
|
+
function agrees(stated, recomputed, fn) {
|
|
83
|
+
const dp = CAPITAL_STACK_SIZING_DECIMALS[fn];
|
|
84
|
+
return roundTo(stated, dp) === roundTo(recomputed, dp);
|
|
85
|
+
}
|
|
86
|
+
/** Sum a value over the tranches at or above a position; null if any is null. */
|
|
87
|
+
function sumThrough(tranches, position, value) {
|
|
88
|
+
let total = 0;
|
|
89
|
+
for (const t of tranches) {
|
|
90
|
+
if (t.position > position)
|
|
91
|
+
continue;
|
|
92
|
+
const v = value(t);
|
|
93
|
+
if (v === null)
|
|
94
|
+
return null;
|
|
95
|
+
total += v;
|
|
96
|
+
}
|
|
97
|
+
return total;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Recompute one sizing figure over the tranches. Returns null when the figure
|
|
101
|
+
* reads an input the document does not supply (a missing NOI, an absent
|
|
102
|
+
* cost/value, a division by a zero denominator, or a selector that resolves to
|
|
103
|
+
* no tranche) — never a misleading zero.
|
|
104
|
+
*/
|
|
105
|
+
export function recomputeSizing(fig, tranches, ctx) {
|
|
106
|
+
const noi = ctx.noi;
|
|
107
|
+
switch (fig.fn) {
|
|
108
|
+
case 'coverage': {
|
|
109
|
+
const t = tranches.find((x) => x.id === fig.over);
|
|
110
|
+
if (!t || noi === null)
|
|
111
|
+
return null;
|
|
112
|
+
const ds = trancheAnnualDebtService(t);
|
|
113
|
+
if (ds === null || ds === 0)
|
|
114
|
+
return null;
|
|
115
|
+
return noi / ds;
|
|
116
|
+
}
|
|
117
|
+
case 'blended_coverage': {
|
|
118
|
+
if (fig.through === undefined || noi === null)
|
|
119
|
+
return null;
|
|
120
|
+
const ds = sumThrough(tranches, fig.through, trancheAnnualDebtService);
|
|
121
|
+
if (ds === null || ds === 0)
|
|
122
|
+
return null;
|
|
123
|
+
return noi / ds;
|
|
124
|
+
}
|
|
125
|
+
case 'debt_yield_through': {
|
|
126
|
+
if (fig.through === undefined || noi === null)
|
|
127
|
+
return null;
|
|
128
|
+
const bal = sumThrough(tranches, fig.through, (t) => (isDebtTranche(t) ? t.amount : 0));
|
|
129
|
+
if (bal === null || bal === 0)
|
|
130
|
+
return null;
|
|
131
|
+
return noi / bal;
|
|
132
|
+
}
|
|
133
|
+
case 'ltc_through':
|
|
134
|
+
case 'ltv_through': {
|
|
135
|
+
if (fig.through === undefined)
|
|
136
|
+
return null;
|
|
137
|
+
const denom = fig.fn === 'ltc_through' ? ctx.total_cost : ctx.total_value;
|
|
138
|
+
if (denom === null || denom === undefined || denom === 0)
|
|
139
|
+
return null;
|
|
140
|
+
const bal = sumThrough(tranches, fig.through, (t) => (isDebtTranche(t) ? t.amount : 0));
|
|
141
|
+
if (bal === null)
|
|
142
|
+
return null;
|
|
143
|
+
return bal / denom;
|
|
144
|
+
}
|
|
145
|
+
case 'weighted_cost': {
|
|
146
|
+
let weighted = 0;
|
|
147
|
+
let base = 0;
|
|
148
|
+
for (const t of tranches) {
|
|
149
|
+
if (t.rate === null || t.rate === undefined)
|
|
150
|
+
continue;
|
|
151
|
+
weighted += t.amount * t.rate;
|
|
152
|
+
base += t.amount;
|
|
153
|
+
}
|
|
154
|
+
if (base === 0)
|
|
155
|
+
return null;
|
|
156
|
+
return weighted / base;
|
|
157
|
+
}
|
|
158
|
+
default:
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// ─── Verification ────────────────────────────────────────────────────────────
|
|
163
|
+
/**
|
|
164
|
+
* Recompute every stated sizing figure and report a three-state verdict:
|
|
165
|
+
* - a figure disagrees beyond its quantum → `failed` (CS-SIZING-DISAGREES)
|
|
166
|
+
* - a figure reads an input the document does not supply → `unverifiable`
|
|
167
|
+
* - otherwise → `verified`
|
|
168
|
+
*
|
|
169
|
+
* A `verified` stack means the stated sizing follows deterministically from the
|
|
170
|
+
* tranche terms as they stand. It does not mean the terms are the right terms.
|
|
171
|
+
*/
|
|
172
|
+
export function verifyCapitalStack(stack, ctx) {
|
|
173
|
+
const issues = [];
|
|
174
|
+
const results = [];
|
|
175
|
+
const tranches = stack.tranches ?? [];
|
|
176
|
+
for (const fig of stack.sizing ?? []) {
|
|
177
|
+
const recomputed = recomputeSizing(fig, tranches, ctx);
|
|
178
|
+
if (recomputed === null) {
|
|
179
|
+
results.push({ id: fig.id, fn: fig.fn, stated: fig.value, recomputed: null, agrees: false });
|
|
180
|
+
issues.push({
|
|
181
|
+
code: 'CS-SIZING-UNEVALUABLE',
|
|
182
|
+
severity: 'indeterminate',
|
|
183
|
+
message: `Sizing figure '${fig.id}' (${fig.fn}) reads an input the document does not supply, so it cannot be verified.`,
|
|
184
|
+
});
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const ok = agrees(fig.value, recomputed, fig.fn);
|
|
188
|
+
results.push({ id: fig.id, fn: fig.fn, stated: fig.value, recomputed, agrees: ok });
|
|
189
|
+
if (!ok) {
|
|
190
|
+
issues.push({
|
|
191
|
+
code: 'CS-SIZING-DISAGREES',
|
|
192
|
+
severity: 'failure',
|
|
193
|
+
message: `Sizing figure '${fig.id}' states ${fig.value} but ${fig.fn} recomputes to ${recomputed}.`,
|
|
194
|
+
expected: String(fig.value),
|
|
195
|
+
actual: String(recomputed),
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (issues.some((i) => i.severity === 'failure')) {
|
|
200
|
+
return { verdict: 'failed', issues, sizing: results };
|
|
201
|
+
}
|
|
202
|
+
if (issues.some((i) => i.severity === 'indeterminate')) {
|
|
203
|
+
return { verdict: 'unverifiable', issues, sizing: results };
|
|
204
|
+
}
|
|
205
|
+
return { verdict: 'verified', issues, sizing: results };
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Pull the property-level sizing inputs from a parsed document: NOI from
|
|
209
|
+
* `noi_model`, total cost from `sources_uses` (uses total), and underwritten
|
|
210
|
+
* value from `valuation`. Any absent input becomes `null`, which makes the
|
|
211
|
+
* figures that need it `unverifiable` rather than wrong.
|
|
212
|
+
*/
|
|
213
|
+
export function capitalStackContext(parsed) {
|
|
214
|
+
const num = (section, path) => {
|
|
215
|
+
const block = getSection(parsed, section);
|
|
216
|
+
if (!block)
|
|
217
|
+
return null;
|
|
218
|
+
const v = deepGet(block.content, path);
|
|
219
|
+
return typeof v === 'number' && Number.isFinite(v) ? v : null;
|
|
220
|
+
};
|
|
221
|
+
return {
|
|
222
|
+
noi: num('noi_model', 'net_operating_income'),
|
|
223
|
+
total_cost: num('sources_uses', 'uses.total') ?? num('sources_uses', 'total_uses'),
|
|
224
|
+
total_value: num('valuation', 'underwritten_value') ?? num('valuation', 'purchase_price'),
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=capital-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capital-stack.js","sourceRoot":"","sources":["../src/capital-stack.ts"],"names":[],"mappings":"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"}
|
package/dist/defaults.d.ts
CHANGED
|
@@ -133,6 +133,24 @@ export declare const STUDENT_HOUSING_DEFAULTS: AssetClassDefaults;
|
|
|
133
133
|
* not committee underwriting.
|
|
134
134
|
*/
|
|
135
135
|
export declare const LAND_DEFAULTS: AssetClassDefaults;
|
|
136
|
+
/**
|
|
137
|
+
* Mixed-use asset-class defaults, v1.0.0.
|
|
138
|
+
*
|
|
139
|
+
* Deliberately narrow. A mixed-use property composes other uses (RFC 0019), and
|
|
140
|
+
* the *mix-dependent* assumptions — vacancy, expense ratio, exit cap — have no
|
|
141
|
+
* single right value across a blend; those resolve per component against each
|
|
142
|
+
* component class's own table (RFC 0019 §5). This table therefore carries only
|
|
143
|
+
* the **mix-independent** terms that attach to the whole property and its single
|
|
144
|
+
* loan: financing (LTV, rate, amortization, IO) and acquisition closing costs.
|
|
145
|
+
* They are driven by the debt market and the transaction, not by the use mix.
|
|
146
|
+
*
|
|
147
|
+
* The table exists at all — rather than leaving `mixed_use` with no defaults —
|
|
148
|
+
* because the cascade has no shared/base table below `asset_class_default`; the
|
|
149
|
+
* only fallback is the host-supplied `global_default`/`system_default`, which
|
|
150
|
+
* carries no ranges and no citations. Omitting this table would give mixed-use
|
|
151
|
+
* financing terms strictly weaker provenance than every other class.
|
|
152
|
+
*/
|
|
153
|
+
export declare const MIXED_USE_DEFAULTS: AssetClassDefaults;
|
|
136
154
|
/**
|
|
137
155
|
* Look up the published defaults for an asset class. Returns null when no
|
|
138
156
|
* table is registered (callers should fall through to `global_default` /
|
package/dist/defaults.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+DAA+D;IAC/D,MAAM,EAAE,qBAAqB,CAAC;IAC9B,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACxC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBA6FlC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,kBA6G7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,kBA6G7B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBA6GjC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAqGnC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAqHlC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,EAAE,kBA6HrC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAqHtC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,kBAqG3B,CAAC;
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,+DAA+D;IAC/D,MAAM,EAAE,qBAAqB,CAAC;IAC9B,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACxC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBA6FlC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,kBA6G7B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,kBA6G7B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBA6GjC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAqGnC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAqHlC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,EAAE,kBA6HrC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAqHtC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,kBAqG3B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAgDhC,CAAC;AAeF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAEpF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAG5F;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAGjE"}
|
package/dist/defaults.js
CHANGED
|
@@ -1096,6 +1096,69 @@ export const LAND_DEFAULTS = {
|
|
|
1096
1096
|
},
|
|
1097
1097
|
},
|
|
1098
1098
|
};
|
|
1099
|
+
/**
|
|
1100
|
+
* Mixed-use asset-class defaults, v1.0.0.
|
|
1101
|
+
*
|
|
1102
|
+
* Deliberately narrow. A mixed-use property composes other uses (RFC 0019), and
|
|
1103
|
+
* the *mix-dependent* assumptions — vacancy, expense ratio, exit cap — have no
|
|
1104
|
+
* single right value across a blend; those resolve per component against each
|
|
1105
|
+
* component class's own table (RFC 0019 §5). This table therefore carries only
|
|
1106
|
+
* the **mix-independent** terms that attach to the whole property and its single
|
|
1107
|
+
* loan: financing (LTV, rate, amortization, IO) and acquisition closing costs.
|
|
1108
|
+
* They are driven by the debt market and the transaction, not by the use mix.
|
|
1109
|
+
*
|
|
1110
|
+
* The table exists at all — rather than leaving `mixed_use` with no defaults —
|
|
1111
|
+
* because the cascade has no shared/base table below `asset_class_default`; the
|
|
1112
|
+
* only fallback is the host-supplied `global_default`/`system_default`, which
|
|
1113
|
+
* carries no ranges and no citations. Omitting this table would give mixed-use
|
|
1114
|
+
* financing terms strictly weaker provenance than every other class.
|
|
1115
|
+
*/
|
|
1116
|
+
export const MIXED_USE_DEFAULTS = {
|
|
1117
|
+
asset_class: 'mixed_use',
|
|
1118
|
+
version: '1.0.0',
|
|
1119
|
+
fields: {
|
|
1120
|
+
'debt_structure.ltv_pct': {
|
|
1121
|
+
low: 0.55,
|
|
1122
|
+
central: 0.63,
|
|
1123
|
+
high: 0.7,
|
|
1124
|
+
unit: 'percent',
|
|
1125
|
+
source: 'asset_class_default',
|
|
1126
|
+
citation: 'Mixed-use leverage band; sits below stabilized multifamily because the commercial component caps agency-style proceeds',
|
|
1127
|
+
},
|
|
1128
|
+
'debt_structure.rate_pct': {
|
|
1129
|
+
low: 0.062,
|
|
1130
|
+
central: 0.071,
|
|
1131
|
+
high: 0.08,
|
|
1132
|
+
unit: 'percent',
|
|
1133
|
+
source: 'asset_class_default',
|
|
1134
|
+
citation: 'Bank / debt-fund 5-7yr fixed quote band for mixed-use, mid-2026 rate environment (a touch wide of pure agency multifamily)',
|
|
1135
|
+
},
|
|
1136
|
+
'debt_structure.amortization_months': {
|
|
1137
|
+
low: 300,
|
|
1138
|
+
central: 360,
|
|
1139
|
+
high: 360,
|
|
1140
|
+
unit: 'months',
|
|
1141
|
+
source: 'asset_class_default',
|
|
1142
|
+
citation: 'Standard 25-30 yr amortization for stabilized income property',
|
|
1143
|
+
},
|
|
1144
|
+
'debt_structure.io_months': {
|
|
1145
|
+
low: 0,
|
|
1146
|
+
central: 0,
|
|
1147
|
+
high: 36,
|
|
1148
|
+
unit: 'months',
|
|
1149
|
+
source: 'asset_class_default',
|
|
1150
|
+
citation: 'Partial-IO availability on mixed-use bank/debt-fund loans (0-3 yr)',
|
|
1151
|
+
},
|
|
1152
|
+
'sources_uses.closing_costs_pct': {
|
|
1153
|
+
low: 0.018,
|
|
1154
|
+
central: 0.028,
|
|
1155
|
+
high: 0.04,
|
|
1156
|
+
unit: 'percent',
|
|
1157
|
+
source: 'asset_class_default',
|
|
1158
|
+
citation: 'Acquisition closing cost band (title, legal, debt fees, taxes); modestly higher for dual-use diligence',
|
|
1159
|
+
},
|
|
1160
|
+
},
|
|
1161
|
+
};
|
|
1099
1162
|
const REGISTRY = Object.freeze({
|
|
1100
1163
|
multifamily: MULTIFAMILY_DEFAULTS,
|
|
1101
1164
|
office: OFFICE_DEFAULTS,
|
|
@@ -1106,6 +1169,7 @@ const REGISTRY = Object.freeze({
|
|
|
1106
1169
|
senior_housing: SENIOR_HOUSING_DEFAULTS,
|
|
1107
1170
|
student_housing: STUDENT_HOUSING_DEFAULTS,
|
|
1108
1171
|
land: LAND_DEFAULTS,
|
|
1172
|
+
mixed_use: MIXED_USE_DEFAULTS,
|
|
1109
1173
|
});
|
|
1110
1174
|
/**
|
|
1111
1175
|
* Look up the published defaults for an asset class. Returns null when no
|