mxroute-cli 0.1.1

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.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +464 -0
  3. package/dist/commands/accounts.d.ts +4 -0
  4. package/dist/commands/accounts.js +262 -0
  5. package/dist/commands/accounts.js.map +1 -0
  6. package/dist/commands/aliases.d.ts +3 -0
  7. package/dist/commands/aliases.js +190 -0
  8. package/dist/commands/aliases.js.map +1 -0
  9. package/dist/commands/auth.d.ts +3 -0
  10. package/dist/commands/auth.js +143 -0
  11. package/dist/commands/auth.js.map +1 -0
  12. package/dist/commands/autoresponder.d.ts +4 -0
  13. package/dist/commands/autoresponder.js +280 -0
  14. package/dist/commands/autoresponder.js.map +1 -0
  15. package/dist/commands/catchall.d.ts +2 -0
  16. package/dist/commands/catchall.js +173 -0
  17. package/dist/commands/catchall.js.map +1 -0
  18. package/dist/commands/config.d.ts +5 -0
  19. package/dist/commands/config.js +161 -0
  20. package/dist/commands/config.js.map +1 -0
  21. package/dist/commands/dns.d.ts +3 -0
  22. package/dist/commands/dns.js +160 -0
  23. package/dist/commands/dns.js.map +1 -0
  24. package/dist/commands/dnsapi.d.ts +4 -0
  25. package/dist/commands/dnsapi.js +397 -0
  26. package/dist/commands/dnsapi.js.map +1 -0
  27. package/dist/commands/domains.d.ts +2 -0
  28. package/dist/commands/domains.js +109 -0
  29. package/dist/commands/domains.js.map +1 -0
  30. package/dist/commands/filters.d.ts +3 -0
  31. package/dist/commands/filters.js +300 -0
  32. package/dist/commands/filters.js.map +1 -0
  33. package/dist/commands/forwarders.d.ts +3 -0
  34. package/dist/commands/forwarders.js +202 -0
  35. package/dist/commands/forwarders.js.map +1 -0
  36. package/dist/commands/info.d.ts +2 -0
  37. package/dist/commands/info.js +163 -0
  38. package/dist/commands/info.js.map +1 -0
  39. package/dist/commands/lists.d.ts +6 -0
  40. package/dist/commands/lists.js +372 -0
  41. package/dist/commands/lists.js.map +1 -0
  42. package/dist/commands/quota.d.ts +2 -0
  43. package/dist/commands/quota.js +184 -0
  44. package/dist/commands/quota.js.map +1 -0
  45. package/dist/commands/send.d.ts +9 -0
  46. package/dist/commands/send.js +107 -0
  47. package/dist/commands/send.js.map +1 -0
  48. package/dist/commands/setup.d.ts +1 -0
  49. package/dist/commands/setup.js +535 -0
  50. package/dist/commands/setup.js.map +1 -0
  51. package/dist/commands/spam.d.ts +4 -0
  52. package/dist/commands/spam.js +215 -0
  53. package/dist/commands/spam.js.map +1 -0
  54. package/dist/commands/status.d.ts +1 -0
  55. package/dist/commands/status.js +79 -0
  56. package/dist/commands/status.js.map +1 -0
  57. package/dist/commands/troubleshoot.d.ts +1 -0
  58. package/dist/commands/troubleshoot.js +324 -0
  59. package/dist/commands/troubleshoot.js.map +1 -0
  60. package/dist/index.d.ts +2 -0
  61. package/dist/index.js +589 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/mcp.d.ts +2 -0
  64. package/dist/mcp.js +599 -0
  65. package/dist/mcp.js.map +1 -0
  66. package/dist/utils/api.d.ts +15 -0
  67. package/dist/utils/api.js +30 -0
  68. package/dist/utils/api.js.map +1 -0
  69. package/dist/utils/config.d.ts +24 -0
  70. package/dist/utils/config.js +150 -0
  71. package/dist/utils/config.js.map +1 -0
  72. package/dist/utils/directadmin.d.ts +49 -0
  73. package/dist/utils/directadmin.js +444 -0
  74. package/dist/utils/directadmin.js.map +1 -0
  75. package/dist/utils/dns.d.ts +14 -0
  76. package/dist/utils/dns.js +284 -0
  77. package/dist/utils/dns.js.map +1 -0
  78. package/dist/utils/theme.d.ts +24 -0
  79. package/dist/utils/theme.js +95 -0
  80. package/dist/utils/theme.js.map +1 -0
  81. package/package.json +92 -0
