dao-treasury 0.0.34__cp312-cp312-win32.whl → 0.0.72__cp312-cp312-win32.whl

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.

Potentially problematic release.


This version of dao-treasury might be problematic. Click here for more details.

Files changed (48) hide show
  1. dao_treasury/.grafana/provisioning/dashboards/breakdowns/Expenses.json +553 -0
  2. dao_treasury/.grafana/provisioning/dashboards/breakdowns/Revenue.json +555 -0
  3. dao_treasury/.grafana/provisioning/dashboards/dashboards.yaml +7 -57
  4. dao_treasury/.grafana/provisioning/dashboards/streams/LlamaPay.json +124 -20
  5. dao_treasury/.grafana/provisioning/dashboards/summary/Monthly.json +284 -22
  6. dao_treasury/.grafana/provisioning/dashboards/transactions/Treasury Transactions.json +47 -63
  7. dao_treasury/.grafana/provisioning/dashboards/transactions/Unsorted Transactions.json +368 -0
  8. dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow (Including Unsorted).json +122 -149
  9. dao_treasury/.grafana/provisioning/dashboards/treasury/Cashflow.json +87 -100
  10. dao_treasury/.grafana/provisioning/dashboards/treasury/Current Treasury Assets.json +941 -0
  11. dao_treasury/.grafana/provisioning/dashboards/treasury/Historical Treasury Balances.json +3931 -0
  12. dao_treasury/.grafana/provisioning/dashboards/treasury/Operating Cashflow.json +64 -78
  13. dao_treasury/ENVIRONMENT_VARIABLES.py +12 -0
  14. dao_treasury/__init__.py +14 -0
  15. dao_treasury/_docker.cp312-win32.pyd +0 -0
  16. dao_treasury/_docker.py +38 -21
  17. dao_treasury/_nicknames.cp312-win32.pyd +0 -0
  18. dao_treasury/_nicknames.py +15 -0
  19. dao_treasury/_wallet.cp312-win32.pyd +0 -0
  20. dao_treasury/_wallet.py +14 -10
  21. dao_treasury/constants.cp312-win32.pyd +0 -0
  22. dao_treasury/constants.py +24 -0
  23. dao_treasury/db.py +116 -25
  24. dao_treasury/docker-compose.yaml +1 -5
  25. dao_treasury/main.py +39 -1
  26. dao_treasury/sorting/__init__.cp312-win32.pyd +0 -0
  27. dao_treasury/sorting/_matchers.cp312-win32.pyd +0 -0
  28. dao_treasury/sorting/_rules.cp312-win32.pyd +0 -0
  29. dao_treasury/sorting/factory.cp312-win32.pyd +0 -0
  30. dao_treasury/sorting/rule.cp312-win32.pyd +0 -0
  31. dao_treasury/sorting/rule.py +8 -10
  32. dao_treasury/sorting/rules/__init__.cp312-win32.pyd +0 -0
  33. dao_treasury/sorting/rules/ignore/__init__.cp312-win32.pyd +0 -0
  34. dao_treasury/sorting/rules/ignore/llamapay.cp312-win32.pyd +0 -0
  35. dao_treasury/streams/__init__.cp312-win32.pyd +0 -0
  36. dao_treasury/streams/llamapay.cp312-win32.pyd +0 -0
  37. dao_treasury/streams/llamapay.py +14 -2
  38. dao_treasury/treasury.py +37 -16
  39. dao_treasury/types.cp312-win32.pyd +0 -0
  40. {dao_treasury-0.0.34.dist-info → dao_treasury-0.0.72.dist-info}/METADATA +18 -3
  41. dao_treasury-0.0.72.dist-info/RECORD +55 -0
  42. dao_treasury-0.0.72.dist-info/top_level.txt +2 -0
  43. dao_treasury__mypyc.cp312-win32.pyd +0 -0
  44. bf2b4fe1f86ad2ea158b__mypyc.cp312-win32.pyd +0 -0
  45. dao_treasury/.grafana/provisioning/dashboards/treasury/Treasury.json +0 -2018
  46. dao_treasury-0.0.34.dist-info/RECORD +0 -51
  47. dao_treasury-0.0.34.dist-info/top_level.txt +0 -2
  48. {dao_treasury-0.0.34.dist-info → dao_treasury-0.0.72.dist-info}/WHEEL +0 -0
