business-as-code 0.2.1 → 2.0.2
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/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +17 -0
- package/IMPLEMENTATION.md +226 -0
- package/README.md +1133 -193
- package/dist/business.d.ts +62 -0
- package/dist/business.d.ts.map +1 -0
- package/dist/business.js +109 -0
- package/dist/business.js.map +1 -0
- package/dist/dollar.d.ts +60 -0
- package/dist/dollar.d.ts.map +1 -0
- package/dist/dollar.js +107 -0
- package/dist/dollar.js.map +1 -0
- package/dist/entities/assets.d.ts +21 -0
- package/dist/entities/assets.d.ts.map +1 -0
- package/dist/entities/assets.js +323 -0
- package/dist/entities/assets.js.map +1 -0
- package/dist/entities/business.d.ts +36 -0
- package/dist/entities/business.d.ts.map +1 -0
- package/dist/entities/business.js +370 -0
- package/dist/entities/business.js.map +1 -0
- package/dist/entities/communication.d.ts +21 -0
- package/dist/entities/communication.d.ts.map +1 -0
- package/dist/entities/communication.js +255 -0
- package/dist/entities/communication.js.map +1 -0
- package/dist/entities/customers.d.ts +58 -0
- package/dist/entities/customers.d.ts.map +1 -0
- package/dist/entities/customers.js +989 -0
- package/dist/entities/customers.js.map +1 -0
- package/dist/entities/financials.d.ts +59 -0
- package/dist/entities/financials.d.ts.map +1 -0
- package/dist/entities/financials.js +932 -0
- package/dist/entities/financials.js.map +1 -0
- package/dist/entities/goals.d.ts +58 -0
- package/dist/entities/goals.d.ts.map +1 -0
- package/dist/entities/goals.js +800 -0
- package/dist/entities/goals.js.map +1 -0
- package/dist/entities/index.d.ts +299 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +198 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/legal.d.ts +21 -0
- package/dist/entities/legal.d.ts.map +1 -0
- package/dist/entities/legal.js +301 -0
- package/dist/entities/legal.js.map +1 -0
- package/dist/entities/market.d.ts +21 -0
- package/dist/entities/market.d.ts.map +1 -0
- package/dist/entities/market.js +301 -0
- package/dist/entities/market.js.map +1 -0
- package/dist/entities/marketing.d.ts +67 -0
- package/dist/entities/marketing.d.ts.map +1 -0
- package/dist/entities/marketing.js +1157 -0
- package/dist/entities/marketing.js.map +1 -0
- package/dist/entities/offerings.d.ts +51 -0
- package/dist/entities/offerings.d.ts.map +1 -0
- package/dist/entities/offerings.js +727 -0
- package/dist/entities/offerings.js.map +1 -0
- package/dist/entities/operations.d.ts +58 -0
- package/dist/entities/operations.d.ts.map +1 -0
- package/dist/entities/operations.js +787 -0
- package/dist/entities/operations.js.map +1 -0
- package/dist/entities/organization.d.ts +57 -0
- package/dist/entities/organization.d.ts.map +1 -0
- package/dist/entities/organization.js +807 -0
- package/dist/entities/organization.js.map +1 -0
- package/dist/entities/partnerships.d.ts +21 -0
- package/dist/entities/partnerships.d.ts.map +1 -0
- package/dist/entities/partnerships.js +300 -0
- package/dist/entities/partnerships.js.map +1 -0
- package/dist/entities/planning.d.ts +87 -0
- package/dist/entities/planning.d.ts.map +1 -0
- package/dist/entities/planning.js +271 -0
- package/dist/entities/planning.js.map +1 -0
- package/dist/entities/projects.d.ts +25 -0
- package/dist/entities/projects.d.ts.map +1 -0
- package/dist/entities/projects.js +349 -0
- package/dist/entities/projects.js.map +1 -0
- package/dist/entities/risk.d.ts +21 -0
- package/dist/entities/risk.d.ts.map +1 -0
- package/dist/entities/risk.js +293 -0
- package/dist/entities/risk.js.map +1 -0
- package/dist/entities/sales.d.ts +72 -0
- package/dist/entities/sales.d.ts.map +1 -0
- package/dist/entities/sales.js +1248 -0
- package/dist/entities/sales.js.map +1 -0
- package/dist/financials.d.ts +130 -0
- package/dist/financials.d.ts.map +1 -0
- package/dist/financials.js +297 -0
- package/dist/financials.js.map +1 -0
- package/dist/goals.d.ts +87 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +215 -0
- package/dist/goals.js.map +1 -0
- package/dist/index.d.ts +97 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +131 -1079
- package/dist/index.js.map +1 -1
- package/dist/kpis.d.ts +118 -0
- package/dist/kpis.d.ts.map +1 -0
- package/dist/kpis.js +232 -0
- package/dist/kpis.js.map +1 -0
- package/dist/metrics.d.ts +448 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +325 -0
- package/dist/metrics.js.map +1 -0
- package/dist/okrs.d.ts +123 -0
- package/dist/okrs.d.ts.map +1 -0
- package/dist/okrs.js +269 -0
- package/dist/okrs.js.map +1 -0
- package/dist/organization.d.ts +585 -0
- package/dist/organization.d.ts.map +1 -0
- package/dist/organization.js +173 -0
- package/dist/organization.js.map +1 -0
- package/dist/process.d.ts +112 -0
- package/dist/process.d.ts.map +1 -0
- package/dist/process.js +241 -0
- package/dist/process.js.map +1 -0
- package/dist/product.d.ts +85 -0
- package/dist/product.d.ts.map +1 -0
- package/dist/product.js +145 -0
- package/dist/product.js.map +1 -0
- package/dist/queries.d.ts +304 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +415 -0
- package/dist/queries.js.map +1 -0
- package/dist/roles.d.ts +340 -0
- package/dist/roles.d.ts.map +1 -0
- package/dist/roles.js +255 -0
- package/dist/roles.js.map +1 -0
- package/dist/service.d.ts +61 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +140 -0
- package/dist/service.js.map +1 -0
- package/dist/types.d.ts +459 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/vision.d.ts +38 -0
- package/dist/vision.d.ts.map +1 -0
- package/dist/vision.js +68 -0
- package/dist/vision.js.map +1 -0
- package/dist/workflow.d.ts +115 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +247 -0
- package/dist/workflow.js.map +1 -0
- package/examples/basic-usage.ts +307 -0
- package/package.json +19 -60
- package/src/business.ts +121 -0
- package/src/dollar.ts +132 -0
- package/src/entities/assets.ts +332 -0
- package/src/entities/business.ts +406 -0
- package/src/entities/communication.ts +264 -0
- package/src/entities/customers.ts +1072 -0
- package/src/entities/financials.ts +1011 -0
- package/src/entities/goals.ts +871 -0
- package/src/entities/index.ts +383 -0
- package/src/entities/legal.ts +310 -0
- package/src/entities/market.ts +310 -0
- package/src/entities/marketing.ts +1249 -0
- package/src/entities/offerings.ts +789 -0
- package/src/entities/operations.ts +861 -0
- package/src/entities/organization.ts +876 -0
- package/src/entities/partnerships.ts +309 -0
- package/src/entities/planning.ts +307 -0
- package/src/entities/projects.ts +360 -0
- package/src/entities/risk.ts +302 -0
- package/src/entities/sales.ts +1352 -0
- package/src/financials.ts +352 -0
- package/src/goals.ts +250 -0
- package/src/index.test.ts +336 -0
- package/src/index.ts +530 -0
- package/src/kpis.ts +275 -0
- package/src/metrics.ts +825 -0
- package/src/okrs.ts +325 -0
- package/src/organization.ts +909 -0
- package/src/process.ts +272 -0
- package/src/product.ts +178 -0
- package/src/queries.ts +767 -0
- package/src/roles.ts +686 -0
- package/src/service.ts +164 -0
- package/src/types.ts +493 -0
- package/src/vision.ts +88 -0
- package/src/workflow.ts +280 -0
- package/tsconfig.json +9 -0
- package/dist/loaders/index.d.ts +0 -174
- package/dist/loaders/index.js +0 -366
- package/dist/loaders/index.js.map +0 -1
- package/dist/schema/index.d.ts +0 -146
- package/dist/schema/index.js +0 -716
- package/dist/schema/index.js.map +0 -1
- package/dist/types-CJ9eGS_C.d.ts +0 -86
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standardized SaaS Metrics
|
|
3
|
+
*
|
|
4
|
+
* First-class types for common SaaS/subscription business metrics
|
|
5
|
+
* with auto-calculation over time periods.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { Currency, TimePeriod } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Date range for metric calculations
|
|
12
|
+
*/
|
|
13
|
+
export interface DateRange {
|
|
14
|
+
start: Date;
|
|
15
|
+
end: Date;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Time period with explicit dates
|
|
19
|
+
*/
|
|
20
|
+
export interface MetricPeriod {
|
|
21
|
+
period: TimePeriod;
|
|
22
|
+
range: DateRange;
|
|
23
|
+
label?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Time-series data point
|
|
27
|
+
*/
|
|
28
|
+
export interface DataPoint<T = number> {
|
|
29
|
+
timestamp: Date;
|
|
30
|
+
value: T;
|
|
31
|
+
metadata?: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Time series of metric values
|
|
35
|
+
*/
|
|
36
|
+
export interface TimeSeries<T = number> {
|
|
37
|
+
metric: string;
|
|
38
|
+
unit: string;
|
|
39
|
+
dataPoints: DataPoint<T>[];
|
|
40
|
+
aggregation?: 'sum' | 'avg' | 'min' | 'max' | 'last' | 'first';
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Monthly Recurring Revenue (MRR)
|
|
44
|
+
*/
|
|
45
|
+
export interface MRR {
|
|
46
|
+
total: number;
|
|
47
|
+
newMRR: number;
|
|
48
|
+
expansionMRR: number;
|
|
49
|
+
contractionMRR: number;
|
|
50
|
+
churnedMRR: number;
|
|
51
|
+
reactivationMRR: number;
|
|
52
|
+
netNewMRR: number;
|
|
53
|
+
currency: Currency;
|
|
54
|
+
period: MetricPeriod;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Annual Recurring Revenue (ARR)
|
|
58
|
+
*/
|
|
59
|
+
export interface ARR {
|
|
60
|
+
total: number;
|
|
61
|
+
fromMRR?: number;
|
|
62
|
+
contracted?: number;
|
|
63
|
+
currency: Currency;
|
|
64
|
+
asOf: Date;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Net Revenue Retention (NRR) / Dollar-based Net Retention (DBNR)
|
|
68
|
+
*/
|
|
69
|
+
export interface NRR {
|
|
70
|
+
rate: number;
|
|
71
|
+
startingMRR: number;
|
|
72
|
+
endingMRR: number;
|
|
73
|
+
expansion: number;
|
|
74
|
+
contraction: number;
|
|
75
|
+
churn: number;
|
|
76
|
+
period: MetricPeriod;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Gross Revenue Retention (GRR)
|
|
80
|
+
*/
|
|
81
|
+
export interface GRR {
|
|
82
|
+
rate: number;
|
|
83
|
+
startingMRR: number;
|
|
84
|
+
endingMRR: number;
|
|
85
|
+
contraction: number;
|
|
86
|
+
churn: number;
|
|
87
|
+
period: MetricPeriod;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Average Revenue Per User/Account
|
|
91
|
+
*/
|
|
92
|
+
export interface ARPU {
|
|
93
|
+
value: number;
|
|
94
|
+
totalRevenue: number;
|
|
95
|
+
totalUsers: number;
|
|
96
|
+
currency: Currency;
|
|
97
|
+
period: MetricPeriod;
|
|
98
|
+
segment?: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Revenue by segment/cohort
|
|
102
|
+
*/
|
|
103
|
+
export interface RevenueSegment {
|
|
104
|
+
name: string;
|
|
105
|
+
mrr: number;
|
|
106
|
+
arr: number;
|
|
107
|
+
customers: number;
|
|
108
|
+
arpu: number;
|
|
109
|
+
growth: number;
|
|
110
|
+
currency: Currency;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Customer Acquisition Cost (CAC)
|
|
114
|
+
*/
|
|
115
|
+
export interface CAC {
|
|
116
|
+
value: number;
|
|
117
|
+
totalSalesMarketingSpend: number;
|
|
118
|
+
newCustomersAcquired: number;
|
|
119
|
+
currency: Currency;
|
|
120
|
+
period: MetricPeriod;
|
|
121
|
+
byChannel?: Record<string, number>;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Customer Lifetime Value (LTV/CLV)
|
|
125
|
+
*/
|
|
126
|
+
export interface LTV {
|
|
127
|
+
value: number;
|
|
128
|
+
arpu: number;
|
|
129
|
+
grossMargin: number;
|
|
130
|
+
churnRate: number;
|
|
131
|
+
averageLifetimeMonths: number;
|
|
132
|
+
currency: Currency;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* LTV:CAC Ratio
|
|
136
|
+
*/
|
|
137
|
+
export interface LTVtoCAC {
|
|
138
|
+
ratio: number;
|
|
139
|
+
ltv: number;
|
|
140
|
+
cac: number;
|
|
141
|
+
paybackMonths: number;
|
|
142
|
+
healthy: boolean;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Churn metrics
|
|
146
|
+
*/
|
|
147
|
+
export interface Churn {
|
|
148
|
+
customerChurnRate: number;
|
|
149
|
+
customersLost: number;
|
|
150
|
+
customersStart: number;
|
|
151
|
+
revenueChurnRate: number;
|
|
152
|
+
mrrChurned: number;
|
|
153
|
+
netRevenueChurnRate: number;
|
|
154
|
+
period: MetricPeriod;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Retention cohort
|
|
158
|
+
*/
|
|
159
|
+
export interface RetentionCohort {
|
|
160
|
+
cohortDate: Date;
|
|
161
|
+
cohortLabel: string;
|
|
162
|
+
initialCustomers: number;
|
|
163
|
+
initialMRR: number;
|
|
164
|
+
retentionByMonth: number[];
|
|
165
|
+
revenueByMonth: number[];
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Growth rate metrics
|
|
169
|
+
*/
|
|
170
|
+
export interface GrowthRate {
|
|
171
|
+
mom: number;
|
|
172
|
+
qoq: number;
|
|
173
|
+
yoy: number;
|
|
174
|
+
cagr?: number;
|
|
175
|
+
metric: string;
|
|
176
|
+
period: MetricPeriod;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Quick ratio (growth efficiency)
|
|
180
|
+
* (New MRR + Expansion MRR) / (Churned MRR + Contraction MRR)
|
|
181
|
+
*/
|
|
182
|
+
export interface QuickRatio {
|
|
183
|
+
ratio: number;
|
|
184
|
+
newMRR: number;
|
|
185
|
+
expansionMRR: number;
|
|
186
|
+
churnedMRR: number;
|
|
187
|
+
contractionMRR: number;
|
|
188
|
+
healthy: boolean;
|
|
189
|
+
period: MetricPeriod;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Magic Number
|
|
193
|
+
* Net New ARR / Sales & Marketing Spend (previous quarter)
|
|
194
|
+
*/
|
|
195
|
+
export interface MagicNumber {
|
|
196
|
+
value: number;
|
|
197
|
+
netNewARR: number;
|
|
198
|
+
salesMarketingSpend: number;
|
|
199
|
+
efficient: boolean;
|
|
200
|
+
period: MetricPeriod;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Burn Multiple
|
|
204
|
+
* Net Burn / Net New ARR
|
|
205
|
+
*/
|
|
206
|
+
export interface BurnMultiple {
|
|
207
|
+
value: number;
|
|
208
|
+
netBurn: number;
|
|
209
|
+
netNewARR: number;
|
|
210
|
+
efficient: boolean;
|
|
211
|
+
period: MetricPeriod;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Rule of 40
|
|
215
|
+
* Growth Rate + Profit Margin >= 40%
|
|
216
|
+
*/
|
|
217
|
+
export interface RuleOf40 {
|
|
218
|
+
score: number;
|
|
219
|
+
revenueGrowthRate: number;
|
|
220
|
+
profitMargin: number;
|
|
221
|
+
passing: boolean;
|
|
222
|
+
period: MetricPeriod;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* SaaS Efficiency Score
|
|
226
|
+
* Combines multiple efficiency metrics
|
|
227
|
+
*/
|
|
228
|
+
export interface EfficiencyScore {
|
|
229
|
+
overall: number;
|
|
230
|
+
components: {
|
|
231
|
+
ltvCacRatio: number;
|
|
232
|
+
magicNumber: number;
|
|
233
|
+
quickRatio: number;
|
|
234
|
+
nrr: number;
|
|
235
|
+
ruleOf40: number;
|
|
236
|
+
};
|
|
237
|
+
period: MetricPeriod;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Sales pipeline metrics
|
|
241
|
+
*/
|
|
242
|
+
export interface Pipeline {
|
|
243
|
+
totalValue: number;
|
|
244
|
+
weightedValue: number;
|
|
245
|
+
stages: PipelineStage[];
|
|
246
|
+
velocity: number;
|
|
247
|
+
conversionRate: number;
|
|
248
|
+
currency: Currency;
|
|
249
|
+
asOf: Date;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Pipeline stage
|
|
253
|
+
*/
|
|
254
|
+
export interface PipelineStage {
|
|
255
|
+
name: string;
|
|
256
|
+
value: number;
|
|
257
|
+
count: number;
|
|
258
|
+
probability: number;
|
|
259
|
+
averageDaysInStage: number;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Sales velocity
|
|
263
|
+
* (Opportunities * Win Rate * Average Deal Size) / Sales Cycle Length
|
|
264
|
+
*/
|
|
265
|
+
export interface SalesVelocity {
|
|
266
|
+
value: number;
|
|
267
|
+
opportunities: number;
|
|
268
|
+
winRate: number;
|
|
269
|
+
averageDealSize: number;
|
|
270
|
+
salesCycleLength: number;
|
|
271
|
+
currency: Currency;
|
|
272
|
+
period: MetricPeriod;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Net Promoter Score
|
|
276
|
+
*/
|
|
277
|
+
export interface NPS {
|
|
278
|
+
score: number;
|
|
279
|
+
promoters: number;
|
|
280
|
+
passives: number;
|
|
281
|
+
detractors: number;
|
|
282
|
+
responses: number;
|
|
283
|
+
responseRate?: number;
|
|
284
|
+
asOf: Date;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Customer health score
|
|
288
|
+
*/
|
|
289
|
+
export interface CustomerHealth {
|
|
290
|
+
averageScore: number;
|
|
291
|
+
healthy: number;
|
|
292
|
+
atRisk: number;
|
|
293
|
+
critical: number;
|
|
294
|
+
factors: HealthFactor[];
|
|
295
|
+
asOf: Date;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Health factor
|
|
299
|
+
*/
|
|
300
|
+
export interface HealthFactor {
|
|
301
|
+
name: string;
|
|
302
|
+
weight: number;
|
|
303
|
+
score: number;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Comprehensive SaaS metrics snapshot
|
|
307
|
+
*/
|
|
308
|
+
export interface SaaSMetrics {
|
|
309
|
+
mrr: MRR;
|
|
310
|
+
arr: ARR;
|
|
311
|
+
nrr: NRR;
|
|
312
|
+
grr: GRR;
|
|
313
|
+
arpu: ARPU;
|
|
314
|
+
cac: CAC;
|
|
315
|
+
ltv: LTV;
|
|
316
|
+
ltvCac: LTVtoCAC;
|
|
317
|
+
churn: Churn;
|
|
318
|
+
growthRate: GrowthRate;
|
|
319
|
+
quickRatio: QuickRatio;
|
|
320
|
+
magicNumber?: MagicNumber;
|
|
321
|
+
burnMultiple?: BurnMultiple;
|
|
322
|
+
ruleOf40?: RuleOf40;
|
|
323
|
+
nps?: NPS;
|
|
324
|
+
customerHealth?: CustomerHealth;
|
|
325
|
+
period: MetricPeriod;
|
|
326
|
+
generatedAt: Date;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Calculate MRR from components
|
|
330
|
+
*/
|
|
331
|
+
export declare function calculateMRR(input: {
|
|
332
|
+
newMRR: number;
|
|
333
|
+
expansionMRR: number;
|
|
334
|
+
contractionMRR: number;
|
|
335
|
+
churnedMRR: number;
|
|
336
|
+
reactivationMRR?: number;
|
|
337
|
+
previousMRR: number;
|
|
338
|
+
currency?: Currency;
|
|
339
|
+
period: MetricPeriod;
|
|
340
|
+
}): MRR;
|
|
341
|
+
/**
|
|
342
|
+
* Calculate ARR from MRR
|
|
343
|
+
*/
|
|
344
|
+
export declare function calculateARRFromMRR(mrr: number, currency?: Currency): ARR;
|
|
345
|
+
/**
|
|
346
|
+
* Calculate NRR
|
|
347
|
+
*/
|
|
348
|
+
export declare function calculateNRR(input: {
|
|
349
|
+
startingMRR: number;
|
|
350
|
+
expansion: number;
|
|
351
|
+
contraction: number;
|
|
352
|
+
churn: number;
|
|
353
|
+
period: MetricPeriod;
|
|
354
|
+
}): NRR;
|
|
355
|
+
/**
|
|
356
|
+
* Calculate GRR
|
|
357
|
+
*/
|
|
358
|
+
export declare function calculateGRR(input: {
|
|
359
|
+
startingMRR: number;
|
|
360
|
+
contraction: number;
|
|
361
|
+
churn: number;
|
|
362
|
+
period: MetricPeriod;
|
|
363
|
+
}): GRR;
|
|
364
|
+
/**
|
|
365
|
+
* Calculate CAC
|
|
366
|
+
*/
|
|
367
|
+
export declare function calculateCACMetric(input: {
|
|
368
|
+
salesMarketingSpend: number;
|
|
369
|
+
newCustomers: number;
|
|
370
|
+
currency?: Currency;
|
|
371
|
+
period: MetricPeriod;
|
|
372
|
+
byChannel?: Record<string, {
|
|
373
|
+
spend: number;
|
|
374
|
+
customers: number;
|
|
375
|
+
}>;
|
|
376
|
+
}): CAC;
|
|
377
|
+
/**
|
|
378
|
+
* Calculate LTV
|
|
379
|
+
*/
|
|
380
|
+
export declare function calculateLTVMetric(input: {
|
|
381
|
+
arpu: number;
|
|
382
|
+
grossMargin: number;
|
|
383
|
+
churnRate: number;
|
|
384
|
+
currency?: Currency;
|
|
385
|
+
}): LTV;
|
|
386
|
+
/**
|
|
387
|
+
* Calculate LTV:CAC ratio
|
|
388
|
+
*/
|
|
389
|
+
export declare function calculateLTVtoCACRatio(ltv: LTV, cac: CAC): LTVtoCAC;
|
|
390
|
+
/**
|
|
391
|
+
* Calculate Quick Ratio
|
|
392
|
+
*/
|
|
393
|
+
export declare function calculateQuickRatioMetric(mrr: MRR): QuickRatio;
|
|
394
|
+
/**
|
|
395
|
+
* Calculate Magic Number
|
|
396
|
+
*/
|
|
397
|
+
export declare function calculateMagicNumberMetric(input: {
|
|
398
|
+
netNewARR: number;
|
|
399
|
+
salesMarketingSpend: number;
|
|
400
|
+
period: MetricPeriod;
|
|
401
|
+
}): MagicNumber;
|
|
402
|
+
/**
|
|
403
|
+
* Calculate Burn Multiple
|
|
404
|
+
*/
|
|
405
|
+
export declare function calculateBurnMultipleMetric(input: {
|
|
406
|
+
netBurn: number;
|
|
407
|
+
netNewARR: number;
|
|
408
|
+
period: MetricPeriod;
|
|
409
|
+
}): BurnMultiple;
|
|
410
|
+
/**
|
|
411
|
+
* Calculate Rule of 40
|
|
412
|
+
*/
|
|
413
|
+
export declare function calculateRuleOf40Metric(input: {
|
|
414
|
+
revenueGrowthRate: number;
|
|
415
|
+
profitMargin: number;
|
|
416
|
+
period: MetricPeriod;
|
|
417
|
+
}): RuleOf40;
|
|
418
|
+
/**
|
|
419
|
+
* Calculate growth rates
|
|
420
|
+
*/
|
|
421
|
+
export declare function calculateGrowthRates(input: {
|
|
422
|
+
current: number;
|
|
423
|
+
previousMonth?: number;
|
|
424
|
+
previousQuarter?: number;
|
|
425
|
+
previousYear?: number;
|
|
426
|
+
metric: string;
|
|
427
|
+
period: MetricPeriod;
|
|
428
|
+
}): GrowthRate;
|
|
429
|
+
/**
|
|
430
|
+
* Calculate churn metrics
|
|
431
|
+
*/
|
|
432
|
+
export declare function calculateChurnMetrics(input: {
|
|
433
|
+
customersStart: number;
|
|
434
|
+
customersLost: number;
|
|
435
|
+
mrrStart: number;
|
|
436
|
+
mrrChurned: number;
|
|
437
|
+
expansionMRR: number;
|
|
438
|
+
period: MetricPeriod;
|
|
439
|
+
}): Churn;
|
|
440
|
+
/**
|
|
441
|
+
* Aggregate time series data by period
|
|
442
|
+
*/
|
|
443
|
+
export declare function aggregateTimeSeries<T extends number>(series: TimeSeries<T>, targetPeriod: TimePeriod): TimeSeries<T>;
|
|
444
|
+
/**
|
|
445
|
+
* Create metric period from dates
|
|
446
|
+
*/
|
|
447
|
+
export declare function createMetricPeriod(period: TimePeriod, start: Date, end: Date, label?: string): MetricPeriod;
|
|
448
|
+
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|