@@ -0,0 +1,444 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.listDomains = listDomains;
7
+ exports.getDomainInfo = getDomainInfo;
8
+ exports.listEmailAccounts = listEmailAccounts;
9
+ exports.getEmailAccountInfo = getEmailAccountInfo;
10
+ exports.createEmailAccount = createEmailAccount;
11
+ exports.deleteEmailAccount = deleteEmailAccount;
12
+ exports.changeEmailPassword = changeEmailPassword;
13
+ exports.changeEmailQuota = changeEmailQuota;
14
+ exports.listForwarders = listForwarders;
15
+ exports.getForwarderDestination = getForwarderDestination;
16
+ exports.createForwarder = createForwarder;
17
+ exports.deleteForwarder = deleteForwarder;
18
+ exports.getCatchAll = getCatchAll;
19
+ exports.setCatchAll = setCatchAll;
20
+ exports.getQuotaUsage = getQuotaUsage;
21
+ exports.getUserConfig = getUserConfig;
22
+ exports.listDomainPointers = listDomainPointers;
23
+ exports.getSpamConfig = getSpamConfig;
24
+ exports.setSpamConfig = setSpamConfig;
25
+ exports.addDomainPointer = addDomainPointer;
26
+ exports.deleteDomainPointer = deleteDomainPointer;
27
+ exports.listEmailFilters = listEmailFilters;
28
+ exports.createEmailFilter = createEmailFilter;
29
+ exports.deleteEmailFilter = deleteEmailFilter;
30
+ exports.testAuth = testAuth;
31
+ exports.listAutoresponders = listAutoresponders;
32
+ exports.getAutoresponder = getAutoresponder;
33
+ exports.createAutoresponder = createAutoresponder;
34
+ exports.modifyAutoresponder = modifyAutoresponder;
35
+ exports.deleteAutoresponder = deleteAutoresponder;
36
+ exports.listDnsRecords = listDnsRecords;
37
+ exports.addDnsRecord = addDnsRecord;
38
+ exports.deleteDnsRecord = deleteDnsRecord;
39
+ exports.getDkimKey = getDkimKey;
40
+ exports.listMailingLists = listMailingLists;
41
+ exports.getMailingListMembers = getMailingListMembers;
42
+ exports.createMailingList = createMailingList;
43
+ exports.deleteMailingList = deleteMailingList;
44
+ exports.addMailingListMember = addMailingListMember;
45
+ exports.removeMailingListMember = removeMailingListMember;
46
+ const node_fetch_1 = __importDefault(require("node-fetch"));
47
+ function getBaseUrl(server) {
48
+ const host = server.includes('.') ? server : `${server}.mxrouting.net`;
49
+ return `https://${host}:2222`;
50
+ }
51
+ function getAuthHeader(username, loginKey) {
52
+ return 'Basic ' + Buffer.from(`${username}:${loginKey}`).toString('base64');
53
+ }
54
+ async function daRequest(creds, endpoint, method = 'GET', body) {
55
+ const url = `${getBaseUrl(creds.server)}/${endpoint}${endpoint.includes('?') ? '&' : '?'}json=yes`;
56
+ const headers = {
57
+ Authorization: getAuthHeader(creds.username, creds.loginKey),
58
+ };
59
+ const options = { method, headers };
60
+ if (body && (method === 'POST' || method === 'PUT')) {
61
+ headers['Content-Type'] = 'application/x-www-form-urlencoded';
62
+ options.body = new URLSearchParams(body).toString();
63
+ }
64
+ const response = await (0, node_fetch_1.default)(url, options);
65
+ if (!response.ok) {
66
+ if (response.status === 401) {
67
+ throw new Error('Authentication failed. Check your username and login key.');
68
+ }
69
+ throw new Error(`DirectAdmin API error: ${response.status} ${response.statusText}`);
70
+ }
71
+ const text = await response.text();
72
+ try {
73
+ return JSON.parse(text);
74
+ }
75
+ catch {
76
+ // Some endpoints return URL-encoded data even with json=yes
77
+ // Try to parse as URL-encoded
78
+ const params = new URLSearchParams(text);
79
+ const result = {};
80
+ for (const [key, value] of params) {
81
+ result[key] = value;
82
+ }
83
+ return result;
84
+ }
85
+ }
86
+ // === Domain Operations ===
87
+ async function listDomains(creds) {
88
+ const result = await daRequest(creds, 'CMD_API_SHOW_DOMAINS');
89
+ if (Array.isArray(result))
90
+ return result;
91
+ if (result.list)
92
+ return result.list;
93
+ // Sometimes returns {domain1: '', domain2: ''}
94
+ return Object.keys(result).filter((k) => k !== 'error' && k !== 'text');
95
+ }
96
+ async function getDomainInfo(creds, domain) {
97
+ return daRequest(creds, `CMD_API_DOMAIN?domain=${encodeURIComponent(domain)}`);
98
+ }
99
+ // === Email Account Operations ===
100
+ async function listEmailAccounts(creds, domain) {
101
+ const result = await daRequest(creds, `CMD_API_POP?domain=${encodeURIComponent(domain)}&action=list`);
102
+ if (Array.isArray(result))
103
+ return result;
104
+ if (result.list)
105
+ return result.list;
106
+ return Object.keys(result).filter((k) => k !== 'error' && k !== 'text');
107
+ }
108
+ async function getEmailAccountInfo(creds, domain, user) {
109
+ return daRequest(creds, `CMD_API_POP?domain=${encodeURIComponent(domain)}&action=list&user=${encodeURIComponent(user)}`);
110
+ }
111
+ async function createEmailAccount(creds, domain, user, password, quota = 0) {
112
+ return daRequest(creds, 'CMD_API_POP', 'POST', {
113
+ action: 'create',
114
+ domain,
115
+ user,
116
+ passwd: password,
117
+ passwd2: password,
118
+ quota: quota.toString(),
119
+ limit: '0', // 0 = unlimited sending
120
+ });
121
+ }
122
+ async function deleteEmailAccount(creds, domain, user) {
123
+ return daRequest(creds, 'CMD_API_POP', 'POST', {
124
+ action: 'delete',
125
+ domain,
126
+ user,
127
+ });
128
+ }
129
+ async function changeEmailPassword(creds, domain, user, password) {
130
+ return daRequest(creds, 'CMD_API_POP', 'POST', {
131
+ action: 'modify',
132
+ domain,
133
+ user,
134
+ passwd: password,
135
+ passwd2: password,
136
+ });
137
+ }
138
+ async function changeEmailQuota(creds, domain, user, quota) {
139
+ return daRequest(creds, 'CMD_API_POP', 'POST', {
140
+ action: 'modify',
141
+ domain,
142
+ user,
143
+ quota: quota.toString(),
144
+ });
145
+ }
146
+ // === Forwarder Operations ===
147
+ async function listForwarders(creds, domain) {
148
+ const result = await daRequest(creds, `CMD_API_EMAIL_FORWARDERS?domain=${encodeURIComponent(domain)}&action=list`);
149
+ if (Array.isArray(result))
150
+ return result;
151
+ if (result.list)
152
+ return result.list;
153
+ return Object.keys(result).filter((k) => k !== 'error' && k !== 'text');
154
+ }
155
+ async function getForwarderDestination(creds, domain, user) {
156
+ const result = await daRequest(creds, `CMD_API_EMAIL_FORWARDERS?domain=${encodeURIComponent(domain)}&action=list&user=${encodeURIComponent(user)}`);
157
+ if (typeof result === 'string')
158
+ return result;
159
+ if (result.dest)
160
+ return result.dest;
161
+ return JSON.stringify(result);
162
+ }
163
+ async function createForwarder(creds, domain, user, destination) {
164
+ return daRequest(creds, 'CMD_API_EMAIL_FORWARDERS', 'POST', {
165
+ action: 'create',
166
+ domain,
167
+ user,
168
+ email: destination,
169
+ });
170
+ }
171
+ async function deleteForwarder(creds, domain, user) {
172
+ return daRequest(creds, 'CMD_API_EMAIL_FORWARDERS', 'POST', {
173
+ action: 'delete',
174
+ domain,
175
+ select0: user,
176
+ });
177
+ }
178
+ // === Catch-All Operations ===
179
+ async function getCatchAll(creds, domain) {
180
+ const result = await daRequest(creds, `CMD_API_EMAIL_CATCH_ALL?domain=${encodeURIComponent(domain)}`);
181
+ if (typeof result === 'string')
182
+ return result;
183
+ if (result.value)
184
+ return result.value;
185
+ if (result.catch)
186
+ return result.catch;
187
+ // Return first meaningful value
188
+ const keys = Object.keys(result).filter((k) => k !== 'error' && k !== 'text');
189
+ if (keys.length > 0)
190
+ return result[keys[0]] || keys[0];
191
+ return '';
192
+ }
193
+ async function setCatchAll(creds, domain, value) {
194
+ return daRequest(creds, 'CMD_API_EMAIL_CATCH_ALL', 'POST', {
195
+ action: 'update',
196
+ domain,
197
+ value,
198
+ });
199
+ }
200
+ // === Quota / Usage ===
201
+ async function getQuotaUsage(creds) {
202
+ return daRequest(creds, 'CMD_API_SHOW_USER_USAGE');
203
+ }
204
+ async function getUserConfig(creds) {
205
+ return daRequest(creds, 'CMD_API_SHOW_USER_CONFIG');
206
+ }
207
+ // === Domain Pointers (Aliases) ===
208
+ async function listDomainPointers(creds, domain) {
209
+ const result = await daRequest(creds, `CMD_API_DOMAIN_POINTER?domain=${encodeURIComponent(domain)}&action=list`);
210
+ if (typeof result === 'object' && !Array.isArray(result)) {
211
+ return result;
212
+ }
213
+ return {};
214
+ }
215
+ // === SpamAssassin Operations ===
216
+ async function getSpamConfig(creds, domain) {
217
+ return daRequest(creds, `CMD_API_SPAMASSASSIN?domain=${encodeURIComponent(domain)}`);
218
+ }
219
+ async function setSpamConfig(creds, domain, settings) {
220
+ return daRequest(creds, 'CMD_API_SPAMASSASSIN', 'POST', {
221
+ domain,
222
+ ...settings,
223
+ });
224
+ }
225
+ async function addDomainPointer(creds, domain, pointer) {
226
+ return daRequest(creds, 'CMD_API_DOMAIN_POINTER', 'POST', {
227
+ action: 'add',
228
+ domain,
229
+ from: pointer,
230
+ });
231
+ }
232
+ async function deleteDomainPointer(creds, domain, pointer) {
233
+ return daRequest(creds, 'CMD_API_DOMAIN_POINTER', 'POST', {
234
+ action: 'delete',
235
+ domain,
236
+ select0: pointer,
237
+ });
238
+ }
239
+ // === Email Filter Operations ===
240
+ async function listEmailFilters(creds, domain, user) {
241
+ const result = await daRequest(creds, `CMD_API_EMAIL_FILTER?domain=${encodeURIComponent(domain)}&user=${encodeURIComponent(user)}&action=list`);
242
+ if (Array.isArray(result))
243
+ return result;
244
+ if (result.list)
245
+ return result.list;
246
+ const keys = Object.keys(result).filter((k) => k !== 'error' && k !== 'text');
247
+ if (keys.length === 0)
248
+ return [];
249
+ return keys.map((k) => ({ name: k, ...(typeof result[k] === 'object' ? result[k] : { value: result[k] }) }));
250
+ }
251
+ async function createEmailFilter(creds, domain, user, filterData) {
252
+ return daRequest(creds, 'CMD_API_EMAIL_FILTER', 'POST', {
253
+ action: 'create',
254
+ domain,
255
+ user,
256
+ ...filterData,
257
+ });
258
+ }
259
+ async function deleteEmailFilter(creds, domain, user, filterName) {
260
+ return daRequest(creds, 'CMD_API_EMAIL_FILTER', 'POST', {
261
+ action: 'delete',
262
+ domain,
263
+ user,
264
+ select0: filterName,
265
+ });
266
+ }
267
+ // === Auth Test ===
268
+ async function testAuth(creds) {
269
+ try {
270
+ const config = await getUserConfig(creds);
271
+ return {
272
+ success: true,
273
+ message: 'Authentication successful',
274
+ username: config.username || creds.username,
275
+ };
276
+ }
277
+ catch (err) {
278
+ return {
279
+ success: false,
280
+ message: err.message,
281
+ };
282
+ }
283
+ }
284
+ // === Autoresponder Operations ===
285
+ async function listAutoresponders(creds, domain) {
286
+ const result = await daRequest(creds, `CMD_API_EMAIL_AUTORESPONDER?domain=${encodeURIComponent(domain)}`);
287
+ if (Array.isArray(result))
288
+ return result;
289
+ if (result.list)
290
+ return result.list;
291
+ return Object.keys(result).filter((k) => k !== 'error' && k !== 'text' && k !== 'details');
292
+ }
293
+ async function getAutoresponder(creds, domain, user) {
294
+ return daRequest(creds, `CMD_API_EMAIL_AUTORESPONDER?domain=${encodeURIComponent(domain)}&user=${encodeURIComponent(user)}`);
295
+ }
296
+ async function createAutoresponder(creds, domain, user, text, cc) {
297
+ const body = {
298
+ action: 'create',
299
+ domain,
300
+ user,
301
+ text,
302
+ };
303
+ if (cc)
304
+ body.cc = cc;
305
+ return daRequest(creds, 'CMD_API_EMAIL_AUTORESPONDER', 'POST', body);
306
+ }
307
+ async function modifyAutoresponder(creds, domain, user, text, cc) {
308
+ const body = {
309
+ action: 'modify',
310
+ domain,
311
+ user,
312
+ text,
313
+ };
314
+ if (cc)
315
+ body.cc = cc;
316
+ return daRequest(creds, 'CMD_API_EMAIL_AUTORESPONDER', 'POST', body);
317
+ }
318
+ async function deleteAutoresponder(creds, domain, user) {
319
+ return daRequest(creds, 'CMD_API_EMAIL_AUTORESPONDER', 'POST', {
320
+ action: 'delete',
321
+ domain,
322
+ select0: user,
323
+ });
324
+ }
325
+ // === DNS Record Management ===
326
+ async function listDnsRecords(creds, domain) {
327
+ return daRequest(creds, `CMD_API_DNS_CONTROL?domain=${encodeURIComponent(domain)}`);
328
+ }
329
+ async function addDnsRecord(creds, domain, type, name, value, priority) {
330
+ const body = {
331
+ action: 'add',
332
+ domain,
333
+ type,
334
+ name,
335
+ value,
336
+ };
337
+ if (priority !== undefined)
338
+ body.priority = priority.toString();
339
+ return daRequest(creds, 'CMD_API_DNS_CONTROL', 'POST', body);
340
+ }
341
+ async function deleteDnsRecord(creds, domain, type, name, value) {
342
+ // DirectAdmin uses select format: type_name_value encoded
343
+ const selectKey = `${type}recs0`;
344
+ return daRequest(creds, 'CMD_API_DNS_CONTROL', 'POST', {
345
+ action: 'select',
346
+ domain,
347
+ [selectKey]: `name=${encodeURIComponent(name)}&value=${encodeURIComponent(value)}`,
348
+ });
349
+ }
350
+ async function getDkimKey(creds, domain) {
351
+ try {
352
+ const records = await listDnsRecords(creds, domain);
353
+ if (!records || typeof records !== 'object')
354
+ return null;
355
+ // Deep search through all values for _domainkey / DKIM1
356
+ const searchObj = (obj) => {
357
+ if (Array.isArray(obj)) {
358
+ for (const item of obj) {
359
+ if (item && typeof item === 'object') {
360
+ const name = String(item.name || '');
361
+ const value = String(item.value || '');
362
+ if (name.includes('_domainkey') && value.includes('DKIM1'))
363
+ return value;
364
+ }
365
+ if (typeof item === 'string' && item.includes('DKIM1'))
366
+ return item;
367
+ }
368
+ }
369
+ return null;
370
+ };
371
+ // Check typed arrays (TXT, txt_records, etc.)
372
+ for (const [key, val] of Object.entries(records)) {
373
+ if (Array.isArray(val)) {
374
+ const found = searchObj(val);
375
+ if (found)
376
+ return found;
377
+ }
378
+ }
379
+ // Check numbered entries (DirectAdmin format: "0": "TXT name=x._domainkey value=...")
380
+ for (const [key, val] of Object.entries(records)) {
381
+ const v = String(val);
382
+ if (v.includes('_domainkey') && v.includes('DKIM1')) {
383
+ // Extract the value part
384
+ const valueMatch = v.match(/value=(.+?)(?:\s+ttl=|$)/);
385
+ return valueMatch ? valueMatch[1].trim().replace(/^"|"$/g, '') : v;
386
+ }
387
+ if (key.includes('_domainkey') && v.includes('DKIM1')) {
388
+ return v.replace(/^"|"$/g, '');
389
+ }
390
+ }
391
+ return null;
392
+ }
393
+ catch {
394
+ return null;
395
+ }
396
+ }
397
+ // === Mailing Lists ===
398
+ async function listMailingLists(creds, domain) {
399
+ const result = await daRequest(creds, `CMD_API_EMAIL_LIST?domain=${encodeURIComponent(domain)}&action=list`);
400
+ if (Array.isArray(result))
401
+ return result;
402
+ if (result.list)
403
+ return result.list;
404
+ return Object.keys(result).filter((k) => k !== 'error' && k !== 'text' && k !== 'details');
405
+ }
406
+ async function getMailingListMembers(creds, domain, name) {
407
+ const result = await daRequest(creds, `CMD_API_EMAIL_LIST?domain=${encodeURIComponent(domain)}&action=view&name=${encodeURIComponent(name)}`);
408
+ if (Array.isArray(result))
409
+ return result;
410
+ if (result.list)
411
+ return result.list;
412
+ return Object.keys(result).filter((k) => k !== 'error' && k !== 'text' && k !== 'details');
413
+ }
414
+ async function createMailingList(creds, domain, name) {
415
+ return daRequest(creds, 'CMD_API_EMAIL_LIST', 'POST', {
416
+ action: 'create',
417
+ domain,
418
+ name,
419
+ });
420
+ }
421
+ async function deleteMailingList(creds, domain, name) {
422
+ return daRequest(creds, 'CMD_API_EMAIL_LIST', 'POST', {
423
+ action: 'delete',
424
+ domain,
425
+ select0: name,
426
+ });
427
+ }
428
+ async function addMailingListMember(creds, domain, name, email) {
429
+ return daRequest(creds, 'CMD_API_EMAIL_LIST', 'POST', {
430
+ action: 'add',
431
+ domain,
432
+ name,
433
+ email,
434
+ });
435
+ }
436
+ async function removeMailingListMember(creds, domain, name, email) {
437
+ return daRequest(creds, 'CMD_API_EMAIL_LIST', 'POST', {
438
+ action: 'delete_subscriber',
439
+ domain,
440
+ name,
441
+ select0: email,
442
+ });
443
+ }
444
+ //# sourceMappingURL=directadmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directadmin.js","sourceRoot":"","sources":["../../src/utils/directadmin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface DnsCheckResult {
2
+ type: string;
3
+ name: string;
4
+ status: 'pass' | 'fail' | 'warn';
5
+ expected: string;
6
+ actual: string;
7
+ message: string;
8
+ }
9
+ export declare function checkMxRecords(domain: string, server: string): Promise<DnsCheckResult>;
10
+ export declare function checkSpfRecord(domain: string): Promise<DnsCheckResult>;
11
+ export declare function checkDkimRecord(domain: string): Promise<DnsCheckResult>;
12
+ export declare function checkDmarcRecord(domain: string): Promise<DnsCheckResult>;
13
+ export declare function checkCustomHostname(domain: string, server: string, subdomain?: string): Promise<DnsCheckResult>;
14
+ export declare function runFullDnsCheck(domain: string, server: string): Promise<DnsCheckResult[]>;