@chatarmin/os 1.8.9 → 1.14.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.
Files changed (40) hide show
  1. package/README.md +63 -4
  2. package/dist/billing/client.d.ts.map +1 -1
  3. package/dist/billing/client.js +1 -0
  4. package/dist/billing/index.d.ts +2 -1
  5. package/dist/billing/index.d.ts.map +1 -1
  6. package/dist/billing/read-types.d.ts +2 -0
  7. package/dist/billing/read-types.d.ts.map +1 -1
  8. package/dist/billing/types.d.ts +11 -2
  9. package/dist/billing/types.d.ts.map +1 -1
  10. package/dist/billing/usage-breakdown-types.d.ts +50 -0
  11. package/dist/billing/usage-breakdown-types.d.ts.map +1 -1
  12. package/dist/companies/client.d.ts.map +1 -1
  13. package/dist/companies/client.js +4 -0
  14. package/dist/companies/index.d.ts +1 -1
  15. package/dist/companies/index.d.ts.map +1 -1
  16. package/dist/companies/types.d.ts +70 -4
  17. package/dist/companies/types.d.ts.map +1 -1
  18. package/dist/deals/client.d.ts +8 -0
  19. package/dist/deals/client.d.ts.map +1 -0
  20. package/dist/deals/client.js +6 -0
  21. package/dist/deals/index.d.ts +3 -0
  22. package/dist/deals/index.d.ts.map +1 -0
  23. package/dist/deals/index.js +1 -0
  24. package/dist/deals/types.d.ts +56 -0
  25. package/dist/deals/types.d.ts.map +1 -0
  26. package/dist/deals/types.js +1 -0
  27. package/dist/features/index.d.ts +1 -1
  28. package/dist/features/index.d.ts.map +1 -1
  29. package/dist/features/types.d.ts +17 -0
  30. package/dist/features/types.d.ts.map +1 -1
  31. package/dist/index.d.ts +63 -109
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +38 -100
  34. package/dist/onboard-flow.d.ts +74 -0
  35. package/dist/onboard-flow.d.ts.map +1 -0
  36. package/dist/onboard-flow.js +118 -0
  37. package/dist/onboard-types.d.ts +99 -0
  38. package/dist/onboard-types.d.ts.map +1 -0
  39. package/dist/onboard-types.js +1 -0
  40. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -2,13 +2,16 @@ import type { AppRouter } from "@chatarmin/api/trpc-types";
2
2
  import { type CompaniesClient } from "./companies/index.js";
3
3
  import { type ChannelsClient } from "./channels/index.js";
4
4
  import { type BillingClient } from "./billing/index.js";
5
+ import { type DealsClient } from "./deals/index.js";
5
6
  import { type FeaturesClient } from "./features/index.js";
7
+ import type { OnboardInput, OnboardResult } from "./onboard-types.js";
6
8
  export { webhooks, constructProductWebhookEvent, generateTestWebhookHeaders, OsWebhookSignatureVerificationError, WEBHOOK_ID_HEADER, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TIMESTAMP_HEADER, } from "./webhooks/index.js";
7
9
  export type { ConstructProductWebhookEventOptions, ProductWebhookEventPayload, ProductWebhookHeaders, VerifiedProductWebhookEvent, } from "./webhooks/index.js";
8
- export type { CompaniesClient, CompanyAssignee, CompanyAssignees, CreateCompanyInput, CreateCompanyResult, GetCompanyInput, LinkedCompany, ListCompaniesInput, ListCompaniesResult, ListLinkedCompaniesInput, ListLinkedCompaniesResult, ProductCompany, UpdateCompanyResult, } from "./companies/index.js";
10
+ export type { CompaniesClient, CompanyAssignee, CompanyAssignees, CreateCompanyInput, CreateCompanyResult, GetCompanyInput, LinkedCompany, ListCompaniesInput, ListCompaniesResult, ListLinkedCompaniesInput, ListLinkedCompaniesResult, ProductCompany, ApplyFreeOnboardTierInput, ApplyFreeOnboardTierResult, SetupOnboardBillingInput, SetupOnboardBillingResult, UpdateCompanyResult, } from "./companies/index.js";
9
11
  export type { ChannelLinkType, ChannelsClient, LinkChannelInput, LinkChannelResult, LinkThreadInput, LinkThreadResult, UpdateChannelLinkInput, UpdateChannelLinkResult, } from "./channels/index.js";
