@burdenoff/microfe-brainyrich 2026.512.1 → 2026.705.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.
- package/dist/brainyrich/BrainyRichRoot.js +53 -88
- package/dist/brainyrich/BrainyRichRoot.js.map +1 -1
- package/dist/brainyrich/BrainyRichRoutes.js +15 -35
- package/dist/brainyrich/BrainyRichRoutes.js.map +1 -1
- package/dist/brainyrich/hooks/useBrainyRichApi.js +543 -0
- package/dist/brainyrich/hooks/useBrainyRichApi.js.map +1 -0
- package/dist/brainyrich/index.js +0 -1
- package/dist/brainyrich/pages/AccountsPage.js +690 -160
- package/dist/brainyrich/pages/AccountsPage.js.map +1 -1
- package/dist/brainyrich/pages/AiAssistantPage.js +537 -363
- package/dist/brainyrich/pages/AiAssistantPage.js.map +1 -1
- package/dist/brainyrich/pages/AnalyticsPage.js +587 -268
- package/dist/brainyrich/pages/AnalyticsPage.js.map +1 -1
- package/dist/brainyrich/pages/DashboardPage.js +350 -232
- package/dist/brainyrich/pages/DashboardPage.js.map +1 -1
- package/dist/brainyrich/pages/FamilyPage.js +550 -337
- package/dist/brainyrich/pages/FamilyPage.js.map +1 -1
- package/dist/brainyrich/pages/GoalsPage.js +775 -142
- package/dist/brainyrich/pages/GoalsPage.js.map +1 -1
- package/dist/brainyrich/pages/InvestmentsPage.js +410 -311
- package/dist/brainyrich/pages/InvestmentsPage.js.map +1 -1
- package/dist/brainyrich/pages/PortfoliosPage.js +823 -154
- package/dist/brainyrich/pages/PortfoliosPage.js.map +1 -1
- package/dist/brainyrich/pages/ReportsPage.js +388 -251
- package/dist/brainyrich/pages/ReportsPage.js.map +1 -1
- package/dist/brainyrich/pages/RiskPage.js +411 -196
- package/dist/brainyrich/pages/RiskPage.js.map +1 -1
- package/dist/brainyrich/pages/TaxPage.js +622 -221
- package/dist/brainyrich/pages/TaxPage.js.map +1 -1
- package/dist/brainyrich/pages/_shared.js +222 -41
- package/dist/brainyrich/pages/_shared.js.map +1 -1
- package/dist/index.js +2 -3
- package/package.json +1 -1
- package/dist/brainyrich/BrainyRichRoot.d.ts +0 -5
- package/dist/brainyrich/BrainyRichRoot.d.ts.map +0 -1
- package/dist/brainyrich/BrainyRichRoutes.d.ts +0 -2
- package/dist/brainyrich/BrainyRichRoutes.d.ts.map +0 -1
- package/dist/brainyrich/index.d.ts +0 -5
- package/dist/brainyrich/index.d.ts.map +0 -1
- package/dist/brainyrich/pages/AccountsPage.d.ts +0 -2
- package/dist/brainyrich/pages/AccountsPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/AdvisorsPage.d.ts +0 -2
- package/dist/brainyrich/pages/AdvisorsPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/AdvisorsPage.js +0 -375
- package/dist/brainyrich/pages/AdvisorsPage.js.map +0 -1
- package/dist/brainyrich/pages/AiAssistantPage.d.ts +0 -2
- package/dist/brainyrich/pages/AiAssistantPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/AnalyticsPage.d.ts +0 -2
- package/dist/brainyrich/pages/AnalyticsPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/AssistantPage.d.ts +0 -2
- package/dist/brainyrich/pages/AssistantPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/AssistantPage.js +0 -332
- package/dist/brainyrich/pages/AssistantPage.js.map +0 -1
- package/dist/brainyrich/pages/DashboardPage.d.ts +0 -2
- package/dist/brainyrich/pages/DashboardPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/EstatePage.d.ts +0 -2
- package/dist/brainyrich/pages/EstatePage.d.ts.map +0 -1
- package/dist/brainyrich/pages/EstatePage.js +0 -269
- package/dist/brainyrich/pages/EstatePage.js.map +0 -1
- package/dist/brainyrich/pages/FamilyPage.d.ts +0 -2
- package/dist/brainyrich/pages/FamilyPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/GoalsPage.d.ts +0 -2
- package/dist/brainyrich/pages/GoalsPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/InsurancePage.d.ts +0 -2
- package/dist/brainyrich/pages/InsurancePage.d.ts.map +0 -1
- package/dist/brainyrich/pages/InsurancePage.js +0 -181
- package/dist/brainyrich/pages/InsurancePage.js.map +0 -1
- package/dist/brainyrich/pages/InvestmentsPage.d.ts +0 -2
- package/dist/brainyrich/pages/InvestmentsPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/MarketplacePage.d.ts +0 -2
- package/dist/brainyrich/pages/MarketplacePage.d.ts.map +0 -1
- package/dist/brainyrich/pages/MarketplacePage.js +0 -450
- package/dist/brainyrich/pages/MarketplacePage.js.map +0 -1
- package/dist/brainyrich/pages/PortfoliosPage.d.ts +0 -2
- package/dist/brainyrich/pages/PortfoliosPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/ReportsPage.d.ts +0 -2
- package/dist/brainyrich/pages/ReportsPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/RiskPage.d.ts +0 -2
- package/dist/brainyrich/pages/RiskPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/TaxPage.d.ts +0 -2
- package/dist/brainyrich/pages/TaxPage.d.ts.map +0 -1
- package/dist/brainyrich/pages/_shared.d.ts +0 -21
- package/dist/brainyrich/pages/_shared.d.ts.map +0 -1
- package/dist/brainyrich/providers/BrainyRichProvider.d.ts +0 -6
- package/dist/brainyrich/providers/BrainyRichProvider.d.ts.map +0 -1
- package/dist/brainyrich/store/brainyrichStore.d.ts +0 -19
- package/dist/brainyrich/store/brainyrichStore.d.ts.map +0 -1
- package/dist/brainyrich/store/brainyrichStore.js +0 -272
- package/dist/brainyrich/store/brainyrichStore.js.map +0 -1
- package/dist/brainyrich/types/index.d.ts +0 -116
- package/dist/brainyrich/types/index.d.ts.map +0 -1
- package/dist/brainyrich/utils/cn.d.ts +0 -4
- package/dist/brainyrich/utils/cn.d.ts.map +0 -1
- package/dist/brainyrich/utils/i18n.d.ts +0 -6
- package/dist/brainyrich/utils/i18n.d.ts.map +0 -1
- package/dist/brainyrich/utils/navigation.d.ts +0 -2
- package/dist/brainyrich/utils/navigation.d.ts.map +0 -1
- package/dist/dev/main.d.ts +0 -2
- package/dist/dev/main.d.ts.map +0 -1
- package/dist/generated/global-operations.d.ts +0 -2
- package/dist/generated/global-operations.d.ts.map +0 -1
- package/dist/generated/global-types.d.ts +0 -18199
- package/dist/generated/global-types.d.ts.map +0 -1
- package/dist/generated/wspace-operations.d.ts +0 -2
- package/dist/generated/wspace-operations.d.ts.map +0 -1
- package/dist/generated/wspace-types.d.ts +0 -43046
- package/dist/generated/wspace-types.d.ts.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
import { useBrainyRich as e } from "../providers/BrainyRichProvider.js";
|
|
2
|
+
import { useMutation as t, useQuery as n, useQueryClient as r } from "@tanstack/react-query";
|
|
3
|
+
import { graphqlFetch as i } from "@burdenoff/fe-libs/shared/graphql";
|
|
4
|
+
//#region src/brainyrich/hooks/useBrainyRichApi.ts
|
|
5
|
+
var ee = () => {
|
|
6
|
+
let e = globalThis;
|
|
7
|
+
e.__graphqlFetchResponseCache?.clear(), e.__graphqlFetchPendingResponses?.clear(), e.__boffGraphQLResponseCache?.clear();
|
|
8
|
+
}, a = async (e, t, n) => {
|
|
9
|
+
let r = await i({
|
|
10
|
+
gateway: "workspace",
|
|
11
|
+
baseUrl: n,
|
|
12
|
+
query: e,
|
|
13
|
+
variables: t,
|
|
14
|
+
workspaceToken: !0
|
|
15
|
+
});
|
|
16
|
+
if (r.errors?.length) throw Error(r.errors[0]?.message ?? "GraphQL request failed");
|
|
17
|
+
if (!r.data) throw Error("GraphQL response did not include data");
|
|
18
|
+
return r.data;
|
|
19
|
+
}, o = async (e, t, n) => {
|
|
20
|
+
let r = await a(e, t, n);
|
|
21
|
+
return ee(), r;
|
|
22
|
+
}, s = {
|
|
23
|
+
netWorth: ["brainyrich", "net-worth"],
|
|
24
|
+
accounts: ["brainyrich", "accounts"],
|
|
25
|
+
account: (e) => [
|
|
26
|
+
"brainyrich",
|
|
27
|
+
"account",
|
|
28
|
+
e
|
|
29
|
+
],
|
|
30
|
+
portfolios: ["brainyrich", "portfolios"],
|
|
31
|
+
portfolio: (e) => [
|
|
32
|
+
"brainyrich",
|
|
33
|
+
"portfolio",
|
|
34
|
+
e
|
|
35
|
+
],
|
|
36
|
+
holdings: ["brainyrich", "holdings"],
|
|
37
|
+
modelPortfolios: ["brainyrich", "model-portfolios"],
|
|
38
|
+
modelPortfolio: (e) => [
|
|
39
|
+
"brainyrich",
|
|
40
|
+
"model-portfolio",
|
|
41
|
+
e
|
|
42
|
+
],
|
|
43
|
+
goals: ["brainyrich", "goals"],
|
|
44
|
+
goal: (e) => [
|
|
45
|
+
"brainyrich",
|
|
46
|
+
"goal",
|
|
47
|
+
e
|
|
48
|
+
],
|
|
49
|
+
goalFundings: (e) => [
|
|
50
|
+
"brainyrich",
|
|
51
|
+
"goal-fundings",
|
|
52
|
+
e
|
|
53
|
+
],
|
|
54
|
+
households: ["brainyrich", "households"],
|
|
55
|
+
household: (e) => [
|
|
56
|
+
"brainyrich",
|
|
57
|
+
"household",
|
|
58
|
+
e
|
|
59
|
+
],
|
|
60
|
+
insights: ["brainyrich", "insights"],
|
|
61
|
+
insight: (e) => [
|
|
62
|
+
"brainyrich",
|
|
63
|
+
"insight",
|
|
64
|
+
e
|
|
65
|
+
],
|
|
66
|
+
transactions: ["brainyrich", "transactions"],
|
|
67
|
+
rebalances: ["brainyrich", "rebalance-proposals"],
|
|
68
|
+
health: ["brainyrich", "health"]
|
|
69
|
+
}, c = { limit: 100 }, l = "\n id workspaceId accountId portfolioId symbol name assetClass quantity lastPrice\n costBasis marketValue currency asOf createdAt updatedAt\n", u = "\n id workspaceId accountId holdingId type symbol quantity price amount fee currency\n tradeDate settleDate notes createdAt updatedAt\n", d = "\n id workspaceId ownerId householdId name type status institution accountMask\n cashBalance currency isManual createdAt updatedAt\n", f = "\n id workspaceId ownerId householdId name description status baseCurrency\n modelPortfolioId driftThresholdPct targetAllocation tags createdAt updatedAt\n", p = "\n id workspaceId modelPortfolioId assetClass targetPct createdAt updatedAt\n", m = "\n id workspaceId name description riskProfile baseCurrency isActive createdAt updatedAt\n", h = "\n id workspaceId goalId accountId allocationPct fixedAmount createdAt updatedAt\n", g = "\n id workspaceId ownerId householdId name type status projection targetAmount\n targetDate monthlyContribution priority currency notes tags createdAt updatedAt\n", _ = "\n id workspaceId name status riskProfile advisorId aum currency primaryContactName\n primaryContactEmail notes tags createdAt updatedAt\n", v = "\n id workspaceId ownerId type severity status title detail metrics subjectId\n subjectType acknowledgedById resolvedAt createdAt updatedAt\n", y = "\n id workspaceId portfolioId householdId status driftPct rationale trades\n proposedById approvedById executedAt createdAt updatedAt\n", b = "\n workspaceId ownerId totalNetWorth totalMarketValue totalCash accountCount currency\n byAssetClass { assetClass marketValue }\n", x = (t) => {
|
|
70
|
+
let { apiGatewayUrl: r } = e();
|
|
71
|
+
return n({
|
|
72
|
+
queryKey: [...s.netWorth, t ?? "me"],
|
|
73
|
+
queryFn: async () => (await a(`query BraNetWorthSummary($ownerId: ID) {
|
|
74
|
+
braNetWorthSummary(ownerId: $ownerId) { ${b} }
|
|
75
|
+
}`, { ownerId: t }, r)).braNetWorthSummary
|
|
76
|
+
});
|
|
77
|
+
}, S = (t = {}) => {
|
|
78
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
79
|
+
queryKey: [...s.accounts, t],
|
|
80
|
+
queryFn: async () => (await a(`query BraListAccounts($householdId: ID, $status: BraAccountStatus, $pagination: PaginationInput) {
|
|
81
|
+
braListAccounts(householdId: $householdId, status: $status, pagination: $pagination) {
|
|
82
|
+
items { ${d} }
|
|
83
|
+
pageInfo { cursor hasMore }
|
|
84
|
+
}
|
|
85
|
+
}`, {
|
|
86
|
+
householdId: t.householdId,
|
|
87
|
+
status: t.status,
|
|
88
|
+
pagination: t.pagination ?? c
|
|
89
|
+
}, r)).braListAccounts
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
...i,
|
|
93
|
+
data: i.data?.items ?? [],
|
|
94
|
+
pageInfo: i.data?.pageInfo
|
|
95
|
+
};
|
|
96
|
+
}, C = (t) => {
|
|
97
|
+
let { apiGatewayUrl: r } = e();
|
|
98
|
+
return n({
|
|
99
|
+
queryKey: s.account(t ?? ""),
|
|
100
|
+
enabled: !!t,
|
|
101
|
+
queryFn: async () => (await a(`query BraAccount($id: ID!) {
|
|
102
|
+
braAccount(id: $id) {
|
|
103
|
+
${d}
|
|
104
|
+
holdings { ${l} }
|
|
105
|
+
transactions { ${u} }
|
|
106
|
+
}
|
|
107
|
+
}`, { id: t }, r)).braAccount
|
|
108
|
+
});
|
|
109
|
+
}, w = () => {
|
|
110
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
111
|
+
return t({
|
|
112
|
+
mutationFn: async (e) => (await o(`mutation BraCreateAccount($input: BraCreateAccountInput!) {
|
|
113
|
+
braCreateAccount(input: $input) { ${d} }
|
|
114
|
+
}`, { input: e }, n)).braCreateAccount,
|
|
115
|
+
onSuccess: () => {
|
|
116
|
+
i.invalidateQueries({ queryKey: s.accounts }), i.invalidateQueries({ queryKey: s.netWorth });
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}, T = () => {
|
|
120
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
121
|
+
return t({
|
|
122
|
+
mutationFn: async (e) => (await o(`mutation BraUpdateAccount($id: ID!, $input: BraUpdateAccountInput!) {
|
|
123
|
+
braUpdateAccount(id: $id, input: $input) { ${d} }
|
|
124
|
+
}`, e, n)).braUpdateAccount,
|
|
125
|
+
onSuccess: (e) => {
|
|
126
|
+
i.invalidateQueries({ queryKey: s.accounts }), i.invalidateQueries({ queryKey: s.account(e.id) }), i.invalidateQueries({ queryKey: s.netWorth });
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}, E = () => {
|
|
130
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
131
|
+
return t({
|
|
132
|
+
mutationFn: async (e) => (await o("mutation BraArchiveAccount($id: ID!) { braArchiveAccount(id: $id) }", { id: e }, n)).braArchiveAccount,
|
|
133
|
+
onSuccess: () => {
|
|
134
|
+
i.invalidateQueries({ queryKey: s.accounts }), i.invalidateQueries({ queryKey: s.netWorth });
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}, D = (t = {}) => {
|
|
138
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
139
|
+
queryKey: [...s.portfolios, t],
|
|
140
|
+
queryFn: async () => (await a(`query BraListPortfolios($householdId: ID, $status: BraPortfolioStatus, $pagination: PaginationInput) {
|
|
141
|
+
braListPortfolios(householdId: $householdId, status: $status, pagination: $pagination) {
|
|
142
|
+
items { ${f} }
|
|
143
|
+
pageInfo { cursor hasMore }
|
|
144
|
+
}
|
|
145
|
+
}`, {
|
|
146
|
+
householdId: t.householdId,
|
|
147
|
+
status: t.status,
|
|
148
|
+
pagination: t.pagination ?? c
|
|
149
|
+
}, r)).braListPortfolios
|
|
150
|
+
});
|
|
151
|
+
return {
|
|
152
|
+
...i,
|
|
153
|
+
data: i.data?.items ?? [],
|
|
154
|
+
pageInfo: i.data?.pageInfo
|
|
155
|
+
};
|
|
156
|
+
}, O = (t) => {
|
|
157
|
+
let { apiGatewayUrl: r } = e();
|
|
158
|
+
return n({
|
|
159
|
+
queryKey: s.portfolio(t ?? ""),
|
|
160
|
+
enabled: !!t,
|
|
161
|
+
queryFn: async () => (await a(`query BraPortfolio($id: ID!) {
|
|
162
|
+
braPortfolio(id: $id) {
|
|
163
|
+
${f}
|
|
164
|
+
holdings { ${l} }
|
|
165
|
+
}
|
|
166
|
+
}`, { id: t }, r)).braPortfolio
|
|
167
|
+
});
|
|
168
|
+
}, k = () => {
|
|
169
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
170
|
+
return t({
|
|
171
|
+
mutationFn: async (e) => (await o(`mutation BraCreatePortfolio($input: BraCreatePortfolioInput!) {
|
|
172
|
+
braCreatePortfolio(input: $input) { ${f} }
|
|
173
|
+
}`, { input: e }, n)).braCreatePortfolio,
|
|
174
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.portfolios })
|
|
175
|
+
});
|
|
176
|
+
}, A = () => {
|
|
177
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
178
|
+
return t({
|
|
179
|
+
mutationFn: async (e) => (await o(`mutation BraUpdatePortfolio($id: ID!, $input: BraUpdatePortfolioInput!) {
|
|
180
|
+
braUpdatePortfolio(id: $id, input: $input) { ${f} }
|
|
181
|
+
}`, e, n)).braUpdatePortfolio,
|
|
182
|
+
onSuccess: (e) => {
|
|
183
|
+
i.invalidateQueries({ queryKey: s.portfolios }), i.invalidateQueries({ queryKey: s.portfolio(e.id) });
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}, j = () => {
|
|
187
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
188
|
+
return t({
|
|
189
|
+
mutationFn: async (e) => (await o("mutation BraArchivePortfolio($id: ID!) { braArchivePortfolio(id: $id) }", { id: e }, n)).braArchivePortfolio,
|
|
190
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.portfolios })
|
|
191
|
+
});
|
|
192
|
+
}, M = (t) => {
|
|
193
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
194
|
+
queryKey: [...s.holdings, t],
|
|
195
|
+
enabled: !!(t.accountId || t.portfolioId),
|
|
196
|
+
queryFn: async () => (await a(`query BraListHoldings($accountId: ID, $portfolioId: ID) {
|
|
197
|
+
braListHoldings(accountId: $accountId, portfolioId: $portfolioId) { ${l} }
|
|
198
|
+
}`, {
|
|
199
|
+
accountId: t.accountId,
|
|
200
|
+
portfolioId: t.portfolioId
|
|
201
|
+
}, r)).braListHoldings
|
|
202
|
+
});
|
|
203
|
+
return {
|
|
204
|
+
...i,
|
|
205
|
+
data: i.data ?? []
|
|
206
|
+
};
|
|
207
|
+
}, N = () => {
|
|
208
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
209
|
+
return t({
|
|
210
|
+
mutationFn: async (e) => (await o(`mutation BraCreateHolding($input: BraCreateHoldingInput!) {
|
|
211
|
+
braCreateHolding(input: $input) { ${l} }
|
|
212
|
+
}`, { input: e }, n)).braCreateHolding,
|
|
213
|
+
onSuccess: (e) => {
|
|
214
|
+
i.invalidateQueries({ queryKey: s.holdings }), i.invalidateQueries({ queryKey: s.account(e.accountId) }), e.portfolioId && i.invalidateQueries({ queryKey: s.portfolio(e.portfolioId) }), i.invalidateQueries({ queryKey: s.netWorth });
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}, P = () => {
|
|
218
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
219
|
+
return t({
|
|
220
|
+
mutationFn: async (e) => (await o(`mutation BraUpdateHolding($id: ID!, $input: BraUpdateHoldingInput!) {
|
|
221
|
+
braUpdateHolding(id: $id, input: $input) { ${l} }
|
|
222
|
+
}`, e, n)).braUpdateHolding,
|
|
223
|
+
onSuccess: (e) => {
|
|
224
|
+
i.invalidateQueries({ queryKey: s.holdings }), i.invalidateQueries({ queryKey: s.account(e.accountId) }), e.portfolioId && i.invalidateQueries({ queryKey: s.portfolio(e.portfolioId) }), i.invalidateQueries({ queryKey: s.netWorth });
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}, F = () => {
|
|
228
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
229
|
+
return t({
|
|
230
|
+
mutationFn: async (e) => (await o("mutation BraDeleteHolding($id: ID!) { braDeleteHolding(id: $id) }", { id: e }, n)).braDeleteHolding,
|
|
231
|
+
onSuccess: () => {
|
|
232
|
+
i.invalidateQueries({ queryKey: s.holdings }), i.invalidateQueries({ queryKey: s.accounts }), i.invalidateQueries({ queryKey: s.portfolios }), i.invalidateQueries({ queryKey: s.netWorth });
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}, I = () => {
|
|
236
|
+
let { apiGatewayUrl: t } = e(), r = n({
|
|
237
|
+
queryKey: s.modelPortfolios,
|
|
238
|
+
queryFn: async () => (await a(`query BraListModelPortfolios {
|
|
239
|
+
braListModelPortfolios {
|
|
240
|
+
${m}
|
|
241
|
+
allocations { ${p} }
|
|
242
|
+
}
|
|
243
|
+
}`, {}, t)).braListModelPortfolios
|
|
244
|
+
});
|
|
245
|
+
return {
|
|
246
|
+
...r,
|
|
247
|
+
data: r.data ?? []
|
|
248
|
+
};
|
|
249
|
+
}, L = (t) => {
|
|
250
|
+
let { apiGatewayUrl: r } = e();
|
|
251
|
+
return n({
|
|
252
|
+
queryKey: s.modelPortfolio(t ?? ""),
|
|
253
|
+
enabled: !!t,
|
|
254
|
+
queryFn: async () => (await a(`query BraModelPortfolio($id: ID!) {
|
|
255
|
+
braModelPortfolio(id: $id) {
|
|
256
|
+
${m}
|
|
257
|
+
allocations { ${p} }
|
|
258
|
+
}
|
|
259
|
+
}`, { id: t }, r)).braModelPortfolio
|
|
260
|
+
});
|
|
261
|
+
}, R = () => {
|
|
262
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
263
|
+
return t({
|
|
264
|
+
mutationFn: async (e) => (await o(`mutation BraCreateModelPortfolio($input: BraCreateModelPortfolioInput!) {
|
|
265
|
+
braCreateModelPortfolio(input: $input) {
|
|
266
|
+
${m}
|
|
267
|
+
allocations { ${p} }
|
|
268
|
+
}
|
|
269
|
+
}`, { input: e }, n)).braCreateModelPortfolio,
|
|
270
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.modelPortfolios })
|
|
271
|
+
});
|
|
272
|
+
}, z = (t = {}) => {
|
|
273
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
274
|
+
queryKey: [...s.goals, t],
|
|
275
|
+
queryFn: async () => (await a(`query BraListGoals($householdId: ID, $status: BraGoalStatus, $pagination: PaginationInput) {
|
|
276
|
+
braListGoals(householdId: $householdId, status: $status, pagination: $pagination) {
|
|
277
|
+
items { ${g} }
|
|
278
|
+
pageInfo { cursor hasMore }
|
|
279
|
+
}
|
|
280
|
+
}`, {
|
|
281
|
+
householdId: t.householdId,
|
|
282
|
+
status: t.status,
|
|
283
|
+
pagination: t.pagination ?? c
|
|
284
|
+
}, r)).braListGoals
|
|
285
|
+
});
|
|
286
|
+
return {
|
|
287
|
+
...i,
|
|
288
|
+
data: i.data?.items ?? [],
|
|
289
|
+
pageInfo: i.data?.pageInfo
|
|
290
|
+
};
|
|
291
|
+
}, te = (t) => {
|
|
292
|
+
let { apiGatewayUrl: r } = e();
|
|
293
|
+
return n({
|
|
294
|
+
queryKey: s.goal(t ?? ""),
|
|
295
|
+
enabled: !!t,
|
|
296
|
+
queryFn: async () => (await a(`query BraGoal($id: ID!) {
|
|
297
|
+
braGoal(id: $id) {
|
|
298
|
+
${g}
|
|
299
|
+
fundings { ${h} }
|
|
300
|
+
}
|
|
301
|
+
}`, { id: t }, r)).braGoal
|
|
302
|
+
});
|
|
303
|
+
}, B = (t) => {
|
|
304
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
305
|
+
queryKey: s.goalFundings(t ?? ""),
|
|
306
|
+
enabled: !!t,
|
|
307
|
+
queryFn: async () => (await a(`query BraListGoalFundings($goalId: ID!) {
|
|
308
|
+
braListGoalFundings(goalId: $goalId) { ${h} }
|
|
309
|
+
}`, { goalId: t }, r)).braListGoalFundings
|
|
310
|
+
});
|
|
311
|
+
return {
|
|
312
|
+
...i,
|
|
313
|
+
data: i.data ?? []
|
|
314
|
+
};
|
|
315
|
+
}, V = () => {
|
|
316
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
317
|
+
return t({
|
|
318
|
+
mutationFn: async (e) => (await o(`mutation BraCreateGoal($input: BraCreateGoalInput!) {
|
|
319
|
+
braCreateGoal(input: $input) { ${g} }
|
|
320
|
+
}`, { input: e }, n)).braCreateGoal,
|
|
321
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.goals })
|
|
322
|
+
});
|
|
323
|
+
}, H = () => {
|
|
324
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
325
|
+
return t({
|
|
326
|
+
mutationFn: async (e) => (await o(`mutation BraUpdateGoal($id: ID!, $input: BraUpdateGoalInput!) {
|
|
327
|
+
braUpdateGoal(id: $id, input: $input) { ${g} }
|
|
328
|
+
}`, e, n)).braUpdateGoal,
|
|
329
|
+
onSuccess: (e) => {
|
|
330
|
+
i.invalidateQueries({ queryKey: s.goals }), i.invalidateQueries({ queryKey: s.goal(e.id) });
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
}, U = () => {
|
|
334
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
335
|
+
return t({
|
|
336
|
+
mutationFn: async (e) => (await o("mutation BraArchiveGoal($id: ID!) { braArchiveGoal(id: $id) }", { id: e }, n)).braArchiveGoal,
|
|
337
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.goals })
|
|
338
|
+
});
|
|
339
|
+
}, W = () => {
|
|
340
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
341
|
+
return t({
|
|
342
|
+
mutationFn: async (e) => (await o(`mutation BraRecalcGoalProjection($id: ID!, $fundedAmount: Float!) {
|
|
343
|
+
braRecalcGoalProjection(id: $id, fundedAmount: $fundedAmount) { ${g} }
|
|
344
|
+
}`, e, n)).braRecalcGoalProjection,
|
|
345
|
+
onSuccess: (e) => {
|
|
346
|
+
i.invalidateQueries({ queryKey: s.goals }), i.invalidateQueries({ queryKey: s.goal(e.id) });
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
}, G = () => {
|
|
350
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
351
|
+
return t({
|
|
352
|
+
mutationFn: async (e) => (await o(`mutation BraLinkGoalFunding($input: BraLinkGoalFundingInput!) {
|
|
353
|
+
braLinkGoalFunding(input: $input) { ${h} }
|
|
354
|
+
}`, { input: e }, n)).braLinkGoalFunding,
|
|
355
|
+
onSuccess: (e) => {
|
|
356
|
+
i.invalidateQueries({ queryKey: s.goalFundings(e.goalId) }), i.invalidateQueries({ queryKey: s.goal(e.goalId) });
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
}, K = () => {
|
|
360
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
361
|
+
return t({
|
|
362
|
+
mutationFn: async (e) => (await o("mutation BraUnlinkGoalFunding($id: ID!) { braUnlinkGoalFunding(id: $id) }", { id: e }, n)).braUnlinkGoalFunding,
|
|
363
|
+
onSuccess: () => {
|
|
364
|
+
i.invalidateQueries({ queryKey: s.goals }), i.invalidateQueries({ queryKey: [...s.goals] }), i.invalidateQueries({ queryKey: ["brainyrich", "goal-fundings"] }), i.invalidateQueries({ queryKey: ["brainyrich", "goal"] });
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
}, q = (t = {}) => {
|
|
368
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
369
|
+
queryKey: [...s.households, t],
|
|
370
|
+
queryFn: async () => (await a(`query BraListHouseholds($status: BraHouseholdStatus, $pagination: PaginationInput) {
|
|
371
|
+
braListHouseholds(status: $status, pagination: $pagination) {
|
|
372
|
+
items { ${_} }
|
|
373
|
+
pageInfo { cursor hasMore }
|
|
374
|
+
}
|
|
375
|
+
}`, {
|
|
376
|
+
status: t.status,
|
|
377
|
+
pagination: t.pagination ?? c
|
|
378
|
+
}, r)).braListHouseholds
|
|
379
|
+
});
|
|
380
|
+
return {
|
|
381
|
+
...i,
|
|
382
|
+
data: i.data?.items ?? [],
|
|
383
|
+
pageInfo: i.data?.pageInfo
|
|
384
|
+
};
|
|
385
|
+
}, J = (t) => {
|
|
386
|
+
let { apiGatewayUrl: r } = e();
|
|
387
|
+
return n({
|
|
388
|
+
queryKey: s.household(t ?? ""),
|
|
389
|
+
enabled: !!t,
|
|
390
|
+
queryFn: async () => (await a(`query BraHousehold($id: ID!) {
|
|
391
|
+
braHousehold(id: $id) { ${_} }
|
|
392
|
+
}`, { id: t }, r)).braHousehold
|
|
393
|
+
});
|
|
394
|
+
}, Y = () => {
|
|
395
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
396
|
+
return t({
|
|
397
|
+
mutationFn: async (e) => (await o(`mutation BraCreateHousehold($input: BraCreateHouseholdInput!) {
|
|
398
|
+
braCreateHousehold(input: $input) { ${_} }
|
|
399
|
+
}`, { input: e }, n)).braCreateHousehold,
|
|
400
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.households })
|
|
401
|
+
});
|
|
402
|
+
}, X = () => {
|
|
403
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
404
|
+
return t({
|
|
405
|
+
mutationFn: async (e) => (await o(`mutation BraUpdateHousehold($id: ID!, $input: BraUpdateHouseholdInput!) {
|
|
406
|
+
braUpdateHousehold(id: $id, input: $input) { ${_} }
|
|
407
|
+
}`, e, n)).braUpdateHousehold,
|
|
408
|
+
onSuccess: (e) => {
|
|
409
|
+
i.invalidateQueries({ queryKey: s.households }), i.invalidateQueries({ queryKey: s.household(e.id) });
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
}, Z = () => {
|
|
413
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
414
|
+
return t({
|
|
415
|
+
mutationFn: async (e) => (await o("mutation BraArchiveHousehold($id: ID!) { braArchiveHousehold(id: $id) }", { id: e }, n)).braArchiveHousehold,
|
|
416
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.households })
|
|
417
|
+
});
|
|
418
|
+
}, Q = (t = {}) => {
|
|
419
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
420
|
+
queryKey: [...s.insights, t],
|
|
421
|
+
queryFn: async () => (await a(`query BraListInsights($severity: BraInsightSeverity, $status: BraInsightStatus, $subjectId: ID, $subjectType: String, $pagination: PaginationInput) {
|
|
422
|
+
braListInsights(severity: $severity, status: $status, subjectId: $subjectId, subjectType: $subjectType, pagination: $pagination) {
|
|
423
|
+
items { ${v} }
|
|
424
|
+
pageInfo { cursor hasMore }
|
|
425
|
+
}
|
|
426
|
+
}`, {
|
|
427
|
+
severity: t.severity,
|
|
428
|
+
status: t.status,
|
|
429
|
+
subjectId: t.subjectId,
|
|
430
|
+
subjectType: t.subjectType,
|
|
431
|
+
pagination: t.pagination ?? c
|
|
432
|
+
}, r)).braListInsights
|
|
433
|
+
});
|
|
434
|
+
return {
|
|
435
|
+
...i,
|
|
436
|
+
data: i.data?.items ?? [],
|
|
437
|
+
pageInfo: i.data?.pageInfo
|
|
438
|
+
};
|
|
439
|
+
}, ne = () => {
|
|
440
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
441
|
+
return t({
|
|
442
|
+
mutationFn: async (e) => (await o(`mutation BraCreateInsight($input: BraCreateInsightInput!) {
|
|
443
|
+
braCreateInsight(input: $input) { ${v} }
|
|
444
|
+
}`, { input: e }, n)).braCreateInsight,
|
|
445
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.insights })
|
|
446
|
+
});
|
|
447
|
+
}, re = () => {
|
|
448
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
449
|
+
return t({
|
|
450
|
+
mutationFn: async (e) => (await o(`mutation BraAcknowledgeInsight($id: ID!) {
|
|
451
|
+
braAcknowledgeInsight(id: $id) { ${v} }
|
|
452
|
+
}`, { id: e }, n)).braAcknowledgeInsight,
|
|
453
|
+
onSuccess: (e) => {
|
|
454
|
+
i.invalidateQueries({ queryKey: s.insights }), i.invalidateQueries({ queryKey: s.insight(e.id) });
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
}, ie = () => {
|
|
458
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
459
|
+
return t({
|
|
460
|
+
mutationFn: async (e) => (await o(`mutation BraDismissInsight($id: ID!) {
|
|
461
|
+
braDismissInsight(id: $id) { ${v} }
|
|
462
|
+
}`, { id: e }, n)).braDismissInsight,
|
|
463
|
+
onSuccess: (e) => {
|
|
464
|
+
i.invalidateQueries({ queryKey: s.insights }), i.invalidateQueries({ queryKey: s.insight(e.id) });
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
}, ae = () => {
|
|
468
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
469
|
+
return t({
|
|
470
|
+
mutationFn: async (e) => (await o(`mutation BraResolveInsight($id: ID!) {
|
|
471
|
+
braResolveInsight(id: $id) { ${v} }
|
|
472
|
+
}`, { id: e }, n)).braResolveInsight,
|
|
473
|
+
onSuccess: (e) => {
|
|
474
|
+
i.invalidateQueries({ queryKey: s.insights }), i.invalidateQueries({ queryKey: s.insight(e.id) });
|
|
475
|
+
}
|
|
476
|
+
});
|
|
477
|
+
}, oe = (t = {}) => {
|
|
478
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
479
|
+
queryKey: [...s.transactions, t],
|
|
480
|
+
queryFn: async () => (await a(`query BraListTransactions($accountId: ID, $type: BraTransactionType, $pagination: PaginationInput) {
|
|
481
|
+
braListTransactions(accountId: $accountId, type: $type, pagination: $pagination) {
|
|
482
|
+
items { ${u} }
|
|
483
|
+
pageInfo { cursor hasMore }
|
|
484
|
+
}
|
|
485
|
+
}`, {
|
|
486
|
+
accountId: t.accountId,
|
|
487
|
+
type: t.type,
|
|
488
|
+
pagination: t.pagination ?? c
|
|
489
|
+
}, r)).braListTransactions
|
|
490
|
+
});
|
|
491
|
+
return {
|
|
492
|
+
...i,
|
|
493
|
+
data: i.data?.items ?? [],
|
|
494
|
+
pageInfo: i.data?.pageInfo
|
|
495
|
+
};
|
|
496
|
+
}, $ = () => {
|
|
497
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
498
|
+
return t({
|
|
499
|
+
mutationFn: async (e) => (await o(`mutation BraRecordTransaction($input: BraCreateTransactionInput!) {
|
|
500
|
+
braRecordTransaction(input: $input) { ${u} }
|
|
501
|
+
}`, { input: e }, n)).braRecordTransaction,
|
|
502
|
+
onSuccess: (e) => {
|
|
503
|
+
i.invalidateQueries({ queryKey: s.transactions }), i.invalidateQueries({ queryKey: s.account(e.accountId) }), i.invalidateQueries({ queryKey: s.netWorth });
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
}, se = (t = {}) => {
|
|
507
|
+
let { apiGatewayUrl: r } = e(), i = n({
|
|
508
|
+
queryKey: [...s.rebalances, t],
|
|
509
|
+
queryFn: async () => (await a(`query BraListRebalanceProposals($householdId: ID, $portfolioId: ID, $status: BraRebalanceStatus) {
|
|
510
|
+
braListRebalanceProposals(householdId: $householdId, portfolioId: $portfolioId, status: $status) {
|
|
511
|
+
${y}
|
|
512
|
+
}
|
|
513
|
+
}`, {
|
|
514
|
+
householdId: t.householdId,
|
|
515
|
+
portfolioId: t.portfolioId,
|
|
516
|
+
status: t.status
|
|
517
|
+
}, r)).braListRebalanceProposals
|
|
518
|
+
});
|
|
519
|
+
return {
|
|
520
|
+
...i,
|
|
521
|
+
data: i.data ?? []
|
|
522
|
+
};
|
|
523
|
+
}, ce = () => {
|
|
524
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
525
|
+
return t({
|
|
526
|
+
mutationFn: async (e) => (await o(`mutation BraCreateRebalanceProposal($input: BraCreateRebalanceProposalInput!) {
|
|
527
|
+
braCreateRebalanceProposal(input: $input) { ${y} }
|
|
528
|
+
}`, { input: e }, n)).braCreateRebalanceProposal,
|
|
529
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.rebalances })
|
|
530
|
+
});
|
|
531
|
+
}, le = () => {
|
|
532
|
+
let { apiGatewayUrl: n } = e(), i = r();
|
|
533
|
+
return t({
|
|
534
|
+
mutationFn: async (e) => (await o(`mutation BraTransitionRebalanceProposal($id: ID!, $status: BraRebalanceStatus!) {
|
|
535
|
+
braTransitionRebalanceProposal(id: $id, status: $status) { ${y} }
|
|
536
|
+
}`, e, n)).braTransitionRebalanceProposal,
|
|
537
|
+
onSuccess: () => i.invalidateQueries({ queryKey: s.rebalances })
|
|
538
|
+
});
|
|
539
|
+
};
|
|
540
|
+
//#endregion
|
|
541
|
+
export { C as useAccount, S as useAccounts, re as useAcknowledgeInsight, E as useArchiveAccount, U as useArchiveGoal, Z as useArchiveHousehold, j as useArchivePortfolio, w as useCreateAccount, V as useCreateGoal, N as useCreateHolding, Y as useCreateHousehold, ne as useCreateInsight, R as useCreateModelPortfolio, k as useCreatePortfolio, ce as useCreateRebalanceProposal, F as useDeleteHolding, ie as useDismissInsight, te as useGoal, B as useGoalFundings, z as useGoals, M as useHoldings, J as useHousehold, q as useHouseholds, Q as useInsights, G as useLinkGoalFunding, L as useModelPortfolio, I as useModelPortfolios, x as useNetWorthSummary, O as usePortfolio, D as usePortfolios, se as useRebalanceProposals, W as useRecalcGoalProjection, $ as useRecordTransaction, ae as useResolveInsight, oe as useTransactions, le as useTransitionRebalanceProposal, K as useUnlinkGoalFunding, T as useUpdateAccount, H as useUpdateGoal, P as useUpdateHolding, X as useUpdateHousehold, A as useUpdatePortfolio };
|
|
542
|
+
|
|
543
|
+
//# sourceMappingURL=useBrainyRichApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBrainyRichApi.js","names":[],"sources":["../../../src/brainyrich/hooks/useBrainyRichApi.ts"],"sourcesContent":["/**\n * BrainyRich API hooks\n * @module brainyrich/hooks\n *\n * React-Query hooks wired DIRECTLY to the real `wspace-brainyrich-svc`\n * federated GraphQL contract (the `bra*` operations). Every query/mutation\n * below uses an inline gql string whose fields match the svc\n * `.hive-schema.graphql` exactly. No mock data.\n *\n * Transport: `graphqlFetch({ gateway: 'workspace', workspaceToken: true })` —\n * the host shell supplies the gateway base URL (via `BrainyRichRootProps.apiGatewayUrl`,\n * threaded from `useBrainyRich()`) + a workspace-scoped token.\n */\n\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useBrainyRich } from '../providers/BrainyRichProvider';\nimport type {\n Connection,\n BraNetWorthSummary,\n BraAccount,\n BraAccountStatus,\n BraPortfolio,\n BraPortfolioStatus,\n BraHolding,\n BraModelPortfolio,\n BraGoal,\n BraGoalStatus,\n BraGoalFunding,\n BraHousehold,\n BraHouseholdStatus,\n BraInsight,\n BraInsightSeverity,\n BraInsightStatus,\n BraTransaction,\n BraTransactionType,\n BraRebalanceProposal,\n BraRebalanceStatus,\n BraCreateAccountInput,\n BraUpdateAccountInput,\n BraCreatePortfolioInput,\n BraUpdatePortfolioInput,\n BraCreateHoldingInput,\n BraUpdateHoldingInput,\n BraCreateModelPortfolioInput,\n BraCreateGoalInput,\n BraUpdateGoalInput,\n BraLinkGoalFundingInput,\n BraCreateHouseholdInput,\n BraUpdateHouseholdInput,\n BraCreateInsightInput,\n BraCreateTransactionInput,\n BraCreateRebalanceProposalInput,\n PaginationInput,\n} from '../types/bra';\n\n// ============================================================================\n// Transport\n// ============================================================================\n\n/**\n * fe-libs `graphqlFetch` coalesces `query` responses in an in-memory cache keyed\n * by operationName+variables for ~15s (mutations are never cached). A read issued\n * right after a write (e.g. the React-Query refetch our `invalidateQueries`\n * triggers) would otherwise return the PRE-mutation response until the TTL\n * expires — making just-created/updated rows invisible until a full reload.\n * fe-libs' documented remedy is that write-performing callers clear those caches;\n * we do exactly that after every bra mutation so every follow-up read is fresh.\n */\ntype GraphqlReadCacheGlobals = {\n __graphqlFetchResponseCache?: { clear: () => void };\n __graphqlFetchPendingResponses?: { clear: () => void };\n __boffGraphQLResponseCache?: { clear: () => void };\n};\n\nconst clearGraphqlReadCaches = (): void => {\n const g = globalThis as GraphqlReadCacheGlobals;\n g.__graphqlFetchResponseCache?.clear();\n g.__graphqlFetchPendingResponses?.clear();\n g.__boffGraphQLResponseCache?.clear();\n};\n\nconst braQuery = async <TData>(\n query: string,\n variables: Record<string, unknown>,\n baseUrl?: string\n): Promise<TData> => {\n const response = await graphqlFetch<TData>({\n gateway: 'workspace',\n baseUrl,\n query,\n variables,\n workspaceToken: true,\n });\n\n if (response.errors?.length) {\n throw new Error(response.errors[0]?.message ?? 'GraphQL request failed');\n }\n if (!response.data) {\n throw new Error('GraphQL response did not include data');\n }\n return response.data;\n};\n\n/** Mutation transport — identical to `braQuery` but clears read caches after. */\nconst braMutate = async <TData>(\n query: string,\n variables: Record<string, unknown>,\n baseUrl?: string\n): Promise<TData> => {\n const data = await braQuery<TData>(query, variables, baseUrl);\n clearGraphqlReadCaches();\n return data;\n};\n\n// React-Query key roots (one namespace per domain entity).\nconst KEY = {\n netWorth: ['brainyrich', 'net-worth'] as const,\n accounts: ['brainyrich', 'accounts'] as const,\n account: (id: string) => ['brainyrich', 'account', id] as const,\n portfolios: ['brainyrich', 'portfolios'] as const,\n portfolio: (id: string) => ['brainyrich', 'portfolio', id] as const,\n holdings: ['brainyrich', 'holdings'] as const,\n modelPortfolios: ['brainyrich', 'model-portfolios'] as const,\n modelPortfolio: (id: string) => ['brainyrich', 'model-portfolio', id] as const,\n goals: ['brainyrich', 'goals'] as const,\n goal: (id: string) => ['brainyrich', 'goal', id] as const,\n goalFundings: (goalId: string) => ['brainyrich', 'goal-fundings', goalId] as const,\n households: ['brainyrich', 'households'] as const,\n household: (id: string) => ['brainyrich', 'household', id] as const,\n insights: ['brainyrich', 'insights'] as const,\n insight: (id: string) => ['brainyrich', 'insight', id] as const,\n transactions: ['brainyrich', 'transactions'] as const,\n rebalances: ['brainyrich', 'rebalance-proposals'] as const,\n health: ['brainyrich', 'health'] as const,\n};\n\n/** Gateway is offset-based; OMIT `cursor` on the first page (explicit null → 500). */\nconst DEFAULT_PAGE: PaginationInput = { limit: 100 };\n\n// ============================================================================\n// Reusable gql field selections (codegen-free strictness — mirror bra.ts)\n// ============================================================================\n\nconst HOLDING_FIELDS = `\n id workspaceId accountId portfolioId symbol name assetClass quantity lastPrice\n costBasis marketValue currency asOf createdAt updatedAt\n`;\n\nconst TRANSACTION_FIELDS = `\n id workspaceId accountId holdingId type symbol quantity price amount fee currency\n tradeDate settleDate notes createdAt updatedAt\n`;\n\nconst ACCOUNT_FIELDS = `\n id workspaceId ownerId householdId name type status institution accountMask\n cashBalance currency isManual createdAt updatedAt\n`;\n\nconst PORTFOLIO_FIELDS = `\n id workspaceId ownerId householdId name description status baseCurrency\n modelPortfolioId driftThresholdPct targetAllocation tags createdAt updatedAt\n`;\n\nconst MODEL_ALLOCATION_FIELDS = `\n id workspaceId modelPortfolioId assetClass targetPct createdAt updatedAt\n`;\n\nconst MODEL_PORTFOLIO_FIELDS = `\n id workspaceId name description riskProfile baseCurrency isActive createdAt updatedAt\n`;\n\nconst GOAL_FUNDING_FIELDS = `\n id workspaceId goalId accountId allocationPct fixedAmount createdAt updatedAt\n`;\n\nconst GOAL_FIELDS = `\n id workspaceId ownerId householdId name type status projection targetAmount\n targetDate monthlyContribution priority currency notes tags createdAt updatedAt\n`;\n\nconst HOUSEHOLD_FIELDS = `\n id workspaceId name status riskProfile advisorId aum currency primaryContactName\n primaryContactEmail notes tags createdAt updatedAt\n`;\n\nconst INSIGHT_FIELDS = `\n id workspaceId ownerId type severity status title detail metrics subjectId\n subjectType acknowledgedById resolvedAt createdAt updatedAt\n`;\n\nconst REBALANCE_FIELDS = `\n id workspaceId portfolioId householdId status driftPct rationale trades\n proposedById approvedById executedAt createdAt updatedAt\n`;\n\nconst NET_WORTH_FIELDS = `\n workspaceId ownerId totalNetWorth totalMarketValue totalCash accountCount currency\n byAssetClass { assetClass marketValue }\n`;\n\n// ============================================================================\n// Filter param shapes (exported so page agents can type their call sites)\n// ============================================================================\n\nexport interface AccountFilters {\n householdId?: string;\n status?: BraAccountStatus;\n pagination?: PaginationInput;\n}\n\nexport interface PortfolioFilters {\n householdId?: string;\n status?: BraPortfolioStatus;\n pagination?: PaginationInput;\n}\n\nexport interface HoldingFilters {\n accountId?: string;\n portfolioId?: string;\n}\n\nexport interface GoalFilters {\n householdId?: string;\n status?: BraGoalStatus;\n pagination?: PaginationInput;\n}\n\nexport interface HouseholdFilters {\n status?: BraHouseholdStatus;\n pagination?: PaginationInput;\n}\n\nexport interface InsightFilters {\n severity?: BraInsightSeverity;\n status?: BraInsightStatus;\n subjectId?: string;\n subjectType?: string;\n pagination?: PaginationInput;\n}\n\nexport interface TransactionFilters {\n accountId?: string;\n type?: BraTransactionType;\n pagination?: PaginationInput;\n}\n\nexport interface RebalanceFilters {\n householdId?: string;\n portfolioId?: string;\n status?: BraRebalanceStatus;\n}\n\n// ============================================================================\n// Health\n// ============================================================================\n\nexport const useBraHealth = () => {\n const { apiGatewayUrl } = useBrainyRich();\n return useQuery({\n queryKey: KEY.health,\n queryFn: async () => {\n const result = await braQuery<{ braHealth: string }>(\n `query BraHealth { braHealth }`,\n {},\n apiGatewayUrl\n );\n return result.braHealth;\n },\n });\n};\n\n// ============================================================================\n// Net worth (Overview)\n// ============================================================================\n\nexport const useNetWorthSummary = (ownerId?: string) => {\n const { apiGatewayUrl } = useBrainyRich();\n return useQuery({\n queryKey: [...KEY.netWorth, ownerId ?? 'me'],\n queryFn: async () => {\n const result = await braQuery<{ braNetWorthSummary: BraNetWorthSummary }>(\n `query BraNetWorthSummary($ownerId: ID) {\n braNetWorthSummary(ownerId: $ownerId) { ${NET_WORTH_FIELDS} }\n }`,\n { ownerId },\n apiGatewayUrl\n );\n return result.braNetWorthSummary;\n },\n });\n};\n\n// ============================================================================\n// Accounts\n// ============================================================================\n\nexport const useAccounts = (params: AccountFilters = {}) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: [...KEY.accounts, params],\n queryFn: async () => {\n const result = await braQuery<{ braListAccounts: Connection<BraAccount> }>(\n `query BraListAccounts($householdId: ID, $status: BraAccountStatus, $pagination: PaginationInput) {\n braListAccounts(householdId: $householdId, status: $status, pagination: $pagination) {\n items { ${ACCOUNT_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }`,\n {\n householdId: params.householdId,\n status: params.status,\n pagination: params.pagination ?? DEFAULT_PAGE,\n },\n apiGatewayUrl\n );\n return result.braListAccounts;\n },\n });\n return {\n ...query,\n data: query.data?.items ?? [],\n pageInfo: query.data?.pageInfo,\n };\n};\n\nexport const useAccount = (id: string | undefined) => {\n const { apiGatewayUrl } = useBrainyRich();\n return useQuery({\n queryKey: KEY.account(id ?? ''),\n enabled: Boolean(id),\n queryFn: async () => {\n const result = await braQuery<{ braAccount: BraAccount | null }>(\n `query BraAccount($id: ID!) {\n braAccount(id: $id) {\n ${ACCOUNT_FIELDS}\n holdings { ${HOLDING_FIELDS} }\n transactions { ${TRANSACTION_FIELDS} }\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braAccount;\n },\n });\n};\n\nexport const useCreateAccount = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreateAccountInput) => {\n const result = await braMutate<{ braCreateAccount: BraAccount }>(\n `mutation BraCreateAccount($input: BraCreateAccountInput!) {\n braCreateAccount(input: $input) { ${ACCOUNT_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braCreateAccount;\n },\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: KEY.accounts });\n qc.invalidateQueries({ queryKey: KEY.netWorth });\n },\n });\n};\n\nexport const useUpdateAccount = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (vars: { id: string; input: BraUpdateAccountInput }) => {\n const result = await braMutate<{ braUpdateAccount: BraAccount }>(\n `mutation BraUpdateAccount($id: ID!, $input: BraUpdateAccountInput!) {\n braUpdateAccount(id: $id, input: $input) { ${ACCOUNT_FIELDS} }\n }`,\n vars,\n apiGatewayUrl\n );\n return result.braUpdateAccount;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.accounts });\n qc.invalidateQueries({ queryKey: KEY.account(data.id) });\n qc.invalidateQueries({ queryKey: KEY.netWorth });\n },\n });\n};\n\nexport const useArchiveAccount = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braArchiveAccount: boolean }>(\n `mutation BraArchiveAccount($id: ID!) { braArchiveAccount(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.braArchiveAccount;\n },\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: KEY.accounts });\n qc.invalidateQueries({ queryKey: KEY.netWorth });\n },\n });\n};\n\n// ============================================================================\n// Portfolios\n// ============================================================================\n\nexport const usePortfolios = (params: PortfolioFilters = {}) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: [...KEY.portfolios, params],\n queryFn: async () => {\n const result = await braQuery<{ braListPortfolios: Connection<BraPortfolio> }>(\n `query BraListPortfolios($householdId: ID, $status: BraPortfolioStatus, $pagination: PaginationInput) {\n braListPortfolios(householdId: $householdId, status: $status, pagination: $pagination) {\n items { ${PORTFOLIO_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }`,\n {\n householdId: params.householdId,\n status: params.status,\n pagination: params.pagination ?? DEFAULT_PAGE,\n },\n apiGatewayUrl\n );\n return result.braListPortfolios;\n },\n });\n return {\n ...query,\n data: query.data?.items ?? [],\n pageInfo: query.data?.pageInfo,\n };\n};\n\nexport const usePortfolio = (id: string | undefined) => {\n const { apiGatewayUrl } = useBrainyRich();\n return useQuery({\n queryKey: KEY.portfolio(id ?? ''),\n enabled: Boolean(id),\n queryFn: async () => {\n const result = await braQuery<{ braPortfolio: BraPortfolio | null }>(\n `query BraPortfolio($id: ID!) {\n braPortfolio(id: $id) {\n ${PORTFOLIO_FIELDS}\n holdings { ${HOLDING_FIELDS} }\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braPortfolio;\n },\n });\n};\n\nexport const useCreatePortfolio = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreatePortfolioInput) => {\n const result = await braMutate<{ braCreatePortfolio: BraPortfolio }>(\n `mutation BraCreatePortfolio($input: BraCreatePortfolioInput!) {\n braCreatePortfolio(input: $input) { ${PORTFOLIO_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braCreatePortfolio;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.portfolios }),\n });\n};\n\nexport const useUpdatePortfolio = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (vars: { id: string; input: BraUpdatePortfolioInput }) => {\n const result = await braMutate<{ braUpdatePortfolio: BraPortfolio }>(\n `mutation BraUpdatePortfolio($id: ID!, $input: BraUpdatePortfolioInput!) {\n braUpdatePortfolio(id: $id, input: $input) { ${PORTFOLIO_FIELDS} }\n }`,\n vars,\n apiGatewayUrl\n );\n return result.braUpdatePortfolio;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.portfolios });\n qc.invalidateQueries({ queryKey: KEY.portfolio(data.id) });\n },\n });\n};\n\nexport const useArchivePortfolio = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braArchivePortfolio: boolean }>(\n `mutation BraArchivePortfolio($id: ID!) { braArchivePortfolio(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.braArchivePortfolio;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.portfolios }),\n });\n};\n\n// ============================================================================\n// Holdings\n// ============================================================================\n\nexport const useHoldings = (params: HoldingFilters) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: [...KEY.holdings, params],\n enabled: Boolean(params.accountId || params.portfolioId),\n queryFn: async () => {\n const result = await braQuery<{ braListHoldings: BraHolding[] }>(\n `query BraListHoldings($accountId: ID, $portfolioId: ID) {\n braListHoldings(accountId: $accountId, portfolioId: $portfolioId) { ${HOLDING_FIELDS} }\n }`,\n { accountId: params.accountId, portfolioId: params.portfolioId },\n apiGatewayUrl\n );\n return result.braListHoldings;\n },\n });\n return { ...query, data: query.data ?? [] };\n};\n\nexport const useCreateHolding = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreateHoldingInput) => {\n const result = await braMutate<{ braCreateHolding: BraHolding }>(\n `mutation BraCreateHolding($input: BraCreateHoldingInput!) {\n braCreateHolding(input: $input) { ${HOLDING_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braCreateHolding;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.holdings });\n qc.invalidateQueries({ queryKey: KEY.account(data.accountId) });\n if (data.portfolioId) qc.invalidateQueries({ queryKey: KEY.portfolio(data.portfolioId) });\n qc.invalidateQueries({ queryKey: KEY.netWorth });\n },\n });\n};\n\nexport const useUpdateHolding = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (vars: { id: string; input: BraUpdateHoldingInput }) => {\n const result = await braMutate<{ braUpdateHolding: BraHolding }>(\n `mutation BraUpdateHolding($id: ID!, $input: BraUpdateHoldingInput!) {\n braUpdateHolding(id: $id, input: $input) { ${HOLDING_FIELDS} }\n }`,\n vars,\n apiGatewayUrl\n );\n return result.braUpdateHolding;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.holdings });\n qc.invalidateQueries({ queryKey: KEY.account(data.accountId) });\n if (data.portfolioId) qc.invalidateQueries({ queryKey: KEY.portfolio(data.portfolioId) });\n qc.invalidateQueries({ queryKey: KEY.netWorth });\n },\n });\n};\n\nexport const useDeleteHolding = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braDeleteHolding: boolean }>(\n `mutation BraDeleteHolding($id: ID!) { braDeleteHolding(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.braDeleteHolding;\n },\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: KEY.holdings });\n qc.invalidateQueries({ queryKey: KEY.accounts });\n qc.invalidateQueries({ queryKey: KEY.portfolios });\n qc.invalidateQueries({ queryKey: KEY.netWorth });\n },\n });\n};\n\n// ============================================================================\n// Model portfolios\n// ============================================================================\n\nexport const useModelPortfolios = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: KEY.modelPortfolios,\n queryFn: async () => {\n const result = await braQuery<{ braListModelPortfolios: BraModelPortfolio[] }>(\n `query BraListModelPortfolios {\n braListModelPortfolios {\n ${MODEL_PORTFOLIO_FIELDS}\n allocations { ${MODEL_ALLOCATION_FIELDS} }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.braListModelPortfolios;\n },\n });\n return { ...query, data: query.data ?? [] };\n};\n\nexport const useModelPortfolio = (id: string | undefined) => {\n const { apiGatewayUrl } = useBrainyRich();\n return useQuery({\n queryKey: KEY.modelPortfolio(id ?? ''),\n enabled: Boolean(id),\n queryFn: async () => {\n const result = await braQuery<{ braModelPortfolio: BraModelPortfolio | null }>(\n `query BraModelPortfolio($id: ID!) {\n braModelPortfolio(id: $id) {\n ${MODEL_PORTFOLIO_FIELDS}\n allocations { ${MODEL_ALLOCATION_FIELDS} }\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braModelPortfolio;\n },\n });\n};\n\nexport const useCreateModelPortfolio = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreateModelPortfolioInput) => {\n const result = await braMutate<{ braCreateModelPortfolio: BraModelPortfolio }>(\n `mutation BraCreateModelPortfolio($input: BraCreateModelPortfolioInput!) {\n braCreateModelPortfolio(input: $input) {\n ${MODEL_PORTFOLIO_FIELDS}\n allocations { ${MODEL_ALLOCATION_FIELDS} }\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braCreateModelPortfolio;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.modelPortfolios }),\n });\n};\n\n// ============================================================================\n// Goals\n// ============================================================================\n\nexport const useGoals = (params: GoalFilters = {}) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: [...KEY.goals, params],\n queryFn: async () => {\n const result = await braQuery<{ braListGoals: Connection<BraGoal> }>(\n `query BraListGoals($householdId: ID, $status: BraGoalStatus, $pagination: PaginationInput) {\n braListGoals(householdId: $householdId, status: $status, pagination: $pagination) {\n items { ${GOAL_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }`,\n {\n householdId: params.householdId,\n status: params.status,\n pagination: params.pagination ?? DEFAULT_PAGE,\n },\n apiGatewayUrl\n );\n return result.braListGoals;\n },\n });\n return {\n ...query,\n data: query.data?.items ?? [],\n pageInfo: query.data?.pageInfo,\n };\n};\n\nexport const useGoal = (id: string | undefined) => {\n const { apiGatewayUrl } = useBrainyRich();\n return useQuery({\n queryKey: KEY.goal(id ?? ''),\n enabled: Boolean(id),\n queryFn: async () => {\n const result = await braQuery<{ braGoal: BraGoal | null }>(\n `query BraGoal($id: ID!) {\n braGoal(id: $id) {\n ${GOAL_FIELDS}\n fundings { ${GOAL_FUNDING_FIELDS} }\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braGoal;\n },\n });\n};\n\nexport const useGoalFundings = (goalId: string | undefined) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: KEY.goalFundings(goalId ?? ''),\n enabled: Boolean(goalId),\n queryFn: async () => {\n const result = await braQuery<{ braListGoalFundings: BraGoalFunding[] }>(\n `query BraListGoalFundings($goalId: ID!) {\n braListGoalFundings(goalId: $goalId) { ${GOAL_FUNDING_FIELDS} }\n }`,\n { goalId },\n apiGatewayUrl\n );\n return result.braListGoalFundings;\n },\n });\n return { ...query, data: query.data ?? [] };\n};\n\nexport const useCreateGoal = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreateGoalInput) => {\n const result = await braMutate<{ braCreateGoal: BraGoal }>(\n `mutation BraCreateGoal($input: BraCreateGoalInput!) {\n braCreateGoal(input: $input) { ${GOAL_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braCreateGoal;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.goals }),\n });\n};\n\nexport const useUpdateGoal = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (vars: { id: string; input: BraUpdateGoalInput }) => {\n const result = await braMutate<{ braUpdateGoal: BraGoal }>(\n `mutation BraUpdateGoal($id: ID!, $input: BraUpdateGoalInput!) {\n braUpdateGoal(id: $id, input: $input) { ${GOAL_FIELDS} }\n }`,\n vars,\n apiGatewayUrl\n );\n return result.braUpdateGoal;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.goals });\n qc.invalidateQueries({ queryKey: KEY.goal(data.id) });\n },\n });\n};\n\nexport const useArchiveGoal = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braArchiveGoal: boolean }>(\n `mutation BraArchiveGoal($id: ID!) { braArchiveGoal(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.braArchiveGoal;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.goals }),\n });\n};\n\nexport const useRecalcGoalProjection = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (vars: { id: string; fundedAmount: number }) => {\n const result = await braMutate<{ braRecalcGoalProjection: BraGoal }>(\n `mutation BraRecalcGoalProjection($id: ID!, $fundedAmount: Float!) {\n braRecalcGoalProjection(id: $id, fundedAmount: $fundedAmount) { ${GOAL_FIELDS} }\n }`,\n vars,\n apiGatewayUrl\n );\n return result.braRecalcGoalProjection;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.goals });\n qc.invalidateQueries({ queryKey: KEY.goal(data.id) });\n },\n });\n};\n\nexport const useLinkGoalFunding = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraLinkGoalFundingInput) => {\n const result = await braMutate<{ braLinkGoalFunding: BraGoalFunding }>(\n `mutation BraLinkGoalFunding($input: BraLinkGoalFundingInput!) {\n braLinkGoalFunding(input: $input) { ${GOAL_FUNDING_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braLinkGoalFunding;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.goalFundings(data.goalId) });\n qc.invalidateQueries({ queryKey: KEY.goal(data.goalId) });\n },\n });\n};\n\nexport const useUnlinkGoalFunding = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braUnlinkGoalFunding: boolean }>(\n `mutation BraUnlinkGoalFunding($id: ID!) { braUnlinkGoalFunding(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.braUnlinkGoalFunding;\n },\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: KEY.goals });\n qc.invalidateQueries({ queryKey: [...KEY.goals] });\n qc.invalidateQueries({ queryKey: ['brainyrich', 'goal-fundings'] });\n qc.invalidateQueries({ queryKey: ['brainyrich', 'goal'] });\n },\n });\n};\n\n// ============================================================================\n// Households\n// ============================================================================\n\nexport const useHouseholds = (params: HouseholdFilters = {}) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: [...KEY.households, params],\n queryFn: async () => {\n const result = await braQuery<{ braListHouseholds: Connection<BraHousehold> }>(\n `query BraListHouseholds($status: BraHouseholdStatus, $pagination: PaginationInput) {\n braListHouseholds(status: $status, pagination: $pagination) {\n items { ${HOUSEHOLD_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }`,\n { status: params.status, pagination: params.pagination ?? DEFAULT_PAGE },\n apiGatewayUrl\n );\n return result.braListHouseholds;\n },\n });\n return {\n ...query,\n data: query.data?.items ?? [],\n pageInfo: query.data?.pageInfo,\n };\n};\n\nexport const useHousehold = (id: string | undefined) => {\n const { apiGatewayUrl } = useBrainyRich();\n return useQuery({\n queryKey: KEY.household(id ?? ''),\n enabled: Boolean(id),\n queryFn: async () => {\n const result = await braQuery<{ braHousehold: BraHousehold | null }>(\n `query BraHousehold($id: ID!) {\n braHousehold(id: $id) { ${HOUSEHOLD_FIELDS} }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braHousehold;\n },\n });\n};\n\nexport const useCreateHousehold = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreateHouseholdInput) => {\n const result = await braMutate<{ braCreateHousehold: BraHousehold }>(\n `mutation BraCreateHousehold($input: BraCreateHouseholdInput!) {\n braCreateHousehold(input: $input) { ${HOUSEHOLD_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braCreateHousehold;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.households }),\n });\n};\n\nexport const useUpdateHousehold = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (vars: { id: string; input: BraUpdateHouseholdInput }) => {\n const result = await braMutate<{ braUpdateHousehold: BraHousehold }>(\n `mutation BraUpdateHousehold($id: ID!, $input: BraUpdateHouseholdInput!) {\n braUpdateHousehold(id: $id, input: $input) { ${HOUSEHOLD_FIELDS} }\n }`,\n vars,\n apiGatewayUrl\n );\n return result.braUpdateHousehold;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.households });\n qc.invalidateQueries({ queryKey: KEY.household(data.id) });\n },\n });\n};\n\nexport const useArchiveHousehold = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braArchiveHousehold: boolean }>(\n `mutation BraArchiveHousehold($id: ID!) { braArchiveHousehold(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.braArchiveHousehold;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.households }),\n });\n};\n\n// ============================================================================\n// Insights\n// ============================================================================\n\nexport const useInsights = (params: InsightFilters = {}) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: [...KEY.insights, params],\n queryFn: async () => {\n const result = await braQuery<{ braListInsights: Connection<BraInsight> }>(\n `query BraListInsights($severity: BraInsightSeverity, $status: BraInsightStatus, $subjectId: ID, $subjectType: String, $pagination: PaginationInput) {\n braListInsights(severity: $severity, status: $status, subjectId: $subjectId, subjectType: $subjectType, pagination: $pagination) {\n items { ${INSIGHT_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }`,\n {\n severity: params.severity,\n status: params.status,\n subjectId: params.subjectId,\n subjectType: params.subjectType,\n pagination: params.pagination ?? DEFAULT_PAGE,\n },\n apiGatewayUrl\n );\n return result.braListInsights;\n },\n });\n return {\n ...query,\n data: query.data?.items ?? [],\n pageInfo: query.data?.pageInfo,\n };\n};\n\nexport const useInsight = (id: string | undefined) => {\n const { apiGatewayUrl } = useBrainyRich();\n return useQuery({\n queryKey: KEY.insight(id ?? ''),\n enabled: Boolean(id),\n queryFn: async () => {\n const result = await braQuery<{ braInsight: BraInsight | null }>(\n `query BraInsight($id: ID!) {\n braInsight(id: $id) { ${INSIGHT_FIELDS} }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braInsight;\n },\n });\n};\n\nexport const useCreateInsight = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreateInsightInput) => {\n const result = await braMutate<{ braCreateInsight: BraInsight }>(\n `mutation BraCreateInsight($input: BraCreateInsightInput!) {\n braCreateInsight(input: $input) { ${INSIGHT_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braCreateInsight;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.insights }),\n });\n};\n\nexport const useAcknowledgeInsight = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braAcknowledgeInsight: BraInsight }>(\n `mutation BraAcknowledgeInsight($id: ID!) {\n braAcknowledgeInsight(id: $id) { ${INSIGHT_FIELDS} }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braAcknowledgeInsight;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.insights });\n qc.invalidateQueries({ queryKey: KEY.insight(data.id) });\n },\n });\n};\n\nexport const useDismissInsight = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braDismissInsight: BraInsight }>(\n `mutation BraDismissInsight($id: ID!) {\n braDismissInsight(id: $id) { ${INSIGHT_FIELDS} }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braDismissInsight;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.insights });\n qc.invalidateQueries({ queryKey: KEY.insight(data.id) });\n },\n });\n};\n\nexport const useResolveInsight = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await braMutate<{ braResolveInsight: BraInsight }>(\n `mutation BraResolveInsight($id: ID!) {\n braResolveInsight(id: $id) { ${INSIGHT_FIELDS} }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.braResolveInsight;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.insights });\n qc.invalidateQueries({ queryKey: KEY.insight(data.id) });\n },\n });\n};\n\n// ============================================================================\n// Transactions\n// ============================================================================\n\nexport const useTransactions = (params: TransactionFilters = {}) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: [...KEY.transactions, params],\n queryFn: async () => {\n const result = await braQuery<{ braListTransactions: Connection<BraTransaction> }>(\n `query BraListTransactions($accountId: ID, $type: BraTransactionType, $pagination: PaginationInput) {\n braListTransactions(accountId: $accountId, type: $type, pagination: $pagination) {\n items { ${TRANSACTION_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }`,\n {\n accountId: params.accountId,\n type: params.type,\n pagination: params.pagination ?? DEFAULT_PAGE,\n },\n apiGatewayUrl\n );\n return result.braListTransactions;\n },\n });\n return {\n ...query,\n data: query.data?.items ?? [],\n pageInfo: query.data?.pageInfo,\n };\n};\n\nexport const useRecordTransaction = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreateTransactionInput) => {\n const result = await braMutate<{ braRecordTransaction: BraTransaction }>(\n `mutation BraRecordTransaction($input: BraCreateTransactionInput!) {\n braRecordTransaction(input: $input) { ${TRANSACTION_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braRecordTransaction;\n },\n onSuccess: (data) => {\n qc.invalidateQueries({ queryKey: KEY.transactions });\n qc.invalidateQueries({ queryKey: KEY.account(data.accountId) });\n qc.invalidateQueries({ queryKey: KEY.netWorth });\n },\n });\n};\n\n// ============================================================================\n// Rebalance proposals\n// ============================================================================\n\nexport const useRebalanceProposals = (params: RebalanceFilters = {}) => {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: [...KEY.rebalances, params],\n queryFn: async () => {\n const result = await braQuery<{ braListRebalanceProposals: BraRebalanceProposal[] }>(\n `query BraListRebalanceProposals($householdId: ID, $portfolioId: ID, $status: BraRebalanceStatus) {\n braListRebalanceProposals(householdId: $householdId, portfolioId: $portfolioId, status: $status) {\n ${REBALANCE_FIELDS}\n }\n }`,\n {\n householdId: params.householdId,\n portfolioId: params.portfolioId,\n status: params.status,\n },\n apiGatewayUrl\n );\n return result.braListRebalanceProposals;\n },\n });\n return { ...query, data: query.data ?? [] };\n};\n\nexport const useCreateRebalanceProposal = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (input: BraCreateRebalanceProposalInput) => {\n const result = await braMutate<{ braCreateRebalanceProposal: BraRebalanceProposal }>(\n `mutation BraCreateRebalanceProposal($input: BraCreateRebalanceProposalInput!) {\n braCreateRebalanceProposal(input: $input) { ${REBALANCE_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.braCreateRebalanceProposal;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.rebalances }),\n });\n};\n\nexport const useTransitionRebalanceProposal = () => {\n const { apiGatewayUrl } = useBrainyRich();\n const qc = useQueryClient();\n return useMutation({\n mutationFn: async (vars: { id: string; status: BraRebalanceStatus }) => {\n const result = await braMutate<{ braTransitionRebalanceProposal: BraRebalanceProposal }>(\n `mutation BraTransitionRebalanceProposal($id: ID!, $status: BraRebalanceStatus!) {\n braTransitionRebalanceProposal(id: $id, status: $status) { ${REBALANCE_FIELDS} }\n }`,\n vars,\n apiGatewayUrl\n );\n return result.braTransitionRebalanceProposal;\n },\n onSuccess: () => qc.invalidateQueries({ queryKey: KEY.rebalances }),\n });\n};\n"],"mappings":"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"}
|
package/dist/brainyrich/index.js
CHANGED