@feelflow/ffid-sdk 5.27.0 → 5.29.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.
@@ -1287,6 +1287,7 @@ function createMembersMethods(deps) {
1287
1287
 
1288
1288
  // src/client/provisioning-methods.ts
1289
1289
  var USER_PROVISION_ENDPOINT = "/api/v1/ext/users/provision";
1290
+ var USER_WELCOME_EMAIL_ENDPOINT = "/api/v1/ext/users/welcome-email";
1290
1291
  var ORGANIZATION_PROVISION_ENDPOINT = "/api/v1/ext/organizations/provision";
1291
1292
  var MAX_PROVISION_MEMBERS = 100;
1292
1293
  var ASSIGNABLE_MEMBER_ROLES = {
@@ -1303,7 +1304,7 @@ function createProvisioningMethods(deps) {
1303
1304
  if (authMode === "service-key") return null;
1304
1305
  return createError(
1305
1306
  "VALIDATION_ERROR",
1306
- "provisionUser / provisionOrganization \u306F service-key \u8A8D\u8A3C\uFF08X-Service-Api-Key\uFF09\u3067\u306E\u307F\u5229\u7528\u3067\u304D\u307E\u3059\u3002Bearer / cookie \u30E2\u30FC\u30C9\u3067\u306F\u547C\u3073\u51FA\u305B\u307E\u305B\u3093"
1307
+ "provisionUser / sendProvisionWelcomeEmail / provisionOrganization \u306F service-key \u8A8D\u8A3C\uFF08X-Service-Api-Key\uFF09\u3067\u306E\u307F\u5229\u7528\u3067\u304D\u307E\u3059\u3002Bearer / cookie \u30E2\u30FC\u30C9\u3067\u306F\u547C\u3073\u51FA\u305B\u307E\u305B\u3093"
1307
1308
  );
1308
1309
  }
1309
1310
  async function provisionUser(params) {
@@ -1320,6 +1321,17 @@ function createProvisioningMethods(deps) {
1320
1321
  body: JSON.stringify(body)
1321
1322
  });
1322
1323
  }
1324
+ async function sendProvisionWelcomeEmail(params) {
1325
+ const modeError = serviceKeyModeError();
1326
+ if (modeError) return { error: modeError };
1327
+ if (!params.email || !params.email.trim()) {
1328
+ return { error: createError("VALIDATION_ERROR", "email \u306F\u5FC5\u9808\u3067\u3059") };
1329
+ }
1330
+ return fetchWithAuth(USER_WELCOME_EMAIL_ENDPOINT, {
1331
+ method: "POST",
1332
+ body: JSON.stringify({ email: params.email.trim() })
1333
+ });
1334
+ }
1323
1335
  async function provisionOrganization(params) {
1324
1336
  const modeError = serviceKeyModeError();
1325
1337
  if (modeError) return { error: modeError };
@@ -1369,7 +1381,7 @@ function createProvisioningMethods(deps) {
1369
1381
  body: JSON.stringify(body)
1370
1382
  });
1371
1383
  }
1372
- return { provisionUser, provisionOrganization };
1384
+ return { provisionUser, sendProvisionWelcomeEmail, provisionOrganization };
1373
1385
  }
1374
1386
 
1375
1387
  // src/client/seat-methods.ts
@@ -1643,7 +1655,7 @@ function validateTokenResponse(tokenResponse) {
1643
1655
  }
1644
1656
 
1645
1657
  // src/client/version-check.ts
1646
- var SDK_VERSION = "5.27.0";
1658
+ var SDK_VERSION = "5.29.0";
1647
1659
  var SDK_USER_AGENT = `FFID-SDK/${SDK_VERSION} (TypeScript)`;
1648
1660
  var SDK_VERSION_HEADER = "X-FFID-SDK-Version";