12
+ export type * from "./deals/index.js";
10
13
  export type { BillingClient, BillingInvoiceSummary, BillingOverview, BillingProfileSummary, BillingSubscriptionSummary, ClaimCheckoutInput, ClaimCheckoutResult, CreateBillingPortalSessionInput, EnsureFeatureSubscriptionInput, EnsureFeatureSubscriptionResult, GetBillingOverviewInput, GetUsageInput, LinkSubscriptionInput, LinkSubscriptionResult, ListBillingInvoicesOptions, PeriodOffsetRange, RelinkBillingProfileInput, ResolveInvoicePaymentUrlInput, SetUsageInput, SyncCompanyFromStripeInput, SyncCompanyFromStripeResult, UsageAggregate, UsageCycleBucket, UsageCycleSummary, UsagePoint, UsageQueryResult, UsageRecord, UsageSubscriptionItem, UsageResult, } from "./billing/index.js";
11
- export type { ExternalOrgFeatureAccessItem, FeatureAccessByExternalOrgIdResult, FeatureAccessItem, FeatureBillingDetails, FeatureCheckByExternalOrgIdResult, FeatureCheckInput, FeatureCheckResult, FeatureSetAccessInput, FeatureSetAccessResult, FeaturesClient, ListFeatureAccessInput, } from "./features/index.js";
14
+ export type { ExternalOrgFeatureAccessItem, FeatureAccessByExternalOrgIdResult, FeatureAccessItem, FeatureAccessMode, FeatureBillingDetails, FeatureCheckByExternalOrgIdResult, FeatureCheckInput, FeatureCheckResult, FeatureResolvedAccess, FeatureResolvedAccessSource, FeatureSetAccessInput, FeatureSetAccessResult, FeaturesClient, ListFeatureAccessInput, } from "./features/index.js";
12
15
  /**
13
16
  * Configuration options for the ChatarminOS SDK client.
14
17
  */
@@ -101,86 +104,7 @@ export interface BulkContactResult {
101
104
  isNew: boolean;
102
105
  }>;
103
106
  }
104
- /**
105
- * Input for the unified onboarding flow.
106
- */
107
- export interface OnboardInput {
108
- /** Your product's unique organization ID for this customer */
109
- externalOrgId: string;
110
- /** Display label for the product link (e.g., "Chatarmin CX", "Shopify") */
111
- label: string;
112
- /**
113
- * Company details used when creating a new company via onboard().
114
- */
115
- hints?: {
116
- /** Company name for new companies */
117
- companyName?: string;
118
- /** Domain for new companies */
119
- domain?: string;
120
- };
121
- /**
122
- * Stripe checkout session ID to claim.
123
- * Use when user completed Stripe checkout in your product.
124
- * @example "cs_test_xxxxxxxxxxxxx"
125
- */
126
- checkoutSessionId?: string;
127
- /**
128
- * Existing Stripe subscription ID to link.
129
- * Use when you create subscriptions on your product's Stripe account.
130
- * @example "sub_xxxxxxxxxxxxx"
131
- */
132
- stripeSubscriptionId?: string;
133
- /**
134
- * Stripe customer ID.
135
- * Will be fetched from subscription if not provided.
136
- * @example "cus_xxxxxxxxxxxxx"
137
- */
138
- stripeCustomerId?: string;
139
- /**
140
- * Tier code to apply features from.
141
- * Use for free tier signups or to tag linked subscriptions.
142
- * @example "free" | "pro" | "enterprise"
143
- */
144
- tierCode?: string;
145
- /** Primary contact email for new companies */
146
- contactEmail?: string;
147
- /** Primary contact name for new companies */
148
- contactName?: string;
149
- /**
150
- * Historical created_at timestamp for the company.
151
- * Only used when creating new companies (not for existing matches).
152
- * @example "2024-01-15T10:30:00.000Z"
153
- */
154
- createdAt?: string;
155
- }
156
- /**
157
- * Result from the onboarding flow.
158
- */
159
- export interface OnboardResult {
160
- /** The company ID (either existing or newly created) */
161
- companyId: string;
162
- /** The company name */
163
- companyName: string;
164
- /**
165
- * How the company was linked:
166
- * - `already_linked`: Company was already linked to your product
167
- * - `created`: New company was created
168
- */
169
- linkStatus: "already_linked" | "created";
170
- /** Billing status (only present if billing was configured) */
171
- billingStatus?: {
172
- /** Subscription ID if created/claimed */
173
- subscriptionId?: string;
174
- /** True if subscription was claimed from checkout */
175
- claimed?: boolean;
176
- /** True if subscription was linked */
177
- linked?: boolean;
178
- /** True if tier features were applied */
179
- tierApplied?: boolean;
180
- /** Error message if billing failed (company still linked) */
181
- error?: string;
182
- };
183
- }
107
+ export type { OnboardInput, OnboardResult } from './onboard-types.js';
184
108
  /**
185
109
  * ChatarminOS SDK Client
186
110
  *
@@ -341,6 +265,7 @@ export declare class ChatarminOS {
341
265
  name: string | null;
342
266
  role: string | null;
343
267
  short_id: string | null;
268
+ custom_fields: unknown;
344
269
  is_primary: boolean;
345
270
  avatar_url: string | null;
346
271
  }>;
@@ -395,9 +320,43 @@ export declare class ChatarminOS {
395
320
  name: string | null;
396
321
  role: string | null;
397
322
  short_id: string | null;
323
+ custom_fields: unknown;
398
324
  is_primary: boolean;
399
325
  avatar_url: string | null;
400
326
  }[]>;
327
+ /**
328
+ * Update a contact linked to a company. Identify it by `contactId` or `email`.
329
+ */
330
+ update: (input: {
331
+ companyId: string;
332
+ contactId?: string;
333
+ email?: string;
334
+ name?: string;
335
+ role?: string;
336
+ isPrimary?: boolean;
337
+ }) => Promise<{
338
+ id: string;
339
+ metadata: unknown;
340
+ created_at: Date;
341
+ updated_at: Date;
342
+ name: string | null;
343
+ role: string | null;
344
+ short_id: string | null;
345
+ custom_fields: unknown;
346
+ is_primary: boolean;
347
+ avatar_url: string | null;
348
+ }>;
349
+ /**
350
+ * Remove a contact from a company. The person is deleted only when no other company uses them.
351
+ */
352
+ unlink: (input: {
353
+ companyId: string;
354
+ contactId?: string;
355
+ email?: string;
356
+ }) => Promise<{
357
+ unlinked: boolean;
358
+ deleted: boolean;
359
+ }>;
401
360
  };
