UNPKG

smartlead-mcp-by-leadmagic

Version:

💜 The Premier Model Context Protocol Server for SmartLead's Cold Email Automation Platform - Complete API coverage with 116+ tools for campaign management, lead tracking, smart delivery, and analytics. Beautiful purple-gradient installer, zero-config set

1,464 lines • 63.7 kB
/** * SmartLead MCP Server - Type Definitions * * Comprehensive TypeScript type definitions and Zod schemas for all SmartLead API endpoints. * This file provides type safety, runtime validation, and documentation for the entire API surface. * * API Coverage: * - Campaign management (13 endpoints) * - Lead management (8 endpoints) * - Statistics and analytics (6 endpoints) * - Smart delivery (4 endpoints) * - Webhooks (3 endpoints) * - Client management (4 endpoints) * - Smart senders (5 endpoints) * * @author LeadMagic Team * @version 1.0.0 */ import { z } from 'zod'; /** * Configuration interface for SmartLead API client */ export interface SmartLeadConfig { /** SmartLead API key (required) */ apiKey: string; /** Custom API base URL (optional, defaults to https://server.smartlead.ai/api/v1) */ baseUrl?: string; /** Request timeout in milliseconds (optional, defaults to 30000) */ timeout?: number; /** Maximum retry attempts (optional, defaults to 3) */ maxRetries?: number; /** Initial retry delay in milliseconds (optional, defaults to 1000) */ retryDelay?: number; /** Rate limit in requests per minute (optional, defaults to 100) */ rateLimit?: number; } /** * Schema for API error responses */ export declare const ErrorSchema: z.ZodObject<{ /** Error code identifier */ error: z.ZodString; /** Human-readable error message */ message: z.ZodString; /** HTTP status code */ status: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { error: string; message: string; status?: number | undefined; }, { error: string; message: string; status?: number | undefined; }>; /** * Schema for successful API responses */ export declare const SuccessResponseSchema: z.ZodObject<{ /** Success indicator */ success: z.ZodBoolean; /** Response message */ message: z.ZodOptional<z.ZodString>; /** Response data */ data: z.ZodOptional<z.ZodUnknown>; }, "strip", z.ZodTypeAny, { success: boolean; message?: string | undefined; data?: unknown; }, { success: boolean; message?: string | undefined; data?: unknown; }>; /** * Request schema for creating a campaign */ export declare const CreateCampaignRequestSchema: z.ZodObject<{ /** Campaign name */ name: z.ZodString; /** Client ID for the campaign */ client_id: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { name: string; client_id?: number | undefined; }, { name: string; client_id?: number | undefined; }>; /** * Request schema for updating campaign schedule */ export declare const UpdateCampaignScheduleRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Timezone for the campaign */ timezone: z.ZodOptional<z.ZodString>; /** Days of the week to send emails (1-7, where 1 is Monday) */ days_of_the_week: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>; /** Start hour in 24-hour format */ start_hour: z.ZodOptional<z.ZodString>; /** End hour in 24-hour format */ end_hour: z.ZodOptional<z.ZodString>; /** Minimum time between emails in minutes */ min_time_btw_emails: z.ZodOptional<z.ZodNumber>; /** Maximum number of new leads per day */ max_new_leads_per_day: z.ZodOptional<z.ZodNumber>; /** Schedule start time in ISO format */ schedule_start_time: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; timezone?: string | undefined; days_of_the_week?: number[] | undefined; start_hour?: string | undefined; end_hour?: string | undefined; min_time_btw_emails?: number | undefined; max_new_leads_per_day?: number | undefined; schedule_start_time?: string | undefined; }, { campaign_id: number; timezone?: string | undefined; days_of_the_week?: number[] | undefined; start_hour?: string | undefined; end_hour?: string | undefined; min_time_btw_emails?: number | undefined; max_new_leads_per_day?: number | undefined; schedule_start_time?: string | undefined; }>; /** * Request schema for updating campaign settings */ export declare const UpdateCampaignSettingsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** New campaign name */ name: z.ZodOptional<z.ZodString>; /** Campaign status */ status: z.ZodOptional<z.ZodEnum<["active", "paused", "completed"]>>; /** Additional campaign settings */ settings: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { campaign_id: number; status?: "active" | "paused" | "completed" | undefined; name?: string | undefined; settings?: Record<string, unknown> | undefined; }, { campaign_id: number; status?: "active" | "paused" | "completed" | undefined; name?: string | undefined; settings?: Record<string, unknown> | undefined; }>; /** * Request schema for updating campaign status */ export declare const UpdateCampaignStatusRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** New campaign status */ status: z.ZodEnum<["PAUSED", "STOPPED", "START"]>; }, "strip", z.ZodTypeAny, { status: "PAUSED" | "STOPPED" | "START"; campaign_id: number; }, { status: "PAUSED" | "STOPPED" | "START"; campaign_id: number; }>; /** * Request schema for getting a campaign */ export declare const GetCampaignRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: number; }, { campaign_id: number; }>; /** * Request schema for listing campaigns */ export declare const ListCampaignsRequestSchema: z.ZodObject<{ /** Filter by status */ status: z.ZodOptional<z.ZodEnum<["active", "paused", "completed"]>>; /** Maximum number of campaigns to return */ limit: z.ZodOptional<z.ZodNumber>; /** Offset for pagination */ offset: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { status?: "active" | "paused" | "completed" | undefined; limit?: number | undefined; offset?: number | undefined; }, { status?: "active" | "paused" | "completed" | undefined; limit?: number | undefined; offset?: number | undefined; }>; /** * Schema for email sequence variant */ export declare const SequenceVariantSchema: z.ZodObject<{ /** Email subject line */ subject: z.ZodString; /** Email body content in HTML */ email_body: z.ZodString; /** Variant label (A, B, C, etc.) */ variant_label: z.ZodString; /** Percentage of leads to receive this variant */ variant_distribution_percentage: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }, { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }>; /** * Schema for sequence delay details */ export declare const SequenceDelaySchema: z.ZodObject<{ /** Days to wait before sending this email */ delay_in_days: z.ZodNumber; }, "strip", z.ZodTypeAny, { delay_in_days: number; }, { delay_in_days: number; }>; /** * Schema for email sequence */ export declare const EmailSequenceSchema: z.ZodObject<{ /** Sequence number (order) */ seq_number: z.ZodNumber; /** Delay details for this sequence */ seq_delay_details: z.ZodObject<{ /** Days to wait before sending this email */ delay_in_days: z.ZodNumber; }, "strip", z.ZodTypeAny, { delay_in_days: number; }, { delay_in_days: number; }>; /** How to distribute variants */ variant_distribution_type: z.ZodEnum<["MANUAL_EQUAL", "MANUAL_PERCENTAGE", "AI_EQUAL"]>; /** Sample percentage for AI testing */ lead_distribution_percentage: z.ZodOptional<z.ZodNumber>; /** Metric for determining winner */ winning_metric_property: z.ZodOptional<z.ZodEnum<["OPEN_RATE", "CLICK_RATE", "REPLY_RATE", "POSITIVE_REPLY_RATE"]>>; /** Email variants */ seq_variants: z.ZodArray<z.ZodObject<{ /** Email subject line */ subject: z.ZodString; /** Email body content in HTML */ email_body: z.ZodString; /** Variant label (A, B, C, etc.) */ variant_label: z.ZodString; /** Percentage of leads to receive this variant */ variant_distribution_percentage: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }, { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { seq_number: number; seq_delay_details: { delay_in_days: number; }; variant_distribution_type: "MANUAL_EQUAL" | "MANUAL_PERCENTAGE" | "AI_EQUAL"; seq_variants: { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }[]; lead_distribution_percentage?: number | undefined; winning_metric_property?: "OPEN_RATE" | "CLICK_RATE" | "REPLY_RATE" | "POSITIVE_REPLY_RATE" | undefined; }, { seq_number: number; seq_delay_details: { delay_in_days: number; }; variant_distribution_type: "MANUAL_EQUAL" | "MANUAL_PERCENTAGE" | "AI_EQUAL"; seq_variants: { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }[]; lead_distribution_percentage?: number | undefined; winning_metric_property?: "OPEN_RATE" | "CLICK_RATE" | "REPLY_RATE" | "POSITIVE_REPLY_RATE" | undefined; }>; /** * Request schema for saving campaign sequence */ export declare const SaveCampaignSequenceRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Email sequence array */ sequence: z.ZodArray<z.ZodObject<{ /** Sequence number (order) */ seq_number: z.ZodNumber; /** Delay details for this sequence */ seq_delay_details: z.ZodObject<{ /** Days to wait before sending this email */ delay_in_days: z.ZodNumber; }, "strip", z.ZodTypeAny, { delay_in_days: number; }, { delay_in_days: number; }>; /** How to distribute variants */ variant_distribution_type: z.ZodEnum<["MANUAL_EQUAL", "MANUAL_PERCENTAGE", "AI_EQUAL"]>; /** Sample percentage for AI testing */ lead_distribution_percentage: z.ZodOptional<z.ZodNumber>; /** Metric for determining winner */ winning_metric_property: z.ZodOptional<z.ZodEnum<["OPEN_RATE", "CLICK_RATE", "REPLY_RATE", "POSITIVE_REPLY_RATE"]>>; /** Email variants */ seq_variants: z.ZodArray<z.ZodObject<{ /** Email subject line */ subject: z.ZodString; /** Email body content in HTML */ email_body: z.ZodString; /** Variant label (A, B, C, etc.) */ variant_label: z.ZodString; /** Percentage of leads to receive this variant */ variant_distribution_percentage: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }, { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { seq_number: number; seq_delay_details: { delay_in_days: number; }; variant_distribution_type: "MANUAL_EQUAL" | "MANUAL_PERCENTAGE" | "AI_EQUAL"; seq_variants: { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }[]; lead_distribution_percentage?: number | undefined; winning_metric_property?: "OPEN_RATE" | "CLICK_RATE" | "REPLY_RATE" | "POSITIVE_REPLY_RATE" | undefined; }, { seq_number: number; seq_delay_details: { delay_in_days: number; }; variant_distribution_type: "MANUAL_EQUAL" | "MANUAL_PERCENTAGE" | "AI_EQUAL"; seq_variants: { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }[]; lead_distribution_percentage?: number | undefined; winning_metric_property?: "OPEN_RATE" | "CLICK_RATE" | "REPLY_RATE" | "POSITIVE_REPLY_RATE" | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { campaign_id: number; sequence: { seq_number: number; seq_delay_details: { delay_in_days: number; }; variant_distribution_type: "MANUAL_EQUAL" | "MANUAL_PERCENTAGE" | "AI_EQUAL"; seq_variants: { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }[]; lead_distribution_percentage?: number | undefined; winning_metric_property?: "OPEN_RATE" | "CLICK_RATE" | "REPLY_RATE" | "POSITIVE_REPLY_RATE" | undefined; }[]; }, { campaign_id: number; sequence: { seq_number: number; seq_delay_details: { delay_in_days: number; }; variant_distribution_type: "MANUAL_EQUAL" | "MANUAL_PERCENTAGE" | "AI_EQUAL"; seq_variants: { subject: string; email_body: string; variant_label: string; variant_distribution_percentage?: number | undefined; }[]; lead_distribution_percentage?: number | undefined; winning_metric_property?: "OPEN_RATE" | "CLICK_RATE" | "REPLY_RATE" | "POSITIVE_REPLY_RATE" | undefined; }[]; }>; /** * Request schema for getting campaign sequence */ export declare const GetCampaignSequenceRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: number; }, { campaign_id: number; }>; /** * Request schema for deleting campaign */ export declare const DeleteCampaignRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: number; }, { campaign_id: number; }>; /** * Request schema for exporting campaign data */ export declare const ExportCampaignDataRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Export format (csv, excel, json) */ format: z.ZodOptional<z.ZodEnum<["csv", "excel", "json"]>>; /** Date range start */ start_date: z.ZodOptional<z.ZodString>; /** Date range end */ end_date: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; format?: "csv" | "excel" | "json" | undefined; start_date?: string | undefined; end_date?: string | undefined; }, { campaign_id: number; format?: "csv" | "excel" | "json" | undefined; start_date?: string | undefined; end_date?: string | undefined; }>; /** * Request schema for fetching campaign analytics by date range */ export declare const FetchCampaignAnalyticsByDateRangeRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Start date in YYYY-MM-DD format */ start_date: z.ZodString; /** End date in YYYY-MM-DD format */ end_date: z.ZodString; /** Timezone */ timezone: z.ZodDefault<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; timezone: string; start_date: string; end_date: string; }, { campaign_id: number; start_date: string; end_date: string; timezone?: string | undefined; }>; /** * Request schema for getting campaign sequence analytics */ export declare const GetCampaignSequenceAnalyticsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Start date in YYYY-MM-DD format */ start_date: z.ZodOptional<z.ZodString>; /** End date in YYYY-MM-DD format */ end_date: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; start_date?: string | undefined; end_date?: string | undefined; }, { campaign_id: number; start_date?: string | undefined; end_date?: string | undefined; }>; /** * Request schema for fetching all campaigns using lead ID */ export declare const FetchAllCampaignsUsingLeadIdRequestSchema: z.ZodObject<{ /** Lead ID */ lead_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { lead_id: number; }, { lead_id: number; }>; /** * Schema for lead information */ export declare const LeadSchema: z.ZodObject<{ /** Lead ID */ id: z.ZodOptional<z.ZodNumber>; /** First name */ first_name: z.ZodOptional<z.ZodString>; /** Last name */ last_name: z.ZodOptional<z.ZodString>; /** Email address */ email: z.ZodOptional<z.ZodString>; /** Company name */ company_name: z.ZodOptional<z.ZodString>; /** Job title */ job_title: z.ZodOptional<z.ZodString>; /** Phone number */ phone: z.ZodOptional<z.ZodString>; /** LinkedIn URL */ linkedin_url: z.ZodOptional<z.ZodString>; /** Custom fields */ custom_fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { id?: number | undefined; first_name?: string | undefined; last_name?: string | undefined; email?: string | undefined; company_name?: string | undefined; job_title?: string | undefined; phone?: string | undefined; linkedin_url?: string | undefined; custom_fields?: Record<string, unknown> | undefined; }, { id?: number | undefined; first_name?: string | undefined; last_name?: string | undefined; email?: string | undefined; company_name?: string | undefined; job_title?: string | undefined; phone?: string | undefined; linkedin_url?: string | undefined; custom_fields?: Record<string, unknown> | undefined; }>; /** * Request schema for listing leads */ export declare const ListLeadsRequestSchema: z.ZodObject<{ /** Filter leads by campaign ID */ campaign_id: z.ZodOptional<z.ZodNumber>; /** Filter leads by status */ status: z.ZodOptional<z.ZodString>; /** Maximum number of leads to return */ limit: z.ZodOptional<z.ZodNumber>; /** Offset for pagination */ offset: z.ZodOptional<z.ZodNumber>; /** Search term to filter leads */ search: z.ZodOptional<z.ZodString>; /** Filter leads created after this date */ start_date: z.ZodOptional<z.ZodString>; /** Filter leads created before this date */ end_date: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { status?: string | undefined; campaign_id?: number | undefined; limit?: number | undefined; offset?: number | undefined; start_date?: string | undefined; end_date?: string | undefined; search?: string | undefined; }, { status?: string | undefined; campaign_id?: number | undefined; limit?: number | undefined; offset?: number | undefined; start_date?: string | undefined; end_date?: string | undefined; search?: string | undefined; }>; /** * Request schema for getting a lead */ export declare const GetLeadRequestSchema: z.ZodObject<{ /** Lead ID */ lead_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { lead_id: number; }, { lead_id: number; }>; /** * Request schema for adding a lead to campaign */ export declare const AddLeadToCampaignRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Email address */ email: z.ZodString; /** First name */ first_name: z.ZodOptional<z.ZodString>; /** Last name */ last_name: z.ZodOptional<z.ZodString>; /** Company */ company: z.ZodOptional<z.ZodString>; /** Job title */ title: z.ZodOptional<z.ZodString>; /** Phone number */ phone: z.ZodOptional<z.ZodString>; /** Custom fields */ custom_fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { campaign_id: number; email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; custom_fields?: Record<string, unknown> | undefined; company?: string | undefined; title?: string | undefined; }, { campaign_id: number; email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; custom_fields?: Record<string, unknown> | undefined; company?: string | undefined; title?: string | undefined; }>; /** * Request schema for updating a lead */ export declare const UpdateLeadRequestSchema: z.ZodObject<{ /** Lead ID */ lead_id: z.ZodNumber; /** Email address */ email: z.ZodOptional<z.ZodString>; /** First name */ first_name: z.ZodOptional<z.ZodString>; /** Last name */ last_name: z.ZodOptional<z.ZodString>; /** Company */ company: z.ZodOptional<z.ZodString>; /** Job title */ title: z.ZodOptional<z.ZodString>; /** Phone number */ phone: z.ZodOptional<z.ZodString>; /** Custom fields */ custom_fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { lead_id: number; first_name?: string | undefined; last_name?: string | undefined; email?: string | undefined; phone?: string | undefined; custom_fields?: Record<string, unknown> | undefined; company?: string | undefined; title?: string | undefined; }, { lead_id: number; first_name?: string | undefined; last_name?: string | undefined; email?: string | undefined; phone?: string | undefined; custom_fields?: Record<string, unknown> | undefined; company?: string | undefined; title?: string | undefined; }>; /** * Request schema for updating lead status */ export declare const UpdateLeadStatusRequestSchema: z.ZodObject<{ /** Lead ID */ lead_id: z.ZodNumber; /** New status */ status: z.ZodString; }, "strip", z.ZodTypeAny, { status: string; lead_id: number; }, { status: string; lead_id: number; }>; /** * Request schema for bulk importing leads */ export declare const BulkImportLeadsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Array of leads to import */ leads: z.ZodArray<z.ZodObject<{ /** Email address */ email: z.ZodString; /** First name */ first_name: z.ZodOptional<z.ZodString>; /** Last name */ last_name: z.ZodOptional<z.ZodString>; /** Company */ company: z.ZodOptional<z.ZodString>; /** Job title */ title: z.ZodOptional<z.ZodString>; /** Phone number */ phone: z.ZodOptional<z.ZodString>; /** Custom fields */ custom_fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; custom_fields?: Record<string, unknown> | undefined; company?: string | undefined; title?: string | undefined; }, { email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; custom_fields?: Record<string, unknown> | undefined; company?: string | undefined; title?: string | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { campaign_id: number; leads: { email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; custom_fields?: Record<string, unknown> | undefined; company?: string | undefined; title?: string | undefined; }[]; }, { campaign_id: number; leads: { email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; custom_fields?: Record<string, unknown> | undefined; company?: string | undefined; title?: string | undefined; }[]; }>; /** * Request schema for deleting a lead */ export declare const DeleteLeadRequestSchema: z.ZodObject<{ /** Lead ID */ lead_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { lead_id: number; }, { lead_id: number; }>; /** * Request schema for campaign analytics by date */ export declare const CampaignAnalyticsByDateRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Start date in YYYY-MM-DD format */ start_date: z.ZodString; /** End date in YYYY-MM-DD format */ end_date: z.ZodString; }, "strip", z.ZodTypeAny, { campaign_id: number; start_date: string; end_date: string; }, { campaign_id: number; start_date: string; end_date: string; }>; /** * Request schema for campaign sequence analytics */ export declare const CampaignSequenceAnalyticsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Start date in YYYY-MM-DD HH:MM:SS format */ start_date: z.ZodString; /** End date in YYYY-MM-DD HH:MM:SS format */ end_date: z.ZodString; /** Timezone for analytics */ time_zone: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; start_date: string; end_date: string; time_zone?: string | undefined; }, { campaign_id: number; start_date: string; end_date: string; time_zone?: string | undefined; }>; /** * Request schema for campaign statistics */ export declare const CampaignStatisticsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Offset for pagination */ offset: z.ZodOptional<z.ZodNumber>; /** Maximum number of statistics to return */ limit: z.ZodOptional<z.ZodNumber>; /** Email sequence number to filter by */ email_sequence_number: z.ZodOptional<z.ZodString>; /** Email status to filter by */ email_status: z.ZodOptional<z.ZodString>; /** Filter by sent time greater than this date */ sent_time_start_date: z.ZodOptional<z.ZodString>; /** Filter by sent time less than this date */ sent_time_end_date: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; limit?: number | undefined; offset?: number | undefined; email_sequence_number?: string | undefined; email_status?: string | undefined; sent_time_start_date?: string | undefined; sent_time_end_date?: string | undefined; }, { campaign_id: number; limit?: number | undefined; offset?: number | undefined; email_sequence_number?: string | undefined; email_status?: string | undefined; sent_time_start_date?: string | undefined; sent_time_end_date?: string | undefined; }>; /** * Request schema for warmup stats by email */ export declare const WarmupStatsByEmailRequestSchema: z.ZodObject<{ /** Email account ID */ email_account_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { email_account_id: number; }, { email_account_id: number; }>; /** * Request schema for campaign top level analytics */ export declare const CampaignTopLevelAnalyticsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: number; }, { campaign_id: number; }>; /** * Request schema for campaign lead statistics */ export declare const CampaignLeadStatisticsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Maximum number of leads to return */ limit: z.ZodOptional<z.ZodNumber>; /** Filter by leads created after this date */ created_at_gt: z.ZodOptional<z.ZodString>; /** Filter by events after this date */ event_time_gt: z.ZodOptional<z.ZodString>; /** Offset for pagination */ offset: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { campaign_id: number; limit?: number | undefined; offset?: number | undefined; created_at_gt?: string | undefined; event_time_gt?: string | undefined; }, { campaign_id: number; limit?: number | undefined; offset?: number | undefined; created_at_gt?: string | undefined; event_time_gt?: string | undefined; }>; /** * Request schema for campaign mailbox statistics */ export declare const CampaignMailboxStatisticsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Client ID if campaign is client-specific */ client_id: z.ZodOptional<z.ZodString>; /** Offset for pagination */ offset: z.ZodOptional<z.ZodNumber>; /** Maximum number of results to return */ limit: z.ZodOptional<z.ZodNumber>; /** Start date */ start_date: z.ZodOptional<z.ZodString>; /** End date */ end_date: z.ZodOptional<z.ZodString>; /** Timezone for the data */ timezone: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; client_id?: string | undefined; timezone?: string | undefined; limit?: number | undefined; offset?: number | undefined; start_date?: string | undefined; end_date?: string | undefined; }, { campaign_id: number; client_id?: string | undefined; timezone?: string | undefined; limit?: number | undefined; offset?: number | undefined; start_date?: string | undefined; end_date?: string | undefined; }>; /** * Request schema for downloading campaign data */ export declare const DownloadCampaignDataRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodNumber; /** Type of data to download */ download_type: z.ZodEnum<["analytics", "leads", "sequence", "full_export"]>; /** Format of downloaded data */ format: z.ZodEnum<["json", "csv"]>; /** Optional user identifier */ user_id: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; format: "csv" | "json"; download_type: "sequence" | "leads" | "analytics" | "full_export"; user_id?: string | undefined; }, { campaign_id: number; format: "csv" | "json"; download_type: "sequence" | "leads" | "analytics" | "full_export"; user_id?: string | undefined; }>; /** * Request schema for viewing download statistics */ export declare const ViewDownloadStatisticsRequestSchema: z.ZodObject<{ /** Time period to filter by */ time_period: z.ZodOptional<z.ZodEnum<["all", "today", "week", "month"]>>; /** How to group the statistics */ group_by: z.ZodOptional<z.ZodEnum<["type", "format", "campaign", "date"]>>; }, "strip", z.ZodTypeAny, { time_period?: "all" | "today" | "week" | "month" | undefined; group_by?: "type" | "date" | "format" | "campaign" | undefined; }, { time_period?: "all" | "today" | "week" | "month" | undefined; group_by?: "type" | "date" | "format" | "campaign" | undefined; }>; /** * Webhook event types enum */ export declare const WebhookEventType: z.ZodEnum<["LEAD_REPLIED", "LEAD_OPENED", "LEAD_CLICKED", "LEAD_BOUNCED", "LEAD_UNSUBSCRIBED", "LEAD_INTERESTED", "LEAD_NOT_INTERESTED", "LEAD_MEETING_BOOKED", "LEAD_MEETING_COMPLETED", "LEAD_DNC_GLOBAL", "LEAD_DNC_CAMPAIGN", "LEAD_FINISHED"]>; /** * Request schema for fetching webhooks by campaign */ export declare const FetchWebhooksByCampaignRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodString; }, "strip", z.ZodTypeAny, { campaign_id: string; }, { campaign_id: string; }>; /** * Request schema for upserting campaign webhook */ export declare const UpsertCampaignWebhookRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodString; /** Webhook ID (null for new webhook) */ id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>; /** Webhook name */ name: z.ZodString; /** Webhook URL */ webhook_url: z.ZodString; /** Event types to trigger webhook */ event_types: z.ZodArray<z.ZodEnum<["LEAD_REPLIED", "LEAD_OPENED", "LEAD_CLICKED", "LEAD_BOUNCED", "LEAD_UNSUBSCRIBED", "LEAD_INTERESTED", "LEAD_NOT_INTERESTED", "LEAD_MEETING_BOOKED", "LEAD_MEETING_COMPLETED", "LEAD_DNC_GLOBAL", "LEAD_DNC_CAMPAIGN", "LEAD_FINISHED"]>, "many">; /** Categories for filtering */ categories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; }, "strip", z.ZodTypeAny, { name: string; campaign_id: string; webhook_url: string; event_types: ("LEAD_REPLIED" | "LEAD_OPENED" | "LEAD_CLICKED" | "LEAD_BOUNCED" | "LEAD_UNSUBSCRIBED" | "LEAD_INTERESTED" | "LEAD_NOT_INTERESTED" | "LEAD_MEETING_BOOKED" | "LEAD_MEETING_COMPLETED" | "LEAD_DNC_GLOBAL" | "LEAD_DNC_CAMPAIGN" | "LEAD_FINISHED")[]; id?: number | null | undefined; categories?: string[] | undefined; }, { name: string; campaign_id: string; webhook_url: string; event_types: ("LEAD_REPLIED" | "LEAD_OPENED" | "LEAD_CLICKED" | "LEAD_BOUNCED" | "LEAD_UNSUBSCRIBED" | "LEAD_INTERESTED" | "LEAD_NOT_INTERESTED" | "LEAD_MEETING_BOOKED" | "LEAD_MEETING_COMPLETED" | "LEAD_DNC_GLOBAL" | "LEAD_DNC_CAMPAIGN" | "LEAD_FINISHED")[]; id?: number | null | undefined; categories?: string[] | undefined; }>; /** * Request schema for deleting campaign webhook */ export declare const DeleteCampaignWebhookRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodString; /** Webhook ID */ id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: string; id: number; }, { campaign_id: string; id: number; }>; /** * Request schema for webhook publish summary */ export declare const WebhookPublishSummaryRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodString; /** Start time in ISO format */ fromTime: z.ZodOptional<z.ZodString>; /** End time in ISO format */ toTime: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: string; fromTime?: string | undefined; toTime?: string | undefined; }, { campaign_id: string; fromTime?: string | undefined; toTime?: string | undefined; }>; /** * Request schema for retriggering failed events */ export declare const RetriggerFailedEventsRequestSchema: z.ZodObject<{ /** Campaign ID */ campaign_id: z.ZodString; /** Start time in ISO format */ fromTime: z.ZodString; /** End time in ISO format */ toTime: z.ZodString; }, "strip", z.ZodTypeAny, { campaign_id: string; fromTime: string; toTime: string; }, { campaign_id: string; fromTime: string; toTime: string; }>; /** * Request schema for creating manual placement test */ export declare const CreateManualPlacementTestRequestSchema: z.ZodObject<{ /** Test name */ test_name: z.ZodString; /** Test description */ description: z.ZodOptional<z.ZodString>; /** Spam filters to test */ spam_filters: z.ZodArray<z.ZodString, "many">; /** Enable link checker */ link_checker: z.ZodBoolean; /** Campaign ID */ campaign_id: z.ZodNumber; /** Sequence mapping ID */ sequence_mapping_id: z.ZodNumber; /** Provider IDs */ provider_ids: z.ZodArray<z.ZodNumber, "many">; /** Sender accounts */ sender_accounts: z.ZodArray<z.ZodString, "many">; /** Send all emails without time gap */ all_email_sent_without_time_gap: z.ZodBoolean; /** Minimum time between emails */ min_time_btwn_emails: z.ZodNumber; /** Time unit */ min_time_unit: z.ZodString; /** Enable warmup */ is_warmup: z.ZodBoolean; }, "strip", z.ZodTypeAny, { campaign_id: number; test_name: string; spam_filters: string[]; link_checker: boolean; sequence_mapping_id: number; provider_ids: number[]; sender_accounts: string[]; all_email_sent_without_time_gap: boolean; min_time_btwn_emails: number; min_time_unit: string; is_warmup: boolean; description?: string | undefined; }, { campaign_id: number; test_name: string; spam_filters: string[]; link_checker: boolean; sequence_mapping_id: number; provider_ids: number[]; sender_accounts: string[]; all_email_sent_without_time_gap: boolean; min_time_btwn_emails: number; min_time_unit: string; is_warmup: boolean; description?: string | undefined; }>; /** * Request schema for creating automated placement test */ export declare const CreateAutomatedPlacementTestRequestSchema: z.ZodObject<{ /** Test name */ test_name: z.ZodString; /** Test description */ description: z.ZodOptional<z.ZodString>; /** Spam filters to test */ spam_filters: z.ZodArray<z.ZodString, "many">; /** Enable link checker */ link_checker: z.ZodBoolean; /** Campaign ID */ campaign_id: z.ZodNumber; /** Sequence mapping ID */ sequence_mapping_id: z.ZodNumber; /** Provider IDs */ provider_ids: z.ZodArray<z.ZodNumber, "many">; /** Sender accounts */ sender_accounts: z.ZodArray<z.ZodString, "many">; /** Send all emails without time gap */ all_email_sent_without_time_gap: z.ZodBoolean; /** Minimum time between emails */ min_time_btwn_emails: z.ZodNumber; /** Time unit */ min_time_unit: z.ZodString; /** Enable warmup */ is_warmup: z.ZodBoolean; /** Schedule start time */ schedule_start_time: z.ZodString; /** Test end date */ test_end_date: z.ZodString; /** Frequency in days */ every_days: z.ZodNumber; /** Timezone */ tz: z.ZodString; /** Days of week */ days: z.ZodArray<z.ZodNumber, "many">; /** Start hour */ starHour: z.ZodString; /** Folder ID */ folder_id: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { campaign_id: number; schedule_start_time: string; test_name: string; spam_filters: string[]; link_checker: boolean; sequence_mapping_id: number; provider_ids: number[]; sender_accounts: string[]; all_email_sent_without_time_gap: boolean; min_time_btwn_emails: number; min_time_unit: string; is_warmup: boolean; test_end_date: string; every_days: number; tz: string; days: number[]; starHour: string; description?: string | undefined; folder_id?: number | undefined; }, { campaign_id: number; schedule_start_time: string; test_name: string; spam_filters: string[]; link_checker: boolean; sequence_mapping_id: number; provider_ids: number[]; sender_accounts: string[]; all_email_sent_without_time_gap: boolean; min_time_btwn_emails: number; min_time_unit: string; is_warmup: boolean; test_end_date: string; every_days: number; tz: string; days: number[]; starHour: string; description?: string | undefined; folder_id?: number | undefined; }>; /** * Request schema for getting spam test details */ export declare const GetSpamTestDetailsRequestSchema: z.ZodObject<{ /** Spam test ID */ spam_test_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { spam_test_id: number; }, { spam_test_id: number; }>; /** * Request schema for deleting smart delivery tests */ export declare const DeleteSmartDeliveryTestsRequestSchema: z.ZodObject<{ /** Array of spam test IDs to delete */ spamTestIds: z.ZodArray<z.ZodNumber, "many">; }, "strip", z.ZodTypeAny, { spamTestIds: number[]; }, { spamTestIds: number[]; }>; /** * Request schema for listing tests */ export declare const ListTestsRequestSchema: z.ZodObject<{ /** Test type */ testType: z.ZodEnum<["manual", "auto"]>; /** Limit */ limit: z.ZodOptional<z.ZodNumber>; /** Offset */ offset: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { testType: "manual" | "auto"; limit?: number | undefined; offset?: number | undefined; }, { testType: "manual" | "auto"; limit?: number | undefined; offset?: number | undefined; }>; /** * Request schema for creating folder */ export declare const CreateFolderRequestSchema: z.ZodObject<{ /** Folder name */ name: z.ZodString; }, "strip", z.ZodTypeAny, { name: string; }, { name: string; }>; /** * Request schema for getting folder by ID */ export declare const GetFolderByIdRequestSchema: z.ZodObject<{ /** Folder ID */ folder_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { folder_id: number; }, { folder_id: number; }>; /** Configuration type for SmartLead client */ export type SmartLeadClientConfig = SmartLeadConfig; /** Campaign management types */ export type CreateCampaignRequest = z.infer<typeof CreateCampaignRequestSchema>; export type UpdateCampaignScheduleRequest = z.infer<typeof UpdateCampaignScheduleRequestSchema>; export type UpdateCampaignSettingsRequest = z.infer<typeof UpdateCampaignSettingsRequestSchema>; export type UpdateCampaignStatusRequest = z.infer<typeof UpdateCampaignStatusRequestSchema>; export type GetCampaignRequest = z.infer<typeof GetCampaignRequestSchema>; export type ListCampaignsRequest = z.infer<typeof ListCampaignsRequestSchema>; /** Email sequence types */ export type EmailSequence = z.infer<typeof EmailSequenceSchema>; export type SequenceVariant = z.infer<typeof SequenceVariantSchema>; export type SaveCampaignSequenceRequest = z.infer<typeof SaveCampaignSequenceRequestSchema>; export type GetCampaignSequenceRequest = z.infer<typeof GetCampaignSequenceRequestSchema>; export type DeleteCampaignRequest = z.infer<typeof DeleteCampaignRequestSchema>; export type ExportCampaignDataRequest = z.infer<typeof ExportCampaignDataRequestSchema>; export type FetchCampaignAnalyticsByDateRangeRequest = z.infer<typeof FetchCampaignAnalyticsByDateRangeRequestSchema>; export type GetCampaignSequenceAnalyticsRequest = z.infer<typeof GetCampaignSequenceAnalyticsRequestSchema>; export type FetchAllCampaignsUsingLeadIdRequest = z.infer<typeof FetchAllCampaignsUsingLeadIdRequestSchema>; /** Lead management types */ export type Lead = z.infer<typeof LeadSchema>; export type ListLeadsRequest = z.infer<typeof ListLeadsRequestSchema>; export type GetLeadRequest = z.infer<typeof GetLeadRequestSchema>; export type AddLeadToCampaignRequest = z.infer<typeof AddLeadToCampaignRequestSchema>; export type UpdateLeadRequest = z.infer<typeof UpdateLeadRequestSchema>; export type UpdateLeadStatusRequest = z.infer<typeof UpdateLeadStatusRequestSchema>; export type BulkImportLeadsRequest = z.infer<typeof BulkImportLeadsRequestSchema>; export type DeleteLeadRequest = z.infer<typeof DeleteLeadRequestSchema>; /** Analytics types */ export type CampaignAnalyticsByDateRequest = z.infer<typeof CampaignAnalyticsByDateRequestSchema>; export type CampaignSequenceAnalyticsRequest = z.infer<typeof CampaignSequenceAnalyticsRequestSchema>; export type CampaignStatisticsRequest = z.infer<typeof CampaignStatisticsRequestSchema>; export type WarmupStatsByEmailRequest = z.infer<typeof WarmupStatsByEmailRequestSchema>; export type CampaignTopLevelAnalyticsRequest = z.infer<typeof CampaignTopLevelAnalyticsRequestSchema>; export type CampaignLeadStatisticsRequest = z.infer<typeof CampaignLeadStatisticsRequestSchema>; export type CampaignMailboxStatisticsRequest = z.infer<typeof CampaignMailboxStatisticsRequestSchema>; export type DownloadCampaignDataRequest = z.infer<typeof DownloadCampaignDataRequestSchema>; export type ViewDownloadStatisticsRequest = z.infer<typeof ViewDownloadStatisticsRequestSchema>; /** Webhook types */ export type FetchWebhooksByCampaignRequest = z.infer<typeof FetchWebhooksByCampaignRequestSchema>; export type UpsertCampaignWebhookRequest = z.infer<typeof UpsertCampaignWebhookRequestSchema>; export type DeleteCampaignWebhookRequest = z.infer<typeof DeleteCampaignWebhookRequestSchema>; export type WebhookPublishSummaryRequest = z.infer<typeof WebhookPublishSummaryRequestSchema>; export type RetriggerFailedEventsRequest = z.infer<typeof RetriggerFailedEventsRequestSchema>; /** Smart Delivery types */ export type CreateManualPlacementTestRequest = z.infer<typeof CreateManualPlacementTestRequestSchema>; export type CreateAutomatedPlacementTestRequest = z.infer<typeof CreateAutomatedPlacementTestRequestSchema>; export type GetSpamTestDetailsRequest = z.infer<typeof GetSpamTestDetailsRequestSchema>; export type DeleteSmartDeliveryTestsRequest = z.infer<typeof DeleteSmartDeliveryTestsRequestSchema>; export type ListTestsRequest = z.infer<typeof ListTestsRequestSchema>; export type CreateFolderRequest = z.infer<typeof CreateFolderRequestSchema>; export type GetFolderByIdRequest = z.infer<typeof GetFolderByIdRequestSchema>; /** Common response types */ export type ErrorResponse = z.infer<typeof ErrorSchema>; export type SuccessResponse = z.infer<typeof SuccessResponseSchema>; /** * Schema for getting campaigns with analytics - comprehensive endpoint */ export declare const GetCampaignsWithAnalyticsRequestSchema: z.ZodObject<{ /** Filter campaigns by specific client ID to reduce dataset size */ client_id: z.ZodOptional<z.ZodString>; /** Filter campaigns by status (recommended for large accounts) */ status: z.ZodOptional<z.ZodEnum<["ACTIVE", "PAUSED", "COMPLETED", "DRAFT"]>>; /** Start date for analytics (YYYY-MM-DD format) */ start_date: z.ZodOptional<z.ZodString>; /** End date for analytics (YYYY-MM-DD format) */ end_date: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { status?: "PAUSED" | "ACTIVE" | "COMPLETED" | "DRAFT" | undefined; client_id?: string | undefined; start_date?: string | undefined; end_date?: string | undefined; }, { status?: "PAUSED" | "ACTIVE" | "COMPLETED" | "DRAFT" | undefined; client_id?: string | undefined; start_date?: string | undefined; end_date?: string | undefined; }>; export type GetCampaignsWithAnalyticsRequest = z.infer<typeof GetCampaignsWithAnalyticsRequestSchema>; export declare const FetchLeadCategoriesRequestSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>; export declare const ListLeadsByCampaignRequestSchema: z.ZodObject<{ campaign_id: z.ZodNumber; limit: z.ZodOptional<z.ZodNumber>; offset: z.ZodOptional<z.ZodNumber>; status: z.ZodOptional<z.ZodString>; search: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { campaign_id: number; status?: string | undefined; limit?: number | undefined; offset?: number | undefined; search?: string | undefined; }, { campaign_id: number; status?: string | undefined; limit?: number | undefined; offset?: number | undefined; search?: string | undefined; }>; export declare const FetchLeadByEmailRequestSchema: z.ZodObject<{ email: z.ZodString; }, "strip", z.ZodTypeAny, { email: string; }, { email: string; }>; export declare const AddLeadsToCampaignRequestSchema: z.ZodObject<{ campaign_id: z.ZodNumber; leads: z.ZodArray<z.ZodObject<{ email: z.ZodString; first_name: z.ZodOptional<z.ZodString>; last_name: z.ZodOptional<z.ZodString>; company: z.ZodOptional<z.ZodString>; title: z.ZodOptional<z.ZodString>; phone: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; company?: string | undefined; title?: string | undefined; }, { email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; company?: string | undefined; title?: string | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { campaign_id: number; leads: { email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; company?: string | undefined; title?: string | undefined; }[]; }, { campaign_id: number; leads: { email: string; first_name?: string | undefined; last_name?: string | undefined; phone?: string | undefined; company?: string | undefined; title?: string | undefined; }[]; }>; export declare const ResumeLeadByCampaignRequestSchema: z.ZodObject<{ campaign_id: z.ZodNumber; lead_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: number; lead_id: number; }, { campaign_id: number; lead_id: number; }>; export declare const PauseLeadByCampaignRequestSchema: z.ZodObject<{ campaign_id: z.ZodNumber; lead_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: number; lead_id: number; }, { campaign_id: number; lead_id: number; }>; export declare const DeleteLeadByCampaignRequestSchema: z.ZodObject<{ campaign_id: z.ZodNumber; lead_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: number; lead_id: number; }, { campaign_id: number; lead_id: number; }>; export declare const UnsubscribeLeadFromCampaignRequestSchema: z.ZodObject<{ campaign_id: z.ZodNumber; lead_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { campaign_id: number; lead_id: number; }, { campaign_id: number; lead_id: number; }>; export declare const UnsubscribeLeadFromAllCampaignsRequestSchema: z.ZodObject<{ lead_id: z.ZodNumber; }, "strip", z.ZodTypeAny, { lead_id: number; }, { lead_id: number; }>; export declare const AddLeadToGlobalBlocklistRequestSchema: z.ZodObject<{ email: z.ZodString; }, "strip", z.Zod