import type { BlipClient } from '../client.ts'; import { type AttendanceHour, type DeskAttendanceQueue, type DeskPriorityRule, type DeskRule, type DetailedAttendanceHour, type Identity, Node, type ThreadItem, type Ticket, type TicketStatus } from '../types/index.ts'; import type { WhatsAppTemplateLanguage } from '../types/whatsapp.ts'; import type { ODataFilter } from '../utils/odata.ts'; import { type ConsumeOptions, Namespace, type SendCommandOptions } from './namespace.ts'; export declare class DeskNamespace extends Namespace { constructor(blipClient: BlipClient, defaultOptions?: SendCommandOptions); createTicket(contact: Identity, opts?: ConsumeOptions): Promise; getTicket(ticket: string, opts?: ConsumeOptions): Promise; getTicketMessages(ticket: Ticket, opts?: Omit): Promise>; getTicketMessages(ticket: string, opts?: Omit): Promise>; getTicketsMetrics(opts?: ConsumeOptions): Promise<{ ticketsPerAttendant: number; maxQueueTime: string; maxFirstResponseTime: string; avgQueueTime: string; avgFirstResponseTime: string; avgWaitTime: string; avgResponseTime: string; avgAttendanceTime: string; }>; getWaitingTicketsMetrics(filters?: { teams?: Array; tags?: Array; operators?: Array; }, opts?: ConsumeOptions): Promise>; /** @param filters.filter - Optional OData filter applied by the Desk backend when listing queues. */ getQueues(filters?: { filter?: ODataFilter; }, opts?: ConsumeOptions): Promise>; getQueue(queueId: string, opts?: ConsumeOptions): Promise; getQueueByName(queueName: string, opts?: ConsumeOptions): Promise; /** * @param queue.id - Optional queue id. If omitted, Iris generates one from `uniqueId`. * @param queue.ownerIdentity - Optional owner identity. Iris usually infers it from the command context. * @param queue.name - Queue display name. * @param queue.isActive - Whether the queue should accept new tickets. * @param queue.storageDate - Optional original creation date for updates. * @param queue.Priority - Optional queue ordering priority. * @param queue.uniqueId - Optional queue unique id. Iris generates one when missing. * @param queue.attendanceHourId - Optional attendance hour id linked to this queue. */ setQueue(queue: DeskAttendanceQueue, opts?: ConsumeOptions): Promise; deleteQueue(queueId: string, opts?: ConsumeOptions): Promise; /** @param filters.filter - Optional OData filter applied to the stored rules. */ getRules(filters?: { filter?: ODataFilter; }, opts?: ConsumeOptions): Promise>; getRule(ruleId: string, opts?: ConsumeOptions): Promise; /** * @param queue - Queue selector used by `/rules/queue/{queue}`. Iris matches this value against the rule `team` field. * @param filters.filter - Optional OData filter applied after the queue selector. */ getRulesByQueue(queue: string, filters?: { filter?: ODataFilter; }, opts?: ConsumeOptions): Promise>; /** * @param rule.id - Optional existing rule id. * @param rule.ownerIdentity - Optional owner identity override. * @param rule.title - Rule display name. * @param rule.team - Queue name that receives matching tickets. * @param rule.property - Legacy single-condition property. Prefer `conditions`. * @param rule.relation - Legacy single-condition relation. Prefer `conditions`. * @param rule.isActive - Whether the rule can be applied to new tickets. * @param rule.values - Legacy single-condition values. Prefer `conditions`. * @param rule.conditions - Preferred list of rule conditions evaluated by Iris. * @param rule.operator - Logical operator used between `conditions`. * @param rule.priority - Optional explicit processing order. * @param rule.storageDate - Optional original creation date for updates. * @param rule.queueId - Optional queue unique id. When omitted, Iris resolves it from `team`. */ setRule(rule: DeskRule, opts?: ConsumeOptions): Promise; deleteRule(ruleId: string, opts?: ConsumeOptions): Promise; getPriorityRules(opts?: ConsumeOptions): Promise>; getPriorityRule(ruleId: string, opts?: ConsumeOptions): Promise; /** * @param queueId - Queue unique id used by the priority rule engine. * @param filters.filter - Optional OData filter applied after the queue selector. */ getPriorityRulesByQueue(queueId: string, filters?: { filter?: ODataFilter; }, opts?: ConsumeOptions): Promise>; /** * @param rule.id - Optional existing rule id. Iris generates one when missing. * @param rule.ownerIdentity - Optional owner identity override. * @param rule.title - Rule display name. * @param rule.queueId - Queue unique id that receives the urgency. * @param rule.isActive - Whether the rule can be applied to new tickets. * @param rule.conditions - Conditions evaluated when `applyConditions` is true. * @param rule.operator - Logical operator used between `conditions`. * @param rule.priority - Optional explicit processing order. * @param rule.urgency - Priority boost applied to matching tickets. * @param rule.applyConditions - When false, Iris applies the rule without evaluating `conditions`. * @param rule.storageDate - Optional original creation date for updates. */ setPriorityRule(rule: DeskPriorityRule, opts?: ConsumeOptions): Promise; deletePriorityRule(ruleId: string, opts?: ConsumeOptions): Promise; /** @param filters.filter - Optional OData filter applied to the attendance-hour summary list. */ getAttendanceHours(filters?: { filter?: ODataFilter; }, opts?: ConsumeOptions): Promise>; getAttendanceHourContainer(attendanceHourId: string, opts?: ConsumeOptions): Promise; /** * @param attendanceHour.attendanceHour - Summary fields for the attendance hour itself. * @param attendanceHour.attendanceHourScheduleItems - Required weekly schedules for the attendance hour. * @param attendanceHour.attendanceHourOffItems - Optional date ranges where attendance is suspended. * @param attendanceHour.queues - Queue ids linked to this attendance hour. * @param attendanceHour.attendants - Agent identities linked to this attendance hour. */ setAttendanceHour(attendanceHour: DetailedAttendanceHour, opts?: ConsumeOptions): Promise; deleteAttendanceHour(attendanceHourId: string, opts?: ConsumeOptions): Promise; getTickets(filter?: ODataFilter, opts?: ConsumeOptions): Promise>; /** * @param filters.beginDate - Required. Start of the `storageDate` range, applied inclusively. * @param filters.endDate - Required. End of the `storageDate` range. Exact-second timestamps are treated as exclusive, * while timestamps with a non-zero seconds component are treated as inclusive. * @param filters.teams - Filters by ticket team. Values are combined as alternatives. * @param filters.agentIdentities - Filters by ticket agent identity. Values are combined as alternatives. * @param filters.customerIdentities - Filters by ticket customer identity. Values are combined as alternatives. * @param filters.tags - Matches tickets that contain at least one of the provided tags. * @param filters.ticketIds - Filters by the Desk sequential ticket id, not the ticket UUID `id`. * @param filters.includeIdentitiesNames - Makes the backend try to resolve `agentName` and `customerName`. */ getTicketsHistory(filters: { beginDate: string | Date; endDate: string | Date; teams?: Array; agentIdentities?: Array; customerIdentities?: Array; tags?: Array; ticketIds?: Array; includeIdentitiesNames?: boolean; }, opts?: ConsumeOptions): Promise>; getContactTickets(contact: Identity, opts?: ConsumeOptions): Promise>; changeTicketStatus(ticket: string, status: TicketStatus, settings?: { agent?: Identity; closedBy?: Identity; tags?: Array; }, opts?: ConsumeOptions): Promise; changeTicketTags(ticket: string, tags: Array, opts?: ConsumeOptions): Promise; isOnAttendanceTime(queueIdOrName?: string, timezone?: number): Promise; getApprovedMessageTemplates(opts?: ConsumeOptions): Promise>; getMessageTemplateParams(opts?: ConsumeOptions): Promise<{ template: string; category: string; language: "id" | "en" | "es" | "af" | "sq" | "ar" | "ar_EG" | "ar_AE" | "ar_LB" | "ar_MA" | "ar_QA" | "az" | "be_BY" | "bn" | "bn_IN" | "bg" | "ca" | "zh_CN" | "zh_HK" | "zh_TW" | "hr" | "cs" | "da" | "prs_AF" | "nl" | "nl_BE" | "en_GB" | "en_US" | "en_AE" | "en_AU" | "en_CA" | "en_GH" | "en_IE" | "en_IN" | "en_JM" | "en_MY" | "en_NZ" | "en_QA" | "en_SG" | "en_UG" | "en_ZA" | "et" | "fil" | "fi" | "fr" | "fr_BE" | "fr_CA" | "fr_CH" | "fr_CI" | "fr_MA" | "ka" | "de" | "de_AT" | "de_CH" | "el" | "gu" | "ha" | "he" | "hi" | "hu" | "ga" | "it" | "ja" | "kn" | "kk" | "rw_RW" | "ko" | "ky_KG" | "lo" | "lv" | "lt" | "mk" | "ms" | "ml" | "mr" | "nb" | "ps_AF" | "fa" | "pl" | "pt_BR" | "pt_PT" | "pa" | "ro" | "ru" | "sr" | "si_LK" | "sk" | "sl" | "es_AR" | "es_CL" | "es_CO" | "es_CR" | "es_DO" | "es_EC" | "es_HN" | "es_MX" | "es_PA" | "es_PE" | "es_ES" | "es_UY" | "sw" | "sv" | "ta" | "te" | "th" | "tr" | "uk" | "ur" | "uz" | "vi" | "zu"; status: "APPROVED" | "REJECTED" | "PENDING"; ownerIdentity: string | undefined; stateId: string | undefined; isEnabled: boolean | undefined; components: { type: string; text: string | undefined; }[]; }[]>; sendIndividualActiveMessage(phoneNumber: string, message: { template: string; language: WhatsAppTemplateLanguage; variables: Array; }, sender: Node, opts?: ConsumeOptions): Promise; getTeamsAgentsOnline(opts?: ConsumeOptions): Promise>; getAgents(opts?: ConsumeOptions): Promise; }>>; /** @returns The new child ticket created from the transfer */ transferTicket(ticket: string, teamOrAgentIdentity: Identity | string, transferredBy?: Identity, opts?: ConsumeOptions): Promise; sendTicketSurveyAnswer(ticket: string, survey: string, details: { answer: string; answerScore: number; comment?: string; }, opts?: ConsumeOptions): Promise; getTags(team?: string, opts?: ConsumeOptions): Promise>; getSummary(ticket: string, opts?: ConsumeOptions): Promise<{ summary: { customer_data: { name: string; }; contact: { date: string; reason: string; conclusion: string; sentiment: string; }; }; }>; setCustomChannel(url: string, settings?: { token?: string; }, opts?: ConsumeOptions): Promise; getCustomChannel(opts?: ConsumeOptions): Promise<{ url: string; token: string; }>; addExtension(id: string, settings: { name: string; view: 'ticket' | 'agent'; url: string; }, opts?: ConsumeOptions): Promise; updateExtension(id: string, settings: Partial<{ name: string; view: 'ticket' | 'agent'; url: string; }>, opts?: ConsumeOptions): Promise; deleteExtension(id: string, opts?: ConsumeOptions): Promise; deleteExtension(url: string | RegExp, opts?: ConsumeOptions): Promise; createAgent(agent: { identity: Identity; teams: Array; agentSlots?: number; }, opts?: ConsumeOptions): Promise; deleteAgent(identity: Identity, opts?: ConsumeOptions): Promise; } //# sourceMappingURL=desk.d.ts.map