402
361
  /**
403
362
  * Feature access and entitlement operations.
@@ -425,6 +384,8 @@ export declare class ChatarminOS {
425
384
  get features(): FeaturesClient;
426
385
  /** Billing, usage tracking, subscriptions, and customer billing surfaces. */
427
386
  get billing(): BillingClient;
387
+ /** Deals and commercial churn (`deals.markChurned` is the OS churn SOP). */
388
+ get deals(): DealsClient;
428
389
  /**
429
390
  * Manual link operations for associating external IDs with companies.
430
391
  *
@@ -484,12 +445,13 @@ export declare class ChatarminOS {
484
445
  created_at: Date;
485
446
  updated_at: Date;
486
447
  sync_status: string;
448
+ custom_fields: unknown;
449
+ label: string | null;
487
450
  product_id: string;
488
451
  external_org_id: string;
489
452
  external_user_id: string | null;
490
453
  confidence: number | null;
491
454
  link_type: string;
492
- label: string | null;
493
455
  external_display_name: string | null;
494
456
  billing_profile_id: string | null;
495
457
  }>;
@@ -856,39 +818,33 @@ export declare class ChatarminOS {
856
818
  }>;
857
819
  };
858
820
  /**
859
- * Complete onboarding flow in a single call.
860
- *
861
- * This is the recommended way to onboard new customers. It handles:
862
- * 1. Smart company matching/creation
863
- * 2. Product linking
864
- * 3. Subscription claiming/linking
865
- * 4. Tier feature application
821
+ * Create or link a company for your product (fast, non-blocking).
866
822
  *
867
- * **Scenarios:**
823
+ * Handles company matching/creation, product linking, and free-tier billing setup
824
+ * (billing profile, subscription, feature access) when `tierCode: 'free'`.
825
+ * Paid tiers can use `companies.setupOnboardBilling()` after onboard or inline Stripe IDs.
826
+ * Pass `checkoutSessionId` or `stripeSubscriptionId` to claim/link Stripe inline.
868
827
  *
869
- * 1. **Stripe Checkout completed** - Pass `checkoutSessionId`
870
- * 2. **Free signup** - Pass `tierCode` only
871
- * 3. **You create Stripe subscription** - Pass `stripeSubscriptionId` + `tierCode`
828
+ * Billing failures never throw after the company exists; `billingStatus.error` is set instead.
872
829
  *
873
830
  * @param input - Onboarding parameters
874
- * @returns Result with company info and billing status
831
+ * @returns Result with company info and optional billing status
875
832
  *
876
- * @example Scenario 1: User completed Stripe checkout
833
+ * @example CX free signup
877
834
  * ```typescript
878
835
  * const result = await os.onboard({
879
836
  * externalOrgId: 'org_abc123',
880
- * label: 'My Product',
881
- * hints: {
882
- * companyName: 'Acme Inc',
883
- * domain: 'acme.com'
884
- * },
885
- * checkoutSessionId: 'cs_test_xxx' // From Stripe callback
837
+ * label: 'Chatarmin CX',
838
+ * hints: { companyName: 'Acme Inc' },
839
+ * contactEmail: 'admin@acme.com',
840
+ * contactName: 'Jane Doe',
841
+ * tierCode: 'free',
886
842
  * })
887
843
  *
888
- * // result.billingStatus.claimed = true
844
+ * // result.billingStatus.tierApplied === true (no Stripe on signup path)
889
845
  * ```
890
846
  *
891
- * @example Scenario 2: Free tier signup
847
+ * @example Scenario 1: User completed Stripe checkout
892
848
  * ```typescript
893
849
  * const result = await os.onboard({
894
850
  * externalOrgId: 'org_abc123',
@@ -897,15 +853,13 @@ export declare class ChatarminOS {
897
853
  * companyName: 'Acme Inc',
898
854
  * domain: 'acme.com'
899
855
  * },
900
- * tierCode: 'free',
901
- * contactEmail: 'admin@acme.com',
902
- * contactName: 'John Doe'
856
+ * checkoutSessionId: 'cs_test_xxx' // From Stripe callback
903
857
  * })
904
858
  *
905
- * // result.billingStatus.tierApplied = true
859
+ * // result.billingStatus.claimed = true
906
860
  * ```
907
861
  *
908
- * @example Scenario 3: You create Stripe subscription
862
+ * @example Scenario 2: You create Stripe subscription
909
863
  * ```typescript
910
864
  * // First, get tier prices
911
865
  * const tier = await os.tiers.get('pro')
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,8 +3,10 @@ import superjson from "superjson";
3
3
  import { createCompaniesClient, } from "./companies/index.js";
4
4
  import { createChannelsClient, } from "./channels/index.js";
5
5
  import { createBillingClient } from "./billing/index.js";
6
+ import { createDealsClient } from "./deals/index.js";
6
7
  import { createFeaturesClient } from "./features/index.js";
7
8
  import { webhooks } from "./webhooks/index.js";
9
+ import { runOnboardFlow } from "./onboard-flow.js";
8
10
  export { webhooks, constructProductWebhookEvent, generateTestWebhookHeaders, OsWebhookSignatureVerificationError, WEBHOOK_ID_HEADER, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TIMESTAMP_HEADER, } from "./webhooks/index.js";
9
11
  const INSPECT_SYMBOL = Symbol.for("nodejs.util.inspect.custom");
10
12
  export class ChatarminOSError extends Error {
@@ -302,6 +304,14 @@ export class ChatarminOS {
302
304
  * ```
303
305
  */
