@securelend/sdk 0.1.0-beta.5 → 0.2.0-beta.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.
@@ -2,6 +2,197 @@
2
2
 
3
3
  var zod = require('zod');
4
4
 
5
+ // src/types/index.ts
6
+ var OUTCOME_STATES = [
7
+ "viewed",
8
+ "info_requested",
9
+ "declined",
10
+ "term_sheet",
11
+ "approved",
12
+ "funded",
13
+ "withdrawn"
14
+ ];
15
+ var DECLINE_REASON_CODES = [
16
+ "outside_credit_box",
17
+ "industry",
18
+ "time_in_business",
19
+ "dscr",
20
+ "collateral",
21
+ "amount",
22
+ "state",
23
+ "credit_score",
24
+ "docs_incomplete",
25
+ "capacity",
26
+ "other"
27
+ ];
28
+ var SHARE_SCOPES = ["summary", "memo", "checks", "documents"];
29
+ var FEEDBACK_TYPES = [
30
+ "rating",
31
+ "edit",
32
+ "comment",
33
+ "approve",
34
+ "reject",
35
+ "regenerate"
36
+ ];
37
+ var FEEDBACK_TARGETS = [
38
+ "memo_section",
39
+ "memo",
40
+ "tool",
41
+ "decision",
42
+ "lead_match"
43
+ ];
44
+ var EVENT_TYPES = [
45
+ "lead.created",
46
+ "lead.matched",
47
+ "lead.notified",
48
+ "package.shared",
49
+ "package.opened",
50
+ "consent.revoked",
51
+ "outcome.recorded",
52
+ "credit_box.updated",
53
+ "feedback.recorded"
54
+ ];
55
+ var leadSchema = zod.z.object({
56
+ id: zod.z.string(),
57
+ tenantId: zod.z.string().nullable().optional(),
58
+ status: zod.z.string().nullable().optional(),
59
+ productType: zod.z.string().nullable().optional(),
60
+ amount: zod.z.number().nullable().optional(),
61
+ legalName: zod.z.string().nullable().optional(),
62
+ email: zod.z.string().nullable().optional(),
63
+ caseId: zod.z.string().nullable().optional(),
64
+ lenders: zod.z.array(
65
+ zod.z.object({
66
+ id: zod.z.string().nullable().optional(),
67
+ name: zod.z.string().optional(),
68
+ tenantId: zod.z.string().nullable().optional()
69
+ }).passthrough()
70
+ ).optional(),
71
+ createdAt: zod.z.string().optional(),
72
+ updatedAt: zod.z.string().optional()
73
+ }).passthrough();
74
+ var leadListSchema = zod.z.object({
75
+ items: zod.z.array(leadSchema),
76
+ tenantId: zod.z.string().optional()
77
+ }).passthrough();
78
+ var uploadResultSchema = zod.z.object({
79
+ key: zod.z.string().optional(),
80
+ filename: zod.z.string().optional(),
81
+ documentType: zod.z.string().optional(),
82
+ applicationId: zod.z.string().optional()
83
+ }).passthrough();
84
+ var matchComponentsSchema = zod.z.object({
85
+ rules: zod.z.number().nullable().optional(),
86
+ fit: zod.z.number().nullable().optional(),
87
+ outcome: zod.z.number().nullable().optional(),
88
+ sba: zod.z.number().nullable().optional(),
89
+ samples: zod.z.number().nullable().optional()
90
+ }).passthrough();
91
+ var lenderMatchSchema = zod.z.object({
92
+ lenderId: zod.z.string().nullable().optional(),
93
+ score: zod.z.number().nullable().optional(),
94
+ components: matchComponentsSchema.nullable().optional(),
95
+ generationId: zod.z.string().nullable().optional()
96
+ }).passthrough();
97
+ var matchListSchema = zod.z.object({
98
+ leadId: zod.z.string(),
99
+ generationId: zod.z.string().nullable().optional(),
100
+ lenders: zod.z.array(lenderMatchSchema)
101
+ }).passthrough();
102
+ var packageSchema = zod.z.object({
103
+ packageId: zod.z.string().optional(),
104
+ caseId: zod.z.string().optional(),
105
+ id: zod.z.string().optional(),
106
+ generationId: zod.z.string().nullable().optional(),
107
+ auth: zod.z.string().optional(),
108
+ error: zod.z.string().optional(),
109
+ deskUrl: zod.z.string().optional()
110
+ }).passthrough();
111
+ var shareConsentSchema = zod.z.object({
112
+ id: zod.z.string(),
113
+ leadId: zod.z.string(),
114
+ packageId: zod.z.string(),
115
+ packageVersion: zod.z.number(),
116
+ lenderId: zod.z.string().optional(),
117
+ scope: zod.z.array(zod.z.string()),
118
+ expiresAt: zod.z.string(),
119
+ revokedAt: zod.z.string().nullable().optional(),
120
+ borrowerRef: zod.z.string().optional(),
121
+ grantedAt: zod.z.string().optional()
122
+ }).passthrough();
123
+ var shareReceiptSchema = zod.z.object({
124
+ id: zod.z.string(),
125
+ consentId: zod.z.string(),
126
+ event: zod.z.string(),
127
+ createdAt: zod.z.string(),
128
+ lenderId: zod.z.string().optional()
129
+ }).passthrough();
130
+ var leadOutcomeSchema = zod.z.object({
131
+ id: zod.z.string(),
132
+ leadId: zod.z.string(),
133
+ lenderId: zod.z.string(),
134
+ state: zod.z.string(),
135
+ reasonCode: zod.z.string().nullable().optional(),
136
+ reasonText: zod.z.string().nullable().optional(),
137
+ fundedAmount: zod.z.number().nullable().optional(),
138
+ fundedOn: zod.z.string().nullable().optional(),
139
+ surface: zod.z.string().optional(),
140
+ feedbackId: zod.z.string().nullable().optional(),
141
+ matchGenerationId: zod.z.string().nullable().optional(),
142
+ createdAt: zod.z.string().optional()
143
+ }).passthrough();
144
+ var creditBoxSchema = zod.z.object({
145
+ version: zod.z.number(),
146
+ lenderId: zod.z.string().optional(),
147
+ criteria: zod.z.record(zod.z.unknown()).optional(),
148
+ capacityPerWeek: zod.z.number().nullable().optional(),
149
+ status: zod.z.string(),
150
+ pausedUntil: zod.z.string().nullable().optional(),
151
+ createdAt: zod.z.string().optional()
152
+ }).passthrough();
153
+ var creditBoxViewSchema = zod.z.object({
154
+ current: creditBoxSchema.nullable(),
155
+ versions: zod.z.array(creditBoxSchema)
156
+ }).passthrough();
157
+ var feedbackEventSchema = zod.z.object({
158
+ id: zod.z.string(),
159
+ generationId: zod.z.string().nullable().optional(),
160
+ caseId: zod.z.string().nullable().optional(),
161
+ surface: zod.z.string().optional(),
162
+ type: zod.z.string(),
163
+ rating: zod.z.number().nullable().optional(),
164
+ comment: zod.z.string().nullable().optional(),
165
+ targetKind: zod.z.string().optional(),
166
+ targetKey: zod.z.string().optional(),
167
+ createdAt: zod.z.string().optional()
168
+ }).passthrough();
169
+ var feedbackCreatedSchema = zod.z.object({
170
+ id: zod.z.string()
171
+ }).passthrough();
172
+ var liquidityCellSchema = zod.z.object({
173
+ key: zod.z.string(),
174
+ leads: zod.z.number(),
175
+ matchRate: zod.z.number().nullable().optional(),
176
+ responseRate48h: zod.z.number().nullable().optional(),
177
+ medianResponseMs: zod.z.number().nullable().optional(),
178
+ termSheetRate: zod.z.number().nullable().optional(),
179
+ fundedRate: zod.z.number().nullable().optional(),
180
+ fundedAmount: zod.z.number().nullable().optional(),
181
+ lenderCount: zod.z.number().optional()
182
+ }).passthrough();
183
+ var liquidityReportSchema = zod.z.object({
184
+ view: zod.z.string(),
185
+ groupBy: zod.z.string(),
186
+ cells: zod.z.array(liquidityCellSchema)
187
+ }).passthrough();
188
+ var secureLendEventSchema = zod.z.object({
189
+ type: zod.z.string(),
190
+ id: zod.z.string(),
191
+ createdAt: zod.z.string(),
192
+ tenantId: zod.z.string(),
193
+ data: zod.z.record(zod.z.unknown()).optional()
194
+ }).passthrough();
195
+
5
196
  // src/types/index.ts
6
197
  var anyObjectSchema = zod.z.object({}).passthrough();
