@epicdm/flowstate-templates 1.0.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.
@@ -0,0 +1,260 @@
1
+ /** A complete template bundle for one business type */
2
+ interface TemplateBundle {
3
+ id: string;
4
+ label: string;
5
+ description: string;
6
+ category: BusinessCategory;
7
+ bizplan: BizplanTemplateData;
8
+ marketing: MarketingTemplateData;
9
+ product: ProductTemplateData;
10
+ content: ContentTemplateData;
11
+ operations: OperationsTemplateData;
12
+ agents: AgentOrgTemplate;
13
+ finance?: FinanceTemplateData;
14
+ }
15
+ type BusinessCategory = 'saas-product' | 'professional-services' | 'ecommerce-retail' | 'content-creator' | 'agency';
16
+ /** Template data for a business plan, matching BusinessPlanModel domain fields */
17
+ interface BizplanTemplateData {
18
+ planType: 'startup' | 'growth' | 'pivot' | 'annual';
19
+ missionStatement: string;
20
+ visionStatement: string;
21
+ targetMarket: string;
22
+ problemStatement: string;
23
+ solutionSummary: string;
24
+ revenueModel: string;
25
+ competitiveAdvantage: string;
26
+ }
27
+ /** Template data for the marketing domain: offers, campaigns, audiences, lead magnets */
28
+ interface MarketingTemplateData {
29
+ offers: OfferTemplate[];
30
+ campaigns: CampaignTemplate[];
31
+ audiences: AudienceTemplate[];
32
+ leadMagnets: LeadMagnetTemplate[];
33
+ }
34
+ /** Template for an offer, aligned with OfferModel */
35
+ interface OfferTemplate {
36
+ name: string;
37
+ description: string;
38
+ type: 'core' | 'tripwire' | 'upsell' | 'downsell' | 'lead_magnet';
39
+ targetAvatar: string;
40
+ valueStack: Array<{
41
+ name: string;
42
+ value: number;
43
+ description: string;
44
+ }>;
45
+ bonuses: Array<{
46
+ name: string;
47
+ value: number;
48
+ type: string;
49
+ description: string;
50
+ }>;
51
+ price: number;
52
+ compareAtPrice: number;
53
+ guaranteeType: 'unconditional' | 'conditional' | 'anti' | 'performance';
54
+ guaranteeTerms: string;
55
+ scarcityType: 'quantity' | 'time' | 'cohort';
56
+ scarcityDetails: string;
57
+ urgencyType: 'deadline' | 'seasonal' | 'pricing' | 'exploding';
58
+ urgencyDetails: string;
59
+ headline: string;
60
+ }
61
+ /** Template for a campaign, aligned with CampaignModel */
62
+ interface CampaignTemplate {
63
+ name: string;
64
+ description: string;
65
+ type: 'content' | 'email' | 'social' | 'paid_ads' | 'outreach' | 'launch' | 'partnership' | 'event';
66
+ channel: string;
67
+ goalType: 'leads' | 'sales' | 'awareness' | 'engagement';
68
+ goalTarget: number;
69
+ budget: number;
70
+ }
71
+ /** Template for an audience segment, aligned with AudienceModel */
72
+ interface AudienceTemplate {
73
+ name: string;
74
+ description: string;
75
+ type: 'segment' | 'persona' | 'list';
76
+ source: 'organic' | 'paid' | 'referral' | 'import';
77
+ criteria: string;
78
+ }
79
+ /** Template for a lead magnet, aligned with LeadMagnetModel */
80
+ interface LeadMagnetTemplate {
81
+ name: string;
82
+ description: string;
83
+ type: 'problem_revealer' | 'sample_trial' | 'one_step' | 'software_tool' | 'checklist' | 'guide';
84
+ deliveryMethod: 'pdf' | 'video' | 'email_course' | 'tool' | 'service';
85
+ }
86
+ /** Template data for the product domain: product definition, goals, initiatives */
87
+ interface ProductTemplateData {
88
+ product: ProductTemplate;
89
+ goals: GoalTemplate[];
90
+ initiatives: InitiativeTemplate[];
91
+ }
92
+ /** Template for a product, aligned with ProductModel */
93
+ interface ProductTemplate {
94
+ type: 'software' | 'physical' | 'service' | 'content' | 'custom';
95
+ currentPhase: string;
96
+ problemStatement: string;
97
+ valueProposition: string;
98
+ targetMarket: string[];
99
+ customerPersona: string;
100
+ competitiveLandscape: string;
101
+ kpis: Array<{
102
+ name: string;
103
+ target: number;
104
+ unit: string;
105
+ }>;
106
+ }
107
+ /** Template for a goal, aligned with GoalModel */
108
+ interface GoalTemplate {
109
+ name: string;
110
+ description: string;
111
+ category: 'Revenue' | 'Growth' | 'Quality' | 'Efficiency' | 'Custom';
112
+ metrics: Array<{
113
+ name: string;
114
+ type: string;
115
+ targetValue: number;
116
+ unit: string;
117
+ }>;
118
+ }
119
+ /** Template for an initiative, aligned with InitiativeModel */
120
+ interface InitiativeTemplate {
121
+ name: string;
122
+ description: string;
123
+ quarter: string;
124
+ priority: 'High' | 'Medium' | 'Low';
125
+ }
126
+ /** Template data for the content domain: pillars, types, cadence, channels */
127
+ interface ContentTemplateData {
128
+ pillars: ContentPillarTemplate[];
129
+ contentTypes: string[];
130
+ publishingCadence: string;
131
+ channels: string[];
132
+ }
133
+ /** Template for a content pillar, aligned with ContentPillarModel */
134
+ interface ContentPillarTemplate {
135
+ name: string;
136
+ description: string;
137
+ topics: string[];
138
+ }
139
+ /** Template data for the operations domain: process definitions */
140
+ interface OperationsTemplateData {
141
+ processes: ProcessTemplate[];
142
+ }
143
+ /** Template for a process, aligned with ProcessModel */
144
+ interface ProcessTemplate {
145
+ name: string;
146
+ title: string;
147
+ description: string;
148
+ category: string;
149
+ steps: Array<{
150
+ name: string;
151
+ title: string;
152
+ stepType: string;
153
+ description: string;
154
+ }>;
155
+ }
156
+ /** Template data for the agent org chart: roles, reporting, RACI */
157
+ interface AgentOrgTemplate {
158
+ orgName: string;
159
+ orgSize: string;
160
+ roles: OrgRoleTemplate[];
161
+ reportingStructure: ReportingLine[];
162
+ raciMatrix: RaciEntry[];
163
+ }
164
+ /** Template for an organizational role */
165
+ interface OrgRoleTemplate {
166
+ id: string;
167
+ title: string;
168
+ level: number;
169
+ department: string;
170
+ description: string;
171
+ responsibilities: string[];
172
+ }
173
+ /** Template for a reporting line in the org chart */
174
+ interface ReportingLine {
175
+ roleId: string;
176
+ reportsTo: string | null;
177
+ }
178
+ /** Template for a RACI matrix entry */
179
+ interface RaciEntry {
180
+ area: string;
181
+ roleId: string;
182
+ assignment: 'R' | 'A' | 'C' | 'I';
183
+ }
184
+ /** Template data for the finance domain: chart of accounts, journal entries, budgets */
185
+ interface FinanceTemplateData {
186
+ chartOfAccounts: AccountTemplate[];
187
+ fiscalPeriods: FiscalPeriodTemplate[];
188
+ budgetItems: BudgetItemTemplate[];
189
+ journalEntries: JournalEntryTemplate[];
190
+ invoices: InvoiceTemplate[];
191
+ vendorBills: VendorBillTemplate[];
192
+ }
193
+ /** Template for a chart of accounts entry */
194
+ interface AccountTemplate {
195
+ accountNumber: string;
196
+ name: string;
197
+ accountType: 'asset' | 'liability' | 'equity' | 'revenue' | 'cogs' | 'expense' | 'other_income' | 'other_expense';
198
+ accountSubType?: string;
199
+ normalBalance: 'debit' | 'credit';
200
+ parentAccountRef?: string;
201
+ openingBalance?: number;
202
+ isActive?: boolean;
203
+ isBankAccount?: boolean;
204
+ }
205
+ /** Template for a fiscal period */
206
+ interface FiscalPeriodTemplate {
207
+ name: string;
208
+ periodType: 'monthly' | 'quarterly';
209
+ startDayOffset: number;
210
+ endDayOffset: number;
211
+ periodStatus: 'open' | 'closed';
212
+ }
213
+ /** Template for a journal entry with inline lines */
214
+ interface JournalEntryTemplate {
215
+ entryNumber: string;
216
+ dayOffset: number;
217
+ memo: string;
218
+ source: 'manual' | 'invoice_created' | 'invoice_paid' | 'bill_created' | 'bill_paid' | 'opening_balance';
219
+ entryStatus: 'posted' | 'draft';
220
+ lines: JournalLineTemplate[];
221
+ }
222
+ /** Template for a journal entry line */
223
+ interface JournalLineTemplate {
224
+ accountRef: string;
225
+ debit: number;
226
+ credit: number;
227
+ memo?: string;
228
+ }
229
+ /** Template for a budget item */
230
+ interface BudgetItemTemplate {
231
+ accountRef: string;
232
+ periodRef: string;
233
+ amount: number;
234
+ budgetType: 'revenue' | 'expense';
235
+ }
236
+ /** Template for an invoice (AR) */
237
+ interface InvoiceTemplate {
238
+ dayOffset: number;
239
+ dueDayOffset: number;
240
+ clientName: string;
241
+ total: number;
242
+ amountPaid: number;
243
+ invoiceStatus: 'draft' | 'sent' | 'partial' | 'paid' | 'overdue' | 'voided';
244
+ }
245
+ /** Template for a vendor bill (AP) */
246
+ interface VendorBillTemplate {
247
+ dayOffset: number;
248
+ dueDayOffset: number;
249
+ vendorName: string;
250
+ total: number;
251
+ amountPaid: number;
252
+ billStatus: 'draft' | 'received' | 'partial' | 'paid' | 'overdue';
253
+ }
254
+
255
+ declare function registerBundle(bundle: TemplateBundle): void;
256
+ declare function listTemplates(): TemplateBundle[];
257
+ declare function getTemplate(id: BusinessCategory | string): TemplateBundle | undefined;
258
+ declare function getTemplateDomain<K extends keyof TemplateBundle>(id: BusinessCategory | string, domain: K): TemplateBundle[K] | undefined;
259
+
260
+ export { type AccountTemplate, type AgentOrgTemplate, type AudienceTemplate, type BizplanTemplateData, type BudgetItemTemplate, type BusinessCategory, type CampaignTemplate, type ContentPillarTemplate, type ContentTemplateData, type FinanceTemplateData, type FiscalPeriodTemplate, type GoalTemplate, type InitiativeTemplate, type InvoiceTemplate, type JournalEntryTemplate, type JournalLineTemplate, type LeadMagnetTemplate, type MarketingTemplateData, type OfferTemplate, type OperationsTemplateData, type OrgRoleTemplate, type ProcessTemplate, type ProductTemplate, type ProductTemplateData, type RaciEntry, type ReportingLine, type TemplateBundle, type VendorBillTemplate, getTemplate, getTemplateDomain, listTemplates, registerBundle };
@@ -0,0 +1,260 @@
1
+ /** A complete template bundle for one business type */
2
+ interface TemplateBundle {
3
+ id: string;
4
+ label: string;
5
+ description: string;
6
+ category: BusinessCategory;
7
+ bizplan: BizplanTemplateData;
8
+ marketing: MarketingTemplateData;
9
+ product: ProductTemplateData;
10
+ content: ContentTemplateData;
11
+ operations: OperationsTemplateData;
12
+ agents: AgentOrgTemplate;
13
+ finance?: FinanceTemplateData;
14
+ }
15
+ type BusinessCategory = 'saas-product' | 'professional-services' | 'ecommerce-retail' | 'content-creator' | 'agency';
16
+ /** Template data for a business plan, matching BusinessPlanModel domain fields */
17
+ interface BizplanTemplateData {
18
+ planType: 'startup' | 'growth' | 'pivot' | 'annual';
19
+ missionStatement: string;
20
+ visionStatement: string;
21
+ targetMarket: string;
22
+ problemStatement: string;
23
+ solutionSummary: string;
24
+ revenueModel: string;
25
+ competitiveAdvantage: string;
26
+ }
27
+ /** Template data for the marketing domain: offers, campaigns, audiences, lead magnets */
28
+ interface MarketingTemplateData {
29
+ offers: OfferTemplate[];
30
+ campaigns: CampaignTemplate[];
31
+ audiences: AudienceTemplate[];
32
+ leadMagnets: LeadMagnetTemplate[];
33
+ }
34
+ /** Template for an offer, aligned with OfferModel */
35
+ interface OfferTemplate {
36
+ name: string;
37
+ description: string;
38
+ type: 'core' | 'tripwire' | 'upsell' | 'downsell' | 'lead_magnet';
39
+ targetAvatar: string;
40
+ valueStack: Array<{
41
+ name: string;
42
+ value: number;
43
+ description: string;
44
+ }>;
45
+ bonuses: Array<{
46
+ name: string;
47
+ value: number;
48
+ type: string;
49
+ description: string;
50
+ }>;
51
+ price: number;
52
+ compareAtPrice: number;
53
+ guaranteeType: 'unconditional' | 'conditional' | 'anti' | 'performance';
54
+ guaranteeTerms: string;
55
+ scarcityType: 'quantity' | 'time' | 'cohort';
56
+ scarcityDetails: string;
57
+ urgencyType: 'deadline' | 'seasonal' | 'pricing' | 'exploding';
58
+ urgencyDetails: string;
59
+ headline: string;
60
+ }
61
+ /** Template for a campaign, aligned with CampaignModel */
62
+ interface CampaignTemplate {
63
+ name: string;
64
+ description: string;
65
+ type: 'content' | 'email' | 'social' | 'paid_ads' | 'outreach' | 'launch' | 'partnership' | 'event';
66
+ channel: string;
67
+ goalType: 'leads' | 'sales' | 'awareness' | 'engagement';
68
+ goalTarget: number;
69
+ budget: number;
70
+ }
71
+ /** Template for an audience segment, aligned with AudienceModel */
72
+ interface AudienceTemplate {
73
+ name: string;
74
+ description: string;
75
+ type: 'segment' | 'persona' | 'list';
76
+ source: 'organic' | 'paid' | 'referral' | 'import';
77
+ criteria: string;
78
+ }
79
+ /** Template for a lead magnet, aligned with LeadMagnetModel */
80
+ interface LeadMagnetTemplate {
81
+ name: string;
82
+ description: string;
83
+ type: 'problem_revealer' | 'sample_trial' | 'one_step' | 'software_tool' | 'checklist' | 'guide';
84
+ deliveryMethod: 'pdf' | 'video' | 'email_course' | 'tool' | 'service';
85
+ }
86
+ /** Template data for the product domain: product definition, goals, initiatives */
87
+ interface ProductTemplateData {
88
+ product: ProductTemplate;
89
+ goals: GoalTemplate[];
90
+ initiatives: InitiativeTemplate[];
91
+ }
92
+ /** Template for a product, aligned with ProductModel */
93
+ interface ProductTemplate {
94
+ type: 'software' | 'physical' | 'service' | 'content' | 'custom';
95
+ currentPhase: string;
96
+ problemStatement: string;
97
+ valueProposition: string;
98
+ targetMarket: string[];
99
+ customerPersona: string;
100
+ competitiveLandscape: string;
101
+ kpis: Array<{
102
+ name: string;
103
+ target: number;
104
+ unit: string;
105
+ }>;
106
+ }
107
+ /** Template for a goal, aligned with GoalModel */
108
+ interface GoalTemplate {
109
+ name: string;
110
+ description: string;
111
+ category: 'Revenue' | 'Growth' | 'Quality' | 'Efficiency' | 'Custom';
112
+ metrics: Array<{
113
+ name: string;
114
+ type: string;
115
+ targetValue: number;
116
+ unit: string;
117
+ }>;
118
+ }
119
+ /** Template for an initiative, aligned with InitiativeModel */
120
+ interface InitiativeTemplate {
121
+ name: string;
122
+ description: string;
123
+ quarter: string;
124
+ priority: 'High' | 'Medium' | 'Low';
125
+ }
126
+ /** Template data for the content domain: pillars, types, cadence, channels */
127
+ interface ContentTemplateData {
128
+ pillars: ContentPillarTemplate[];
129
+ contentTypes: string[];
130
+ publishingCadence: string;
131
+ channels: string[];
132
+ }
133
+ /** Template for a content pillar, aligned with ContentPillarModel */
134
+ interface ContentPillarTemplate {
135
+ name: string;
136
+ description: string;
137
+ topics: string[];
138
+ }
139
+ /** Template data for the operations domain: process definitions */
140
+ interface OperationsTemplateData {
141
+ processes: ProcessTemplate[];
142
+ }
143
+ /** Template for a process, aligned with ProcessModel */
144
+ interface ProcessTemplate {
145
+ name: string;
146
+ title: string;
147
+ description: string;
148
+ category: string;
149
+ steps: Array<{
150
+ name: string;
151
+ title: string;
152
+ stepType: string;
153
+ description: string;
154
+ }>;
155
+ }
156
+ /** Template data for the agent org chart: roles, reporting, RACI */
157
+ interface AgentOrgTemplate {
158
+ orgName: string;
159
+ orgSize: string;
160
+ roles: OrgRoleTemplate[];
161
+ reportingStructure: ReportingLine[];
162
+ raciMatrix: RaciEntry[];
163
+ }
164
+ /** Template for an organizational role */
165
+ interface OrgRoleTemplate {
166
+ id: string;
167
+ title: string;
168
+ level: number;
169
+ department: string;
170
+ description: string;
171
+ responsibilities: string[];
172
+ }
173
+ /** Template for a reporting line in the org chart */
174
+ interface ReportingLine {
175
+ roleId: string;
176
+ reportsTo: string | null;
177
+ }
178
+ /** Template for a RACI matrix entry */
179
+ interface RaciEntry {
180
+ area: string;
181
+ roleId: string;
182
+ assignment: 'R' | 'A' | 'C' | 'I';
183
+ }
184
+ /** Template data for the finance domain: chart of accounts, journal entries, budgets */
185
+ interface FinanceTemplateData {
186
+ chartOfAccounts: AccountTemplate[];
187
+ fiscalPeriods: FiscalPeriodTemplate[];
188
+ budgetItems: BudgetItemTemplate[];
189
+ journalEntries: JournalEntryTemplate[];
190
+ invoices: InvoiceTemplate[];
191
+ vendorBills: VendorBillTemplate[];
192
+ }
193
+ /** Template for a chart of accounts entry */
194
+ interface AccountTemplate {
195
+ accountNumber: string;
196
+ name: string;
197
+ accountType: 'asset' | 'liability' | 'equity' | 'revenue' | 'cogs' | 'expense' | 'other_income' | 'other_expense';
198
+ accountSubType?: string;
199
+ normalBalance: 'debit' | 'credit';
200
+ parentAccountRef?: string;
201
+ openingBalance?: number;
202
+ isActive?: boolean;
203
+ isBankAccount?: boolean;
204
+ }
205
+ /** Template for a fiscal period */
206
+ interface FiscalPeriodTemplate {
207
+ name: string;
208
+ periodType: 'monthly' | 'quarterly';
209
+ startDayOffset: number;
210
+ endDayOffset: number;
211
+ periodStatus: 'open' | 'closed';
212
+ }
213
+ /** Template for a journal entry with inline lines */
214
+ interface JournalEntryTemplate {
215
+ entryNumber: string;
216
+ dayOffset: number;
217
+ memo: string;
218
+ source: 'manual' | 'invoice_created' | 'invoice_paid' | 'bill_created' | 'bill_paid' | 'opening_balance';
219
+ entryStatus: 'posted' | 'draft';
220
+ lines: JournalLineTemplate[];
221
+ }
222
+ /** Template for a journal entry line */
223
+ interface JournalLineTemplate {
224
+ accountRef: string;
225
+ debit: number;
226
+ credit: number;
227
+ memo?: string;
228
+ }
229
+ /** Template for a budget item */
230
+ interface BudgetItemTemplate {
231
+ accountRef: string;
232
+ periodRef: string;
233
+ amount: number;
234
+ budgetType: 'revenue' | 'expense';
235
+ }
236
+ /** Template for an invoice (AR) */
237
+ interface InvoiceTemplate {
238
+ dayOffset: number;
239
+ dueDayOffset: number;
240
+ clientName: string;
241
+ total: number;
242
+ amountPaid: number;
243
+ invoiceStatus: 'draft' | 'sent' | 'partial' | 'paid' | 'overdue' | 'voided';
244
+ }
245
+ /** Template for a vendor bill (AP) */
246
+ interface VendorBillTemplate {
247
+ dayOffset: number;
248
+ dueDayOffset: number;
249
+ vendorName: string;
250
+ total: number;
251
+ amountPaid: number;
252
+ billStatus: 'draft' | 'received' | 'partial' | 'paid' | 'overdue';
253
+ }
254
+
255
+ declare function registerBundle(bundle: TemplateBundle): void;
256
+ declare function listTemplates(): TemplateBundle[];
257
+ declare function getTemplate(id: BusinessCategory | string): TemplateBundle | undefined;
258
+ declare function getTemplateDomain<K extends keyof TemplateBundle>(id: BusinessCategory | string, domain: K): TemplateBundle[K] | undefined;
259
+
260
+ export { type AccountTemplate, type AgentOrgTemplate, type AudienceTemplate, type BizplanTemplateData, type BudgetItemTemplate, type BusinessCategory, type CampaignTemplate, type ContentPillarTemplate, type ContentTemplateData, type FinanceTemplateData, type FiscalPeriodTemplate, type GoalTemplate, type InitiativeTemplate, type InvoiceTemplate, type JournalEntryTemplate, type JournalLineTemplate, type LeadMagnetTemplate, type MarketingTemplateData, type OfferTemplate, type OperationsTemplateData, type OrgRoleTemplate, type ProcessTemplate, type ProductTemplate, type ProductTemplateData, type RaciEntry, type ReportingLine, type TemplateBundle, type VendorBillTemplate, getTemplate, getTemplateDomain, listTemplates, registerBundle };