1649
1661
  function sdkHeaders() {
@@ -3150,6 +3162,11 @@ function createInquiryMethods(deps) {
3150
3162
  name,
3151
3163
  message,
3152
3164
  category: params.category,
3165
+ // Normalize null ("survey not collected", e.g. forwarded verbatim
3166
+ // from FFIDInquiryFormSubmitData) to undefined so JSON.stringify
3167
+ // drops the key entirely — older FFID deployments never see it and
3168
+ // current ones treat the omission as NULL.
3169
+ acquisitionSource: params.acquisitionSource ?? void 0,
3153
3170
  company: params.company,
3154
3171
  phone: params.phone,
3155
3172
  locale: params.locale,
@@ -3684,7 +3701,7 @@ function createFFIDClient(config) {
3684
3701
  createError,
3685
3702
  serviceCode: config.serviceCode
3686
3703
  });
3687
- const { provisionUser, provisionOrganization } = createProvisioningMethods({
3704
+ const { provisionUser, sendProvisionWelcomeEmail, provisionOrganization } = createProvisioningMethods({
3688
3705
  fetchWithAuth,
3689
3706
  createError,
3690
3707
  authMode
@@ -3785,6 +3802,7 @@ function createFFIDClient(config) {
3785
3802
  updateMemberRole,
3786
3803
  removeMember,
3787
3804
  provisionUser,
3805
+ sendProvisionWelcomeEmail,
3788
3806
  provisionOrganization,
3789
3807
  getProfile,
3790
3808
  updateProfile,
@@ -5360,6 +5378,19 @@ var FFID_INQUIRY_CATEGORIES_SITE_2026 = [
5360
5378
  "other"
5361
5379
  ];
5362
5380
  var isFFIDInquiryCategorySite2026 = (value) => FFID_INQUIRY_CATEGORIES_SITE_2026.includes(value);
5381
+ var FFID_INQUIRY_ACQUISITION_SOURCES = [
5382
+ "referral",
5383
+ "generative-ai",
5384
+ "social-media",
5385
+ "networking-event",
5386
+ "web-search",
5387
+ "company-blog",
5388
+ "sales-outreach",
5389
+ "press-release",
5390
+ "web-advertising",
5391
+ "other"
5392
+ ];
5393
+ var isFFIDInquiryAcquisitionSource = (value) => FFID_INQUIRY_ACQUISITION_SOURCES.includes(value);
5363
5394
  var CATEGORY_PLACEHOLDER_LABEL_JA = "\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044";
5364
5395
  var CATEGORY_REQUIRED_ERROR_JA = "\u304A\u554F\u3044\u5408\u308F\u305B\u7A2E\u5225\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5365
5396
  var TERMS_REQUIRED_ERROR_JA = "\u5229\u7528\u898F\u7D04\u3078\u306E\u540C\u610F\u304C\u5FC5\u8981\u3067\u3059\u3002";
@@ -5492,6 +5523,7 @@ function FFIDInquiryForm({
5492
5523
  termsHref,
5493
5524
  privacyHref,
5494
5525
  turnstileToken = null,
5526
+ acquisitionSource = null,
5495
5527
  turnstileSlot,
5496
5528
  onSubmit,
5497
5529
  onChange,
@@ -5573,6 +5605,7 @@ function FFIDInquiryForm({
5573
5605
  company: company.trim() || null,
5574
5606
  phone: phone.trim() || null,
5575
5607
  category,
5608
+ acquisitionSource,
5576
5609
  message: message.trim(),
5577
5610
  organizationId,
5578
5611
  inquiryFollowupOptIn: inquiryFollowup,
@@ -5588,6 +5621,7 @@ function FFIDInquiryForm({
5588
5621
  company,
5589
5622
  phone,
5590
5623
  category,
5624
+ acquisitionSource,
5591
5625
  message,
5592
5626
  organizationId,
5593
5627
  inquiryFollowup,
@@ -5636,6 +5670,7 @@ function FFIDInquiryForm({
5636
5670
  company: company.trim() || null,
5637
5671
  phone: phone.trim() || null,
5638
5672
  category,
5673
+ acquisitionSource,
5639
5674
  message: message.trim(),
5640
5675
  organizationId,
5641
5676
  inquiryFollowupOptIn: inquiryFollowup,
@@ -5954,4 +5989,4 @@ function FFIDInquiryForm({
5954
5989
  );
5955
5990
  }
5956
5991
 
5957
- export { ACCESS_GRANTING_EFFECTIVE_STATUSES, BLOCKING_EFFECTIVE_STATUSES, CATALOG_HASH_PATTERN, DEFAULT_API_BASE_URL, DEFAULT_OAUTH_SCOPES, EFFECTIVE_SUBSCRIPTION_STATUSES, FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDCatalogHashError, FFIDInquiryForm, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDProvider, FFIDSDKError, FFIDSubscriptionBadge, FFIDUserMenu, FFID_ANNOUNCEMENTS_ERROR_CODES, FFID_CATALOG_ENVIRONMENTS, FFID_CATALOG_PUBLICATION_STATUSES, FFID_ERROR_CODES, FFID_INQUIRY_CATEGORIES, FFID_INQUIRY_CATEGORIES_SITE_2026, canonicalizeCatalogValue, cleanupStateStorage, computeEffectiveStatusFromSession, computeFFIDCheckoutCopyHash, computeLegalDisclosureHash, computePaymentConfigurationHash, computePraxisCopyHash, computeScopeHash, computeTaxConfigurationHash, createFFIDAnnouncementsClient, createFFIDClient, createTokenStore, generateCodeChallenge, generateCodeVerifier, handleRedirectCallback, hasAccessFromUserinfo, hashCanonicalJson, isBlockedFromUserinfo, isFFIDInquiryCategorySite2026, normalizeRedirectUri, retrieveCodeVerifier, retrieveState, sha256Hex, storeCodeVerifier, storeState, useFFID, useFFIDAnnouncements, useFFIDContext, useSubscription, validatePublishedCatalog, withSubscription };
5992
+ export { ACCESS_GRANTING_EFFECTIVE_STATUSES, BLOCKING_EFFECTIVE_STATUSES, CATALOG_HASH_PATTERN, DEFAULT_API_BASE_URL, DEFAULT_OAUTH_SCOPES, EFFECTIVE_SUBSCRIPTION_STATUSES, FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDCatalogHashError, FFIDInquiryForm, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDProvider, FFIDSDKError, FFIDSubscriptionBadge, FFIDUserMenu, FFID_ANNOUNCEMENTS_ERROR_CODES, FFID_CATALOG_ENVIRONMENTS, FFID_CATALOG_PUBLICATION_STATUSES, FFID_ERROR_CODES, FFID_INQUIRY_ACQUISITION_SOURCES, FFID_INQUIRY_CATEGORIES, FFID_INQUIRY_CATEGORIES_SITE_2026, canonicalizeCatalogValue, cleanupStateStorage, computeEffectiveStatusFromSession, computeFFIDCheckoutCopyHash, computeLegalDisclosureHash, computePaymentConfigurationHash, computePraxisCopyHash, computeScopeHash, computeTaxConfigurationHash, createFFIDAnnouncementsClient, createFFIDClient, createTokenStore, generateCodeChallenge, generateCodeVerifier, handleRedirectCallback, hasAccessFromUserinfo, hashCanonicalJson, isBlockedFromUserinfo, isFFIDInquiryAcquisitionSource, isFFIDInquiryCategorySite2026, normalizeRedirectUri, retrieveCodeVerifier, retrieveState, sha256Hex, storeCodeVerifier, storeState, useFFID, useFFIDAnnouncements, useFFIDContext, useSubscription, validatePublishedCatalog, withSubscription };
@@ -1289,6 +1289,7 @@ function createMembersMethods(deps) {
1289
1289
 
1290
1290
  // src/client/provisioning-methods.ts
1291
1291
  var USER_PROVISION_ENDPOINT = "/api/v1/ext/users/provision";
1292
+ var USER_WELCOME_EMAIL_ENDPOINT = "/api/v1/ext/users/welcome-email";
1292
1293
  var ORGANIZATION_PROVISION_ENDPOINT = "/api/v1/ext/organizations/provision";
1293
1294
  var MAX_PROVISION_MEMBERS = 100;
1294
1295
  var ASSIGNABLE_MEMBER_ROLES = {
@@ -1305,7 +1306,7 @@ function createProvisioningMethods(deps) {
1305
1306
  if (authMode === "service-key") return null;
1306
1307
  return createError(
1307
1308
  "VALIDATION_ERROR",
1308
- "provisionUser / provisionOrganization \u306F service-key \u8A8D\u8A3C\uFF08X-Service-Api-Key\uFF09\u3067\u306E\u307F\u5229\u7528\u3067\u304D\u307E\u3059\u3002Bearer / cookie \u30E2\u30FC\u30C9\u3067\u306F\u547C\u3073\u51FA\u305B\u307E\u305B\u3093"
1309
+ "provisionUser / sendProvisionWelcomeEmail / provisionOrganization \u306F service-key \u8A8D\u8A3C\uFF08X-Service-Api-Key\uFF09\u3067\u306E\u307F\u5229\u7528\u3067\u304D\u307E\u3059\u3002Bearer / cookie \u30E2\u30FC\u30C9\u3067\u306F\u547C\u3073\u51FA\u305B\u307E\u305B\u3093"
1309
1310
  );
1310
1311
  }
1311
1312
  async function provisionUser(params) {
@@ -1322,6 +1323,17 @@ function createProvisioningMethods(deps) {
1322
1323
  body: JSON.stringify(body)
1323
1324
  });
1324
1325
  }
1326
+ async function sendProvisionWelcomeEmail(params) {
1327
+ const modeError = serviceKeyModeError();
1328
+ if (modeError) return { error: modeError };
1329
+ if (!params.email || !params.email.trim()) {
1330
+ return { error: createError("VALIDATION_ERROR", "email \u306F\u5FC5\u9808\u3067\u3059") };
1331
+ }
1332
+ return fetchWithAuth(USER_WELCOME_EMAIL_ENDPOINT, {
1333
+ method: "POST",
1334
+ body: JSON.stringify({ email: params.email.trim() })
1335
+ });
1336
+ }
1325
1337
  async function provisionOrganization(params) {
1326
1338
  const modeError = serviceKeyModeError();
1327
1339
  if (modeError) return { error: modeError };
@@ -1371,7 +1383,7 @@ function createProvisioningMethods(deps) {
1371
1383
  body: JSON.stringify(body)
1372
1384
  });
1373
1385
  }
1374
- return { provisionUser, provisionOrganization };
1386
+ return { provisionUser, sendProvisionWelcomeEmail, provisionOrganization };
1375
1387
  }
1376
1388
 
1377
1389
  // src/client/seat-methods.ts
@@ -1645,7 +1657,7 @@ function validateTokenResponse(tokenResponse) {
1645
1657
  }
1646
1658
 
1647
1659
  // src/client/version-check.ts
1648
- var SDK_VERSION = "5.27.0";
1660
+ var SDK_VERSION = "5.29.0";
1649
1661
  var SDK_USER_AGENT = `FFID-SDK/${SDK_VERSION} (TypeScript)`;
1650
1662
  var SDK_VERSION_HEADER = "X-FFID-SDK-Version";
1651
1663
  function sdkHeaders() {
@@ -3152,6 +3164,11 @@ function createInquiryMethods(deps) {
3152
3164
  name,
3153
3165
  message,
3154
3166
  category: params.category,
3167
+ // Normalize null ("survey not collected", e.g. forwarded verbatim
3168
+ // from FFIDInquiryFormSubmitData) to undefined so JSON.stringify
3169
+ // drops the key entirely — older FFID deployments never see it and
3170
+ // current ones treat the omission as NULL.
3171
+ acquisitionSource: params.acquisitionSource ?? void 0,
3155
3172
  company: params.company,
3156
3173
  phone: params.phone,
3157
3174
  locale: params.locale,
@@ -3686,7 +3703,7 @@ function createFFIDClient(config) {
3686
3703
  createError,
3687
3704
  serviceCode: config.serviceCode
3688
3705
  });
3689
- const { provisionUser, provisionOrganization } = createProvisioningMethods({
3706
+ const { provisionUser, sendProvisionWelcomeEmail, provisionOrganization } = createProvisioningMethods({
3690
3707
  fetchWithAuth,
3691
3708
  createError,
3692
3709
  authMode
@@ -3787,6 +3804,7 @@ function createFFIDClient(config) {
3787
3804
  updateMemberRole,
3788
3805
  removeMember,
3789
3806
  provisionUser,
3807
+ sendProvisionWelcomeEmail,
3790
3808
  provisionOrganization,
3791
3809
  getProfile,
3792
3810
  updateProfile,
@@ -5362,6 +5380,19 @@ var FFID_INQUIRY_CATEGORIES_SITE_2026 = [
5362
5380
  "other"
5363
5381
  ];
5364
5382
  var isFFIDInquiryCategorySite2026 = (value) => FFID_INQUIRY_CATEGORIES_SITE_2026.includes(value);
5383
+ var FFID_INQUIRY_ACQUISITION_SOURCES = [
5384
+ "referral",
5385
+ "generative-ai",
5386
+ "social-media",
5387
+ "networking-event",
5388
+ "web-search",
5389
+ "company-blog",
5390
+ "sales-outreach",
5391
+ "press-release",
5392
+ "web-advertising",
5393
+ "other"
5394
+ ];
5395
+ var isFFIDInquiryAcquisitionSource = (value) => FFID_INQUIRY_ACQUISITION_SOURCES.includes(value);
5365
5396
  var CATEGORY_PLACEHOLDER_LABEL_JA = "\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044";
5366
5397
  var CATEGORY_REQUIRED_ERROR_JA = "\u304A\u554F\u3044\u5408\u308F\u305B\u7A2E\u5225\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
5367
5398
  var TERMS_REQUIRED_ERROR_JA = "\u5229\u7528\u898F\u7D04\u3078\u306E\u540C\u610F\u304C\u5FC5\u8981\u3067\u3059\u3002";
@@ -5494,6 +5525,7 @@ function FFIDInquiryForm({
5494
5525
  termsHref,
5495
5526
  privacyHref,
5496
5527
  turnstileToken = null,
5528
+ acquisitionSource = null,
5497
5529
  turnstileSlot,
5498
5530
  onSubmit,
5499
5531
  onChange,
@@ -5575,6 +5607,7 @@ function FFIDInquiryForm({
5575
5607
  company: company.trim() || null,
5576
5608
  phone: phone.trim() || null,
5577
5609
  category,
5610
+ acquisitionSource,
5578
5611
  message: message.trim(),
5579
5612
  organizationId,
5580
5613
  inquiryFollowupOptIn: inquiryFollowup,
@@ -5590,6 +5623,7 @@ function FFIDInquiryForm({
5590
5623
  company,
5591
5624
  phone,
5592
5625
  category,
5626
+ acquisitionSource,
5593
5627
  message,
5594
5628
  organizationId,
5595
5629
  inquiryFollowup,
@@ -5638,6 +5672,7 @@ function FFIDInquiryForm({
5638
5672
  company: company.trim() || null,
5639
5673
  phone: phone.trim() || null,
5640
5674
  category,
5675
+ acquisitionSource,
5641
5676
  message: message.trim(),
5642
5677
  organizationId,
5643
5678
  inquiryFollowupOptIn: inquiryFollowup,
@@ -5976,6 +6011,7 @@ exports.FFID_ANNOUNCEMENTS_ERROR_CODES = FFID_ANNOUNCEMENTS_ERROR_CODES;
5976
6011
  exports.FFID_CATALOG_ENVIRONMENTS = FFID_CATALOG_ENVIRONMENTS;
5977
6012
  exports.FFID_CATALOG_PUBLICATION_STATUSES = FFID_CATALOG_PUBLICATION_STATUSES;
5978
6013
  exports.FFID_ERROR_CODES = FFID_ERROR_CODES;
6014
+ exports.FFID_INQUIRY_ACQUISITION_SOURCES = FFID_INQUIRY_ACQUISITION_SOURCES;
5979
6015
  exports.FFID_INQUIRY_CATEGORIES = FFID_INQUIRY_CATEGORIES;
5980
6016
  exports.FFID_INQUIRY_CATEGORIES_SITE_2026 = FFID_INQUIRY_CATEGORIES_SITE_2026;
5981
6017
  exports.canonicalizeCatalogValue = canonicalizeCatalogValue;
@@ -5996,6 +6032,7 @@ exports.handleRedirectCallback = handleRedirectCallback;
5996
6032
  exports.hasAccessFromUserinfo = hasAccessFromUserinfo;
5997
6033
  exports.hashCanonicalJson = hashCanonicalJson;
5998
6034
  exports.isBlockedFromUserinfo = isBlockedFromUserinfo;
6035
+ exports.isFFIDInquiryAcquisitionSource = isFFIDInquiryAcquisitionSource;
5999
6036
  exports.isFFIDInquiryCategorySite2026 = isFFIDInquiryCategorySite2026;
6000
6037
  exports.normalizeRedirectUri = normalizeRedirectUri;
6001
6038
  exports.retrieveCodeVerifier = retrieveCodeVerifier;
@@ -1,34 +1,34 @@
1
1
  'use strict';
2
2
 
3
- var chunkR4KUHR4S_cjs = require('../chunk-R4KUHR4S.cjs');
3
+ var chunkMESRDT7H_cjs = require('../chunk-MESRDT7H.cjs');
4
4
 
5
5
 
6
6
 
7
7
  Object.defineProperty(exports, "FFIDAnnouncementBadge", {
8
8
  enumerable: true,
9
- get: function () { return chunkR4KUHR4S_cjs.FFIDAnnouncementBadge; }
9
+ get: function () { return chunkMESRDT7H_cjs.FFIDAnnouncementBadge; }
10
10
  });
11
11
  Object.defineProperty(exports, "FFIDAnnouncementList", {
12
12
  enumerable: true,
13
- get: function () { return chunkR4KUHR4S_cjs.FFIDAnnouncementList; }
13
+ get: function () { return chunkMESRDT7H_cjs.FFIDAnnouncementList; }
14
14
  });
15
15
  Object.defineProperty(exports, "FFIDInquiryForm", {
16
16
  enumerable: true,
17
- get: function () { return chunkR4KUHR4S_cjs.FFIDInquiryForm; }
17
+ get: function () { return chunkMESRDT7H_cjs.FFIDInquiryForm; }
18
18
  });
19
19
  Object.defineProperty(exports, "FFIDLoginButton", {
20
20
  enumerable: true,
21
- get: function () { return chunkR4KUHR4S_cjs.FFIDLoginButton; }
21
+ get: function () { return chunkMESRDT7H_cjs.FFIDLoginButton; }
22
22
  });
23
23
  Object.defineProperty(exports, "FFIDOrganizationSwitcher", {
24
24
  enumerable: true,
25
- get: function () { return chunkR4KUHR4S_cjs.FFIDOrganizationSwitcher; }
25
+ get: function () { return chunkMESRDT7H_cjs.FFIDOrganizationSwitcher; }
26
26
  });
27
27
  Object.defineProperty(exports, "FFIDSubscriptionBadge", {
28
28
  enumerable: true,
29
- get: function () { return chunkR4KUHR4S_cjs.FFIDSubscriptionBadge; }
29
+ get: function () { return chunkMESRDT7H_cjs.FFIDSubscriptionBadge; }
30
30
  });
31
31
  Object.defineProperty(exports, "FFIDUserMenu", {
32
32
  enumerable: true,
33
- get: function () { return chunkR4KUHR4S_cjs.FFIDUserMenu; }
33
+ get: function () { return chunkMESRDT7H_cjs.FFIDUserMenu; }
34
34
  });
@@ -1,3 +1,3 @@
1
- export { G as FFIDAnnouncementBadge, aj as FFIDAnnouncementBadgeClassNames, ak as FFIDAnnouncementBadgeProps, H as FFIDAnnouncementList, al as FFIDAnnouncementListClassNames, am as FFIDAnnouncementListProps, R as FFIDInquiryForm, S as FFIDInquiryFormCategoryItem, U as FFIDInquiryFormClassNames, V as FFIDInquiryFormLegalLayout, W as FFIDInquiryFormOrganization, X as FFIDInquiryFormPlaceholderContext, Y as FFIDInquiryFormPrefill, Z as FFIDInquiryFormProps, _ as FFIDInquiryFormSubmitData, $ as FFIDInquiryFormSubmitResult, a1 as FFIDLoginButton, an as FFIDLoginButtonProps, a3 as FFIDOrganizationSwitcher, ao as FFIDOrganizationSwitcherClassNames, ap as FFIDOrganizationSwitcherProps, a9 as FFIDSubscriptionBadge, aq as FFIDSubscriptionBadgeClassNames, ar as FFIDSubscriptionBadgeProps, aa as FFIDUserMenu, as as FFIDUserMenuClassNames, at as FFIDUserMenuProps } from '../index-D3S_Pkkv.cjs';
1
+ export { G as FFIDAnnouncementBadge, am as FFIDAnnouncementBadgeClassNames, an as FFIDAnnouncementBadgeProps, H as FFIDAnnouncementList, ao as FFIDAnnouncementListClassNames, ap as FFIDAnnouncementListProps, S as FFIDInquiryForm, U as FFIDInquiryFormCategoryItem, V as FFIDInquiryFormClassNames, W as FFIDInquiryFormLegalLayout, X as FFIDInquiryFormOrganization, Y as FFIDInquiryFormPlaceholderContext, Z as FFIDInquiryFormPrefill, _ as FFIDInquiryFormProps, $ as FFIDInquiryFormSubmitData, a0 as FFIDInquiryFormSubmitResult, a2 as FFIDLoginButton, aq as FFIDLoginButtonProps, a4 as FFIDOrganizationSwitcher, ar as FFIDOrganizationSwitcherClassNames, as as FFIDOrganizationSwitcherProps, aa as FFIDSubscriptionBadge, at as FFIDSubscriptionBadgeClassNames, au as FFIDSubscriptionBadgeProps, ab as FFIDUserMenu, av as FFIDUserMenuClassNames, aw as FFIDUserMenuProps } from '../index-_-MqJCN3.cjs';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
@@ -1,3 +1,3 @@
1
- export { G as FFIDAnnouncementBadge, aj as FFIDAnnouncementBadgeClassNames, ak as FFIDAnnouncementBadgeProps, H as FFIDAnnouncementList, al as FFIDAnnouncementListClassNames, am as FFIDAnnouncementListProps, R as FFIDInquiryForm, S as FFIDInquiryFormCategoryItem, U as FFIDInquiryFormClassNames, V as FFIDInquiryFormLegalLayout, W as FFIDInquiryFormOrganization, X as FFIDInquiryFormPlaceholderContext, Y as FFIDInquiryFormPrefill, Z as FFIDInquiryFormProps, _ as FFIDInquiryFormSubmitData, $ as FFIDInquiryFormSubmitResult, a1 as FFIDLoginButton, an as FFIDLoginButtonProps, a3 as FFIDOrganizationSwitcher, ao as FFIDOrganizationSwitcherClassNames, ap as FFIDOrganizationSwitcherProps, a9 as FFIDSubscriptionBadge, aq as FFIDSubscriptionBadgeClassNames, ar as FFIDSubscriptionBadgeProps, aa as FFIDUserMenu, as as FFIDUserMenuClassNames, at as FFIDUserMenuProps } from '../index-D3S_Pkkv.js';
1
+ export { G as FFIDAnnouncementBadge, am as FFIDAnnouncementBadgeClassNames, an as FFIDAnnouncementBadgeProps, H as FFIDAnnouncementList, ao as FFIDAnnouncementListClassNames, ap as FFIDAnnouncementListProps, S as FFIDInquiryForm, U as FFIDInquiryFormCategoryItem, V as FFIDInquiryFormClassNames, W as FFIDInquiryFormLegalLayout, X as FFIDInquiryFormOrganization, Y as FFIDInquiryFormPlaceholderContext, Z as FFIDInquiryFormPrefill, _ as FFIDInquiryFormProps, $ as FFIDInquiryFormSubmitData, a0 as FFIDInquiryFormSubmitResult, a2 as FFIDLoginButton, aq as FFIDLoginButtonProps, a4 as FFIDOrganizationSwitcher, ar as FFIDOrganizationSwitcherClassNames, as as FFIDOrganizationSwitcherProps, aa as FFIDSubscriptionBadge, at as FFIDSubscriptionBadgeClassNames, au as FFIDSubscriptionBadgeProps, ab as FFIDUserMenu, av as FFIDUserMenuClassNames, aw as FFIDUserMenuProps } from '../index-_-MqJCN3.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
@@ -1 +1 @@
1
- export { FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDInquiryForm, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDSubscriptionBadge, FFIDUserMenu } from '../chunk-JZB2IM7Y.js';
1
+ export { FFIDAnnouncementBadge, FFIDAnnouncementList, FFIDInquiryForm, FFIDLoginButton, FFIDOrganizationSwitcher, FFIDSubscriptionBadge, FFIDUserMenu } from '../chunk-4QQJMLL7.js';
@@ -46,6 +46,20 @@ type FFIDInquiryCategory = (typeof FFID_INQUIRY_CATEGORIES)[number];
46
46
  */
47
47
  declare const FFID_INQUIRY_CATEGORIES_SITE_2026: readonly ["consulting", "saas", "development", "agent-hub", "ai-feel-chatbot", "knowledge-db", "biz-simulator", "discussion-board", "realtime-ai", "partnership", "media", "recruiting", "other"];
48
48
  type FFIDInquiryCategorySite2026 = (typeof FFID_INQUIRY_CATEGORIES_SITE_2026)[number];
49
+ /**
50
+ * Acquisition-source ("how did you first hear about us") survey slugs
51
+ * accepted by `/api/v1/ext/inquiry` (feelflow-id-platform#4377). Mirrors
52
+ * feelflow-website-2026 `ACQUISITION_SOURCE_OPTIONS`
53
+ * (`feelflow-site/src/lib/acquisition-source.ts`); FFID
54
+ * `src/lib/inquiry/acquisition-sources.ts` is the persistence-side
55
+ * source of truth.
56
+ *
57
+ * Unlike `category`, the server validates this field strictly: a value
58
+ * outside this list is rejected with `INQUIRY_VALIDATION_ERROR` rather than
59
+ * stored as-is. Ship a new slug to FFID first, then start sending it.
60
+ */
61
+ declare const FFID_INQUIRY_ACQUISITION_SOURCES: readonly ["referral", "generative-ai", "social-media", "networking-event", "web-search", "company-blog", "sales-outreach", "press-release", "web-advertising", "other"];
62
+ type FFIDInquiryAcquisitionSource = (typeof FFID_INQUIRY_ACQUISITION_SOURCES)[number];
49
63
  /**
50
64
  * Parameters for `client.inquiry.create()`. When submitting from a
51
65
  * server-side SDK (Service API Key), set `source` to a stable
@@ -65,6 +79,18 @@ interface FFIDInquiryCreateParams {
65
79
  name: string;
66
80
  message: string;
67
81
  category?: FFIDInquiryCategorySite2026 | FFIDInquiryCategory | (string & {});
82
+ /**
83
+ * "How did you first hear about us" survey answer (#4377). Optional and
84
+ * backward compatible — `undefined` and `null` are both normalized to
85
+ * an omitted key on the wire (`null` is accepted so
86
+ * `FFIDInquiryFormSubmitData.acquisitionSource` can be forwarded
87
+ * verbatim) and the row is stored with NULL.
88
+ * Server-side validation is a strict allowlist (unlike `category`):
89
+ * values outside {@link FFID_INQUIRY_ACQUISITION_SOURCES} fail with
90
+ * `INQUIRY_VALIDATION_ERROR`. Narrow untrusted strings with
91
+ * {@link isFFIDInquiryAcquisitionSource} before submitting.
92
+ */
93
+ acquisitionSource?: FFIDInquiryAcquisitionSource | null;
68
94
  company?: string;
69
95
  phone?: string;
70
96
  locale?: 'ja' | 'en';
@@ -826,6 +852,31 @@ interface FFIDProvisionUserDryRun {
826
852
  * response. This mirrors how `FFIDApiResponse` is narrowed on `data` / `error`.
827
853
  */
828
854
  type FFIDProvisionUserResponse = FFIDProvisionUserOutcome | FFIDProvisionUserDryRun;
855
+ /** Parameters for `sendProvisionWelcomeEmail` (#4449). */
856
+ interface FFIDProvisionWelcomeEmailParams {
857
+ /** Email of the provisioned FFID user to notify (must already exist). */
858
+ email: string;
859
+ }
860
+ /**
861
+ * Response from `sendProvisionWelcomeEmail` (#4449).
862
+ *
863
+ * `status` is always `'sent'` on the data branch. Non-success outcomes arrive
864
+ * on the error branch instead:
865
+ * - `USER_NOT_FOUND` (404) — provision the user first.
866
+ * - `RATE_LIMITED` (429) — per-recipient cooldown; `details.retryAfterSeconds`
867
+ * says when a resend will be accepted. The cooldown is claimed only after a
868
+ * successful send, so a 429 always means an email really was just sent.
869
+ * - `RECOVERY_LINK_GENERATION_FAILED` (502) — the password-setup link could
870
+ * not be generated; nothing was sent.
871
+ * - `EMAIL_SEND_FAILED` / `EMAIL_SEND_FAILED_PERMANENT` (502),
872
+ * `EMAIL_SERVICE_UNAVAILABLE` (503) — delivery-side failures; the caller
873
+ * should surface "not delivered" and offer a resend (failed attempts do not
874
+ * consume the cooldown, so an immediate retry is accepted).
875
+ */
876
+ interface FFIDProvisionWelcomeEmailResponse {
877
+ status: 'sent';
878
+ user: FFIDProvisionedUser;
879
+ }
829
880
  /** A member to add to the provisioned organization. */
830
881
  interface FFIDProvisionOrganizationMemberInput {
831
882
  email: string;
@@ -2152,6 +2203,7 @@ declare function createFFIDClient(config: FFIDConfig): {
2152
2203
  userId: string;
2153
2204
  }) => Promise<FFIDApiResponse<FFIDRemoveMemberResponse>>;
2154
2205
  provisionUser: (params: FFIDProvisionUserParams) => Promise<FFIDApiResponse<FFIDProvisionUserResponse>>;
2206
+ sendProvisionWelcomeEmail: (params: FFIDProvisionWelcomeEmailParams) => Promise<FFIDApiResponse<FFIDProvisionWelcomeEmailResponse>>;
2155
2207
  provisionOrganization: (params: FFIDProvisionOrganizationParams) => Promise<FFIDApiResponse<FFIDProvisionOrganizationResponse>>;
2156
2208
  getProfile: (options?: FFIDProfileCallOptions) => Promise<FFIDApiResponse<FFIDUserProfile>>;
2157
2209
  updateProfile: (data: FFIDUpdateUserProfileRequest, options?: FFIDProfileCallOptions) => Promise<FFIDApiResponse<FFIDUserProfile>>;
@@ -2242,4 +2294,4 @@ declare function createFFIDClient(config: FFIDConfig): {
2242
2294
  /** Type of the FFID client */
2243
2295
  type FFIDClient = ReturnType<typeof createFFIDClient>;
2244
2296
 
2245
- export { type FFIDProvisionOrganizationDryRun as A, type FFIDProvisionOrganizationMemberInput as B, type FFIDProvisionOrganizationOutcome as C, type FFIDProvisionOrganizationParams as D, type FFIDProvisionOrganizationResponse as E, type FFIDLogger as F, type FFIDProvisionUserDryRun as G, type FFIDProvisionUserOutcome as H, type FFIDProvisionUserParams as I, type FFIDProvisionUserProfileInput as J, type FFIDProvisionUserResponse as K, type FFIDProvisionedOrganization as L, type FFIDProvisionedUser as M, type FFIDRemoveMemberResponse as N, type FFIDResetSessionResponse as O, type FFIDSubscription as P, type FFIDUpdateMemberRoleResponse as Q, type FFIDUpdateUserProfileRequest as R, type FFIDUser as S, type FFIDUserProfile as T, type TokenData as U, type TokenStore as V, createFFIDClient as W, createTokenStore as X, type FFIDError as a, type FFIDCacheAdapter as b, type FFIDVerifyAccessTokenOptions as c, type FFIDApiResponse as d, type FFIDOAuthUserInfo as e, type FFIDAddMemberParams as f, type FFIDAddMemberRequest as g, type FFIDAddMemberResponse as h, type FFIDAssignableMemberRole as i, type FFIDCacheConfig as j, type FFIDClient as k, type FFIDConfig as l, type FFIDListMembersResponse as m, type FFIDMemberRole as n, type FFIDOrganization as o, type FFIDOrganizationMember as p, type FFIDOtpSendResponse as q, type FFIDOtpVerifyResponse as r, type FFIDPasswordResetConfirmResponse as s, type FFIDPasswordResetResponse as t, type FFIDPasswordResetVerifyResponse as u, type FFIDProfileCallOptions as v, type FFIDProvisionMemberPlan as w, type FFIDProvisionMemberPlanStatus as x, type FFIDProvisionMemberResult as y, type FFIDProvisionMemberStatus as z };
2297
+ export { FFID_CATALOG_ENVIRONMENTS as $, type FFIDPasswordResetVerifyResponse as A, type FFIDProfileCallOptions as B, type FFIDProvisionMemberPlan as C, type FFIDProvisionMemberPlanStatus as D, type FFIDProvisionMemberResult as E, type FFIDLogger as F, type FFIDProvisionMemberStatus as G, type FFIDProvisionOrganizationDryRun as H, type FFIDProvisionOrganizationMemberInput as I, type FFIDProvisionOrganizationOutcome as J, type FFIDProvisionOrganizationParams as K, type FFIDProvisionOrganizationResponse as L, type FFIDProvisionUserDryRun as M, type FFIDProvisionUserOutcome as N, type FFIDProvisionUserParams as O, type FFIDProvisionUserProfileInput as P, type FFIDProvisionUserResponse as Q, type FFIDProvisionedOrganization as R, type FFIDProvisionedUser as S, type FFIDPublishedPlan as T, type FFIDRemoveMemberResponse as U, type FFIDResetSessionResponse as V, type FFIDSubscription as W, type FFIDUpdateMemberRoleResponse as X, type FFIDUpdateUserProfileRequest as Y, type FFIDUser as Z, type FFIDUserProfile as _, type FFIDError as a, FFID_CATALOG_PUBLICATION_STATUSES as a0, type TokenData as a1, type TokenStore as a2, createFFIDClient as a3, createTokenStore as a4, type FFIDCacheAdapter as b, type FFIDVerifyAccessTokenOptions as c, type FFIDApiResponse as d, type FFIDOAuthUserInfo as e, type FFIDCatalogEnvironment as f, type FFIDBillingInterval as g, type FFIDTaxBehavior as h, type FFIDPublishedCatalog as i, type FFIDAddMemberParams as j, type FFIDAddMemberRequest as k, type FFIDAddMemberResponse as l, type FFIDAssignableMemberRole as m, type FFIDCacheConfig as n, type FFIDCatalogPublication as o, type FFIDCatalogPublicationStatus as p, type FFIDClient as q, type FFIDConfig as r, type FFIDListMembersResponse as s, type FFIDMemberRole as t, type FFIDOrganization as u, type FFIDOrganizationMember as v, type FFIDOtpSendResponse as w, type FFIDOtpVerifyResponse as x, type FFIDPasswordResetConfirmResponse as y, type FFIDPasswordResetResponse as z };
@@ -46,6 +46,20 @@ type FFIDInquiryCategory = (typeof FFID_INQUIRY_CATEGORIES)[number];
46
46
  */
47
47
  declare const FFID_INQUIRY_CATEGORIES_SITE_2026: readonly ["consulting", "saas", "development", "agent-hub", "ai-feel-chatbot", "knowledge-db", "biz-simulator", "discussion-board", "realtime-ai", "partnership", "media", "recruiting", "other"];
48
48
  type FFIDInquiryCategorySite2026 = (typeof FFID_INQUIRY_CATEGORIES_SITE_2026)[number];
49
+ /**
50
+ * Acquisition-source ("how did you first hear about us") survey slugs
51
+ * accepted by `/api/v1/ext/inquiry` (feelflow-id-platform#4377). Mirrors
52
+ * feelflow-website-2026 `ACQUISITION_SOURCE_OPTIONS`
53
+ * (`feelflow-site/src/lib/acquisition-source.ts`); FFID
54
+ * `src/lib/inquiry/acquisition-sources.ts` is the persistence-side
55
+ * source of truth.
56
+ *
57
+ * Unlike `category`, the server validates this field strictly: a value
58
+ * outside this list is rejected with `INQUIRY_VALIDATION_ERROR` rather than
59
+ * stored as-is. Ship a new slug to FFID first, then start sending it.
60
+ */
61
+ declare const FFID_INQUIRY_ACQUISITION_SOURCES: readonly ["referral", "generative-ai", "social-media", "networking-event", "web-search", "company-blog", "sales-outreach", "press-release", "web-advertising", "other"];
62
+ type FFIDInquiryAcquisitionSource = (typeof FFID_INQUIRY_ACQUISITION_SOURCES)[number];
49
63
  /**
50
64
  * Parameters for `client.inquiry.create()`. When submitting from a
51
65
  * server-side SDK (Service API Key), set `source` to a stable
@@ -65,6 +79,18 @@ interface FFIDInquiryCreateParams {
65
79
  name: string;
66
80
  message: string;
67
81
  category?: FFIDInquiryCategorySite2026 | FFIDInquiryCategory | (string & {});
82
+ /**
83
+ * "How did you first hear about us" survey answer (#4377). Optional and
84
+ * backward compatible — `undefined` and `null` are both normalized to
85
+ * an omitted key on the wire (`null` is accepted so
86
+ * `FFIDInquiryFormSubmitData.acquisitionSource` can be forwarded
87
+ * verbatim) and the row is stored with NULL.
88
+ * Server-side validation is a strict allowlist (unlike `category`):
89
+ * values outside {@link FFID_INQUIRY_ACQUISITION_SOURCES} fail with
90
+ * `INQUIRY_VALIDATION_ERROR`. Narrow untrusted strings with
91
+ * {@link isFFIDInquiryAcquisitionSource} before submitting.
92
+ */
93
+ acquisitionSource?: FFIDInquiryAcquisitionSource | null;
68
94
  company?: string;
69
95
  phone?: string;
70
96
  locale?: 'ja' | 'en';
@@ -826,6 +852,31 @@ interface FFIDProvisionUserDryRun {
826
852
  * response. This mirrors how `FFIDApiResponse` is narrowed on `data` / `error`.
827
853
  */
828
854
  type FFIDProvisionUserResponse = FFIDProvisionUserOutcome | FFIDProvisionUserDryRun;
855
+ /** Parameters for `sendProvisionWelcomeEmail` (#4449). */
856
+ interface FFIDProvisionWelcomeEmailParams {
857
+ /** Email of the provisioned FFID user to notify (must already exist). */
858
+ email: string;
859
+ }
860
+ /**
861
+ * Response from `sendProvisionWelcomeEmail` (#4449).
862
+ *
863
+ * `status` is always `'sent'` on the data branch. Non-success outcomes arrive
864
+ * on the error branch instead:
865
+ * - `USER_NOT_FOUND` (404) — provision the user first.
866
+ * - `RATE_LIMITED` (429) — per-recipient cooldown; `details.retryAfterSeconds`
867
+ * says when a resend will be accepted. The cooldown is claimed only after a
868
+ * successful send, so a 429 always means an email really was just sent.
869
+ * - `RECOVERY_LINK_GENERATION_FAILED` (502) — the password-setup link could
870
+ * not be generated; nothing was sent.
871
+ * - `EMAIL_SEND_FAILED` / `EMAIL_SEND_FAILED_PERMANENT` (502),
872
+ * `EMAIL_SERVICE_UNAVAILABLE` (503) — delivery-side failures; the caller
873
+ * should surface "not delivered" and offer a resend (failed attempts do not
874
+ * consume the cooldown, so an immediate retry is accepted).
875
+ */
876
+ interface FFIDProvisionWelcomeEmailResponse {
877
+ status: 'sent';
878
+ user: FFIDProvisionedUser;
879
+ }
829
880
  /** A member to add to the provisioned organization. */
830
881
  interface FFIDProvisionOrganizationMemberInput {
831
882
  email: string;
@@ -2152,6 +2203,7 @@ declare function createFFIDClient(config: FFIDConfig): {
2152
2203
  userId: string;
2153
2204
  }) => Promise<FFIDApiResponse<FFIDRemoveMemberResponse>>;
2154
2205
  provisionUser: (params: FFIDProvisionUserParams) => Promise<FFIDApiResponse<FFIDProvisionUserResponse>>;
2206
+ sendProvisionWelcomeEmail: (params: FFIDProvisionWelcomeEmailParams) => Promise<FFIDApiResponse<FFIDProvisionWelcomeEmailResponse>>;
2155
2207
  provisionOrganization: (params: FFIDProvisionOrganizationParams) => Promise<FFIDApiResponse<FFIDProvisionOrganizationResponse>>;
2156
2208
  getProfile: (options?: FFIDProfileCallOptions) => Promise<FFIDApiResponse<FFIDUserProfile>>;
2157
2209
  updateProfile: (data: FFIDUpdateUserProfileRequest, options?: FFIDProfileCallOptions) => Promise<FFIDApiResponse<FFIDUserProfile>>;
@@ -2242,4 +2294,4 @@ declare function createFFIDClient(config: FFIDConfig): {
2242
2294
  /** Type of the FFID client */
2243
2295
  type FFIDClient = ReturnType<typeof createFFIDClient>;
2244
2296
 
2245
- export { type FFIDProvisionOrganizationDryRun as A, type FFIDProvisionOrganizationMemberInput as B, type FFIDProvisionOrganizationOutcome as C, type FFIDProvisionOrganizationParams as D, type FFIDProvisionOrganizationResponse as E, type FFIDLogger as F, type FFIDProvisionUserDryRun as G, type FFIDProvisionUserOutcome as H, type FFIDProvisionUserParams as I, type FFIDProvisionUserProfileInput as J, type FFIDProvisionUserResponse as K, type FFIDProvisionedOrganization as L, type FFIDProvisionedUser as M, type FFIDRemoveMemberResponse as N, type FFIDResetSessionResponse as O, type FFIDSubscription as P, type FFIDUpdateMemberRoleResponse as Q, type FFIDUpdateUserProfileRequest as R, type FFIDUser as S, type FFIDUserProfile as T, type TokenData as U, type TokenStore as V, createFFIDClient as W, createTokenStore as X, type FFIDError as a, type FFIDCacheAdapter as b, type FFIDVerifyAccessTokenOptions as c, type FFIDApiResponse as d, type FFIDOAuthUserInfo as e, type FFIDAddMemberParams as f, type FFIDAddMemberRequest as g, type FFIDAddMemberResponse as h, type FFIDAssignableMemberRole as i, type FFIDCacheConfig as j, type FFIDClient as k, type FFIDConfig as l, type FFIDListMembersResponse as m, type FFIDMemberRole as n, type FFIDOrganization as o, type FFIDOrganizationMember as p, type FFIDOtpSendResponse as q, type FFIDOtpVerifyResponse as r, type FFIDPasswordResetConfirmResponse as s, type FFIDPasswordResetResponse as t, type FFIDPasswordResetVerifyResponse as u, type FFIDProfileCallOptions as v, type FFIDProvisionMemberPlan as w, type FFIDProvisionMemberPlanStatus as x, type FFIDProvisionMemberResult as y, type FFIDProvisionMemberStatus as z };
2297
+ export { FFID_CATALOG_ENVIRONMENTS as $, type FFIDPasswordResetVerifyResponse as A, type FFIDProfileCallOptions as B, type FFIDProvisionMemberPlan as C, type FFIDProvisionMemberPlanStatus as D, type FFIDProvisionMemberResult as E, type FFIDLogger as F, type FFIDProvisionMemberStatus as G, type FFIDProvisionOrganizationDryRun as H, type FFIDProvisionOrganizationMemberInput as I, type FFIDProvisionOrganizationOutcome as J, type FFIDProvisionOrganizationParams as K, type FFIDProvisionOrganizationResponse as L, type FFIDProvisionUserDryRun as M, type FFIDProvisionUserOutcome as N, type FFIDProvisionUserParams as O, type FFIDProvisionUserProfileInput as P, type FFIDProvisionUserResponse as Q, type FFIDProvisionedOrganization as R, type FFIDProvisionedUser as S, type FFIDPublishedPlan as T, type FFIDRemoveMemberResponse as U, type FFIDResetSessionResponse as V, type FFIDSubscription as W, type FFIDUpdateMemberRoleResponse as X, type FFIDUpdateUserProfileRequest as Y, type FFIDUser as Z, type FFIDUserProfile as _, type FFIDError as a, FFID_CATALOG_PUBLICATION_STATUSES as a0, type TokenData as a1, type TokenStore as a2, createFFIDClient as a3, createTokenStore as a4, type FFIDCacheAdapter as b, type FFIDVerifyAccessTokenOptions as c, type FFIDApiResponse as d, type FFIDOAuthUserInfo as e, type FFIDCatalogEnvironment as f, type FFIDBillingInterval as g, type FFIDTaxBehavior as h, type FFIDPublishedCatalog as i, type FFIDAddMemberParams as j, type FFIDAddMemberRequest as k, type FFIDAddMemberResponse as l, type FFIDAssignableMemberRole as m, type FFIDCacheConfig as n, type FFIDCatalogPublication as o, type FFIDCatalogPublicationStatus as p, type FFIDClient as q, type FFIDConfig as r, type FFIDListMembersResponse as s, type FFIDMemberRole as t, type FFIDOrganization as u, type FFIDOrganizationMember as v, type FFIDOtpSendResponse as w, type FFIDOtpVerifyResponse as x, type FFIDPasswordResetConfirmResponse as y, type FFIDPasswordResetResponse as z };
@@ -1036,6 +1036,26 @@ type FFIDInquiryCategorySite2026 = (typeof FFID_INQUIRY_CATEGORIES_SITE_2026)[nu
1036
1036
  * parameter) to the canonical union.
1037
1037
  */
1038
1038
  declare const isFFIDInquiryCategorySite2026: (value: string) => value is FFIDInquiryCategorySite2026;
1039
+ /**
1040
+ * Acquisition-source ("how did you first hear about us") survey slugs
1041
+ * accepted by `/api/v1/ext/inquiry` (feelflow-id-platform#4377). Mirrors
1042
+ * feelflow-website-2026 `ACQUISITION_SOURCE_OPTIONS`
1043
+ * (`feelflow-site/src/lib/acquisition-source.ts`); FFID
1044
+ * `src/lib/inquiry/acquisition-sources.ts` is the persistence-side
1045
+ * source of truth.
1046
+ *
1047
+ * Unlike `category`, the server validates this field strictly: a value
1048
+ * outside this list is rejected with `INQUIRY_VALIDATION_ERROR` rather than
1049
+ * stored as-is. Ship a new slug to FFID first, then start sending it.
1050
+ */
1051
+ declare const FFID_INQUIRY_ACQUISITION_SOURCES: readonly ["referral", "generative-ai", "social-media", "networking-event", "web-search", "company-blog", "sales-outreach", "press-release", "web-advertising", "other"];
1052
+ type FFIDInquiryAcquisitionSource = (typeof FFID_INQUIRY_ACQUISITION_SOURCES)[number];
1053
+ /**
1054
+ * Runtime type guard for the acquisition-source allowlist. Use when
1055
+ * narrowing an unknown string (e.g., a URL query parameter or analytics
1056
+ * value) before passing it to `client.inquiry.create()`.
1057
+ */
1058
+ declare const isFFIDInquiryAcquisitionSource: (value: string) => value is FFIDInquiryAcquisitionSource;
1039
1059
  /**
1040
1060
  * Parameters for `client.inquiry.create()`. When submitting from a
1041
1061
  * server-side SDK (Service API Key), set `source` to a stable
@@ -1055,6 +1075,18 @@ interface FFIDInquiryCreateParams {
1055
1075
  name: string;
1056
1076
  message: string;
1057
1077
  category?: FFIDInquiryCategorySite2026 | FFIDInquiryCategory | (string & {});
1078
+ /**
1079
+ * "How did you first hear about us" survey answer (#4377). Optional and
1080
+ * backward compatible — `undefined` and `null` are both normalized to
1081
+ * an omitted key on the wire (`null` is accepted so
1082
+ * `FFIDInquiryFormSubmitData.acquisitionSource` can be forwarded
1083
+ * verbatim) and the row is stored with NULL.
1084
+ * Server-side validation is a strict allowlist (unlike `category`):
1085
+ * values outside {@link FFID_INQUIRY_ACQUISITION_SOURCES} fail with
1086
+ * `INQUIRY_VALIDATION_ERROR`. Narrow untrusted strings with
1087
+ * {@link isFFIDInquiryAcquisitionSource} before submitting.
1088
+ */
1089
+ acquisitionSource?: FFIDInquiryAcquisitionSource | null;
1058
1090
  company?: string;
1059
1091
  phone?: string;
1060
1092
  locale?: 'ja' | 'en';
@@ -1420,6 +1452,15 @@ interface FFIDInquiryFormSubmitData {
1420
1452
  company: string | null;
1421
1453
  phone: string | null;
1422
1454
  category: string;
1455
+ /**
1456
+ * Acquisition-source slug forwarded verbatim from the
1457
+ * `acquisitionSource` prop (#4377). `null` when the consumer does not
1458
+ * collect the survey — existing `onSubmit` handlers that ignore the
1459
+ * field keep working unchanged. Typed as the closed allowlist union so
1460
+ * the payload can be handed to `client.inquiry.create()` without a
1461
+ * re-narrowing cast.
1462
+ */
1463
+ acquisitionSource: FFIDInquiryAcquisitionSource | null;
1423
1464
  message: string;
1424
1465
  organizationId: string | null;
1425
1466
  inquiryFollowupOptIn: boolean;
@@ -1449,6 +1490,19 @@ interface FFIDInquiryFormProps {
1449
1490
  privacyHref?: string;
1450
1491
  /** Must be refreshed by the consumer when the Turnstile widget reissues a token. */
1451
1492
  turnstileToken?: string | null;
1493
+ /**
1494
+ * Acquisition-source survey answer collected by the consumer's own UI
1495
+ * (#4377). The form renders no input for it — like `turnstileToken`,
1496
+ * it is a consumer-controlled value passed through into
1497
+ * `FFIDInquiryFormSubmitData.acquisitionSource` on every submit /
1498
+ * `onChange` broadcast. Typed as the closed
1499
+ * `FFID_INQUIRY_ACQUISITION_SOURCES` union so an invalid slug (e.g. a
1500
+ * display label, or a new value not yet deployed to FFID) fails at the
1501
+ * consumer's compile step instead of rejecting every end-user
1502
+ * submission with `INQUIRY_VALIDATION_ERROR` at runtime. Narrow
1503
+ * untrusted strings with `isFFIDInquiryAcquisitionSource` first.
1504
+ */
1505
+ acquisitionSource?: FFIDInquiryAcquisitionSource | null;
1452
1506
  /** Slot for the consumer's Turnstile widget (anonymous mode only). */
1453
1507
  turnstileSlot?: ReactNode;
1454
1508
  onSubmit: (data: FFIDInquiryFormSubmitData) => Promise<FFIDInquiryFormSubmitResult>;
@@ -1534,6 +1588,6 @@ interface FFIDInquiryFormProps {
1534
1588
  interface FFIDInquiryFormPlaceholderContext {
1535
1589
  category: string | null;
1536
1590
  }
1537
- declare function FFIDInquiryForm({ mode, prefill, organizations, preselectedOrganizationId, categories, termsVersion, privacyVersion, termsHref, privacyHref, turnstileToken, turnstileSlot, onSubmit, onChange, legalLayout, messagePlaceholder, requireCategorySelection, unstyled, classNames, locale, className, }: FFIDInquiryFormProps): react_jsx_runtime.JSX.Element;
1591
+ declare function FFIDInquiryForm({ mode, prefill, organizations, preselectedOrganizationId, categories, termsVersion, privacyVersion, termsHref, privacyHref, turnstileToken, acquisitionSource, turnstileSlot, onSubmit, onChange, legalLayout, messagePlaceholder, requireCategorySelection, unstyled, classNames, locale, className, }: FFIDInquiryFormProps): react_jsx_runtime.JSX.Element;
1538
1592
 
1539
- export { type FFIDInquiryFormSubmitResult as $, type AnnouncementListResponse as A, type AnnouncementStatus as B, type AnnouncementType as C, EFFECTIVE_SUBSCRIPTION_STATUSES as D, type EffectiveSubscriptionStatus as E, type FFIDSubscriptionStatus as F, FFIDAnnouncementBadge as G, FFIDAnnouncementList as H, type FFIDAnnouncementsError as I, type FFIDAnnouncementsErrorCode as J, type FFIDAnnouncementsServerResponse as K, type ListAnnouncementsOptions as L, type FFIDApiResponseMeta as M, type FFIDCacheConfig as N, type FFIDContextValue as O, type FFIDInquiryCategory as P, type FFIDInquiryCategorySite2026 as Q, FFIDInquiryForm as R, type FFIDInquiryFormCategoryItem as S, type TokenStore as T, type FFIDInquiryFormClassNames as U, type FFIDInquiryFormLegalLayout as V, type FFIDInquiryFormOrganization as W, type FFIDInquiryFormPlaceholderContext as X, type FFIDInquiryFormPrefill as Y, type FFIDInquiryFormProps as Z, type FFIDInquiryFormSubmitData as _, type FFIDOAuthUserInfoSubscription as a, type FFIDJwtClaims as a0, FFIDLoginButton as a1, type FFIDOAuthUserInfoMemberRole as a2, FFIDOrganizationSwitcher as a3, type FFIDSeatAssignmentClaim as a4, type FFIDSeatAssignmentStatus as a5, type FFIDSeatModel as a6, type FFIDServiceAccessDenialReason as a7, type FFIDServiceAccessFailPolicy as a8, FFIDSubscriptionBadge as a9, FFIDUserMenu as aa, FFID_INQUIRY_CATEGORIES as ab, FFID_INQUIRY_CATEGORIES_SITE_2026 as ac, type TokenData as ad, type UseFFIDAnnouncementsOptions as ae, type UseFFIDAnnouncementsReturn as af, createTokenStore as ag, isFFIDInquiryCategorySite2026 as ah, useFFIDAnnouncements as ai, type FFIDAnnouncementBadgeClassNames as aj, type FFIDAnnouncementBadgeProps as ak, type FFIDAnnouncementListClassNames as al, type FFIDAnnouncementListProps as am, type FFIDLoginButtonProps as an, type FFIDOrganizationSwitcherClassNames as ao, type FFIDOrganizationSwitcherProps as ap, type FFIDSubscriptionBadgeClassNames as aq, type FFIDSubscriptionBadgeProps as ar, type FFIDUserMenuClassNames as as, type FFIDUserMenuProps as at, type FFIDPrompt as b, type FFIDConfig as c, type FFIDApiResponse as d, type FFIDSessionResponse as e, type FFIDSignOutResult as f, type FFIDError as g, type FFIDSubscriptionCheckResponse as h, type FFIDCheckServiceAccessParams as i, type FFIDServiceAccessDecision as j, type FFIDAnalyticsConfig as k, type FFIDVerifyAccessTokenOptions as l, type FFIDOAuthUserInfo as m, type FFIDInquiryCreateParams as n, type FFIDInquiryCreateResponse as o, type FFIDAuthMode as p, type FFIDLogger as q, type FFIDCacheAdapter as r, type FFIDUser as s, type FFIDOrganization as t, type FFIDSubscription as u, type FFIDSubscriptionContextValue as v, type FFIDAnnouncementsClientConfig as w, type FFIDAnnouncementsApiResponse as x, type FFIDAnnouncementsLogger as y, type Announcement as z };
1593
+ export { type FFIDInquiryFormSubmitData as $, type AnnouncementListResponse as A, type AnnouncementStatus as B, type AnnouncementType as C, EFFECTIVE_SUBSCRIPTION_STATUSES as D, type EffectiveSubscriptionStatus as E, type FFIDSubscriptionStatus as F, FFIDAnnouncementBadge as G, FFIDAnnouncementList as H, type FFIDAnnouncementsError as I, type FFIDAnnouncementsErrorCode as J, type FFIDAnnouncementsServerResponse as K, type ListAnnouncementsOptions as L, type FFIDApiResponseMeta as M, type FFIDCacheConfig as N, type FFIDContextValue as O, type FFIDInquiryAcquisitionSource as P, type FFIDInquiryCategory as Q, type FFIDInquiryCategorySite2026 as R, FFIDInquiryForm as S, type TokenStore as T, type FFIDInquiryFormCategoryItem as U, type FFIDInquiryFormClassNames as V, type FFIDInquiryFormLegalLayout as W, type FFIDInquiryFormOrganization as X, type FFIDInquiryFormPlaceholderContext as Y, type FFIDInquiryFormPrefill as Z, type FFIDInquiryFormProps as _, type FFIDOAuthUserInfoSubscription as a, type FFIDInquiryFormSubmitResult as a0, type FFIDJwtClaims as a1, FFIDLoginButton as a2, type FFIDOAuthUserInfoMemberRole as a3, FFIDOrganizationSwitcher as a4, type FFIDSeatAssignmentClaim as a5, type FFIDSeatAssignmentStatus as a6, type FFIDSeatModel as a7, type FFIDServiceAccessDenialReason as a8, type FFIDServiceAccessFailPolicy as a9, FFIDSubscriptionBadge as aa, FFIDUserMenu as ab, FFID_INQUIRY_ACQUISITION_SOURCES as ac, FFID_INQUIRY_CATEGORIES as ad, FFID_INQUIRY_CATEGORIES_SITE_2026 as ae, type TokenData as af, type UseFFIDAnnouncementsOptions as ag, type UseFFIDAnnouncementsReturn as ah, createTokenStore as ai, isFFIDInquiryAcquisitionSource as aj, isFFIDInquiryCategorySite2026 as ak, useFFIDAnnouncements as al, type FFIDAnnouncementBadgeClassNames as am, type FFIDAnnouncementBadgeProps as an, type FFIDAnnouncementListClassNames as ao, type FFIDAnnouncementListProps as ap, type FFIDLoginButtonProps as aq, type FFIDOrganizationSwitcherClassNames as ar, type FFIDOrganizationSwitcherProps as as, type FFIDSubscriptionBadgeClassNames as at, type FFIDSubscriptionBadgeProps as au, type FFIDUserMenuClassNames as av, type FFIDUserMenuProps as aw, type FFIDPrompt as b, type FFIDConfig as c, type FFIDApiResponse as d, type FFIDSessionResponse as e, type FFIDSignOutResult as f, type FFIDError as g, type FFIDSubscriptionCheckResponse as h, type FFIDCheckServiceAccessParams as i, type FFIDServiceAccessDecision as j, type FFIDAnalyticsConfig as k, type FFIDVerifyAccessTokenOptions as l, type FFIDOAuthUserInfo as m, type FFIDInquiryCreateParams as n, type FFIDInquiryCreateResponse as o, type FFIDAuthMode as p, type FFIDLogger as q, type FFIDCacheAdapter as r, type FFIDUser as s, type FFIDOrganization as t, type FFIDSubscription as u, type FFIDSubscriptionContextValue as v, type FFIDAnnouncementsClientConfig as w, type FFIDAnnouncementsApiResponse as x, type FFIDAnnouncementsLogger as y, type Announcement as z };