export interface PlazbotOptions {
    workspaceId: string;
    apiKey: string;
    zone: "LA" | "EU";
    customUrl?: string;
}
export type AgentColor = "orange" | "blue" | "green" | "gray" | "white";
export type ActionType = "action.asign" | "action.stage" | "action.agentShutDown" | "action.segmentation" | "action.tag" | "action.solved" | "action.event.add" | "action.event.update" | "action.event.delete" | "action.event.list";
export type FieldType = "string" | "number" | "integer" | "boolean" | "date" | "datetime" | "email" | "phone";
export type WidgetIcon = "robot" | "message" | "support" | "qa" | "chat" | "smile" | "voice" | "uservoice";
export interface RequiredField {
    name: string;
    description?: string;
    promptHint?: string;
    type?: FieldType;
}
export interface AgentInstructions {
    tone?: string;
    style?: string;
    personality?: string;
    objective?: string;
    language?: string;
    emojis?: boolean;
    preferredFormat?: string;
    maxWords?: number;
    avoidTopics?: string[];
    respondOnlyIfKnows?: boolean;
    maintainToneBetweenMessages?: boolean;
    greeting?: string;
}
export interface AgentPerson {
    name?: string;
    role?: string;
    speaksInFirstPerson?: boolean;
    isHuman?: boolean;
}
export interface AgentFallbacks {
    noAnswer?: string;
    serviceError?: string;
    doNotUnderstand?: string;
}
export interface AgentRules {
    doNotMentionPrices?: boolean;
    doNotDiagnose?: boolean;
    doNotRespondOutsideHours?: string;
}
export interface AgentExample {
    value: string;
    color: AgentColor;
}
export interface AgentChannel {
    channel: string;
    key: string;
    multianswer?: boolean;
}
export interface AIProvider {
    provider: "openai" | "claude" | "gemini";
    model: string;
    apiToken: string;
    temperature?: number;
    maxTokens?: number;
    isDefault?: boolean;
}
export interface ServiceResponseCondition {
    condition: string;
    message?: string;
    nextService?: string;
}
export interface AgentService {
    intent: string;
    reference: string;
    enabled?: boolean;
    method: "GET" | "POST";
    tags?: string[];
    endpoint: string;
    requiredFields: RequiredField[];
    headers?: Record<string, string>;
    bodyTemplate?: Record<string, string>;
    bodySchema?: Record<string, "string" | "date" | "boolean" | "numeric">;
    responseMapping?: Record<string, string>;
    responseMessage?: string;
    responseConditions?: ServiceResponseCondition[];
    action?: string;
}
export interface AgentActionItem {
    type: ActionType;
    value: string;
}
export interface AgentAction {
    intent: string;
    reference: string;
    tags?: string[];
    enabled: boolean;
    requiredFields?: RequiredField[];
    responseMessage?: string;
    responseJson?: boolean;
    action: AgentActionItem[];
}
export interface AgentConfig {
    name: string;
    description?: string;
    prompt: string;
    zone: "LA" | "EU";
    timezone?: string;
    buffer: number;
    version?: string;
    color?: AgentColor;
    question?: string;
    enable?: boolean;
    tags?: string[];
    instructions?: AgentInstructions;
    person?: AgentPerson;
    fallbacks?: AgentFallbacks;
    rules?: AgentRules;
    examples?: AgentExample[];
    showInChat?: boolean;
    enableWidget?: boolean;
    enableWhatsappWidget?: boolean;
    urlWhatsappWidget?: string;
    formWidget?: boolean;
    darkWidget?: boolean;
    nameWidget?: string;
    initialShowWidget?: boolean;
    fUseAutomationFlowWidget?: boolean;
    iconWidget?: WidgetIcon;
    useToolCalling?: boolean;
    customAIConfig?: boolean;
    aiProviders?: AIProvider[];
    channels?: AgentChannel[];
    services?: AgentService[];
    actions?: AgentAction[];
    [key: string]: unknown;
}
export interface AgentData extends AgentConfig {
    id: string;
    _id?: string;
}
export interface AgentSource {
    title?: string;
    url?: string;
    content?: string;
}
export interface ActionExecuted {
    name?: string;
    intent?: string;
    result?: unknown;
}
export interface AgentResponse {
    answer: string;
    sources?: AgentSource[];
    actionsExecuted?: ActionExecuted[];
}
export interface CreateAgentResult {
    agentId: string;
    success: boolean;
    message: string;
}
export interface UpdateAgentResult {
    success: boolean;
    message: string;
}
export interface WidgetResult {
    success: boolean;
    message: string;
    script?: string;
}
export interface DeleteResult {
    success: boolean;
    message: string;
}
export interface AgentFileResult {
    fileId?: string;
    success?: boolean;
    message?: string;
    status?: string;
}
export interface PortalConfig {
    name: string;
    url?: string;
    title?: string;
    subtitle?: string;
    logo?: string;
    logodark?: string;
    access?: "direct" | "form";
    theme?: "light" | "dark";
    disabled?: boolean;
    brandOff?: boolean;
    zone: "LA" | "EU";
}
export interface PortalUpdateConfig {
    id: string;
    name?: string;
    url?: string;
    title?: string;
    subtitle?: string;
    logo?: string;
    logodark?: string;
    access?: "direct" | "form";
    theme?: "light" | "dark";
    disabled?: boolean;
    brandOff?: boolean;
}
export interface PortalData {
    id: string;
    name: string;
    url: string;
    title?: string;
    subtitle?: string;
    logo?: string;
    logodark?: string;
    access?: string;
    theme?: string;
    disabled?: boolean;
    brandOff?: boolean;
}
export interface CreatePortalResult {
    id: string;
    url: string;
}
export interface PortalResult {
    success: boolean;
    portal: PortalData;
}
export interface TemplateVariable {
    variable: string;
    value: string;
}
export interface TemplateFile {
    fileUrl: string;
    fileName: string;
}
export interface SendMessageParams {
    to: string;
    message: string;
}
export interface SendTemplateParams {
    to: string;
    template: string;
    variablesBody?: TemplateVariable[];
    variablesHeader?: TemplateVariable[];
    file?: TemplateFile;
}
export interface WebhookParams {
    number: string;
    webhookUrl: string;
}
export interface MessageResult {
    success?: boolean;
    messageId?: string;
}
export interface MessageData {
    id: string;
    content?: string;
    from?: string;
    to?: string;
    timestamp?: string;
    type?: string;
}
export interface WhatsAppTemplate {
    id: string;
    name: string;
    status: string;
    language?: string;
    category?: string;
    components?: unknown[];
}
export interface ContactData {
    id: string;
    name?: string;
    cellphone?: string;
    email?: string;
    tags?: string[];
    stage?: string;
    owner?: string;
    createdAt?: string;
    updatedAt?: string;
}
export interface CreateContactParams {
    name?: string;
    cellphone?: string;
    email?: string;
    tags?: string[];
    stage?: string;
}
export interface UpdateContactParams extends CreateContactParams {
    id: string;
}