@@ -0,0 +1,553 @@
1
+ {
2
+ "annotations": {
3
+ "list": [
4
+ {
5
+ "builtIn": 1,
6
+ "datasource": {
7
+ "type": "grafana",
8
+ "uid": "-- Grafana --"
9
+ },
10
+ "enable": true,
11
+ "hide": true,
12
+ "iconColor": "rgba(0, 211, 255, 1)",
13
+ "name": "Annotations & Alerts",
14
+ "type": "dashboard"
15
+ }
16
+ ]
17
+ },
18
+ "description": "Provides a detailed breakdown of DAO expenses over time, including totals and averages by period and transaction group. Intended for monitoring spending trends, identifying cost drivers, and supporting financial reporting. Use the 'Tx Group' filter to view specific categories (e.g., Expenses, Cost of Revenue, Other Expense) or all groups. Data Links in panels allow quick navigation to filtered transaction details.",
19
+ "editable": true,
20
+ "fiscalYearStartMonth": 0,
21
+ "graphTooltip": 1,
22
+ "id": 1,
23
+ "links": [],
24
+ "panels": [
25
+ {
26
+ "datasource": "SQLite",
27
+ "description": "Displays the total expenses for the selected period, aggregated across all expense transaction groups. Useful for understanding overall spending.\n\nData Link: Clicking the value opens a filtered transactions dashboard for this period and group.",
28
+ "fieldConfig": {
29
+ "defaults": {
30
+ "color": {
31
+ "fixedColor": "dark-red",
32
+ "mode": "fixed"
33
+ },
34
+ "mappings": [],
35
+ "thresholds": {
36
+ "mode": "absolute",
37
+ "steps": [
38
+ {
39
+ "color": "green",
40
+ "value": 0
41
+ },
42
+ {
43
+ "color": "red",
44
+ "value": 80
45
+ }
46
+ ]
47
+ },
48
+ "unit": "currencyUSD"
49
+ },
50
+ "overrides": [
51
+ {
52
+ "matcher": {
53
+ "id": "byName",
54
+ "options": "total_revenue"
55
+ },
56
+ "properties": [
57
+ {
58
+ "id": "links",
59
+ "value": [
60
+ {
61
+ "targetBlank": true,
62
+ "title": "View Expense Transactions For This Period",
63
+ "url": "/d/b21f1092-66a4-4fb0-90ef-ed77d2becaa4?var-Top=Expenses&from=$__from&to=$__to"
64
+ }
65
+ ]
66
+ }
67
+ ]
68
+ }
69
+ ]
70
+ },
71
+ "gridPos": {
72
+ "h": 4,
73
+ "w": 6,
74
+ "x": 0,
75
+ "y": 0
76
+ },
77
+ "id": 1,
78
+ "options": {
79
+ "colorMode": "background",
80
+ "graphMode": "area",
81
+ "justifyMode": "auto",
82
+ "orientation": "auto",
83
+ "percentChangeColorMode": "standard",
84
+ "reduceOptions": {
85
+ "calcs": ["lastNotNull"],
86
+ "fields": "",
87
+ "values": false
88
+ },
89
+ "showPercentChange": false,
90
+ "textMode": "auto",
91
+ "wideLayout": true
92
+ },
93
+ "pluginVersion": "12.2.1",
94
+ "targets": [
95
+ {
96
+ "datasource": "SQLite",
97
+ "queryText": "SELECT SUM(t.value_usd) AS total_revenue FROM general_ledger t JOIN txgroup_hierarchy gh USING (txgroup_id) inner join txgroups g USING (txgroup_id) WHERE gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') AND t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring})",
98
+ "queryType": "table",
99
+ "rawQueryText": "SELECT SUM(t.value_usd) AS total_revenue FROM general_ledger t JOIN txgroup_hierarchy gh USING (txgroup_id) inner join txgroups g USING (txgroup_id) WHERE gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') AND t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring})",
100
+ "refId": "A",
101
+ "timeColumns": ["time", "ts"]
102
+ }
103
+ ],
104
+ "title": "Expenses",
105
+ "type": "stat"
106
+ },
107
+ {
108
+ "datasource": "SQLite",
109
+ "description": "Shows the average expenses per month for the selected period. Useful for tracking monthly spending trends.\n\nData Link: Clicking the value opens a filtered transactions dashboard for this period and group.",
110
+ "fieldConfig": {
111
+ "defaults": {
112
+ "color": {
113
+ "fixedColor": "dark-red",
114
+ "mode": "fixed"
115
+ },
116
+ "mappings": [],
117
+ "thresholds": {
118
+ "mode": "absolute",
119
+ "steps": [
120
+ {
121
+ "color": "green",
122
+ "value": 0
123
+ },
124
+ {
125
+ "color": "red",
126
+ "value": 80
127
+ }
128
+ ]
129
+ },
130
+ "unit": "currencyUSD"
131
+ },
132
+ "overrides": [
133
+ {
134
+ "matcher": {
135
+ "id": "byName",
136
+ "options": "total_revenue"
137
+ },
138
+ "properties": [
139
+ {
140
+ "id": "links",
141
+ "value": [
142
+ {
143
+ "targetBlank": true,
144
+ "title": "View Expense Transactions For This Period",
145
+ "url": "/d/b21f1092-66a4-4fb0-90ef-ed77d2becaa4?var-Top=Expenses&from=$__from&to=$__to"
146
+ }
147
+ ]
148
+ }
149
+ ]
150
+ }
151
+ ]
152
+ },
153
+ "gridPos": {
154
+ "h": 4,
155
+ "w": 6,
156
+ "x": 6,
157
+ "y": 0
158
+ },
159
+ "id": 4,
160
+ "options": {
161
+ "colorMode": "background",
162
+ "graphMode": "area",
163
+ "justifyMode": "auto",
164
+ "orientation": "auto",
165
+ "percentChangeColorMode": "standard",
166
+ "reduceOptions": {
167
+ "calcs": ["lastNotNull"],
168
+ "fields": "",
169
+ "values": false
170
+ },
171
+ "showPercentChange": false,
172
+ "textMode": "auto",
173
+ "wideLayout": true
174
+ },
175
+ "pluginVersion": "12.2.1",
176
+ "targets": [
177
+ {
178
+ "datasource": "SQLite",
179
+ "queryText": "SELECT SUM(t.value_usd) / ((($__to - $__from) / 1000.0 / 60 / 60 / 24 / 30.436875)) AS total_revenue FROM general_ledger t JOIN txgroup_hierarchy gh USING (txgroup_id) inner join txgroups g USING (txgroup_id) WHERE gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') AND t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring})",
180
+ "queryType": "table",
181
+ "rawQueryText": "SELECT SUM(t.value_usd) / ((($__to - $__from) / 1000.0 / 60 / 60 / 24 / 30.436875)) AS total_revenue FROM general_ledger t JOIN txgroup_hierarchy gh USING (txgroup_id) inner join txgroups g USING (txgroup_id) WHERE gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') AND t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring})",
182
+ "refId": "A",
183
+ "timeColumns": ["time", "ts"]
184
+ }
185
+ ],
186
+ "title": "Monthly Expenses",
187
+ "type": "stat"
188
+ },
189
+ {
190
+ "datasource": "SQLite",
191
+ "description": "Shows the average expenses per week for the selected period. Useful for monitoring short-term spending changes.\n\nData Link: Clicking the value opens a filtered transactions dashboard for this period and group.",
192
+ "fieldConfig": {
193
+ "defaults": {
194
+ "color": {
195
+ "fixedColor": "dark-red",
196
+ "mode": "fixed"
197
+ },
198
+ "mappings": [],
199
+ "thresholds": {
200
+ "mode": "absolute",
201
+ "steps": [
202
+ {
203
+ "color": "green",
204
+ "value": 0
205
+ },
206
+ {
207
+ "color": "red",
208
+ "value": 80
209
+ }
210
+ ]
211
+ },
212
+ "unit": "currencyUSD"
213
+ },
214
+ "overrides": [
215
+ {
216
+ "matcher": {
217
+ "id": "byName",
218
+ "options": "total_revenue"
219
+ },
220
+ "properties": [
221
+ {
222
+ "id": "links",
223
+ "value": [
224
+ {
225
+ "targetBlank": true,
226
+ "title": "View Expense Transactions For This Period",
227
+ "url": "/d/b21f1092-66a4-4fb0-90ef-ed77d2becaa4?var-Top=Expenses&from=$__from&to=$__to"
228
+ }
229
+ ]
230
+ }
231
+ ]
232
+ }
233
+ ]
234
+ },
235
+ "gridPos": {
236
+ "h": 4,
237
+ "w": 6,
238
+ "x": 12,
239
+ "y": 0
240
+ },
241
+ "id": 2,
242
+ "options": {
243
+ "colorMode": "background",
244
+ "graphMode": "area",
245
+ "justifyMode": "auto",
246
+ "orientation": "auto",
247
+ "percentChangeColorMode": "standard",
248
+ "reduceOptions": {
249
+ "calcs": ["lastNotNull"],
250
+ "fields": "",
251
+ "values": false
252
+ },
253
+ "showPercentChange": false,
254
+ "textMode": "auto",
255
+ "wideLayout": true
256
+ },
257
+ "pluginVersion": "12.2.1",
258
+ "targets": [
259
+ {
260
+ "datasource": "SQLite",
261
+ "queryText": "SELECT SUM(t.value_usd) / ((($__to - $__from) / 1000.0 / 60 / 60 / 24 / 7)) AS total_revenue FROM general_ledger t JOIN txgroup_hierarchy gh USING (txgroup_id) inner join txgroups g USING (txgroup_id) WHERE gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') AND t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring})",
262
+ "queryType": "table",
263
+ "rawQueryText": "SELECT SUM(t.value_usd) / ((($__to - $__from) / 1000.0 / 60 / 60 / 24 / 7)) AS total_revenue FROM general_ledger t JOIN txgroup_hierarchy gh USING (txgroup_id) inner join txgroups g USING (txgroup_id) WHERE gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') AND t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring})",
264
+ "refId": "A",
265
+ "timeColumns": ["time", "ts"]
266
+ }
267
+ ],
268
+ "title": "Weekly Expenses",
269
+ "type": "stat"
270
+ },
271
+ {
272
+ "datasource": "SQLite",
273
+ "description": "Shows the average expenses per day for the selected period. Useful for fine-grained monitoring of spending.\n\nData Link: Clicking the value opens a filtered transactions dashboard for this period and group.",
274
+ "fieldConfig": {
275
+ "defaults": {
276
+ "color": {
277
+ "fixedColor": "dark-red",
278
+ "mode": "fixed"
279
+ },
280
+ "mappings": [],
281
+ "thresholds": {
282
+ "mode": "absolute",
283
+ "steps": [
284
+ {
285
+ "color": "green",
286
+ "value": 0
287
+ },
288
+ {
289
+ "color": "red",
290
+ "value": 80
291
+ }
292
+ ]
293
+ },
294
+ "unit": "currencyUSD"
295
+ },
296
+ "overrides": [
297
+ {
298
+ "matcher": {
299
+ "id": "byName",
300
+ "options": "total_revenue"
301
+ },
302
+ "properties": [
303
+ {
304
+ "id": "links",
305
+ "value": [
306
+ {
307
+ "targetBlank": true,
308
+ "title": "View Expense Transactions For This Period",
309
+ "url": "/d/b21f1092-66a4-4fb0-90ef-ed77d2becaa4?var-Top=Expenses&from=$__from&to=$__to"
310
+ }
311
+ ]
312
+ }
313
+ ]
314
+ }
315
+ ]
316
+ },
317
+ "gridPos": {
318
+ "h": 4,
319
+ "w": 6,
320
+ "x": 18,
321
+ "y": 0
322
+ },
323
+ "id": 3,
324
+ "options": {
325
+ "colorMode": "background",
326
+ "graphMode": "area",
327
+ "justifyMode": "auto",
328
+ "orientation": "auto",
329
+ "percentChangeColorMode": "standard",
330
+ "reduceOptions": {
331
+ "calcs": ["lastNotNull"],
332
+ "fields": "",
333
+ "values": false
334
+ },
335
+ "showPercentChange": false,
336
+ "textMode": "auto",
337
+ "wideLayout": true
338
+ },
339
+ "pluginVersion": "12.2.1",
340
+ "targets": [
341
+ {
342
+ "datasource": "SQLite",
343
+ "queryText": "SELECT SUM(t.value_usd) / ((($__to - $__from) / 1000.0 / 60 / 60 / 24)) AS total_revenue FROM general_ledger t JOIN txgroup_hierarchy gh USING (txgroup_id) inner join txgroups g USING (txgroup_id) WHERE gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') AND t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring})",
344
+ "queryType": "table",
345
+ "rawQueryText": "SELECT SUM(t.value_usd) / ((($__to - $__from) / 1000.0 / 60 / 60 / 24)) AS total_revenue FROM general_ledger t JOIN txgroup_hierarchy gh USING (txgroup_id) inner join txgroups g USING (txgroup_id) WHERE gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') AND t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring})",
346
+ "refId": "A",
347
+ "timeColumns": ["time", "ts"]
348
+ }
349
+ ],
350
+ "title": "Daily Expenses",
351
+ "type": "stat"
352
+ },
353
+ {
354
+ "datasource": "SQLite",
355
+ "description": "Time series chart of expenses by transaction group, aggregated weekly for the selected period. Useful for visualizing spending trends and identifying cost drivers.\n\nData Link: Clicking a group name opens a filtered transactions dashboard for that group and period.",
356
+ "fieldConfig": {
357
+ "defaults": {
358
+ "color": {
359
+ "fixedColor": "dark-red",
360
+ "mode": "continuous-YlRd",
361
+ "seriesBy": "max"
362
+ },
363
+ "custom": {
364
+ "axisBorderShow": false,
365
+ "axisCenteredZero": false,
366
+ "axisColorMode": "text",
367
+ "axisLabel": "",
368
+ "axisPlacement": "auto",
369
+ "barAlignment": 0,
370
+ "barWidthFactor": 0.6,
371
+ "drawStyle": "bars",
372
+ "fillOpacity": 70,
373
+ "gradientMode": "none",
374
+ "hideFrom": {
375
+ "legend": false,
376
+ "tooltip": false,
377
+ "viz": false
378
+ },
379
+ "insertNulls": false,
380
+ "lineInterpolation": "linear",
381
+ "lineWidth": 1,
382
+ "pointSize": 5,
383
+ "scaleDistribution": {
384
+ "type": "linear"
385
+ },
386
+ "showPoints": "auto",
387
+ "showValues": false,
388
+ "spanNulls": false,
389
+ "stacking": {
390
+ "group": "A",
391
+ "mode": "normal"
392
+ },
393
+ "thresholdsStyle": {
394
+ "mode": "off"
395
+ }
396
+ },
397
+ "mappings": [],
398
+ "thresholds": {
399
+ "mode": "absolute",
400
+ "steps": [
401
+ {
402
+ "color": "green",
403
+ "value": 0
404
+ }
405
+ ]
406
+ },
407
+ "unit": "currencyUSD"
408
+ },
409
+ "overrides": [
410
+ {
411
+ "matcher": {
412
+ "id": "byName",
413
+ "options": "Expenses (sum)"
414
+ },
415
+ "properties": [
416
+ {
417
+ "id": "links",
418
+ "value": [
419
+ {
420
+ "targetBlank": true,
421
+ "title": "View ${__series.name} Transactions",
422
+ "url": "/d/b21f1092-66a4-4fb0-90ef-ed77d2becaa4?var-Top=${__series.name}&from=$__from&to=$__to"
423
+ }
424
+ ]
425
+ }
426
+ ]
427
+ }
428
+ ]
429
+ },
430
+ "gridPos": {
431
+ "h": 12,
432
+ "w": 24,
433
+ "x": 0,
434
+ "y": 4
435
+ },
436
+ "id": 11,
437
+ "options": {
438
+ "legend": {
439
+ "calcs": ["sum"],
440
+ "displayMode": "list",
441
+ "placement": "bottom",
442
+ "showLegend": true
443
+ },
444
+ "tooltip": {
445
+ "hideZeros": false,
446
+ "mode": "multi",
447
+ "sort": "none"
448
+ }
449
+ },
450
+ "pluginVersion": "12.2.1",
451
+ "targets": [
452
+ {
453
+ "datasource": "SQLite",
454
+ "queryText": "SELECT t.timestamp, g.name AS \"TxGroup\", SUM(CASE WHEN gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') THEN t.value_usd ELSE 0 END) AS \"Expenses\" FROM general_ledger AS t JOIN txgroup_hierarchy gh ON t.txgroup_id = gh.txgroup_id INNER JOIN txgroups g USING (txgroup_id) WHERE t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring}) GROUP BY t.timestamp, g.name ORDER BY t.timestamp;",
455
+ "queryType": "table",
456
+ "rawQueryText": "SELECT t.timestamp, g.name AS \"TxGroup\", SUM(CASE WHEN gh.top_category in ('Cost of Revenue', 'Expenses', 'Other Expense') THEN t.value_usd ELSE 0 END) AS \"Expenses\" FROM general_ledger AS t JOIN txgroup_hierarchy gh ON t.txgroup_id = gh.txgroup_id INNER JOIN txgroups g USING (txgroup_id) WHERE t.timestamp >= $__from/1000 AND t.timestamp <= $__to/1000 AND g.name IN (${Txgroup:sqlstring}) GROUP BY t.timestamp, g.name ORDER BY t.timestamp;",
457
+ "refId": "A",
458
+ "timeColumns": ["timestamp"]
459
+ }
460
+ ],
461
+ "title": "Weekly Cashflow",
462
+ "transformations": [
463
+ {
464
+ "id": "formatTime",
465
+ "options": {
466
+ "outputFormat": "YYYY-WW",
467
+ "timeField": "timestamp",
468
+ "timezone": "browser",
469
+ "useTimezone": true
470
+ }
471
+ },
472
+ {
473
+ "id": "convertFieldType",
474
+ "options": {
475
+ "conversions": [
476
+ {
477
+ "dateFormat": "YYYY-WW",
478
+ "destinationType": "time",
479
+ "targetField": "timestamp"
480
+ }
481
+ ],
482
+ "fields": {}
483
+ }
484
+ },
485
+ {
486
+ "id": "groupBy",
487
+ "options": {
488
+ "fields": {
489
+ "Expenses": {
490
+ "aggregations": ["sum"],
491
+ "operation": "aggregate"
492
+ },
493
+ "TxGroup": {
494
+ "aggregations": [],
495
+ "operation": "groupby"
496
+ },
497
+ "timestamp": {
498
+ "aggregations": [],
499
+ "operation": "groupby"
500
+ }
501
+ }
502
+ }
503
+ },
504
+ {
505
+ "id": "partitionByValues",
506
+ "options": {
507
+ "fields": ["TxGroup"],
508
+ "keepFields": false,
509
+ "naming": {
510
+ "asLabels": false
511
+ }
512
+ }
513
+ }
514
+ ],
515
+ "type": "timeseries"
516
+ }
517
+ ],
518
+ "preload": false,
519
+ "refresh": "",
520
+ "schemaVersion": 42,
521
+ "tags": ["breakdown", "expenses"],
522
+ "templating": {
523
+ "list": [
524
+ {
525
+ "allowCustomValue": true,
526
+ "current": {
527
+ "text": "All",
528
+ "value": "$__all"
529
+ },
530
+ "definition": "SELECT DISTINCT t.name FROM treasury_txs a INNER JOIN txgroup_hierarchy gh ON a.txgroup_id = gh.txgroup_id LEFT JOIN txgroups t ON gh.txgroup_id = t.txgroup_id WHERE (gh.top_category = 'Expenses' OR gh.top_category = 'Cost of Revenue' OR gh.top_category = 'Other Expense') AND a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000;",
531
+ "description": "Filter the dashboard by transaction group.\n\nSelect one or more groups to view expenses for specific categories, or 'All' to include every group.",
532
+ "includeAll": true,
533
+ "label": "Tx Group",
534
+ "name": "Txgroup",
535
+ "options": [],
536
+ "query": "SELECT DISTINCT t.name FROM treasury_txs a INNER JOIN txgroup_hierarchy gh ON a.txgroup_id = gh.txgroup_id LEFT JOIN txgroups t ON gh.txgroup_id = t.txgroup_id WHERE (gh.top_category = 'Expenses' OR gh.top_category = 'Cost of Revenue' OR gh.top_category = 'Other Expense') AND a.timestamp >= $__from/1000 AND a.timestamp <= $__to/1000;",
537
+ "refresh": 2,
538
+ "regex": "",
539
+ "sort": 5,
540
+ "type": "query"
541
+ }
542
+ ]
543
+ },
544
+ "time": {
545
+ "from": "now-6M",
546
+ "to": "now"
547
+ },
548
+ "timepicker": {},
549
+ "timezone": "",
550
+ "title": "Expenses Over Time",
551
+ "uid": "62bccd38-918c-4395-9180-8f7f911e9ddf",
552
+ "version": 15
553
+ }