7
198
  var CreditTier = /* @__PURE__ */ ((CreditTier2) => {
@@ -577,8 +768,14 @@ var leaseVsPurchaseResponseSchema = zod.z.object({
577
768
  exports.ApplicationStatus = ApplicationStatus;
578
769
  exports.ApplicationType = ApplicationType;
579
770
  exports.CreditTier = CreditTier;
771
+ exports.DECLINE_REASON_CODES = DECLINE_REASON_CODES;
772
+ exports.EVENT_TYPES = EVENT_TYPES;
773
+ exports.FEEDBACK_TARGETS = FEEDBACK_TARGETS;
774
+ exports.FEEDBACK_TYPES = FEEDBACK_TYPES;
775
+ exports.OUTCOME_STATES = OUTCOME_STATES;
580
776
  exports.ProductType = ProductType;
581
777
  exports.ProviderStatus = ProviderStatus;
778
+ exports.SHARE_SCOPES = SHARE_SCOPES;
582
779
  exports.anyOfferSchema = anyOfferSchema;
583
780
  exports.applicationProviderSchema = applicationProviderSchema;
584
781
  exports.autoLoanSearchSchema = autoLoanSearchSchema;
@@ -593,23 +790,36 @@ exports.businessCreditCardSearchSchema = businessCreditCardSearchSchema;
593
790
  exports.businessLoanSearchSchema = businessLoanSearchSchema;
594
791
  exports.createBusinessApplicationSchema = createBusinessApplicationSchema;
595
792
  exports.createPersonalApplicationSchema = createPersonalApplicationSchema;
793
+ exports.creditBoxSchema = creditBoxSchema;
794
+ exports.creditBoxViewSchema = creditBoxViewSchema;
596
795
  exports.creditCardOfferSchema = creditCardOfferSchema;
597
796
  exports.displayOfferFormResponseSchema = displayOfferFormResponseSchema;
598
797
  exports.displayOfferFormSchema = displayOfferFormSchema;
599
798
  exports.displayUploadDocumentsFormResponseSchema = displayUploadDocumentsFormResponseSchema;
600
799
  exports.displayUploadDocumentsFormSchema = displayUploadDocumentsFormSchema;
601
800
  exports.documentTypeEnum = documentTypeEnum;
801
+ exports.feedbackCreatedSchema = feedbackCreatedSchema;
802
+ exports.feedbackEventSchema = feedbackEventSchema;
602
803
  exports.getMultipleOffersSchema = getMultipleOffersSchema;
603
804
  exports.getOfferSchema = getOfferSchema;
805
+ exports.leadListSchema = leadListSchema;
806
+ exports.leadOutcomeSchema = leadOutcomeSchema;
807
+ exports.leadSchema = leadSchema;
604
808
  exports.leaseVsPurchaseResponseSchema = leaseVsPurchaseResponseSchema;
605
809
  exports.leaseVsPurchaseSchema = leaseVsPurchaseSchema;
810
+ exports.lenderMatchSchema = lenderMatchSchema;
811
+ exports.liquidityCellSchema = liquidityCellSchema;
812
+ exports.liquidityReportSchema = liquidityReportSchema;
606
813
  exports.loanComparisonResponseSchema = loanComparisonResponseSchema;
607
814
  exports.loanOfferSchema = loanOfferSchema;
608
815
  exports.loanPaymentResponseSchema = loanPaymentResponseSchema;
609
816
  exports.loanPaymentSchema = loanPaymentSchema;
817
+ exports.matchComponentsSchema = matchComponentsSchema;
818
+ exports.matchListSchema = matchListSchema;
610
819
  exports.mortgagePaymentResponseSchema = mortgagePaymentResponseSchema;
611
820
  exports.mortgagePaymentSchema = mortgagePaymentSchema;
612
821
  exports.mortgageSearchSchema = mortgageSearchSchema;
822
+ exports.packageSchema = packageSchema;
613
823
  exports.personalApplicantSchema = personalApplicantSchema;
614
824
  exports.personalApplicationSchema = personalApplicationSchema;
615
825
  exports.personalBankingComparisonResponseSchema = personalBankingComparisonResponseSchema;
@@ -622,10 +832,14 @@ exports.personalLoanSearchSchema = personalLoanSearchSchema;
622
832
  exports.savingsComparisonResponseSchema = savingsComparisonResponseSchema;
623
833
  exports.savingsOfferSchema = savingsOfferSchema;
624
834
  exports.savingsSearchSchema = savingsSearchSchema;
835
+ exports.secureLendEventSchema = secureLendEventSchema;
836
+ exports.shareConsentSchema = shareConsentSchema;
837
+ exports.shareReceiptSchema = shareReceiptSchema;
625
838
  exports.studentLoanSearchSchema = studentLoanSearchSchema;
626
839
  exports.submitDocumentsResponseSchema = submitDocumentsResponseSchema;
627
840
  exports.submitDocumentsSchema = submitDocumentsSchema;
628
841
  exports.trackOfferStatusResponseSchema = trackOfferStatusResponseSchema;
629
842
  exports.trackOfferStatusSchema = trackOfferStatusSchema;
843
+ exports.uploadResultSchema = uploadResultSchema;
630
844
  //# sourceMappingURL=index.js.map
631
845
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"names":["z","CreditTier","ProductType","ApplicationType","ApplicationStatus","ProviderStatus"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\n// A generic schema for application data, which can be any of the search schemas\nconst anyObjectSchema = z.object({}).passthrough();\n\n// Shared Enums\nexport enum CreditTier {\n PRIME = \"PRIME\",\n NEAR_PRIME = \"NEAR_PRIME\",\n SUBPRIME = \"SUBPRIME\",\n DEEP_SUBPRIME = \"DEEP_SUBPRIME\",\n UNKNOWN = \"UNKNOWN\",\n}\n\nexport enum ProductType {\n INSTALLMENT_LOAN = \"INSTALLMENT_LOAN\",\n LINE_OF_CREDIT = \"LINE_OF_CREDIT\",\n SHORT_TERM_CREDIT = \"SHORT_TERM_CREDIT\",\n BNPL = \"BNPL\",\n MORTGAGE = \"MORTGAGE\",\n AUTO_LOAN = \"AUTO_LOAN\",\n AUTO_REFINANCE = \"AUTO_REFINANCE\",\n STUDENT_LOAN = \"STUDENT_LOAN\",\n STUDENT_LOAN_REFINANCE = \"STUDENT_LOAN_REFINANCE\",\n BUSINESS_LOAN = \"BUSINESS_LOAN\",\n BUSINESS_BANKING = \"BUSINESS_BANKING\",\n BUSINESS_CREDIT_CARD = \"BUSINESS_CREDIT_CARD\",\n PERSONAL_BANKING = \"PERSONAL_BANKING\",\n SAVINGS_ACCOUNT = \"SAVINGS_ACCOUNT\",\n PERSONAL_CREDIT_CARD = \"PERSONAL_CREDIT_CARD\",\n}\n\n// Lender Directory Related Types\nexport interface Lender {\n lender_id: string;\n canonical_name: string;\n entity_type: string;\n product_types: string[];\n credit_tier_target: string[];\n amount_min?: number;\n amount_max?: number;\n states_served?: string[];\n funding_speed?: string;\n brand_status: string;\n exclusion_reason?: string;\n source: string;\n updated_at: string;\n gsi1pks: string[];\n lanes?: string[];\n primary_lane?: string;\n lane_pk?: string;\n}\n\nexport interface LenderSearchCriteria {\n creditScore?: number;\n creditTier?: CreditTier;\n loanAmount: number;\n state?: string;\n productType: ProductType;\n includeReviewStatus?: boolean; // Include lenders with REVIEW status\n}\n\n// Loan Offer Related Types\n\nconst moneySchema = z.object({\n amount: z.number(),\n currency: z.string().length(3).optional(),\n});\n\nexport type Money = z.infer<typeof moneySchema>;\n\nexport interface BankAccountOffer {\n id: string;\n providerName: string;\n providerLogo?: string;\n accountName: string;\n monthlyFee: number;\n minBalance: number;\n interestRate: number; // APY\n features: string[];\n isSecureLendTenant?: boolean;\n applicationUrl?: string;\n}\n\nexport interface CreditCardOffer {\n id: string;\n issuerName: string;\n issuerLogo?: string;\n cardName: string;\n apr: {\n min: number;\n max: number;\n };\n annualFee: number;\n rewards: {\n type: \"cash_back\" | \"points\" | \"miles\";\n summary: string;\n signupBonus?: string;\n };\n isSecureLendTenant?: boolean;\n applicationUrl?: string;\n}\n\nexport const bankAccountOfferSchema = z.object({\n id: z.string(),\n providerName: z.string(),\n providerLogo: z.string().optional(),\n accountName: z.string(),\n monthlyFee: z.number(),\n minBalance: z.number(),\n interestRate: z.number(),\n features: z.array(z.string()),\n isSecureLendTenant: z.boolean().optional(),\n applicationUrl: z.string().url().optional(),\n});\n\nexport const creditCardOfferSchema = z.object({\n id: z.string(),\n issuerName: z.string(),\n issuerLogo: z.string().optional(),\n cardName: z.string(),\n apr: z.object({\n min: z.number(),\n max: z.number(),\n }),\n annualFee: z.number(),\n rewards: z.object({\n type: z.enum([\"cash_back\", \"points\", \"miles\"]),\n summary: z.string(),\n signupBonus: z.string().optional(),\n }),\n isSecureLendTenant: z.boolean().optional(),\n applicationUrl: z.string().url().optional(),\n});\n\nexport type Percentage = number; // 0-100\nexport type BasisPoints = number;\nexport type DateString = string; // ISO 8601\n\nexport enum ApplicationType {\n PERSONAL = \"PERSONAL\",\n BUSINESS = \"BUSINESS\",\n}\n\nexport enum ApplicationStatus {\n DRAFT = \"DRAFT\",\n SUBMITTED = \"SUBMITTED\",\n IN_REVIEW = \"IN_REVIEW\",\n ACTION_REQUIRED = \"ACTION_REQUIRED\",\n APPROVED = \"APPROVED\",\n DECLINED = \"DECLINED\",\n CLOSED = \"CLOSED\",\n}\n\nexport enum ProviderStatus {\n PENDING = \"PENDING\", // Not yet sent\n SUBMITTED = \"SUBMITTED\", // Sent to provider\n REFERRED = \"REFERRED\", // Sent via affiliate link\n ERROR = \"ERROR\", // Failed to send\n RECEIVED = \"RECEIVED\", // Provider acknowledged\n}\n\nexport const personalApplicantSchema = z.object({\n firstName: z.string().describe(\"The applicant's first name.\"),\n lastName: z.string().describe(\"The applicant's last name.\"),\n email: z.string().email().describe(\"The applicant's email address.\"),\n phone: z.string().optional().describe(\"The applicant's phone number.\"),\n});\n\n// Published Schema Aligned Types\n\nconst lenderSchema = z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n logoUrl: z.string().url().optional(),\n});\n\nconst productSchema = z.object({\n name: z.string(),\n type: z.string(),\n description: z.string().optional(),\n});\n\nconst loanTermsSchema = z.object({\n amount: moneySchema,\n interestRate: z.object({\n type: z.enum([\"fixed\", \"variable\"]),\n rate: z.number().optional(), // rate might not always be available if only APR is given\n apr: z.number(),\n }),\n termMonths: z.number().int(),\n payment: z.object({\n frequency: z.string().optional(),\n amount: moneySchema,\n }),\n totalCost: moneySchema.optional(),\n repayment: z\n .object({\n totalRepaymentAmount: z.number(),\n costOfFinancing: z.number(),\n })\n .optional(),\n});\n\nconst loanFeesSchema = z\n .object({\n origination: z\n .object({\n amount: moneySchema.optional(),\n percentage: z.number().optional(),\n })\n .optional(),\n })\n .optional();\n\nconst matchingSchema = z\n .object({\n approvalProbability: z.number().min(0).max(1).optional(),\n matchScore: z.number().min(0).max(100).optional(),\n matchReasons: z.array(z.string()).optional(),\n })\n .optional();\n\nconst processSchema = z.object({\n applicationMethod: z.string(),\n applicationUrl: z.string().url().optional(),\n fundingSpeed: z\n .object({\n description: z.string(),\n })\n .optional(),\n});\n\nexport const loanOfferSchema = z.object({\n offerId: z.string(),\n lender: lenderSchema,\n product: productSchema,\n terms: loanTermsSchema,\n fees: loanFeesSchema,\n matching: matchingSchema,\n process: processSchema.optional(),\n // Additional fields for UI that were in the old schema\n lenderInfo: z.string().optional(),\n badges: z.array(z.string()).optional(),\n isSecureLendTenant: z.boolean().optional(),\n});\n\nexport type LoanOffer = z.infer<typeof loanOfferSchema>;\n\n// Adapter Interface\nexport interface PersonalLenderAdapter {\n readonly name: string;\n search(params: PersonalLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface BusinessLenderAdapter {\n readonly name: string;\n search(params: BusinessLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface MortgageLenderAdapter {\n readonly name: string;\n search(params: MortgageSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface AutoLenderAdapter {\n readonly name: string;\n search(params: AutoLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface StudentLenderAdapter {\n readonly name: string;\n search(params: StudentLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface BusinessCreditCardAdapter {\n readonly name: string;\n search(\n params: BusinessCreditCardSearchParams,\n ): Promise<BusinessCreditCardOffer[]>;\n}\n\nexport interface BusinessBankingAdapter {\n readonly name: string;\n search(\n params: BusinessBankingSearchSchema & {\n maxResults?: number;\n includeReviewStatus?: boolean;\n },\n ): Promise<BusinessBankingOffer[]>;\n}\n\nexport interface PersonalBankingAdapter {\n readonly name: string;\n search(params: PersonalBankingSearchSchema): Promise<PersonalBankingOffer[]>;\n}\n\nexport interface SavingsAdapter {\n readonly name: string;\n search(params: SavingsSearchSchema): Promise<SavingsOffer[]>;\n}\n\nexport interface PersonalCreditCardAdapter {\n readonly name: string;\n search(\n params: PersonalCreditCardSearchSchema,\n ): Promise<PersonalCreditCardOffer[]>;\n}\n\n// Zod Schemas for Tool Input/Output\nexport const personalLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(100000)\n .describe(\"The desired loan amount in USD (e.g., 25000).\"),\n purpose: z\n .enum([\n \"debt_consolidation\",\n \"home_improvement\",\n \"major_purchase\",\n \"medical\",\n \"vacation\",\n \"other\",\n ])\n .describe(\"The purpose of the loan.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n monthlyIncome: z\n .number()\n .min(0)\n .optional()\n .describe(\"Applicant's gross monthly income in USD.\"),\n employmentStatus: z\n .enum([\"employed\", \"self_employed\", \"retired\", \"unemployed\"])\n .optional()\n .describe(\"The applicant's employment status.\"),\n state: z\n .string()\n .optional()\n .describe(\"The applicant's state of residence (2-letter code).\"),\n});\nexport type PersonalLoanSearchParams = z.infer<typeof personalLoanSearchSchema>;\n\n// Generic schema for business loan data\nexport const businessLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .describe(\"The desired loan amount, e.g., 50000 for $50,000.\"),\n purpose: z\n .string()\n .describe(\"The reason for the loan, e.g., 'working capital'.\"),\n annualRevenue: z\n .number()\n .min(0)\n .optional()\n .describe(\"The business's gross annual revenue in USD.\"),\n industry: z\n .string()\n .optional()\n .describe(\"The industry the business operates in, e.g., 'technology'.\"),\n state: z\n .string()\n .optional()\n .describe(\"The state where the business is located (2-letter code).\"),\n});\nexport type BusinessLoanSearchParams = z.infer<typeof businessLoanSearchSchema>;\n\nexport const mortgageSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(50000)\n .max(2000000)\n .describe(\"The desired mortgage loan amount in USD.\"),\n homePrice: z\n .number()\n .min(50000)\n .max(5000000)\n .optional()\n .describe(\"The purchase price of the home in USD.\"),\n downPayment: z\n .number()\n .min(0)\n .optional()\n .describe(\"The amount of the down payment in USD.\"),\n creditScore: z\n .number()\n .min(500)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (500-850).\"),\n loanType: z\n .enum([\"conventional\", \"fha\", \"va\", \"jumbo\", \"refinance\"])\n .describe(\"The type of mortgage loan.\"),\n propertyType: z\n .enum([\"primary\", \"secondary\", \"investment\"])\n .optional()\n .describe(\"The intended use of the property.\"),\n state: z\n .string()\n .optional()\n .describe(\"The state where the property is located (2-letter code).\"),\n});\nexport type MortgageSearchParams = z.infer<typeof mortgageSearchSchema>;\n\nexport const autoLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(100000)\n .describe(\"The desired auto loan amount in USD.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n isNew: z\n .boolean()\n .describe(\"Specifies if the vehicle is new (true) or used (false).\"),\n state: z\n .string()\n .optional()\n .describe(\"The applicant's state of residence (2-letter code).\"),\n});\nexport type AutoLoanSearchParams = z.infer<typeof autoLoanSearchSchema>;\n\nexport const studentLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(250000)\n .describe(\"The total amount needed for the student loan in USD.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The student's estimated credit score (300-850).\"),\n coSignerCreditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\n \"The co-signer's estimated credit score (300-850), if applicable.\",\n ),\n degreeType: z\n .enum([\"undergraduate\", \"graduate\", \"mba\", \"medical\", \"law\"])\n .describe(\"The type of degree the loan is for.\"),\n state: z\n .string()\n .optional()\n .describe(\"The student's state of residence (2-letter code).\"),\n});\nexport type StudentLoanSearchParams = z.infer<typeof studentLoanSearchSchema>;\n\n// Schemas for Business Credit Card Comparison\nexport const businessCreditCardSearchSchema = z.object({\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n annualRevenue: z\n .number()\n .min(0)\n .optional()\n .describe(\"The business's annual revenue in USD.\"),\n businessAgeInYears: z\n .number()\n .min(0)\n .optional()\n .describe(\"The age of the business in years.\"),\n});\nexport type BusinessCreditCardSearchParams = z.infer<\n typeof businessCreditCardSearchSchema\n>;\n\nexport const businessCreditCardOfferSchema = z.object({\n cardId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n creditScoreRange: z.string(),\n welcomeBonus: z.string(),\n terms: z.object({\n apr: z.number(),\n annualFee: z.number(),\n creditLimit: moneySchema,\n }),\n});\nexport type BusinessCreditCardOffer = z.infer<\n typeof businessCreditCardOfferSchema\n>;\n\nexport const businessCreditCardComparisonResponseSchema = z.object({\n offers: z.array(businessCreditCardOfferSchema),\n searchCriteria: businessCreditCardSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type BusinessCreditCardComparisonResponse = z.infer<\n typeof businessCreditCardComparisonResponseSchema\n>;\n\n// Schemas for Business Banking Comparison\nexport const businessBankingSearchSchema = z.object({\n industry: z.string().optional().describe(\"The business's industry.\"),\n monthlyTransactions: z\n .number()\n .optional()\n .describe(\"Estimated number of monthly transactions.\"),\n});\nexport type BusinessBankingSearchSchema = z.infer<\n typeof businessBankingSearchSchema\n>;\n\nexport const businessBankingOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n apy: z.string(),\n interestRate: z.string().optional(),\n monthlyFee: z.string(),\n bonus: z.string(),\n});\nexport type BusinessBankingOffer = z.infer<typeof businessBankingOfferSchema>;\n\nexport const businessBankingComparisonResponseSchema = z.object({\n offers: z.array(businessBankingOfferSchema),\n searchCriteria: businessBankingSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type BusinessBankingComparisonResponse = z.infer<\n typeof businessBankingComparisonResponseSchema\n>;\n\n// Schemas for Personal Banking Comparison\nexport const personalBankingSearchSchema = z.object({\n features: z\n .array(z.string())\n .optional()\n .describe(\"Desired account features.\"),\n});\nexport type PersonalBankingSearchSchema = z.infer<\n typeof personalBankingSearchSchema\n>;\n\nexport const personalBankingOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n apy: z.string(),\n interestRate: z.string().optional(),\n bonus: z.string(),\n monthlyFee: z.string(),\n overdraftRating: z.number().min(0).max(5),\n});\nexport type PersonalBankingOffer = z.infer<typeof personalBankingOfferSchema>;\n\nexport const personalBankingComparisonResponseSchema = z.object({\n offers: z.array(personalBankingOfferSchema),\n searchCriteria: personalBankingSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type PersonalBankingComparisonResponse = z.infer<\n typeof personalBankingComparisonResponseSchema\n>;\n\n// Schemas for Savings Account Comparison\nexport const savingsSearchSchema = z.object({\n initialDeposit: z\n .number()\n .optional()\n .describe(\"The initial deposit amount in USD.\"),\n});\nexport type SavingsSearchSchema = z.infer<typeof savingsSearchSchema>;\n\nexport const savingsOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n apy: z.string(),\n interestRate: z.string().optional(),\n minBalanceForApy: z.string(),\n monthlyFee: z.string(),\n});\nexport type SavingsOffer = z.infer<typeof savingsOfferSchema>;\n\nexport const savingsComparisonResponseSchema = z.object({\n offers: z.array(savingsOfferSchema),\n searchCriteria: savingsSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type SavingsAccountComparisonResponse = z.infer<\n typeof savingsComparisonResponseSchema\n>;\n\n// Schemas for Personal Credit Card Comparison\nexport const personalCreditCardSearchSchema = z.object({\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n rewardsType: z\n .enum([\"cash_back\", \"travel\", \"points\"])\n .optional()\n .describe(\"Preferred rewards type.\"),\n});\nexport type PersonalCreditCardSearchSchema = z.infer<\n typeof personalCreditCardSearchSchema\n>;\n\nexport const personalCreditCardOfferSchema = z.object({\n cardId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n rewardsRate: z.string(),\n introOffer: z.string(),\n recommendedCreditScore: z.string(),\n terms: z.object({\n apr: z.object({\n purchase: z.number(),\n balanceTransfer: z.number(),\n penalty: z.number().optional(),\n }),\n fees: z.object({\n annual: z.number(),\n }),\n }),\n applicationUrl: z.string().url().optional(),\n});\nexport type PersonalCreditCardOffer = z.infer<\n typeof personalCreditCardOfferSchema\n>;\n\nexport const personalCreditCardComparisonResponseSchema = z.object({\n offers: z.array(personalCreditCardOfferSchema),\n searchCriteria: personalCreditCardSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type PersonalCreditCardComparisonResponse = z.infer<\n typeof personalCreditCardComparisonResponseSchema\n>;\n\nexport const loanComparisonResponseSchema = z.object({\n offers: z.array(loanOfferSchema),\n summary: z.object({\n totalOffers: z.number().int(),\n bestRate: z.number(),\n bestApprovalProbability: z.number().optional(),\n fastestFunding: z.string().optional(),\n }),\n searchCriteria: z\n .union([\n personalLoanSearchSchema,\n businessLoanSearchSchema,\n mortgageSearchSchema,\n autoLoanSearchSchema,\n studentLoanSearchSchema,\n ])\n .optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type LoanComparisonResponse = z.infer<\n typeof loanComparisonResponseSchema\n>;\n\nexport const applicationProviderSchema = z.object({\n providerId: z.string(),\n providerName: z.string(),\n status: z.nativeEnum(ProviderStatus),\n submittedAt: z.string().optional(),\n providerApplicationId: z.string().optional(),\n referralUrl: z.string().url().optional(),\n error: z.string().optional(),\n});\n\nexport const personalApplicationSchema = z.object({\n id: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n applicationType: z.nativeEnum(ApplicationType),\n productType: z.union([z.nativeEnum(ProductType), z.string()]),\n status: z.nativeEnum(ApplicationStatus),\n applicant: personalApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z.array(applicationProviderSchema),\n email: z.string().email(),\n widget: z.string().optional(),\n});\n\n// Application & Lead Types\n\nexport interface ApplicationProvider {\n providerId: string;\n providerName: string;\n status: ProviderStatus;\n submittedAt?: string;\n providerApplicationId?: string;\n referralUrl?: string;\n error?: string;\n}\n\nexport interface PersonalApplicant {\n firstName: string;\n lastName: string;\n email: string;\n phone?: string;\n}\n\nexport interface BusinessApplicant {\n businessName: string;\n ein?: string;\n contact: PersonalApplicant;\n}\n\nexport interface Application<TApplicant, TData> {\n id: string; // PK\n createdAt: string;\n updatedAt: string;\n applicationType: ApplicationType;\n productType: ProductType | string;\n status: ApplicationStatus;\n applicant: TApplicant;\n applicationData: TData;\n providers: ApplicationProvider[];\n email: string; // For GSI\n widget?: string;\n}\n\nexport type PersonalApplication = Application<\n PersonalApplicant,\n Record<string, unknown>\n>;\nexport type BusinessApplication = Application<\n BusinessApplicant,\n Record<string, unknown>\n>;\nexport type GenericApplication = Application<\n PersonalApplicant | BusinessApplicant,\n Record<string, unknown>\n>;\n\n// Zod schemas for validation\n\nexport const createPersonalApplicationSchema = z.object({\n productType: z.nativeEnum(ProductType),\n applicant: personalApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z\n .array(z.object({ providerId: z.string(), providerName: z.string() }))\n .optional(),\n});\nexport type CreatePersonalApplicationDTO = z.infer<\n typeof createPersonalApplicationSchema\n>;\n\nexport const displayOfferFormSchema = z.object({\n sessionId: z\n .string()\n .optional()\n .describe(\"The session ID from a previous search to retrieve all offers.\"),\n offerId: z\n .string()\n .optional()\n .describe(\"The specific offer ID to pre-select in the form.\"),\n});\nexport type DisplayOfferFormParams = z.infer<typeof displayOfferFormSchema>;\n\nexport const anyOfferSchema = z.union([\n loanOfferSchema,\n businessCreditCardOfferSchema,\n businessBankingOfferSchema,\n personalBankingOfferSchema,\n savingsOfferSchema,\n personalCreditCardOfferSchema,\n]);\n\nexport const displayOfferFormResponseSchema = z.object({\n offer: anyOfferSchema,\n allOffers: z.array(anyOfferSchema),\n applicationData: anyObjectSchema,\n productType: z.string(),\n widget: z.string().optional(),\n});\nexport type DisplayOfferFormResponse = z.infer<\n typeof displayOfferFormResponseSchema\n>;\n\nexport const getOfferSchema = z.object({\n productType: z\n .nativeEnum(ProductType)\n .describe(\"The type of financial product being applied for.\"),\n applicant: personalApplicantSchema.describe(\n \"Personal details of the applicant.\",\n ),\n applicationData: anyObjectSchema.describe(\n \"The original search parameters or form data for the application.\",\n ),\n provider: z\n .object({\n providerId: z.string().describe(\"The ID of the selected provider.\"),\n providerName: z.string().describe(\"The name of the selected provider.\"),\n })\n .describe(\"The selected provider to submit the application to.\"),\n});\nexport type GetOfferParams = z.infer<typeof getOfferSchema>;\n\nexport const getMultipleOffersSchema = z.object({\n productType: z\n .nativeEnum(ProductType)\n .describe(\"The type of financial product being applied for.\"),\n applicant: personalApplicantSchema.describe(\n \"Personal details of the applicant.\",\n ),\n applicationData: anyObjectSchema.describe(\n \"The original search parameters or form data for the application.\",\n ),\n providers: z\n .array(\n z.object({\n providerId: z.string().describe(\"The ID of the selected provider.\"),\n providerName: z.string().describe(\"The name of the selected provider.\"),\n }),\n )\n .min(1)\n .describe(\"The list of selected providers to submit the application to.\"),\n});\nexport type GetMultipleOffersParams = z.infer<typeof getMultipleOffersSchema>;\n\nexport const trackOfferStatusSchema = z\n .object({\n applicationId: z\n .string()\n .optional()\n .describe(\"The unique ID of the application to track.\"),\n email: z\n .string()\n .email()\n .optional()\n .describe(\"The email address of the applicant to find applications for.\"),\n })\n .refine((data) => data.applicationId || data.email, {\n message: \"Either applicationId or email must be provided.\",\n });\nexport type TrackOfferStatusParams = z.infer<typeof trackOfferStatusSchema>;\n\nexport const trackOfferStatusResponseSchema = z.object({\n applications: z.array(personalApplicationSchema),\n widget: z.string().optional(),\n});\nexport type TrackOfferStatusResponse = z.infer<\n typeof trackOfferStatusResponseSchema\n>;\n\nexport const businessApplicantSchema = z.object({\n businessName: z.string(),\n ein: z.string().optional(),\n contact: personalApplicantSchema,\n});\n\nexport const createBusinessApplicationSchema = z.object({\n productType: z.nativeEnum(ProductType),\n applicant: businessApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z\n .array(z.object({ providerId: z.string(), providerName: z.string() }))\n .optional(),\n});\nexport type CreateBusinessApplicationDTO = z.infer<\n typeof createBusinessApplicationSchema\n>;\n\nexport const documentTypeEnum = z.enum([\n \"articles-of-incorporation\",\n \"balance-sheet\",\n \"bank-statement\",\n \"business-license\",\n \"business-plan\",\n \"contract\",\n \"drivers-license\",\n \"financial-statement\",\n \"identity-document\",\n \"invoice\",\n \"lease-agreement\",\n \"other-business-document\",\n \"other-personal-document\",\n \"passport\",\n \"profit-and-loss-statement\",\n \"proof-of-address\",\n \"proof-of-income\",\n \"property-document\",\n \"purchase-order\",\n \"tax-return\",\n \"utility-bill\",\n \"vehicle-document\",\n \"voided-check\",\n]);\nexport type DocumentType = z.infer<typeof documentTypeEnum>;\n\nexport const displayUploadDocumentsFormSchema = z.object({\n applicationId: z\n .string()\n .optional()\n .describe(\"Pre-fill the application ID for the document upload form.\"),\n});\nexport type DisplayUploadDocumentsFormParams = z.infer<\n typeof displayUploadDocumentsFormSchema\n>;\n\nexport const submitDocumentsSchema = z.object({\n applicationId: z\n .string()\n .describe(\"The ID of the application to associate the document with.\"),\n fileName: z.string().describe(\"The original name of the file.\"),\n documentType: documentTypeEnum.describe(\"The category of the document.\"),\n _openai_meta: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Internal metadata from OpenAI (automatically injected)\"),\n});\nexport type SubmitDocumentsParams = z.infer<typeof submitDocumentsSchema>;\n\nexport const submitDocumentsResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n uploadUrl: z.string().url().optional(),\n uploadFields: z.record(z.string(), z.string()).optional(),\n documentId: z.string().optional(),\n widget: z.string().optional(),\n});\nexport type SubmitDocumentsResponse = z.infer<\n typeof submitDocumentsResponseSchema\n>;\n\nexport const displayUploadDocumentsFormResponseSchema = z.object({\n widget: z.string().optional(),\n});\nexport type DisplayUploadDocumentsFormResponse = z.infer<\n typeof displayUploadDocumentsFormResponseSchema\n>;\n\n// Schemas for Calculator Tools\nexport const loanPaymentSchema = z.object({\n loanAmount: z\n .number()\n .describe(\"The total amount of the loan in USD.\")\n .positive(\"Loan amount must be positive.\"),\n interestRate: z\n .number()\n .describe(\"The annual interest rate (e.g., 5 for 5%).\")\n .min(0, \"Interest rate cannot be negative.\"),\n loanTermInMonths: z\n .number()\n .describe(\"The duration of the loan in months.\")\n .positive(\"Loan term must be positive.\")\n .int(),\n});\nexport type LoanPaymentParams = z.infer<typeof loanPaymentSchema>;\n\nexport const loanPaymentResponseSchema = z.object({\n monthlyPayment: z.number().describe(\"The calculated monthly payment amount.\"),\n totalPayment: z\n .number()\n .describe(\"The total amount to be paid over the life of the loan.\"),\n totalInterest: z\n .number()\n .describe(\"The total interest paid over the life of the loan.\"),\n widget: z.string().optional(),\n});\nexport type LoanCalculationResponse = z.infer<typeof loanPaymentResponseSchema>;\n\nexport const mortgagePaymentSchema = z.object({\n propertyValue: z\n .number()\n .describe(\"The total value of the property in USD.\")\n .positive(\"Property value must be positive.\"),\n downPayment: z\n .number()\n .describe(\"The amount paid upfront in USD.\")\n .min(0, \"Down payment cannot be negative.\"),\n interestRate: z\n .number()\n .describe(\"The annual interest rate (e.g., 3.5 for 3.5%).\")\n .min(0, \"Interest rate cannot be negative.\"),\n loanTermInYears: z\n .number()\n .describe(\"The duration of the loan in years.\")\n .positive(\"Loan term must be positive.\")\n .int(),\n propertyTaxRate: z\n .number()\n .describe(\n \"The annual property tax rate as a percentage (e.g., 1.2 for 1.2%).\",\n )\n .min(0, \"Property tax rate cannot be negative.\"),\n homeInsurance: z\n .number()\n .describe(\"The annual home insurance cost in USD.\")\n .min(0, \"Home insurance cannot be negative.\"),\n});\nexport type MortgagePaymentParams = z.infer<typeof mortgagePaymentSchema>;\n\nexport const mortgagePaymentResponseSchema = z.object({\n loanAmount: z.number().describe(\"The total loan amount after down payment.\"),\n principalAndInterest: z\n .number()\n .describe(\"The monthly payment for principal and interest.\"),\n monthlyPropertyTax: z\n .number()\n .describe(\"The estimated monthly property tax payment.\"),\n monthlyHomeInsurance: z\n .number()\n .describe(\"The estimated monthly home insurance payment.\"),\n totalMonthlyPayment: z\n .number()\n .describe(\"The total estimated monthly payment (PITI).\"),\n widget: z.string().optional(),\n});\nexport type MortgageCalculationResponse = z.infer<\n typeof mortgagePaymentResponseSchema\n>;\n\n// Schemas for Lease vs. Purchase Calculator\nexport const leaseVsPurchaseSchema = z.object({\n // Purchase details\n purchasePrice: z\n .number()\n .positive(\"Purchase price must be positive.\")\n .describe(\"Total price of the vehicle for purchase in USD.\"),\n downPayment: z\n .number()\n .min(0, \"Down payment cannot be negative.\")\n .describe(\"Upfront payment amount for purchase in USD.\"),\n loanTermInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"Loan duration in months for purchase.\"),\n interestRate: z\n .number()\n .min(0, \"Interest rate cannot be negative.\")\n .describe(\"Annual interest rate for purchase loan (e.g., 5 for 5%).\"),\n salesTaxRate: z\n .number()\n .min(0, \"Sales tax rate cannot be negative.\")\n .describe(\"Sales tax rate as a percentage (e.g., 7.5 for 7.5%).\"),\n\n // Lease details\n leaseTermInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"Lease duration in months.\"),\n monthlyLeasePayment: z\n .number()\n .positive()\n .describe(\"Monthly payment for the lease in USD.\"),\n moneyFactor: z\n .number()\n .positive(\"Money factor must be positive.\")\n .describe(\"The money factor for the lease (similar to interest rate).\"),\n acquisitionFee: z\n .number()\n .min(0)\n .default(0)\n .describe(\"Fee charged by the lessor to initiate the lease in USD.\"),\n securityDeposit: z\n .number()\n .min(0)\n .default(0)\n .describe(\"Refundable deposit paid at the start of the lease in USD.\"),\n\n // Common details\n residualValuePercentage: z\n .number()\n .min(0)\n .max(100, \"Residual value percentage cannot exceed 100.\")\n .describe(\n \"Estimated value of the vehicle at the end of the lease, as a percentage of MSRP.\",\n ),\n expectedOwnershipInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"How long you plan to keep the vehicle, in months.\"),\n});\nexport type LeaseVsPurchaseParams = z.infer<typeof leaseVsPurchaseSchema>;\n\nexport const leaseVsPurchaseResponseSchema = z.object({\n purchaseAnalysis: z.object({\n totalLoanPayment: z.number(),\n totalInterestPaid: z.number(),\n totalSalesTax: z.number(),\n equityAfterOwnership: z.number(),\n totalCostOfOwnership: z.number(),\n monthlyPayment: z.number(),\n }),\n leaseAnalysis: z.object({\n totalLeasePayments: z.number(),\n totalUpfrontCosts: z.number(),\n totalCostOfLeasing: z.number(),\n }),\n comparison: z.object({\n purchaseCostIsLowerBy: z.number(),\n leaseCostIsLowerBy: z.number(),\n recommendation: z.string(),\n }),\n widget: z.string().optional(),\n});\nexport type LeaseVsPurchaseResponse = z.infer<\n typeof leaseVsPurchaseResponseSchema\n>;\n\n// ============================================================================\n// SDK Config\n// ============================================================================\n\nexport interface SecureLendConfig {\n /** API Key for authentication. */\n apiKey?: string;\n /** MCP Server URL (default: https://mcp.securelend.ai/mcp) */\n serverUrl?: string;\n}\n"]}
1
+ {"version":3,"sources":["../../src/types/platform.ts","../../src/types/index.ts"],"names":["z","CreditTier","ProductType","ApplicationType","ApplicationStatus","ProviderStatus"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from \"zod\";\n\n/**\n * Response enums are plain strings so a new server value does not crash the client.\n * Request checks use the known lists below.\n */\nexport const OUTCOME_STATES = [\n \"viewed\",\n \"info_requested\",\n \"declined\",\n \"term_sheet\",\n \"approved\",\n \"funded\",\n \"withdrawn\",\n] as const;\n\nexport const DECLINE_REASON_CODES = [\n \"outside_credit_box\",\n \"industry\",\n \"time_in_business\",\n \"dscr\",\n \"collateral\",\n \"amount\",\n \"state\",\n \"credit_score\",\n \"docs_incomplete\",\n \"capacity\",\n \"other\",\n] as const;\n\nexport const SHARE_SCOPES = [\"summary\", \"memo\", \"checks\", \"documents\"] as const;\n\nexport const FEEDBACK_TYPES = [\n \"rating\",\n \"edit\",\n \"comment\",\n \"approve\",\n \"reject\",\n \"regenerate\",\n] as const;\n\nexport const FEEDBACK_TARGETS = [\n \"memo_section\",\n \"memo\",\n \"tool\",\n \"decision\",\n \"lead_match\",\n] as const;\n\nexport const EVENT_TYPES = [\n \"lead.created\",\n \"lead.matched\",\n \"lead.notified\",\n \"package.shared\",\n \"package.opened\",\n \"consent.revoked\",\n \"outcome.recorded\",\n \"credit_box.updated\",\n \"feedback.recorded\",\n] as const;\n\nexport const leadSchema = z\n .object({\n id: z.string(),\n tenantId: z.string().nullable().optional(),\n status: z.string().nullable().optional(),\n productType: z.string().nullable().optional(),\n amount: z.number().nullable().optional(),\n legalName: z.string().nullable().optional(),\n email: z.string().nullable().optional(),\n caseId: z.string().nullable().optional(),\n lenders: z\n .array(\n z\n .object({\n id: z.string().nullable().optional(),\n name: z.string().optional(),\n tenantId: z.string().nullable().optional(),\n })\n .passthrough(),\n )\n .optional(),\n createdAt: z.string().optional(),\n updatedAt: z.string().optional(),\n })\n .passthrough();\nexport type Lead = z.infer<typeof leadSchema>;\n\nexport const leadListSchema = z\n .object({\n items: z.array(leadSchema),\n tenantId: z.string().optional(),\n })\n .passthrough();\n\nexport const uploadResultSchema = z\n .object({\n key: z.string().optional(),\n filename: z.string().optional(),\n documentType: z.string().optional(),\n applicationId: z.string().optional(),\n })\n .passthrough();\nexport type UploadResult = z.infer<typeof uploadResultSchema>;\n\nexport const matchComponentsSchema = z\n .object({\n rules: z.number().nullable().optional(),\n fit: z.number().nullable().optional(),\n outcome: z.number().nullable().optional(),\n sba: z.number().nullable().optional(),\n samples: z.number().nullable().optional(),\n })\n .passthrough();\nexport type MatchComponents = z.infer<typeof matchComponentsSchema>;\n\nexport const lenderMatchSchema = z\n .object({\n lenderId: z.string().nullable().optional(),\n score: z.number().nullable().optional(),\n components: matchComponentsSchema.nullable().optional(),\n generationId: z.string().nullable().optional(),\n })\n .passthrough();\nexport type LenderMatch = z.infer<typeof lenderMatchSchema>;\n\nexport const matchListSchema = z\n .object({\n leadId: z.string(),\n generationId: z.string().nullable().optional(),\n lenders: z.array(lenderMatchSchema),\n })\n .passthrough();\nexport type MatchList = z.infer<typeof matchListSchema>;\n\nexport const packageSchema = z\n .object({\n packageId: z.string().optional(),\n caseId: z.string().optional(),\n id: z.string().optional(),\n generationId: z.string().nullable().optional(),\n auth: z.string().optional(),\n error: z.string().optional(),\n deskUrl: z.string().optional(),\n })\n .passthrough();\nexport type PackageRecord = z.infer<typeof packageSchema>;\n\nexport const shareConsentSchema = z\n .object({\n id: z.string(),\n leadId: z.string(),\n packageId: z.string(),\n packageVersion: z.number(),\n lenderId: z.string().optional(),\n scope: z.array(z.string()),\n expiresAt: z.string(),\n revokedAt: z.string().nullable().optional(),\n borrowerRef: z.string().optional(),\n grantedAt: z.string().optional(),\n })\n .passthrough();\nexport type ShareConsent = z.infer<typeof shareConsentSchema>;\n\nexport const shareReceiptSchema = z\n .object({\n id: z.string(),\n consentId: z.string(),\n event: z.string(),\n createdAt: z.string(),\n lenderId: z.string().optional(),\n })\n .passthrough();\nexport type ShareReceipt = z.infer<typeof shareReceiptSchema>;\n\nexport const leadOutcomeSchema = z\n .object({\n id: z.string(),\n leadId: z.string(),\n lenderId: z.string(),\n state: z.string(),\n reasonCode: z.string().nullable().optional(),\n reasonText: z.string().nullable().optional(),\n fundedAmount: z.number().nullable().optional(),\n fundedOn: z.string().nullable().optional(),\n surface: z.string().optional(),\n feedbackId: z.string().nullable().optional(),\n matchGenerationId: z.string().nullable().optional(),\n createdAt: z.string().optional(),\n })\n .passthrough();\nexport type LeadOutcome = z.infer<typeof leadOutcomeSchema>;\n\nexport const creditBoxSchema = z\n .object({\n version: z.number(),\n lenderId: z.string().optional(),\n criteria: z.record(z.unknown()).optional(),\n capacityPerWeek: z.number().nullable().optional(),\n status: z.string(),\n pausedUntil: z.string().nullable().optional(),\n createdAt: z.string().optional(),\n })\n .passthrough();\nexport type CreditBox = z.infer<typeof creditBoxSchema>;\n\nexport const creditBoxViewSchema = z\n .object({\n current: creditBoxSchema.nullable(),\n versions: z.array(creditBoxSchema),\n })\n .passthrough();\nexport type CreditBoxView = z.infer<typeof creditBoxViewSchema>;\n\nexport const feedbackEventSchema = z\n .object({\n id: z.string(),\n generationId: z.string().nullable().optional(),\n caseId: z.string().nullable().optional(),\n surface: z.string().optional(),\n type: z.string(),\n rating: z.number().nullable().optional(),\n comment: z.string().nullable().optional(),\n targetKind: z.string().optional(),\n targetKey: z.string().optional(),\n createdAt: z.string().optional(),\n })\n .passthrough();\nexport type FeedbackEvent = z.infer<typeof feedbackEventSchema>;\n\nexport const feedbackCreatedSchema = z\n .object({\n id: z.string(),\n })\n .passthrough();\nexport type FeedbackCreated = z.infer<typeof feedbackCreatedSchema>;\n\nexport const liquidityCellSchema = z\n .object({\n key: z.string(),\n leads: z.number(),\n matchRate: z.number().nullable().optional(),\n responseRate48h: z.number().nullable().optional(),\n medianResponseMs: z.number().nullable().optional(),\n termSheetRate: z.number().nullable().optional(),\n fundedRate: z.number().nullable().optional(),\n fundedAmount: z.number().nullable().optional(),\n lenderCount: z.number().optional(),\n })\n .passthrough();\nexport type LiquidityCell = z.infer<typeof liquidityCellSchema>;\n\nexport const liquidityReportSchema = z\n .object({\n view: z.string(),\n groupBy: z.string(),\n cells: z.array(liquidityCellSchema),\n })\n .passthrough();\nexport type LiquidityMetrics = z.infer<typeof liquidityReportSchema>;\n\nexport const secureLendEventSchema = z\n .object({\n type: z.string(),\n id: z.string(),\n createdAt: z.string(),\n tenantId: z.string(),\n data: z.record(z.unknown()).optional(),\n })\n .passthrough();\nexport type SecureLendEvent = z.infer<typeof secureLendEventSchema>;\n\nexport interface LeadCreateInput {\n confirmed?: boolean;\n legalName?: string;\n email?: string;\n productType?: string;\n amount?: number;\n lenders?: Array<{\n id?: string;\n name?: string;\n email?: string;\n tenantId?: string;\n }>;\n [key: string]: unknown;\n}\n\nexport interface LeadListFilter {\n status?: string;\n}\n\nexport interface UploadFile {\n filename: string;\n bytes: Uint8Array;\n mime?: string;\n documentType?: string;\n}\n\nexport interface PackageStartInput {\n borrower: string;\n amount: number;\n currency: string;\n security: \"unsecured\" | \"secured\";\n guarantees?: Array<Record<string, unknown>>;\n purpose?: string;\n tenorMonths?: number;\n amortisation?: string;\n pricing?: string;\n}\n\nexport interface ConsentCreateInput {\n leadId: string;\n packageId: string;\n packageVersion: number;\n lenderIds?: string[];\n scope?: string[];\n expiresAt: string;\n borrowerRef: string;\n}\n\nexport interface OutcomeRecordInput {\n lenderId?: string;\n state: string;\n reasonCode?: string;\n reasonText?: string;\n fundedAmount?: number;\n fundedOn?: string;\n surface?: string;\n}\n\nexport interface CreditBoxWriteInput {\n criteria: Record<string, unknown>;\n capacityPerWeek?: number;\n lenderId?: string;\n}\n\nexport interface FeedbackSubmitInput {\n type: string;\n rating?: number;\n comment?: string;\n generationId?: string;\n caseId?: string;\n surface?: string;\n target: { kind: string; key: string };\n before?: string;\n after?: string;\n}\n\nexport interface LiquidityQuery {\n groupBy?: \"product\" | \"amount_band\" | \"state\" | \"naics\" | string;\n from?: string;\n to?: string;\n}\n\nexport interface RequestOptions {\n idempotencyKey?: string;\n}\n","import { z } from \"zod\";\n\n// A generic schema for application data, which can be any of the search schemas\nconst anyObjectSchema = z.object({}).passthrough();\n\n// Shared Enums\nexport enum CreditTier {\n PRIME = \"PRIME\",\n NEAR_PRIME = \"NEAR_PRIME\",\n SUBPRIME = \"SUBPRIME\",\n DEEP_SUBPRIME = \"DEEP_SUBPRIME\",\n UNKNOWN = \"UNKNOWN\",\n}\n\nexport enum ProductType {\n INSTALLMENT_LOAN = \"INSTALLMENT_LOAN\",\n LINE_OF_CREDIT = \"LINE_OF_CREDIT\",\n SHORT_TERM_CREDIT = \"SHORT_TERM_CREDIT\",\n BNPL = \"BNPL\",\n MORTGAGE = \"MORTGAGE\",\n AUTO_LOAN = \"AUTO_LOAN\",\n AUTO_REFINANCE = \"AUTO_REFINANCE\",\n STUDENT_LOAN = \"STUDENT_LOAN\",\n STUDENT_LOAN_REFINANCE = \"STUDENT_LOAN_REFINANCE\",\n BUSINESS_LOAN = \"BUSINESS_LOAN\",\n BUSINESS_BANKING = \"BUSINESS_BANKING\",\n BUSINESS_CREDIT_CARD = \"BUSINESS_CREDIT_CARD\",\n PERSONAL_BANKING = \"PERSONAL_BANKING\",\n SAVINGS_ACCOUNT = \"SAVINGS_ACCOUNT\",\n PERSONAL_CREDIT_CARD = \"PERSONAL_CREDIT_CARD\",\n}\n\n// Lender Directory Related Types\nexport interface Lender {\n lender_id: string;\n canonical_name: string;\n entity_type: string;\n product_types: string[];\n credit_tier_target: string[];\n amount_min?: number;\n amount_max?: number;\n states_served?: string[];\n funding_speed?: string;\n brand_status: string;\n exclusion_reason?: string;\n source: string;\n updated_at: string;\n gsi1pks: string[];\n lanes?: string[];\n primary_lane?: string;\n lane_pk?: string;\n}\n\nexport interface LenderSearchCriteria {\n creditScore?: number;\n creditTier?: CreditTier;\n loanAmount: number;\n state?: string;\n productType: ProductType;\n includeReviewStatus?: boolean; // Include lenders with REVIEW status\n}\n\n// Loan Offer Related Types\n\nconst moneySchema = z.object({\n amount: z.number(),\n currency: z.string().length(3).optional(),\n});\n\nexport type Money = z.infer<typeof moneySchema>;\n\nexport interface BankAccountOffer {\n id: string;\n providerName: string;\n providerLogo?: string;\n accountName: string;\n monthlyFee: number;\n minBalance: number;\n interestRate: number; // APY\n features: string[];\n isSecureLendTenant?: boolean;\n applicationUrl?: string;\n}\n\nexport interface CreditCardOffer {\n id: string;\n issuerName: string;\n issuerLogo?: string;\n cardName: string;\n apr: {\n min: number;\n max: number;\n };\n annualFee: number;\n rewards: {\n type: \"cash_back\" | \"points\" | \"miles\";\n summary: string;\n signupBonus?: string;\n };\n isSecureLendTenant?: boolean;\n applicationUrl?: string;\n}\n\nexport const bankAccountOfferSchema = z.object({\n id: z.string(),\n providerName: z.string(),\n providerLogo: z.string().optional(),\n accountName: z.string(),\n monthlyFee: z.number(),\n minBalance: z.number(),\n interestRate: z.number(),\n features: z.array(z.string()),\n isSecureLendTenant: z.boolean().optional(),\n applicationUrl: z.string().url().optional(),\n});\n\nexport const creditCardOfferSchema = z.object({\n id: z.string(),\n issuerName: z.string(),\n issuerLogo: z.string().optional(),\n cardName: z.string(),\n apr: z.object({\n min: z.number(),\n max: z.number(),\n }),\n annualFee: z.number(),\n rewards: z.object({\n type: z.enum([\"cash_back\", \"points\", \"miles\"]),\n summary: z.string(),\n signupBonus: z.string().optional(),\n }),\n isSecureLendTenant: z.boolean().optional(),\n applicationUrl: z.string().url().optional(),\n});\n\nexport type Percentage = number; // 0-100\nexport type BasisPoints = number;\nexport type DateString = string; // ISO 8601\n\nexport enum ApplicationType {\n PERSONAL = \"PERSONAL\",\n BUSINESS = \"BUSINESS\",\n}\n\nexport enum ApplicationStatus {\n DRAFT = \"DRAFT\",\n SUBMITTED = \"SUBMITTED\",\n IN_REVIEW = \"IN_REVIEW\",\n ACTION_REQUIRED = \"ACTION_REQUIRED\",\n APPROVED = \"APPROVED\",\n DECLINED = \"DECLINED\",\n CLOSED = \"CLOSED\",\n}\n\nexport enum ProviderStatus {\n PENDING = \"PENDING\", // Not yet sent\n SUBMITTED = \"SUBMITTED\", // Sent to provider\n REFERRED = \"REFERRED\", // Sent via affiliate link\n ERROR = \"ERROR\", // Failed to send\n RECEIVED = \"RECEIVED\", // Provider acknowledged\n}\n\nexport const personalApplicantSchema = z.object({\n firstName: z.string().describe(\"The applicant's first name.\"),\n lastName: z.string().describe(\"The applicant's last name.\"),\n email: z.string().email().describe(\"The applicant's email address.\"),\n phone: z.string().optional().describe(\"The applicant's phone number.\"),\n});\n\n// Published Schema Aligned Types\n\nconst lenderSchema = z.object({\n id: z.string(),\n name: z.string(),\n type: z.string(),\n logoUrl: z.string().url().optional(),\n});\n\nconst productSchema = z.object({\n name: z.string(),\n type: z.string(),\n description: z.string().optional(),\n});\n\nconst loanTermsSchema = z.object({\n amount: moneySchema,\n interestRate: z.object({\n type: z.enum([\"fixed\", \"variable\"]),\n rate: z.number().optional(), // rate might not always be available if only APR is given\n apr: z.number(),\n }),\n termMonths: z.number().int(),\n payment: z.object({\n frequency: z.string().optional(),\n amount: moneySchema,\n }),\n totalCost: moneySchema.optional(),\n repayment: z\n .object({\n totalRepaymentAmount: z.number(),\n costOfFinancing: z.number(),\n })\n .optional(),\n});\n\nconst loanFeesSchema = z\n .object({\n origination: z\n .object({\n amount: moneySchema.optional(),\n percentage: z.number().optional(),\n })\n .optional(),\n })\n .optional();\n\nconst matchingSchema = z\n .object({\n approvalProbability: z.number().min(0).max(1).optional(),\n matchScore: z.number().min(0).max(100).optional(),\n matchReasons: z.array(z.string()).optional(),\n })\n .optional();\n\nconst processSchema = z.object({\n applicationMethod: z.string(),\n applicationUrl: z.string().url().optional(),\n fundingSpeed: z\n .object({\n description: z.string(),\n })\n .optional(),\n});\n\nexport const loanOfferSchema = z.object({\n offerId: z.string(),\n lender: lenderSchema,\n product: productSchema,\n terms: loanTermsSchema,\n fees: loanFeesSchema,\n matching: matchingSchema,\n process: processSchema.optional(),\n // Additional fields for UI that were in the old schema\n lenderInfo: z.string().optional(),\n badges: z.array(z.string()).optional(),\n isSecureLendTenant: z.boolean().optional(),\n});\n\nexport type LoanOffer = z.infer<typeof loanOfferSchema>;\n\n// Adapter Interface\nexport interface PersonalLenderAdapter {\n readonly name: string;\n search(params: PersonalLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface BusinessLenderAdapter {\n readonly name: string;\n search(params: BusinessLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface MortgageLenderAdapter {\n readonly name: string;\n search(params: MortgageSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface AutoLenderAdapter {\n readonly name: string;\n search(params: AutoLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface StudentLenderAdapter {\n readonly name: string;\n search(params: StudentLoanSearchParams): Promise<LoanOffer[]>;\n}\n\nexport interface BusinessCreditCardAdapter {\n readonly name: string;\n search(\n params: BusinessCreditCardSearchParams,\n ): Promise<BusinessCreditCardOffer[]>;\n}\n\nexport interface BusinessBankingAdapter {\n readonly name: string;\n search(\n params: BusinessBankingSearchSchema & {\n maxResults?: number;\n includeReviewStatus?: boolean;\n },\n ): Promise<BusinessBankingOffer[]>;\n}\n\nexport interface PersonalBankingAdapter {\n readonly name: string;\n search(params: PersonalBankingSearchSchema): Promise<PersonalBankingOffer[]>;\n}\n\nexport interface SavingsAdapter {\n readonly name: string;\n search(params: SavingsSearchSchema): Promise<SavingsOffer[]>;\n}\n\nexport interface PersonalCreditCardAdapter {\n readonly name: string;\n search(\n params: PersonalCreditCardSearchSchema,\n ): Promise<PersonalCreditCardOffer[]>;\n}\n\n// Zod Schemas for Tool Input/Output\nexport const personalLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(100000)\n .describe(\"The desired loan amount in USD (e.g., 25000).\"),\n purpose: z\n .enum([\n \"debt_consolidation\",\n \"home_improvement\",\n \"major_purchase\",\n \"medical\",\n \"vacation\",\n \"other\",\n ])\n .describe(\"The purpose of the loan.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n monthlyIncome: z\n .number()\n .min(0)\n .optional()\n .describe(\"Applicant's gross monthly income in USD.\"),\n employmentStatus: z\n .enum([\"employed\", \"self_employed\", \"retired\", \"unemployed\"])\n .optional()\n .describe(\"The applicant's employment status.\"),\n state: z\n .string()\n .optional()\n .describe(\"The applicant's state of residence (2-letter code).\"),\n});\nexport type PersonalLoanSearchParams = z.infer<typeof personalLoanSearchSchema>;\n\n// Generic schema for business loan data\nexport const businessLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .describe(\"The desired loan amount, e.g., 50000 for $50,000.\"),\n purpose: z\n .string()\n .describe(\"The reason for the loan, e.g., 'working capital'.\"),\n annualRevenue: z\n .number()\n .min(0)\n .optional()\n .describe(\"The business's gross annual revenue in USD.\"),\n industry: z\n .string()\n .optional()\n .describe(\"The industry the business operates in, e.g., 'technology'.\"),\n state: z\n .string()\n .optional()\n .describe(\"The state where the business is located (2-letter code).\"),\n});\nexport type BusinessLoanSearchParams = z.infer<typeof businessLoanSearchSchema>;\n\nexport const mortgageSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(50000)\n .max(2000000)\n .describe(\"The desired mortgage loan amount in USD.\"),\n homePrice: z\n .number()\n .min(50000)\n .max(5000000)\n .optional()\n .describe(\"The purchase price of the home in USD.\"),\n downPayment: z\n .number()\n .min(0)\n .optional()\n .describe(\"The amount of the down payment in USD.\"),\n creditScore: z\n .number()\n .min(500)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (500-850).\"),\n loanType: z\n .enum([\"conventional\", \"fha\", \"va\", \"jumbo\", \"refinance\"])\n .describe(\"The type of mortgage loan.\"),\n propertyType: z\n .enum([\"primary\", \"secondary\", \"investment\"])\n .optional()\n .describe(\"The intended use of the property.\"),\n state: z\n .string()\n .optional()\n .describe(\"The state where the property is located (2-letter code).\"),\n});\nexport type MortgageSearchParams = z.infer<typeof mortgageSearchSchema>;\n\nexport const autoLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(100000)\n .describe(\"The desired auto loan amount in USD.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n isNew: z\n .boolean()\n .describe(\"Specifies if the vehicle is new (true) or used (false).\"),\n state: z\n .string()\n .optional()\n .describe(\"The applicant's state of residence (2-letter code).\"),\n});\nexport type AutoLoanSearchParams = z.infer<typeof autoLoanSearchSchema>;\n\nexport const studentLoanSearchSchema = z.object({\n loanAmount: z\n .number()\n .min(1000)\n .max(250000)\n .describe(\"The total amount needed for the student loan in USD.\"),\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The student's estimated credit score (300-850).\"),\n coSignerCreditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\n \"The co-signer's estimated credit score (300-850), if applicable.\",\n ),\n degreeType: z\n .enum([\"undergraduate\", \"graduate\", \"mba\", \"medical\", \"law\"])\n .describe(\"The type of degree the loan is for.\"),\n state: z\n .string()\n .optional()\n .describe(\"The student's state of residence (2-letter code).\"),\n});\nexport type StudentLoanSearchParams = z.infer<typeof studentLoanSearchSchema>;\n\n// Schemas for Business Credit Card Comparison\nexport const businessCreditCardSearchSchema = z.object({\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n annualRevenue: z\n .number()\n .min(0)\n .optional()\n .describe(\"The business's annual revenue in USD.\"),\n businessAgeInYears: z\n .number()\n .min(0)\n .optional()\n .describe(\"The age of the business in years.\"),\n});\nexport type BusinessCreditCardSearchParams = z.infer<\n typeof businessCreditCardSearchSchema\n>;\n\nexport const businessCreditCardOfferSchema = z.object({\n cardId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n creditScoreRange: z.string(),\n welcomeBonus: z.string(),\n terms: z.object({\n apr: z.number(),\n annualFee: z.number(),\n creditLimit: moneySchema,\n }),\n});\nexport type BusinessCreditCardOffer = z.infer<\n typeof businessCreditCardOfferSchema\n>;\n\nexport const businessCreditCardComparisonResponseSchema = z.object({\n offers: z.array(businessCreditCardOfferSchema),\n searchCriteria: businessCreditCardSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type BusinessCreditCardComparisonResponse = z.infer<\n typeof businessCreditCardComparisonResponseSchema\n>;\n\n// Schemas for Business Banking Comparison\nexport const businessBankingSearchSchema = z.object({\n industry: z.string().optional().describe(\"The business's industry.\"),\n monthlyTransactions: z\n .number()\n .optional()\n .describe(\"Estimated number of monthly transactions.\"),\n});\nexport type BusinessBankingSearchSchema = z.infer<\n typeof businessBankingSearchSchema\n>;\n\nexport const businessBankingOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n apy: z.string(),\n interestRate: z.string().optional(),\n monthlyFee: z.string(),\n bonus: z.string(),\n});\nexport type BusinessBankingOffer = z.infer<typeof businessBankingOfferSchema>;\n\nexport const businessBankingComparisonResponseSchema = z.object({\n offers: z.array(businessBankingOfferSchema),\n searchCriteria: businessBankingSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type BusinessBankingComparisonResponse = z.infer<\n typeof businessBankingComparisonResponseSchema\n>;\n\n// Schemas for Personal Banking Comparison\nexport const personalBankingSearchSchema = z.object({\n features: z\n .array(z.string())\n .optional()\n .describe(\"Desired account features.\"),\n});\nexport type PersonalBankingSearchSchema = z.infer<\n typeof personalBankingSearchSchema\n>;\n\nexport const personalBankingOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n apy: z.string(),\n interestRate: z.string().optional(),\n bonus: z.string(),\n monthlyFee: z.string(),\n overdraftRating: z.number().min(0).max(5),\n});\nexport type PersonalBankingOffer = z.infer<typeof personalBankingOfferSchema>;\n\nexport const personalBankingComparisonResponseSchema = z.object({\n offers: z.array(personalBankingOfferSchema),\n searchCriteria: personalBankingSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type PersonalBankingComparisonResponse = z.infer<\n typeof personalBankingComparisonResponseSchema\n>;\n\n// Schemas for Savings Account Comparison\nexport const savingsSearchSchema = z.object({\n initialDeposit: z\n .number()\n .optional()\n .describe(\"The initial deposit amount in USD.\"),\n});\nexport type SavingsSearchSchema = z.infer<typeof savingsSearchSchema>;\n\nexport const savingsOfferSchema = z.object({\n accountId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n apy: z.string(),\n interestRate: z.string().optional(),\n minBalanceForApy: z.string(),\n monthlyFee: z.string(),\n});\nexport type SavingsOffer = z.infer<typeof savingsOfferSchema>;\n\nexport const savingsComparisonResponseSchema = z.object({\n offers: z.array(savingsOfferSchema),\n searchCriteria: savingsSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type SavingsAccountComparisonResponse = z.infer<\n typeof savingsComparisonResponseSchema\n>;\n\n// Schemas for Personal Credit Card Comparison\nexport const personalCreditCardSearchSchema = z.object({\n creditScore: z\n .number()\n .min(300)\n .max(850)\n .optional()\n .describe(\"The applicant's estimated credit score (300-850).\"),\n rewardsType: z\n .enum([\"cash_back\", \"travel\", \"points\"])\n .optional()\n .describe(\"Preferred rewards type.\"),\n});\nexport type PersonalCreditCardSearchSchema = z.infer<\n typeof personalCreditCardSearchSchema\n>;\n\nexport const personalCreditCardOfferSchema = z.object({\n cardId: z.string(),\n name: z.string(),\n issuer: z.string(),\n imageUrl: z.string(),\n rating: z.number().min(0).max(5),\n bestFor: z.string(),\n rewardsRate: z.string(),\n introOffer: z.string(),\n recommendedCreditScore: z.string(),\n terms: z.object({\n apr: z.object({\n purchase: z.number(),\n balanceTransfer: z.number(),\n penalty: z.number().optional(),\n }),\n fees: z.object({\n annual: z.number(),\n }),\n }),\n applicationUrl: z.string().url().optional(),\n});\nexport type PersonalCreditCardOffer = z.infer<\n typeof personalCreditCardOfferSchema\n>;\n\nexport const personalCreditCardComparisonResponseSchema = z.object({\n offers: z.array(personalCreditCardOfferSchema),\n searchCriteria: personalCreditCardSearchSchema.optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type PersonalCreditCardComparisonResponse = z.infer<\n typeof personalCreditCardComparisonResponseSchema\n>;\n\nexport const loanComparisonResponseSchema = z.object({\n offers: z.array(loanOfferSchema),\n summary: z.object({\n totalOffers: z.number().int(),\n bestRate: z.number(),\n bestApprovalProbability: z.number().optional(),\n fastestFunding: z.string().optional(),\n }),\n searchCriteria: z\n .union([\n personalLoanSearchSchema,\n businessLoanSearchSchema,\n mortgageSearchSchema,\n autoLoanSearchSchema,\n studentLoanSearchSchema,\n ])\n .optional(),\n metadata: z.object({\n queryId: z.string(),\n timestamp: z.string(),\n sessionId: z.string().optional(),\n }),\n widget: z.string().optional(),\n});\nexport type LoanComparisonResponse = z.infer<\n typeof loanComparisonResponseSchema\n>;\n\nexport const applicationProviderSchema = z.object({\n providerId: z.string(),\n providerName: z.string(),\n status: z.nativeEnum(ProviderStatus),\n submittedAt: z.string().optional(),\n providerApplicationId: z.string().optional(),\n referralUrl: z.string().url().optional(),\n error: z.string().optional(),\n});\n\nexport const personalApplicationSchema = z.object({\n id: z.string(),\n createdAt: z.string(),\n updatedAt: z.string(),\n applicationType: z.nativeEnum(ApplicationType),\n productType: z.union([z.nativeEnum(ProductType), z.string()]),\n status: z.nativeEnum(ApplicationStatus),\n applicant: personalApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z.array(applicationProviderSchema),\n email: z.string().email(),\n widget: z.string().optional(),\n});\n\n// Application & Lead Types\n\nexport interface ApplicationProvider {\n providerId: string;\n providerName: string;\n status: ProviderStatus;\n submittedAt?: string;\n providerApplicationId?: string;\n referralUrl?: string;\n error?: string;\n}\n\nexport interface PersonalApplicant {\n firstName: string;\n lastName: string;\n email: string;\n phone?: string;\n}\n\nexport interface BusinessApplicant {\n businessName: string;\n ein?: string;\n contact: PersonalApplicant;\n}\n\nexport interface Application<TApplicant, TData> {\n id: string; // PK\n createdAt: string;\n updatedAt: string;\n applicationType: ApplicationType;\n productType: ProductType | string;\n status: ApplicationStatus;\n applicant: TApplicant;\n applicationData: TData;\n providers: ApplicationProvider[];\n email: string; // For GSI\n widget?: string;\n}\n\nexport type PersonalApplication = Application<\n PersonalApplicant,\n Record<string, unknown>\n>;\nexport type BusinessApplication = Application<\n BusinessApplicant,\n Record<string, unknown>\n>;\nexport type GenericApplication = Application<\n PersonalApplicant | BusinessApplicant,\n Record<string, unknown>\n>;\n\n// Zod schemas for validation\n\nexport const createPersonalApplicationSchema = z.object({\n productType: z.nativeEnum(ProductType),\n applicant: personalApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z\n .array(z.object({ providerId: z.string(), providerName: z.string() }))\n .optional(),\n});\nexport type CreatePersonalApplicationDTO = z.infer<\n typeof createPersonalApplicationSchema\n>;\n\nexport const displayOfferFormSchema = z.object({\n sessionId: z\n .string()\n .optional()\n .describe(\"The session ID from a previous search to retrieve all offers.\"),\n offerId: z\n .string()\n .optional()\n .describe(\"The specific offer ID to pre-select in the form.\"),\n});\nexport type DisplayOfferFormParams = z.infer<typeof displayOfferFormSchema>;\n\nexport const anyOfferSchema = z.union([\n loanOfferSchema,\n businessCreditCardOfferSchema,\n businessBankingOfferSchema,\n personalBankingOfferSchema,\n savingsOfferSchema,\n personalCreditCardOfferSchema,\n]);\n\nexport const displayOfferFormResponseSchema = z.object({\n offer: anyOfferSchema,\n allOffers: z.array(anyOfferSchema),\n applicationData: anyObjectSchema,\n productType: z.string(),\n widget: z.string().optional(),\n});\nexport type DisplayOfferFormResponse = z.infer<\n typeof displayOfferFormResponseSchema\n>;\n\nexport const getOfferSchema = z.object({\n productType: z\n .nativeEnum(ProductType)\n .describe(\"The type of financial product being applied for.\"),\n applicant: personalApplicantSchema.describe(\n \"Personal details of the applicant.\",\n ),\n applicationData: anyObjectSchema.describe(\n \"The original search parameters or form data for the application.\",\n ),\n provider: z\n .object({\n providerId: z.string().describe(\"The ID of the selected provider.\"),\n providerName: z.string().describe(\"The name of the selected provider.\"),\n })\n .describe(\"The selected provider to submit the application to.\"),\n});\nexport type GetOfferParams = z.infer<typeof getOfferSchema>;\n\nexport const getMultipleOffersSchema = z.object({\n productType: z\n .nativeEnum(ProductType)\n .describe(\"The type of financial product being applied for.\"),\n applicant: personalApplicantSchema.describe(\n \"Personal details of the applicant.\",\n ),\n applicationData: anyObjectSchema.describe(\n \"The original search parameters or form data for the application.\",\n ),\n providers: z\n .array(\n z.object({\n providerId: z.string().describe(\"The ID of the selected provider.\"),\n providerName: z.string().describe(\"The name of the selected provider.\"),\n }),\n )\n .min(1)\n .describe(\"The list of selected providers to submit the application to.\"),\n});\nexport type GetMultipleOffersParams = z.infer<typeof getMultipleOffersSchema>;\n\nexport const trackOfferStatusSchema = z\n .object({\n applicationId: z\n .string()\n .optional()\n .describe(\"The unique ID of the application to track.\"),\n email: z\n .string()\n .email()\n .optional()\n .describe(\"The email address of the applicant to find applications for.\"),\n })\n .refine((data) => data.applicationId || data.email, {\n message: \"Either applicationId or email must be provided.\",\n });\nexport type TrackOfferStatusParams = z.infer<typeof trackOfferStatusSchema>;\n\nexport const trackOfferStatusResponseSchema = z.object({\n applications: z.array(personalApplicationSchema),\n widget: z.string().optional(),\n});\nexport type TrackOfferStatusResponse = z.infer<\n typeof trackOfferStatusResponseSchema\n>;\n\nexport const businessApplicantSchema = z.object({\n businessName: z.string(),\n ein: z.string().optional(),\n contact: personalApplicantSchema,\n});\n\nexport const createBusinessApplicationSchema = z.object({\n productType: z.nativeEnum(ProductType),\n applicant: businessApplicantSchema,\n applicationData: anyObjectSchema,\n providers: z\n .array(z.object({ providerId: z.string(), providerName: z.string() }))\n .optional(),\n});\nexport type CreateBusinessApplicationDTO = z.infer<\n typeof createBusinessApplicationSchema\n>;\n\nexport const documentTypeEnum = z.enum([\n \"articles-of-incorporation\",\n \"balance-sheet\",\n \"bank-statement\",\n \"business-license\",\n \"business-plan\",\n \"contract\",\n \"drivers-license\",\n \"financial-statement\",\n \"identity-document\",\n \"invoice\",\n \"lease-agreement\",\n \"other-business-document\",\n \"other-personal-document\",\n \"passport\",\n \"profit-and-loss-statement\",\n \"proof-of-address\",\n \"proof-of-income\",\n \"property-document\",\n \"purchase-order\",\n \"tax-return\",\n \"utility-bill\",\n \"vehicle-document\",\n \"voided-check\",\n]);\nexport type DocumentType = z.infer<typeof documentTypeEnum>;\n\nexport const displayUploadDocumentsFormSchema = z.object({\n applicationId: z\n .string()\n .optional()\n .describe(\"Pre-fill the application ID for the document upload form.\"),\n});\nexport type DisplayUploadDocumentsFormParams = z.infer<\n typeof displayUploadDocumentsFormSchema\n>;\n\nexport const submitDocumentsSchema = z.object({\n applicationId: z\n .string()\n .describe(\"The ID of the application to associate the document with.\"),\n fileName: z.string().describe(\"The original name of the file.\"),\n documentType: documentTypeEnum.describe(\"The category of the document.\"),\n _openai_meta: z\n .object({})\n .passthrough()\n .optional()\n .describe(\"Internal metadata from OpenAI (automatically injected)\"),\n});\nexport type SubmitDocumentsParams = z.infer<typeof submitDocumentsSchema>;\n\nexport const submitDocumentsResponseSchema = z.object({\n success: z.boolean(),\n message: z.string(),\n uploadUrl: z.string().url().optional(),\n uploadFields: z.record(z.string(), z.string()).optional(),\n documentId: z.string().optional(),\n widget: z.string().optional(),\n});\nexport type SubmitDocumentsResponse = z.infer<\n typeof submitDocumentsResponseSchema\n>;\n\nexport const displayUploadDocumentsFormResponseSchema = z.object({\n widget: z.string().optional(),\n});\nexport type DisplayUploadDocumentsFormResponse = z.infer<\n typeof displayUploadDocumentsFormResponseSchema\n>;\n\n// Schemas for Calculator Tools\nexport const loanPaymentSchema = z.object({\n loanAmount: z\n .number()\n .describe(\"The total amount of the loan in USD.\")\n .positive(\"Loan amount must be positive.\"),\n interestRate: z\n .number()\n .describe(\"The annual interest rate (e.g., 5 for 5%).\")\n .min(0, \"Interest rate cannot be negative.\"),\n loanTermInMonths: z\n .number()\n .describe(\"The duration of the loan in months.\")\n .positive(\"Loan term must be positive.\")\n .int(),\n});\nexport type LoanPaymentParams = z.infer<typeof loanPaymentSchema>;\n\nexport const loanPaymentResponseSchema = z.object({\n monthlyPayment: z.number().describe(\"The calculated monthly payment amount.\"),\n totalPayment: z\n .number()\n .describe(\"The total amount to be paid over the life of the loan.\"),\n totalInterest: z\n .number()\n .describe(\"The total interest paid over the life of the loan.\"),\n widget: z.string().optional(),\n});\nexport type LoanCalculationResponse = z.infer<typeof loanPaymentResponseSchema>;\n\nexport const mortgagePaymentSchema = z.object({\n propertyValue: z\n .number()\n .describe(\"The total value of the property in USD.\")\n .positive(\"Property value must be positive.\"),\n downPayment: z\n .number()\n .describe(\"The amount paid upfront in USD.\")\n .min(0, \"Down payment cannot be negative.\"),\n interestRate: z\n .number()\n .describe(\"The annual interest rate (e.g., 3.5 for 3.5%).\")\n .min(0, \"Interest rate cannot be negative.\"),\n loanTermInYears: z\n .number()\n .describe(\"The duration of the loan in years.\")\n .positive(\"Loan term must be positive.\")\n .int(),\n propertyTaxRate: z\n .number()\n .describe(\n \"The annual property tax rate as a percentage (e.g., 1.2 for 1.2%).\",\n )\n .min(0, \"Property tax rate cannot be negative.\"),\n homeInsurance: z\n .number()\n .describe(\"The annual home insurance cost in USD.\")\n .min(0, \"Home insurance cannot be negative.\"),\n});\nexport type MortgagePaymentParams = z.infer<typeof mortgagePaymentSchema>;\n\nexport const mortgagePaymentResponseSchema = z.object({\n loanAmount: z.number().describe(\"The total loan amount after down payment.\"),\n principalAndInterest: z\n .number()\n .describe(\"The monthly payment for principal and interest.\"),\n monthlyPropertyTax: z\n .number()\n .describe(\"The estimated monthly property tax payment.\"),\n monthlyHomeInsurance: z\n .number()\n .describe(\"The estimated monthly home insurance payment.\"),\n totalMonthlyPayment: z\n .number()\n .describe(\"The total estimated monthly payment (PITI).\"),\n widget: z.string().optional(),\n});\nexport type MortgageCalculationResponse = z.infer<\n typeof mortgagePaymentResponseSchema\n>;\n\n// Schemas for Lease vs. Purchase Calculator\nexport const leaseVsPurchaseSchema = z.object({\n // Purchase details\n purchasePrice: z\n .number()\n .positive(\"Purchase price must be positive.\")\n .describe(\"Total price of the vehicle for purchase in USD.\"),\n downPayment: z\n .number()\n .min(0, \"Down payment cannot be negative.\")\n .describe(\"Upfront payment amount for purchase in USD.\"),\n loanTermInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"Loan duration in months for purchase.\"),\n interestRate: z\n .number()\n .min(0, \"Interest rate cannot be negative.\")\n .describe(\"Annual interest rate for purchase loan (e.g., 5 for 5%).\"),\n salesTaxRate: z\n .number()\n .min(0, \"Sales tax rate cannot be negative.\")\n .describe(\"Sales tax rate as a percentage (e.g., 7.5 for 7.5%).\"),\n\n // Lease details\n leaseTermInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"Lease duration in months.\"),\n monthlyLeasePayment: z\n .number()\n .positive()\n .describe(\"Monthly payment for the lease in USD.\"),\n moneyFactor: z\n .number()\n .positive(\"Money factor must be positive.\")\n .describe(\"The money factor for the lease (similar to interest rate).\"),\n acquisitionFee: z\n .number()\n .min(0)\n .default(0)\n .describe(\"Fee charged by the lessor to initiate the lease in USD.\"),\n securityDeposit: z\n .number()\n .min(0)\n .default(0)\n .describe(\"Refundable deposit paid at the start of the lease in USD.\"),\n\n // Common details\n residualValuePercentage: z\n .number()\n .min(0)\n .max(100, \"Residual value percentage cannot exceed 100.\")\n .describe(\n \"Estimated value of the vehicle at the end of the lease, as a percentage of MSRP.\",\n ),\n expectedOwnershipInMonths: z\n .number()\n .positive()\n .int()\n .describe(\"How long you plan to keep the vehicle, in months.\"),\n});\nexport type LeaseVsPurchaseParams = z.infer<typeof leaseVsPurchaseSchema>;\n\nexport const leaseVsPurchaseResponseSchema = z.object({\n purchaseAnalysis: z.object({\n totalLoanPayment: z.number(),\n totalInterestPaid: z.number(),\n totalSalesTax: z.number(),\n equityAfterOwnership: z.number(),\n totalCostOfOwnership: z.number(),\n monthlyPayment: z.number(),\n }),\n leaseAnalysis: z.object({\n totalLeasePayments: z.number(),\n totalUpfrontCosts: z.number(),\n totalCostOfLeasing: z.number(),\n }),\n comparison: z.object({\n purchaseCostIsLowerBy: z.number(),\n leaseCostIsLowerBy: z.number(),\n recommendation: z.string(),\n }),\n widget: z.string().optional(),\n});\nexport type LeaseVsPurchaseResponse = z.infer<\n typeof leaseVsPurchaseResponseSchema\n>;\n\n// ============================================================================\n// SDK Config\n// ============================================================================\n\nexport interface SecureLendConfig {\n /** API Key for authentication. Sent as a bearer token. Never logged. */\n apiKey?: string;\n /** Comparison MCP URL (default: https://mcp.securelend.ai/mcp). */\n serverUrl?: string;\n /** REST base for leads, packages, outcomes, and feedback. Default: https://securelend.ai */\n apiBaseUrl?: string;\n /** Test double for fetch. Not used for comparison tool calls. */\n fetch?: (input: string, init?: RequestInit) => Promise<Response>;\n}\n\nexport * from \"./platform\";\n"]}