@mx-cartographer/experiences 7.2.0 → 7.2.2
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.
- package/CHANGELOG.md +9 -1
- package/dist/{AccountStore-BL0FE1QL.mjs → AccountStore-DeAQv-kI.mjs} +6 -0
- package/dist/{TransactionStore-B-Tq_YFE.mjs → TransactionStore-DUVfWzsI.mjs} +88 -84
- package/dist/accounts/index.es.js +1 -1
- package/dist/accounts/stores/AccountStore.d.ts +1 -0
- package/dist/cashflow/index.es.js +440 -436
- package/dist/common/index.es.js +3 -3
- package/dist/transactions/index.es.js +2 -2
- package/dist/transactions/stores/TransactionStore.d.ts +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
## [7.
|
|
1
|
+
## [7.2.2] - 11-13-2025
|
|
2
|
+
|
|
3
|
+
- **UPDATED** - Cash Flow onboarding repeating transaction parameters to include user guid and second recurrence day
|
|
4
|
+
|
|
5
|
+
## [7.2.1] - 11-12-2025
|
|
6
|
+
|
|
7
|
+
- **FIXED** - Account balance updates when manual transaction is created
|
|
8
|
+
|
|
9
|
+
## [7.2.0] - 11-10-2025
|
|
2
10
|
|
|
3
11
|
- **UPDATED** - View All link in Micro Insights to match the other experiences repo
|
|
4
12
|
|
|
@@ -223,6 +223,12 @@ class T {
|
|
|
223
223
|
console.error(`Error occurred while updating account: ${e}`);
|
|
224
224
|
}
|
|
225
225
|
};
|
|
226
|
+
updateAccountBalance = (t, e) => {
|
|
227
|
+
const n = this.accounts.find((s) => s.guid === t);
|
|
228
|
+
n && a(() => {
|
|
229
|
+
n.balance = (n.balance || 0) + e;
|
|
230
|
+
});
|
|
231
|
+
};
|
|
226
232
|
updateAccountFiltering = async (t, e) => {
|
|
227
233
|
for (const n of t) {
|
|
228
234
|
const s = this.accounts.find((r) => r.guid === n);
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { jsx as C } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
2
|
+
import P from "@mui/material/Box";
|
|
3
|
+
import U from "@mui/material/FormControlLabel";
|
|
4
|
+
import K from "@mui/material/Radio";
|
|
5
|
+
import V from "@mui/material/styles/useTheme";
|
|
6
|
+
import v from "@mui/material/Tooltip";
|
|
7
7
|
import { makeAutoObservable as y, runInAction as d } from "mobx";
|
|
8
8
|
import { endOfToday as D } from "date-fns/endOfToday";
|
|
9
|
-
import { formatISO as
|
|
10
|
-
import { fromUnixTime as
|
|
11
|
-
import { getUnixTime as
|
|
12
|
-
import { isBefore as
|
|
9
|
+
import { formatISO as B } from "date-fns/formatISO";
|
|
10
|
+
import { fromUnixTime as h } from "date-fns/fromUnixTime";
|
|
11
|
+
import { getUnixTime as u } from "date-fns/getUnixTime";
|
|
12
|
+
import { isBefore as Y } from "date-fns/isBefore";
|
|
13
13
|
import { startOfMonth as R } from "date-fns/startOfMonth";
|
|
14
|
-
import { startOfToday as
|
|
15
|
-
import { subDays as
|
|
16
|
-
import { O as n, a as
|
|
14
|
+
import { startOfToday as b } from "date-fns/startOfToday";
|
|
15
|
+
import { subDays as F } from "date-fns/subDays";
|
|
16
|
+
import { O as n, a as G, T as w } from "./User-DaJAQ09j.mjs";
|
|
17
17
|
import { T as p } from "./TransactionApi-B3Tksf7L.mjs";
|
|
18
18
|
import { b as W } from "./Category-CevNQ03n.mjs";
|
|
19
19
|
import { f as z } from "./exportTransactionsToCSV-D8TTNrrE.mjs";
|
|
@@ -22,30 +22,30 @@ import { f as g, D as O, O as $ } from "./Dialog-CWW597AF.mjs";
|
|
|
22
22
|
import { endOfMonth as X } from "date-fns/endOfMonth";
|
|
23
23
|
import { B as f } from "./BeatApi-DhJpgCLz.mjs";
|
|
24
24
|
const j = ({
|
|
25
|
-
checked:
|
|
25
|
+
checked: S = !1,
|
|
26
26
|
label: t,
|
|
27
27
|
sx: a = {},
|
|
28
28
|
tooltip: e = "",
|
|
29
|
-
value:
|
|
29
|
+
value: c
|
|
30
30
|
}) => {
|
|
31
|
-
const _ =
|
|
31
|
+
const _ = V(), i = _.palette.mode === "light" ? _.palette.grey[400] : _.palette.grey[700], A = S ? _.palette.action.active : i;
|
|
32
32
|
return /* @__PURE__ */ C(
|
|
33
|
-
|
|
33
|
+
P,
|
|
34
34
|
{
|
|
35
35
|
bgcolor: "background.paper",
|
|
36
|
-
border: `${
|
|
37
|
-
borderColor:
|
|
36
|
+
border: `${S ? 3 : 1}px solid`,
|
|
37
|
+
borderColor: A,
|
|
38
38
|
borderRadius: 2,
|
|
39
39
|
mt: -2,
|
|
40
40
|
mx: 8,
|
|
41
41
|
pr: 8,
|
|
42
42
|
py: 4,
|
|
43
43
|
sx: { "&:hover": { borderColor: _.palette.action.active }, ...a },
|
|
44
|
-
children: /* @__PURE__ */ C(
|
|
45
|
-
|
|
44
|
+
children: /* @__PURE__ */ C(v, { title: e, children: /* @__PURE__ */ C(
|
|
45
|
+
U,
|
|
46
46
|
{
|
|
47
47
|
control: /* @__PURE__ */ C(
|
|
48
|
-
|
|
48
|
+
K,
|
|
49
49
|
{
|
|
50
50
|
disableRipple: !0,
|
|
51
51
|
sx: { "&.Mui-checked": { color: _.palette.action.active } }
|
|
@@ -54,12 +54,12 @@ const j = ({
|
|
|
54
54
|
label: t,
|
|
55
55
|
labelPlacement: "start",
|
|
56
56
|
sx: { ml: 0, pl: 8 },
|
|
57
|
-
value:
|
|
57
|
+
value: c
|
|
58
58
|
}
|
|
59
59
|
) })
|
|
60
60
|
}
|
|
61
61
|
);
|
|
62
|
-
}, ft = j,
|
|
62
|
+
}, ft = j, x = {
|
|
63
63
|
ASC: "ASC",
|
|
64
64
|
DESC: "DESC",
|
|
65
65
|
DIRECTION: {
|
|
@@ -322,73 +322,73 @@ const j = ({
|
|
|
322
322
|
category: o.TRANSACTIONS_WIDGET,
|
|
323
323
|
label: r.DELETE_TRANSACTION
|
|
324
324
|
}
|
|
325
|
-
}, Z = async (
|
|
325
|
+
}, Z = async (S, t) => !t || !m[S] ? null : t.sendAnalyticEvent(m[S]), L = {
|
|
326
326
|
FLAG: "flag",
|
|
327
327
|
DATE: "date",
|
|
328
328
|
PAYEE: "payee",
|
|
329
329
|
CATEGORY: "category",
|
|
330
330
|
ACCOUNT: "account",
|
|
331
331
|
AMOUNT: "amount"
|
|
332
|
-
}, q = (
|
|
333
|
-
const
|
|
332
|
+
}, q = (S, t, a, e = []) => {
|
|
333
|
+
const c = t.reduce((A, s) => ({ ...A, [s.guid]: s }), {}), _ = a.reduce((A, s) => ({ ...A, [s.guid]: s }), {}), i = e.reduce((A, s) => {
|
|
334
334
|
const { transaction_guid: l, tag_guid: I } = s;
|
|
335
|
-
if (!
|
|
335
|
+
if (!A[l])
|
|
336
336
|
return {
|
|
337
|
-
...
|
|
337
|
+
...A,
|
|
338
338
|
[l]: [I]
|
|
339
339
|
};
|
|
340
|
-
const E = [...
|
|
340
|
+
const E = [...A[l], I];
|
|
341
341
|
return {
|
|
342
|
-
...
|
|
342
|
+
...A,
|
|
343
343
|
[l]: E
|
|
344
344
|
};
|
|
345
345
|
}, {});
|
|
346
|
-
return
|
|
347
|
-
const s = A
|
|
346
|
+
return S.map((A) => {
|
|
347
|
+
const s = c[A.account_guid], l = A.category_guid ? _[A.category_guid] : null, I = i[A.guid] ?? [];
|
|
348
348
|
return {
|
|
349
|
-
...
|
|
349
|
+
...A,
|
|
350
350
|
account: s?.user_name || "Unknown",
|
|
351
351
|
accountIsClosed: s?.is_closed,
|
|
352
352
|
accountIsHidden: s?.is_hidden,
|
|
353
353
|
category: l?.name || "Uncategorized",
|
|
354
|
-
isIncome:
|
|
355
|
-
isPending:
|
|
354
|
+
isIncome: A.top_level_category_guid === W.INCOME,
|
|
355
|
+
isPending: A.feed_status === G.PENDING,
|
|
356
356
|
number: s?.account_number || "",
|
|
357
|
-
payee:
|
|
357
|
+
payee: A.description,
|
|
358
358
|
tags: I
|
|
359
359
|
};
|
|
360
360
|
});
|
|
361
|
-
}, J = "uncategorized", Q = (
|
|
362
|
-
const i = tt(
|
|
361
|
+
}, J = "uncategorized", Q = (S, t, a, e, c, _) => {
|
|
362
|
+
const i = tt(S, c, _), A = at(i, a, e);
|
|
363
363
|
return t.forEach((s) => {
|
|
364
|
-
const l =
|
|
365
|
-
|
|
366
|
-
}),
|
|
367
|
-
}, tt = (
|
|
364
|
+
const l = A.findIndex((E) => E.guid === s), I = _.filter((E) => E.parent_guid === s);
|
|
365
|
+
A.splice(l + 1, 0, ...I);
|
|
366
|
+
}), A;
|
|
367
|
+
}, tt = (S, t, a) => {
|
|
368
368
|
const {
|
|
369
369
|
accounts: e = [],
|
|
370
|
-
dateRange:
|
|
370
|
+
dateRange: c = { start: R(b()), end: D() },
|
|
371
371
|
custom: _ = () => !0,
|
|
372
372
|
searchTerm: i = "",
|
|
373
|
-
showSplits:
|
|
374
|
-
} =
|
|
375
|
-
return a.filter((s) =>
|
|
373
|
+
showSplits: A = !1
|
|
374
|
+
} = S;
|
|
375
|
+
return a.filter((s) => A ? !s.has_been_split : !s.parent_guid).filter((s) => !!e.find((l) => l === s.account_guid)).filter((s) => s.date >= u(c.start) && s.date <= u(c.end)).filter(_).filter((s) => {
|
|
376
376
|
if (i === J && s.has_been_split)
|
|
377
377
|
return !1;
|
|
378
378
|
if (/^spl/i.test(i) && (s.has_been_split || s.parent_guid))
|
|
379
379
|
return !0;
|
|
380
380
|
const I = s.tags.some(
|
|
381
|
-
(
|
|
382
|
-
), E =
|
|
383
|
-
return
|
|
381
|
+
(M) => N(i, t.find((H) => H.guid === M)?.name)
|
|
382
|
+
), E = h(s.date);
|
|
383
|
+
return N(i, s.payee) || N(i, s.feed_description) || N(i, s.category) || N(i, g(E, O.MONTH)) || N(i, g(E, O.DAY)) || N(i, g(E, O.FULL_MONTH_DAY)) || N(i, g(E, O.MONTH_DAY_YEAR)) || N(i, k(E, $)) || N(i, s.account) || N(i, `${s.amount}`) || N(i, s.memo) || I;
|
|
384
384
|
});
|
|
385
|
-
}, at = (
|
|
386
|
-
const _ = t, i = (e[_] || "") > (
|
|
387
|
-
let
|
|
388
|
-
return (t === L.DATE || t === L.AMOUNT) && (
|
|
389
|
-
}),
|
|
390
|
-
const a =
|
|
391
|
-
return a.every((
|
|
385
|
+
}, at = (S, t, a) => [...S].sort((e, c) => {
|
|
386
|
+
const _ = t, i = (e[_] || "") > (c[_] || "");
|
|
387
|
+
let A = i ? -1 : 1, s = i ? 1 : -1;
|
|
388
|
+
return (t === L.DATE || t === L.AMOUNT) && (A = i ? 1 : -1, s = i ? -1 : 1), a === x.ASC ? A : s;
|
|
389
|
+
}), N = (S, t) => {
|
|
390
|
+
const a = S.toLowerCase().split(" "), e = t?.toString().toLowerCase() ?? "";
|
|
391
|
+
return a.every((c) => e.indexOf(c) > -1);
|
|
392
392
|
}, et = {
|
|
393
393
|
account_guid: "",
|
|
394
394
|
amount: 0,
|
|
@@ -397,7 +397,7 @@ const j = ({
|
|
|
397
397
|
description: "",
|
|
398
398
|
duplicate: !1,
|
|
399
399
|
feed_description: "",
|
|
400
|
-
feed_status:
|
|
400
|
+
feed_status: G.POSTED,
|
|
401
401
|
feed_transaction_date: 0,
|
|
402
402
|
has_been_split: !1,
|
|
403
403
|
has_been_viewed: !1,
|
|
@@ -410,7 +410,7 @@ const j = ({
|
|
|
410
410
|
is_subscription: !1,
|
|
411
411
|
is_void: !1,
|
|
412
412
|
revision: 1,
|
|
413
|
-
transaction_type:
|
|
413
|
+
transaction_type: w.DEBIT,
|
|
414
414
|
user_guid: "",
|
|
415
415
|
is_duplicate: !1,
|
|
416
416
|
feed_transacted_at: 0,
|
|
@@ -449,7 +449,7 @@ class it {
|
|
|
449
449
|
this.height = t, this.width = a;
|
|
450
450
|
};
|
|
451
451
|
toggleSplit = (t) => {
|
|
452
|
-
const a = [...this.expandedSplits], e = this.expandedSplits.findIndex((
|
|
452
|
+
const a = [...this.expandedSplits], e = this.expandedSplits.findIndex((c) => c === t);
|
|
453
453
|
e >= 0 ? a.splice(e, 1) : a.push(t), this.expandedSplits = a;
|
|
454
454
|
};
|
|
455
455
|
clearExpandedSplits = () => {
|
|
@@ -465,12 +465,12 @@ class mt {
|
|
|
465
465
|
api = new p("/", "");
|
|
466
466
|
beatApi = new f("/", "");
|
|
467
467
|
associatedBeats = [];
|
|
468
|
-
cachedStartDate =
|
|
468
|
+
cachedStartDate = F(b(), 90);
|
|
469
469
|
filter = {};
|
|
470
470
|
isLoading = !0;
|
|
471
471
|
rawTransactions = [];
|
|
472
472
|
sortColumn = L.DATE;
|
|
473
|
-
sortDirection =
|
|
473
|
+
sortDirection = x.DESC;
|
|
474
474
|
taggings = [];
|
|
475
475
|
tags = [];
|
|
476
476
|
transactionRules = [];
|
|
@@ -525,7 +525,7 @@ class mt {
|
|
|
525
525
|
};
|
|
526
526
|
addOrUpdateTransactionRule = async (t, a) => {
|
|
527
527
|
const e = this.transactionRules.find(
|
|
528
|
-
(
|
|
528
|
+
(c) => c.guid === a.user_transaction_rule_guid
|
|
529
529
|
);
|
|
530
530
|
e ? await this.api.updateTransactionRule({
|
|
531
531
|
...e,
|
|
@@ -539,7 +539,11 @@ class mt {
|
|
|
539
539
|
};
|
|
540
540
|
addTransaction = async (t) => {
|
|
541
541
|
const a = await this.api.addTransaction(t);
|
|
542
|
-
|
|
542
|
+
if (a) {
|
|
543
|
+
d(() => this.rawTransactions = [a, ...this.transactions]);
|
|
544
|
+
const e = a.transaction_type === w.CREDIT ? a.amount : -a.amount;
|
|
545
|
+
this.globalStore.accountStore.updateAccountBalance(a.account_guid, e);
|
|
546
|
+
}
|
|
543
547
|
};
|
|
544
548
|
augmentTransactions = (t) => q(
|
|
545
549
|
t,
|
|
@@ -549,8 +553,8 @@ class mt {
|
|
|
549
553
|
);
|
|
550
554
|
getTransactionData = () => ({});
|
|
551
555
|
loadAssociatedBeats = async (t, a) => {
|
|
552
|
-
const e = t ?
|
|
553
|
-
d(() => this.associatedBeats =
|
|
556
|
+
const e = t ? B(t, { representation: "date" }) : void 0, c = a ?? await this.beatApi.getBeatsWithAssociatedTransaction(e);
|
|
557
|
+
d(() => this.associatedBeats = c);
|
|
554
558
|
};
|
|
555
559
|
loadTags = async () => {
|
|
556
560
|
const t = await this.api.getTags();
|
|
@@ -567,12 +571,12 @@ class mt {
|
|
|
567
571
|
loadTransactions = async (t = this.cachedStartDate, a = D(), e) => {
|
|
568
572
|
this.setIsLoading(!0), this.rawTransactions = [];
|
|
569
573
|
try {
|
|
570
|
-
const
|
|
574
|
+
const c = e ?? await this.api.getTransactionsByDateRange(u(t), u(a));
|
|
571
575
|
d(() => {
|
|
572
|
-
this.rawTransactions =
|
|
576
|
+
this.rawTransactions = c;
|
|
573
577
|
});
|
|
574
|
-
} catch (
|
|
575
|
-
console.error(`Error occurred while loading transactions: ${
|
|
578
|
+
} catch (c) {
|
|
579
|
+
console.error(`Error occurred while loading transactions: ${c}`);
|
|
576
580
|
}
|
|
577
581
|
this.setIsLoading(!1);
|
|
578
582
|
};
|
|
@@ -580,7 +584,7 @@ class mt {
|
|
|
580
584
|
loadTransactionsByDateRange = async (t, a) => {
|
|
581
585
|
console.warn("DEPRECATED: loadTransactionsByDateRange will be removed"), this.setFilter({
|
|
582
586
|
...this.filter,
|
|
583
|
-
dateRange: { start:
|
|
587
|
+
dateRange: { start: h(a), end: h(t) }
|
|
584
588
|
});
|
|
585
589
|
};
|
|
586
590
|
modifyTransactionByAccountGuid = (t, a) => {
|
|
@@ -603,7 +607,7 @@ class mt {
|
|
|
603
607
|
}
|
|
604
608
|
};
|
|
605
609
|
setFilter = (t) => {
|
|
606
|
-
this.filter = t, t.dateRange &&
|
|
610
|
+
this.filter = t, t.dateRange && Y(t.dateRange.start, this.cachedStartDate) && this.loadTransactions(t.dateRange.start, D()).then(() => {
|
|
607
611
|
t.dateRange && (this.cachedStartDate = t.dateRange.start);
|
|
608
612
|
});
|
|
609
613
|
};
|
|
@@ -612,10 +616,10 @@ class mt {
|
|
|
612
616
|
this.sortColumn = t, this.sortDirection = a;
|
|
613
617
|
};
|
|
614
618
|
splitTransaction = async (t, a) => {
|
|
615
|
-
const e = await this.api.updateTransaction(t),
|
|
619
|
+
const e = await this.api.updateTransaction(t), c = [];
|
|
616
620
|
for (let i = 0; i < a.length; i++) {
|
|
617
|
-
const
|
|
618
|
-
|
|
621
|
+
const A = await this.api.addTransaction(a[i]);
|
|
622
|
+
c.push(A);
|
|
619
623
|
}
|
|
620
624
|
const _ = this.transactions.findIndex((i) => i.guid === t.guid);
|
|
621
625
|
_ >= 0 && d(
|
|
@@ -623,7 +627,7 @@ class mt {
|
|
|
623
627
|
...this.transactions.slice(0, _),
|
|
624
628
|
e,
|
|
625
629
|
...this.transactions.slice(_ + 1),
|
|
626
|
-
...
|
|
630
|
+
...c
|
|
627
631
|
]
|
|
628
632
|
);
|
|
629
633
|
};
|
|
@@ -632,22 +636,22 @@ class mt {
|
|
|
632
636
|
await this.api.removeTransactionSplit(t);
|
|
633
637
|
const e = [...this.transactions];
|
|
634
638
|
a.forEach((i) => {
|
|
635
|
-
const
|
|
636
|
-
|
|
639
|
+
const A = e.findIndex((s) => s.guid === i.guid);
|
|
640
|
+
A >= 0 && e.splice(A, 1);
|
|
637
641
|
});
|
|
638
|
-
const
|
|
639
|
-
_.has_been_split = !1,
|
|
642
|
+
const c = e.findIndex((i) => i.guid === t), _ = e[c];
|
|
643
|
+
_.has_been_split = !1, c >= 0 && d(
|
|
640
644
|
() => this.rawTransactions = [
|
|
641
|
-
...e.slice(0,
|
|
645
|
+
...e.slice(0, c),
|
|
642
646
|
_,
|
|
643
|
-
...e.slice(
|
|
647
|
+
...e.slice(c + 1)
|
|
644
648
|
]
|
|
645
649
|
);
|
|
646
650
|
};
|
|
647
651
|
updateTaggings = async (t, a) => {
|
|
648
|
-
const e = this.taggings.filter((i) => i.transaction_guid === a),
|
|
652
|
+
const e = this.taggings.filter((i) => i.transaction_guid === a), c = new Set(e.map((i) => i.tag_guid)), _ = new Set(t);
|
|
649
653
|
for (const i of t)
|
|
650
|
-
|
|
654
|
+
c.has(i) || await this.addTagging(i, a);
|
|
651
655
|
for (const i of e)
|
|
652
656
|
_.has(i.tag_guid) || await this.removeTagging(i.guid);
|
|
653
657
|
await this.loadTaggings();
|
|
@@ -656,7 +660,7 @@ class mt {
|
|
|
656
660
|
await this.api.updateTag(t), await this.loadTags();
|
|
657
661
|
};
|
|
658
662
|
updateTransaction = async (t) => {
|
|
659
|
-
const a = await this.api.updateTransaction(t), e = this.transactions.findIndex((
|
|
663
|
+
const a = await this.api.updateTransaction(t), e = this.transactions.findIndex((c) => c.guid === t.guid);
|
|
660
664
|
e >= 0 && d(
|
|
661
665
|
() => this.rawTransactions = [
|
|
662
666
|
...this.transactions.slice(0, e),
|
|
@@ -25,7 +25,7 @@ import { F as G1, M as K1 } from "../ConnectDrawer-CPTXh70j.mjs";
|
|
|
25
25
|
import t1 from "@mui/material/ListItem";
|
|
26
26
|
import { M as $ } from "../MiniWidgetContainer-DTQdRK-3.mjs";
|
|
27
27
|
import l1 from "@mui/material/Stack";
|
|
28
|
-
import { A as P1, a as Y1 } from "../AccountStore-
|
|
28
|
+
import { A as P1, a as Y1 } from "../AccountStore-DeAQv-kI.mjs";
|
|
29
29
|
const i1 = () => {
|
|
30
30
|
const [c, H] = d.useState(""), { accounts: C } = w(), { selectedAccounts: l } = S(), { setSelectedAccount: h, setSelectedMember: r } = z(), { members: L } = T(), { onEvent: f } = D(), s = [...new Set(l.map((t) => t.account_type))], a = l.find((t) => c === t.guid), u = d.useMemo(
|
|
31
31
|
() => l.filter((t) => t.is_hidden),
|
|
@@ -41,5 +41,6 @@ export declare class AccountStore {
|
|
|
41
41
|
refreshMembers: () => Promise<void>;
|
|
42
42
|
removeAccount: (accountGuid: string) => Promise<void>;
|
|
43
43
|
updateAccount: (account: Account) => Promise<void>;
|
|
44
|
+
updateAccountBalance: (accountGuid: string, balanceChange: number) => void;
|
|
44
45
|
updateAccountFiltering: (guids: string[], isExcluded: boolean) => Promise<void>;
|
|
45
46
|
}
|