304
306
  list: (companyId, primaryOnly = false) => call("contacts.list", () => client.contacts.listForCompany.query({ companyId, primaryOnly })),
307
+ /**
308
+ * Update a contact linked to a company. Identify it by `contactId` or `email`.
309
+ */
310
+ update: (input) => call("contacts.update", () => client.contacts.updateForCompany.mutate(input)),
311
+ /**
312
+ * Remove a contact from a company. The person is deleted only when no other company uses them.
313
+ */
314
+ unlink: (input) => call("contacts.unlink", () => client.contacts.unlinkFromCompany.mutate(input)),
305
315
  };
306
316
  }
307
317
  // ==========================================================================
@@ -340,6 +350,10 @@ export class ChatarminOS {
340
350
  get billing() {
341
351
  return createBillingClient(this.client, this.call.bind(this));
342
352
  }
353
+ /** Deals and commercial churn (`deals.markChurned` is the OS churn SOP). */
354
+ get deals() {
355
+ return createDealsClient(this.client, this.call.bind(this));
356
+ }
343
357
  // ==========================================================================
344
358
  // Links
345
359
  // ==========================================================================
@@ -663,39 +677,33 @@ export class ChatarminOS {
663
677
  // Onboarding
664
678
  // ==========================================================================
665
679
  /**
666
- * Complete onboarding flow in a single call.
680
+ * Create or link a company for your product (fast, non-blocking).
667
681
  *
668
- * This is the recommended way to onboard new customers. It handles:
669
- * 1. Smart company matching/creation
670
- * 2. Product linking
671
- * 3. Subscription claiming/linking
672
- * 4. Tier feature application
682
+ * Handles company matching/creation, product linking, and free-tier billing setup
683
+ * (billing profile, subscription, feature access) when `tierCode: 'free'`.
684
+ * Paid tiers can use `companies.setupOnboardBilling()` after onboard or inline Stripe IDs.
685
+ * Pass `checkoutSessionId` or `stripeSubscriptionId` to claim/link Stripe inline.
673
686
  *
674
- * **Scenarios:**
675
- *
676
- * 1. **Stripe Checkout completed** - Pass `checkoutSessionId`
677
- * 2. **Free signup** - Pass `tierCode` only
678
- * 3. **You create Stripe subscription** - Pass `stripeSubscriptionId` + `tierCode`
687
+ * Billing failures never throw after the company exists; `billingStatus.error` is set instead.
679
688
  *
680
689
  * @param input - Onboarding parameters
681
- * @returns Result with company info and billing status
690
+ * @returns Result with company info and optional billing status
682
691
  *
683
- * @example Scenario 1: User completed Stripe checkout
692
+ * @example CX free signup
684
693
  * ```typescript
685
694
  * const result = await os.onboard({
686
695
  * externalOrgId: 'org_abc123',
687
- * label: 'My Product',
688
- * hints: {
689
- * companyName: 'Acme Inc',
690
- * domain: 'acme.com'
691
- * },
692
- * checkoutSessionId: 'cs_test_xxx' // From Stripe callback
696
+ * label: 'Chatarmin CX',
697
+ * hints: { companyName: 'Acme Inc' },
698
+ * contactEmail: 'admin@acme.com',
699
+ * contactName: 'Jane Doe',
700
+ * tierCode: 'free',
693
701
  * })
694
702
  *
695
- * // result.billingStatus.claimed = true
703
+ * // result.billingStatus.tierApplied === true (no Stripe on signup path)
696
704
  * ```
697
705
  *
698
- * @example Scenario 2: Free tier signup
706
+ * @example Scenario 1: User completed Stripe checkout
699
707
  * ```typescript
700
708
  * const result = await os.onboard({
701
709
  * externalOrgId: 'org_abc123',
@@ -704,15 +712,13 @@ export class ChatarminOS {
704
712
  * companyName: 'Acme Inc',
705
713
  * domain: 'acme.com'
706
714
  * },
707
- * tierCode: 'free',
708
- * contactEmail: 'admin@acme.com',
709
- * contactName: 'John Doe'
715
+ * checkoutSessionId: 'cs_test_xxx' // From Stripe callback
710
716
  * })
711
717
  *
712
- * // result.billingStatus.tierApplied = true
718
+ * // result.billingStatus.claimed = true
713
719
  * ```
714
720
  *
715
- * @example Scenario 3: You create Stripe subscription
721
+ * @example Scenario 2: You create Stripe subscription
716
722
  * ```typescript
717
723
  * // First, get tier prices
718
724
  * const tier = await os.tiers.get('pro')
@@ -753,81 +759,13 @@ export class ChatarminOS {
753
759
  * ```
754
760
  */
755
761
  async onboard(input) {
756
- let companyId;
757
- let companyName;
758
- let linkStatus;
759
- const existing = await this.companies.get({
760
- externalOrgId: input.externalOrgId,
762
+ return runOnboardFlow({
763
+ client: this.client,
764
+ billing: this.billing,
765
+ call: this.call.bind(this),
766
+ companies: this.companies,
767
+ input,
761
768
  });
762
- if (existing) {
763
- companyId = existing.id;
764
- companyName = existing.name;
765
- linkStatus = "already_linked";
766
- }
767
- else {
768
- const newCompany = await this.companies.create({
769
- name: input.hints?.companyName ?? `Company ${input.externalOrgId}`,
770
- domain: input.hints?.domain,
771
- externalOrgId: input.externalOrgId,
772
- label: input.label,
773
- contactEmail: input.contactEmail,
774
- contactName: input.contactName,
775
- createdAt: input.createdAt,
776
- });
777
- companyId = newCompany.id;
778
- companyName = newCompany.name;
779
- linkStatus = "created";
780
- }
781
- // Step 2: Handle billing (non-fatal - don't block company linking)
782
- let billingStatus;
783
- try {
784
- if (input.checkoutSessionId) {
785
- // Claim subscription from checkout
786
- const claimResult = await this.billing.claimCheckout({
787
- companyId,
788
- checkoutSessionId: input.checkoutSessionId,
789
- });
790
- billingStatus = {
791
- subscriptionId: claimResult.subscriptionId,
792
- claimed: !claimResult.alreadyClaimed,
793
- };
794
- }
795
- else if (input.stripeSubscriptionId) {
796
- // Link existing subscription
797
- const linkResult = await this.billing.linkSubscription({
798
- companyId,
799
- stripeSubscriptionId: input.stripeSubscriptionId,
800
- stripeCustomerId: input.stripeCustomerId,
801
- tierCode: input.tierCode,
802
- });
803
- billingStatus = {
804
- subscriptionId: linkResult.subscriptionId,
805
- linked: !linkResult.alreadyLinked,
806
- tierApplied: linkResult.tierApplied,
807
- };
808
- }
809
- else if (input.tierCode) {
810
- // Just apply tier features (no Stripe)
811
- const applyResult = await this.tiers.apply(input.tierCode, {
812
- companyId,
813
- });
814
- billingStatus = {
815
- tierApplied: applyResult.featuresApplied > 0,
816
- };
817
- }
818
- }
819
- catch (err) {
820
- // Billing failed but company is still linked - capture error
821
- billingStatus = {
822
- error: err instanceof Error ? err.message : String(err),
823
- };
824
- }
825
- return {
826
- companyId,
827
- companyName,
828
- linkStatus,
829
- billingStatus,
830
- };
831
769
  }
832
770
  }
833
771
  // Default export
@@ -0,0 +1,74 @@
1
+ import type { createTRPCClient } from '@trpc/client';
2
+ import type { AppRouter } from '@chatarmin/api/trpc-types';
3
+ import type { OnboardInput, OnboardResult } from './onboard-types.js';
4
+ type SdkClient = ReturnType<typeof createTRPCClient<AppRouter>>;
5
+ type BillingClient = {
6
+ claimCheckout: (input: {
7
+ companyId: string;
8
+ checkoutSessionId: string;
9
+ externalOrgId?: string;
10
+ productLinkId?: string;
11
+ }) => Promise<{
12
+ subscriptionId: string;
13
+ alreadyClaimed?: boolean;
14
+ }>;
15
+ linkSubscription: (input: {
16
+ companyId: string;
17
+ stripeSubscriptionId: string;
18
+ stripeCustomerId?: string;
19
+ tierCode?: string;
20
+ externalOrgId?: string;
21
+ productLinkId?: string;
22
+ }) => Promise<{
23
+ subscriptionId: string;
24
+ alreadyLinked?: boolean;
25
+ tierApplied?: boolean;
26
+ featuresApplied?: number;
27
+ }>;
28
+ };
29
+ type CompaniesClient = {
30
+ setupOnboardBilling: (input: {
31
+ companyId: string;
32
+ externalOrgId?: string;
33
+ tierCode?: string;
34
+ name: string;
35
+ email?: string;
36
+ currency?: string;
37
+ trialPeriodDays?: number | null;
38
+ }) => Promise<{
39
+ billingProfileId?: string;
40
+ stripeCustomerId?: string;
41
+ subscriptionId?: string;
42
+ tierCode: string;
43
+ featuresApplied: number;
44
+ subscriptionCreated: boolean;
45
+ }>;
46
+ };
47
+ export declare function runOnboardFlow(params: {
48
+ client: SdkClient;
49
+ billing: BillingClient;
50
+ companies: CompaniesClient & {
51
+ get: (input: {
52
+ externalOrgId: string;
53
+ }) => Promise<{
54
+ id: string;
55
+ name: string;
56
+ } | null>;
57
+ create: (input: {
58
+ name: string;
59
+ domain?: string;
60
+ externalOrgId: string;
61
+ label: string;
62
+ contactEmail?: string;
63
+ contactName?: string;
64
+ createdAt?: string;
65
+ }) => Promise<{
66
+ id: string;
67
+ name: string;
68
+ }>;
69
+ };
70
+ call: <T>(operation: string, action: () => Promise<T>) => Promise<T>;
71
+ input: OnboardInput;
72
+ }): Promise<OnboardResult>;
73
+ export {};
74
+ //# sourceMappingURL=onboard-flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard-flow.d.ts","sourceRoot":"","sources":["../src/onboard-flow.ts"],"names":[],"mappings":"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"}