n8n-nodes-underchat 0.1.11 → 0.1.13

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.
@@ -0,0 +1,445 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchOfficialTemplates = searchOfficialTemplates;
4
+ exports.getOfficialTemplateVariables = getOfficialTemplateVariables;
5
+ exports.executeStartChatByPhone = executeStartChatByPhone;
6
+ const n8n_workflow_1 = require("n8n-workflow");
7
+ const GenericFunctions_1 = require("./GenericFunctions");
8
+ const ACTIVE_CHAT_STATUSES = ['ura', 'queue', 'in_chat', 'ura_output', 'ura_schedule', 'ura_webhook'];
9
+ const TEMPLATE_SEPARATOR = '::';
10
+ function asRecord(value) {
11
+ return value && typeof value === 'object' && !Array.isArray(value)
12
+ ? value
13
+ : undefined;
14
+ }
15
+ function requiredString(value, label) {
16
+ if (typeof value !== 'string' || !value.trim())
17
+ throw new Error(`${label} não foi informado`);
18
+ return value.trim();
19
+ }
20
+ function optionalString(value) {
21
+ return typeof value === 'string' && value.trim() ? value.trim() : undefined;
22
+ }
23
+ function resourceId(value) {
24
+ if (typeof value === 'string' || typeof value === 'number')
25
+ return String(value).trim();
26
+ if (value && typeof value === 'object' && 'value' in value) {
27
+ const selected = value.value;
28
+ if (typeof selected === 'string' || typeof selected === 'number')
29
+ return String(selected).trim();
30
+ }
31
+ return '';
32
+ }
33
+ function digits(value, label) {
34
+ const raw = requiredString(String(value !== null && value !== void 0 ? value : ''), label);
35
+ const normalized = raw.replace(/\D/g, '');
36
+ if (!normalized)
37
+ throw new Error(`${label} deve conter números`);
38
+ return normalized;
39
+ }
40
+ function recordId(record, keys) {
41
+ return (0, GenericFunctions_1.getOpaqueId)(record, keys);
42
+ }
43
+ function templateSelection(template) {
44
+ return `${template.name}${TEMPLATE_SEPARATOR}${template.language}`;
45
+ }
46
+ function parseTemplateSelection(value) {
47
+ const selected = resourceId(value);
48
+ if (!selected)
49
+ return undefined;
50
+ const separator = selected.lastIndexOf(TEMPLATE_SEPARATOR);
51
+ if (separator <= 0 || separator >= selected.length - TEMPLATE_SEPARATOR.length) {
52
+ throw new Error('Informe o template no formato nome::idioma');
53
+ }
54
+ return {
55
+ name: selected.slice(0, separator).trim(),
56
+ language: selected.slice(separator + TEMPLATE_SEPARATOR.length).trim(),
57
+ };
58
+ }
59
+ function variableFieldId(variable) {
60
+ var _a, _b;
61
+ return `variable_${encodeURIComponent(JSON.stringify([
62
+ variable.key,
63
+ variable.componentType,
64
+ variable.index,
65
+ (_a = variable.parameterName) !== null && _a !== void 0 ? _a : null,
66
+ (_b = variable.buttonIndex) !== null && _b !== void 0 ? _b : null,
67
+ ]))}`;
68
+ }
69
+ function parseVariable(value, templateLabel) {
70
+ var _a, _b;
71
+ const record = asRecord(value);
72
+ if (!record)
73
+ throw new Error(`Variável inválida no template ${templateLabel}`);
74
+ const componentType = requiredString(record.component_type, 'Tipo da variável').toUpperCase();
75
+ if (!['HEADER', 'BODY', 'FOOTER', 'BUTTON'].includes(componentType)) {
76
+ throw new Error(`Tipo de variável inválido no template ${templateLabel}`);
77
+ }
78
+ const index = Number(record.index);
79
+ if (!Number.isInteger(index) || index < 0) {
80
+ throw new Error(`Índice de variável inválido no template ${templateLabel}`);
81
+ }
82
+ const buttonIndex = record.button_index == null ? undefined : Number(record.button_index);
83
+ if (buttonIndex !== undefined && (!Number.isInteger(buttonIndex) || buttonIndex < 0)) {
84
+ throw new Error(`Índice de botão inválido no template ${templateLabel}`);
85
+ }
86
+ return {
87
+ key: requiredString(record.key, 'Chave da variável'),
88
+ componentType: componentType,
89
+ index,
90
+ parameterName: (_a = optionalString(record.parameter_name)) !== null && _a !== void 0 ? _a : null,
91
+ buttonIndex: buttonIndex !== null && buttonIndex !== void 0 ? buttonIndex : null,
92
+ sample: (_b = optionalString(record.sample)) !== null && _b !== void 0 ? _b : null,
93
+ };
94
+ }
95
+ function parseTemplate(value) {
96
+ const record = asRecord(value);
97
+ if (!record || record.status !== 'APPROVED')
98
+ return undefined;
99
+ const name = optionalString(record.name);
100
+ const language = optionalString(record.language);
101
+ if (!name || !language || !Array.isArray(record.variables))
102
+ return undefined;
103
+ const label = `${name} (${language})`;
104
+ return {
105
+ name,
106
+ language,
107
+ status: 'APPROVED',
108
+ variables: record.variables.map((variable) => parseVariable(variable, label)),
109
+ preview: asRecord(record.preview),
110
+ };
111
+ }
112
+ function parseOfficialContext(response) {
113
+ const data = asRecord((0, GenericFunctions_1.responseData)(response));
114
+ if (!data || typeof data.is_official !== 'boolean' || !Array.isArray(data.templates)) {
115
+ throw new Error('A API retornou um contexto oficial inválido');
116
+ }
117
+ const window = asRecord(data.official_window);
118
+ const canSendFreeform = (window === null || window === void 0 ? void 0 : window.can_send_freeform) === true;
119
+ const canSendTemplate = (window === null || window === void 0 ? void 0 : window.can_send_template) === true;
120
+ return {
121
+ isOfficial: data.is_official,
122
+ requiresTemplate: typeof data.requires_template === 'boolean'
123
+ ? data.requires_template
124
+ : data.is_official && !canSendFreeform,
125
+ canSendFreeform,
126
+ canSendTemplate,
127
+ templates: data.templates
128
+ .map(parseTemplate)
129
+ .filter((template) => template !== undefined),
130
+ window,
131
+ };
132
+ }
133
+ async function currentExecutor() {
134
+ const selected = this.getCurrentNodeParameter('executorId', { extractValue: true });
135
+ const id = resourceId(selected);
136
+ if (id)
137
+ return id;
138
+ const credentials = await this.getCredentials('underChatApi');
139
+ return typeof credentials.userId === 'string' ? credentials.userId : '';
140
+ }
141
+ async function findContactId(context, executorId, phoneDdi, phone) {
142
+ try {
143
+ const response = await GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/contacts/by-phone', {}, { phone_ddi: phoneDdi, phone }, executorId);
144
+ return recordId((0, GenericFunctions_1.firstRecord)(response), ['contact_id', 'id']);
145
+ }
146
+ catch (error) {
147
+ if ((0, GenericFunctions_1.isNotFoundError)(error))
148
+ return undefined;
149
+ throw new n8n_workflow_1.NodeApiError(context.getNode(), error);
150
+ }
151
+ }
152
+ function findById(response, id, keys) {
153
+ return (0, GenericFunctions_1.collectionRecords)(response).find((record) => recordId(record, keys) === id);
154
+ }
155
+ async function resolvePrerequisites(context, executorId, workerId, sectorId) {
156
+ const [workersResponse, sectorsResponse] = await Promise.all([
157
+ GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/workers', {}, {}, executorId),
158
+ GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/sectors', {}, {}, executorId),
159
+ ]);
160
+ const worker = findById(workersResponse, workerId, ['worker_id', 'id']);
161
+ if (!worker)
162
+ throw new Error('O canal selecionado não está disponível para o executor');
163
+ const sector = findById(sectorsResponse, sectorId, ['sector_id', 'id']);
164
+ if (!sector)
165
+ throw new Error('O setor selecionado não está disponível para o executor');
166
+ return { worker, sector, isOfficial: worker.is_official === true };
167
+ }
168
+ async function loadOfficialContextFromCurrent(context) {
169
+ const executorId = await currentExecutor.call(context);
170
+ const workerId = resourceId(context.getCurrentNodeParameter('workerId', { extractValue: true }));
171
+ const sectorId = resourceId(context.getCurrentNodeParameter('sectorId', { extractValue: true }));
172
+ const rawPhone = context.getCurrentNodeParameter('phone');
173
+ const rawPhoneDdi = context.getCurrentNodeParameter('phoneDdi');
174
+ if (!executorId || !workerId || !sectorId)
175
+ return undefined;
176
+ const prerequisites = await resolvePrerequisites(context, executorId, workerId, sectorId);
177
+ if (!prerequisites.isOfficial)
178
+ return undefined;
179
+ let contactId;
180
+ if (typeof rawPhone === 'string' &&
181
+ typeof rawPhoneDdi === 'string' &&
182
+ !rawPhone.includes('{{') &&
183
+ !rawPhoneDdi.includes('{{')) {
184
+ const phone = rawPhone.replace(/\D/g, '');
185
+ const phoneDdi = rawPhoneDdi.replace(/\D/g, '');
186
+ if (phone && phoneDdi)
187
+ contactId = await findContactId(context, executorId, phoneDdi, phone);
188
+ }
189
+ if (!contactId) {
190
+ const contactsResponse = await GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/contacts', {}, { current_page: 1, per_page: 1, filter_channel_id: workerId }, executorId);
191
+ contactId = recordId((0, GenericFunctions_1.collectionRecords)(contactsResponse)[0], ['contact_id', 'id']);
192
+ }
193
+ if (!contactId)
194
+ return undefined;
195
+ const response = await GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat/official-opening/context', {}, { worker_id: workerId, contact_id: contactId }, executorId);
196
+ return { context: parseOfficialContext(response), contactId };
197
+ }
198
+ function templatePreview(template) {
199
+ var _a;
200
+ const body = optionalString((_a = template.preview) === null || _a === void 0 ? void 0 : _a.body);
201
+ if (!body)
202
+ return undefined;
203
+ return body.length > 70 ? `${body.slice(0, 67)}...` : body;
204
+ }
205
+ async function searchOfficialTemplates(filter) {
206
+ var _a;
207
+ const loaded = await loadOfficialContextFromCurrent(this);
208
+ if (!loaded)
209
+ return { results: [] };
210
+ const normalizedFilter = (_a = filter === null || filter === void 0 ? void 0 : filter.trim().toLocaleLowerCase('pt-BR')) !== null && _a !== void 0 ? _a : '';
211
+ const results = loaded.context.templates
212
+ .filter((template) => {
213
+ var _a;
214
+ const searchable = `${template.name} ${template.language} ${(_a = templatePreview(template)) !== null && _a !== void 0 ? _a : ''}`
215
+ .toLocaleLowerCase('pt-BR');
216
+ return !normalizedFilter || searchable.includes(normalizedFilter);
217
+ })
218
+ .map((template) => ({
219
+ name: `${template.name} · ${template.language} · ${template.variables.length} variável${template.variables.length === 1 ? '' : 'is'}`,
220
+ value: templateSelection(template),
221
+ }));
222
+ return { results };
223
+ }
224
+ async function getOfficialTemplateVariables() {
225
+ const selected = parseTemplateSelection(this.getCurrentNodeParameter('officialTemplate', { extractValue: true }));
226
+ if (!selected) {
227
+ return { fields: [], emptyFieldsNotice: 'Selecione um template oficial para carregar as variáveis.' };
228
+ }
229
+ const loaded = await loadOfficialContextFromCurrent(this);
230
+ if (!loaded) {
231
+ return {
232
+ fields: [],
233
+ emptyFieldsNotice: 'Não há um contato de referência neste canal para carregar as variáveis. Use o modo JSON avançado; a execução validará tudo com o contato real.',
234
+ };
235
+ }
236
+ const template = loaded.context.templates.find((candidate) => candidate.name === selected.name && candidate.language === selected.language);
237
+ if (!template)
238
+ return { fields: [], emptyFieldsNotice: 'O template selecionado não está aprovado para este canal.' };
239
+ return {
240
+ fields: template.variables.map((variable) => ({
241
+ id: variableFieldId(variable),
242
+ displayName: `${variable.componentType} ${variable.key}${variable.sample ? ` — exemplo: ${variable.sample}` : ''}`,
243
+ defaultMatch: false,
244
+ canBeUsedToMatch: false,
245
+ required: true,
246
+ display: true,
247
+ type: 'string',
248
+ })),
249
+ emptyFieldsNotice: 'Este template não possui variáveis.',
250
+ };
251
+ }
252
+ function selectTemplate(context, selectionValue) {
253
+ const selected = parseTemplateSelection(selectionValue);
254
+ if (!selected) {
255
+ const automatic = context.templates.filter((template) => template.variables.length === 0);
256
+ if (context.requiresTemplate && automatic.length === 1)
257
+ return automatic[0];
258
+ return undefined;
259
+ }
260
+ return context.templates.find((template) => template.name === selected.name && template.language === selected.language);
261
+ }
262
+ function variableIdentity(variable) {
263
+ var _a, _b;
264
+ return (0, GenericFunctions_1.withoutEmptyValues)({
265
+ key: variable.key,
266
+ component_type: variable.componentType,
267
+ index: variable.index,
268
+ parameter_name: (_a = variable.parameterName) !== null && _a !== void 0 ? _a : undefined,
269
+ button_index: (_b = variable.buttonIndex) !== null && _b !== void 0 ? _b : undefined,
270
+ });
271
+ }
272
+ function validateManualVariables(template, raw) {
273
+ if (raw.length !== template.variables.length) {
274
+ throw new Error(`O template ${template.name} exige ${template.variables.length} variável(is)`);
275
+ }
276
+ return template.variables.map((variable) => {
277
+ const expected = variableIdentity(variable);
278
+ const match = raw.find((candidate) => Object.entries(expected).every(([key, value]) => candidate[key] === value));
279
+ if (!match || (typeof match.value !== 'string' && typeof match.value !== 'number')) {
280
+ throw new Error(`Preencha a variável ${variable.componentType} ${variable.key}`);
281
+ }
282
+ return { ...expected, value: match.value };
283
+ });
284
+ }
285
+ function mappedVariables(template, raw) {
286
+ const mapper = asRecord(raw);
287
+ const values = asRecord(mapper === null || mapper === void 0 ? void 0 : mapper.value);
288
+ if (!values && template.variables.length > 0)
289
+ throw new Error('Preencha as variáveis do template');
290
+ return template.variables.map((variable) => {
291
+ const value = values === null || values === void 0 ? void 0 : values[variableFieldId(variable)];
292
+ if (typeof value !== 'string' && typeof value !== 'number') {
293
+ throw new Error(`Preencha a variável ${variable.componentType} ${variable.key}`);
294
+ }
295
+ if (typeof value === 'string' && !value.trim()) {
296
+ throw new Error(`Preencha a variável ${variable.componentType} ${variable.key}`);
297
+ }
298
+ return { ...variableIdentity(variable), value };
299
+ });
300
+ }
301
+ function buildOfficialTemplate(template, inputMode, rawMapper, rawJson) {
302
+ const variables = inputMode === 'json'
303
+ ? validateManualVariables(template, (0, GenericFunctions_1.parseJsonArray)(rawJson))
304
+ : mappedVariables(template, rawMapper);
305
+ return { name: template.name, language: template.language, variables };
306
+ }
307
+ async function findActiveChat(context, executorId, contactId, phone, workerId, sectorId) {
308
+ const response = await GenericFunctions_1.underChatApiRequest.call(context, 'GET', '/chat', {}, {
309
+ status: ACTIVE_CHAT_STATUSES,
310
+ filter_phone: phone,
311
+ filter_worker_id: workerId,
312
+ current_page: 1,
313
+ per_page: 200,
314
+ }, executorId);
315
+ const matches = (0, GenericFunctions_1.collectionRecords)(response).filter((chat) => {
316
+ const contact = asRecord(chat.contact);
317
+ const worker = asRecord(chat.worker);
318
+ return recordId(contact, ['contact_id', 'id']) === contactId && recordId(worker, ['worker_id', 'id']) === workerId;
319
+ });
320
+ if (matches.length > 1)
321
+ throw new Error('Existe mais de um atendimento ativo para este contato e canal');
322
+ const chat = matches[0];
323
+ if (!chat)
324
+ return undefined;
325
+ const chatSectorId = recordId(asRecord(chat.sector), ['sector_id', 'id']);
326
+ if (chatSectorId !== sectorId) {
327
+ throw new Error('O contato já possui um atendimento ativo neste canal, mas em outro setor. Selecione o setor atual ou use a operação de transferência.');
328
+ }
329
+ return chat;
330
+ }
331
+ function templateChoices(context) {
332
+ return context.templates
333
+ .slice(0, 10)
334
+ .map((template) => `${template.name}::${template.language} (${template.variables.length} variável(is))`)
335
+ .join(', ');
336
+ }
337
+ async function executeStartChatByPhone(itemIndex, executorId) {
338
+ var _a, _b, _c, _d, _e;
339
+ try {
340
+ const phoneDdi = digits(this.getNodeParameter('phoneDdi', itemIndex), 'DDI');
341
+ const phone = digits(this.getNodeParameter('phone', itemIndex), 'Telefone');
342
+ const contactName = optionalString(this.getNodeParameter('contactName', itemIndex, ''));
343
+ const workerId = resourceId(this.getNodeParameter('workerId', itemIndex, ''));
344
+ const sectorId = resourceId(this.getNodeParameter('sectorId', itemIndex, ''));
345
+ const createIfMissing = this.getNodeParameter('createIfMissing', itemIndex, true);
346
+ if (!workerId)
347
+ throw new Error('Selecione o canal');
348
+ if (!sectorId)
349
+ throw new Error('Selecione o setor');
350
+ const prerequisites = await resolvePrerequisites(this, executorId, workerId, sectorId);
351
+ let contactId = await findContactId(this, executorId, phoneDdi, phone);
352
+ let contactCreated = false;
353
+ if (!contactId) {
354
+ if (!createIfMissing)
355
+ throw new Error('Contato não encontrado');
356
+ if (!contactName)
357
+ throw new Error('Informe o nome para cadastrar o novo contato');
358
+ const extra = (0, GenericFunctions_1.parseJsonObject)(this.getNodeParameter('additionalFields', itemIndex, '{}'));
359
+ await GenericFunctions_1.underChatApiMultipartRequest.call(this, '/chat/contacts', (0, GenericFunctions_1.withoutEmptyValues)({
360
+ ...extra,
361
+ name: contactName,
362
+ phone_ddi: phoneDdi,
363
+ phone,
364
+ channel_ids: [workerId],
365
+ }), executorId);
366
+ contactId = await findContactId(this, executorId, phoneDdi, phone);
367
+ contactCreated = true;
368
+ }
369
+ if (!contactId)
370
+ throw new Error('A API não retornou o ID do contato após o cadastro');
371
+ const existingChat = await findActiveChat(this, executorId, contactId, phone, workerId, sectorId);
372
+ let officialContext;
373
+ if (prerequisites.isOfficial) {
374
+ const contextResponse = await GenericFunctions_1.underChatApiRequest.call(this, 'GET', existingChat
375
+ ? `/chat/${recordId(existingChat, ['chat_id', 'id'])}/official-conversation/context`
376
+ : '/chat/official-opening/context', {}, existingChat ? {} : { worker_id: workerId, contact_id: contactId }, executorId);
377
+ officialContext = parseOfficialContext(contextResponse);
378
+ }
379
+ const selectionValue = this.getNodeParameter('officialTemplate', itemIndex, '');
380
+ if (!prerequisites.isOfficial && resourceId(selectionValue)) {
381
+ throw new Error('Template oficial não pode ser usado em um canal não oficial');
382
+ }
383
+ const selectedTemplate = officialContext
384
+ ? selectTemplate(officialContext, selectionValue)
385
+ : undefined;
386
+ if (officialContext && parseTemplateSelection(selectionValue) && !selectedTemplate) {
387
+ throw new Error('O template selecionado não está aprovado para este canal');
388
+ }
389
+ if ((officialContext === null || officialContext === void 0 ? void 0 : officialContext.requiresTemplate) && !selectedTemplate) {
390
+ throw new Error(`Este canal exige um template oficial. Selecione uma opção aprovada: ${templateChoices(officialContext) || 'nenhum template disponível'}`);
391
+ }
392
+ if (selectedTemplate && (officialContext === null || officialContext === void 0 ? void 0 : officialContext.canSendTemplate) !== true) {
393
+ throw new Error('A janela oficial não permite enviar template neste momento');
394
+ }
395
+ const inputMode = this.getNodeParameter('templateVariableInputMode', itemIndex, 'fields');
396
+ const officialTemplate = selectedTemplate
397
+ ? buildOfficialTemplate(selectedTemplate, inputMode, this.getNodeParameter('officialTemplateVariables', itemIndex, {}), this.getNodeParameter('officialTemplateVariablesJson', itemIndex, '[]'))
398
+ : undefined;
399
+ let chat;
400
+ let chatCreated = false;
401
+ let templateSent = false;
402
+ if (existingChat) {
403
+ chat = existingChat;
404
+ const chatId = requiredString(recordId(chat, ['chat_id', 'id']), 'Chat ID');
405
+ if (officialTemplate) {
406
+ const response = await GenericFunctions_1.underChatApiRequest.call(this, 'POST', `/chat/${chatId}/official-template`, officialTemplate, {}, executorId);
407
+ chat = (_a = (0, GenericFunctions_1.firstRecord)(response)) !== null && _a !== void 0 ? _a : chat;
408
+ templateSent = true;
409
+ }
410
+ }
411
+ else {
412
+ const response = await GenericFunctions_1.underChatApiRequest.call(this, 'POST', '/chat/start-with-contact', {
413
+ contact_id: contactId,
414
+ worker_id: workerId,
415
+ sector_id: sectorId,
416
+ ...(officialTemplate ? { official_template: officialTemplate } : {}),
417
+ }, {}, executorId);
418
+ chat = (_b = (0, GenericFunctions_1.firstRecord)(response)) !== null && _b !== void 0 ? _b : {};
419
+ chatCreated = true;
420
+ templateSent = Boolean(officialTemplate);
421
+ }
422
+ const chatId = recordId(chat, ['chat_id', 'id']);
423
+ if (!chatId)
424
+ throw new Error('A API não retornou o ID do atendimento');
425
+ return {
426
+ contact_id: contactId,
427
+ contact_created: contactCreated,
428
+ chat_id: chatId,
429
+ chat_created: chatCreated,
430
+ chat_reused: !chatCreated,
431
+ worker: (_c = asRecord(chat.worker)) !== null && _c !== void 0 ? _c : prerequisites.worker,
432
+ sector: (_d = asRecord(chat.sector)) !== null && _d !== void 0 ? _d : prerequisites.sector,
433
+ official: prerequisites.isOfficial,
434
+ official_window: (_e = officialContext === null || officialContext === void 0 ? void 0 : officialContext.window) !== null && _e !== void 0 ? _e : null,
435
+ template: selectedTemplate
436
+ ? { name: selectedTemplate.name, language: selectedTemplate.language, sent: templateSent }
437
+ : null,
438
+ chat,
439
+ };
440
+ }
441
+ catch (error) {
442
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex });
443
+ }
444
+ }
445
+ //# sourceMappingURL=StartChatByPhone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartChatByPhone.js","sourceRoot":"","sources":["../../../nodes/UnderChat/StartChatByPhone.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodeListSearchResult, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ import { getOfficialTemplateVariables, searchOfficialTemplates } from './StartChatByPhone';
2
3
  declare function searchExecutors(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
3
4
  declare function searchWorkers(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
4
5
  declare function searchSectors(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
@@ -8,10 +9,14 @@ export declare class UnderChat implements INodeType {
8
9
  methods: {
9
10
  listSearch: {
10
11
  searchExecutors: typeof searchExecutors;
12
+ searchOfficialTemplates: typeof searchOfficialTemplates;
11
13
  searchSectors: typeof searchSectors;
12
14
  searchUsers: typeof searchUsers;
13
15
  searchWorkers: typeof searchWorkers;
14
16
  };
17
+ resourceMapping: {
18
+ getOfficialTemplateVariables: typeof getOfficialTemplateVariables;
19
+ };
15
20
  };
16
21
  execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
17
22
  }