sorokeep 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/CONTRIBUTING.md +296 -0
  2. package/LICENSE +21 -0
  3. package/README.md +677 -0
  4. package/dist/alerts/alerts.d.ts +21 -0
  5. package/dist/alerts/alerts.d.ts.map +1 -0
  6. package/dist/alerts/alerts.js +18 -0
  7. package/dist/alerts/alerts.js.map +1 -0
  8. package/dist/alerts/discord.d.ts +3 -0
  9. package/dist/alerts/discord.d.ts.map +1 -0
  10. package/dist/alerts/discord.js +199 -0
  11. package/dist/alerts/discord.js.map +1 -0
  12. package/dist/alerts/dispatcher.d.ts +13 -0
  13. package/dist/alerts/dispatcher.d.ts.map +1 -0
  14. package/dist/alerts/dispatcher.js +91 -0
  15. package/dist/alerts/dispatcher.js.map +1 -0
  16. package/dist/alerts/keys.d.ts +24 -0
  17. package/dist/alerts/keys.d.ts.map +1 -0
  18. package/dist/alerts/keys.js +44 -0
  19. package/dist/alerts/keys.js.map +1 -0
  20. package/dist/alerts/pagerduty.d.ts +8 -0
  21. package/dist/alerts/pagerduty.d.ts.map +1 -0
  22. package/dist/alerts/pagerduty.js +164 -0
  23. package/dist/alerts/pagerduty.js.map +1 -0
  24. package/dist/alerts/resource.d.ts +23 -0
  25. package/dist/alerts/resource.d.ts.map +1 -0
  26. package/dist/alerts/resource.js +167 -0
  27. package/dist/alerts/resource.js.map +1 -0
  28. package/dist/alerts/slack.d.ts +7 -0
  29. package/dist/alerts/slack.d.ts.map +1 -0
  30. package/dist/alerts/slack.js +184 -0
  31. package/dist/alerts/slack.js.map +1 -0
  32. package/dist/alerts/telegram.d.ts +9 -0
  33. package/dist/alerts/telegram.d.ts.map +1 -0
  34. package/dist/alerts/telegram.js +133 -0
  35. package/dist/alerts/telegram.js.map +1 -0
  36. package/dist/alerts/templates.d.ts +109 -0
  37. package/dist/alerts/templates.d.ts.map +1 -0
  38. package/dist/alerts/templates.js +139 -0
  39. package/dist/alerts/templates.js.map +1 -0
  40. package/dist/alerts/types.d.ts +113 -0
  41. package/dist/alerts/types.d.ts.map +1 -0
  42. package/dist/alerts/types.js +87 -0
  43. package/dist/alerts/types.js.map +1 -0
  44. package/dist/alerts/webhook.d.ts +13 -0
  45. package/dist/alerts/webhook.d.ts.map +1 -0
  46. package/dist/alerts/webhook.js +56 -0
  47. package/dist/alerts/webhook.js.map +1 -0
  48. package/dist/cli/schemaFormatter.d.ts +11 -0
  49. package/dist/cli/schemaFormatter.d.ts.map +1 -0
  50. package/dist/cli/schemaFormatter.js +74 -0
  51. package/dist/cli/schemaFormatter.js.map +1 -0
  52. package/dist/commands/alerts.d.ts +3 -0
  53. package/dist/commands/alerts.d.ts.map +1 -0
  54. package/dist/commands/alerts.js +256 -0
  55. package/dist/commands/alerts.js.map +1 -0
  56. package/dist/commands/budget.d.ts +3 -0
  57. package/dist/commands/budget.d.ts.map +1 -0
  58. package/dist/commands/budget.js +47 -0
  59. package/dist/commands/budget.js.map +1 -0
  60. package/dist/commands/channels.d.ts +3 -0
  61. package/dist/commands/channels.d.ts.map +1 -0
  62. package/dist/commands/channels.js +84 -0
  63. package/dist/commands/channels.js.map +1 -0
  64. package/dist/commands/check.d.ts +3 -0
  65. package/dist/commands/check.d.ts.map +1 -0
  66. package/dist/commands/check.js +58 -0
  67. package/dist/commands/check.js.map +1 -0
  68. package/dist/commands/completion.d.ts +3 -0
  69. package/dist/commands/completion.d.ts.map +1 -0
  70. package/dist/commands/completion.js +36 -0
  71. package/dist/commands/completion.js.map +1 -0
  72. package/dist/commands/costs.d.ts +15 -0
  73. package/dist/commands/costs.d.ts.map +1 -0
  74. package/dist/commands/costs.js +280 -0
  75. package/dist/commands/costs.js.map +1 -0
  76. package/dist/commands/daemon.d.ts +3 -0
  77. package/dist/commands/daemon.d.ts.map +1 -0
  78. package/dist/commands/daemon.js +93 -0
  79. package/dist/commands/daemon.js.map +1 -0
  80. package/dist/commands/db.d.ts +3 -0
  81. package/dist/commands/db.d.ts.map +1 -0
  82. package/dist/commands/db.js +140 -0
  83. package/dist/commands/db.js.map +1 -0
  84. package/dist/commands/guard.d.ts +3 -0
  85. package/dist/commands/guard.d.ts.map +1 -0
  86. package/dist/commands/guard.js +181 -0
  87. package/dist/commands/guard.js.map +1 -0
  88. package/dist/commands/history.d.ts +3 -0
  89. package/dist/commands/history.d.ts.map +1 -0
  90. package/dist/commands/history.js +57 -0
  91. package/dist/commands/history.js.map +1 -0
  92. package/dist/commands/inspect.d.ts +3 -0
  93. package/dist/commands/inspect.d.ts.map +1 -0
  94. package/dist/commands/inspect.js +82 -0
  95. package/dist/commands/inspect.js.map +1 -0
  96. package/dist/commands/mcp.d.ts +3 -0
  97. package/dist/commands/mcp.d.ts.map +1 -0
  98. package/dist/commands/mcp.js +20 -0
  99. package/dist/commands/mcp.js.map +1 -0
  100. package/dist/commands/pause.d.ts +3 -0
  101. package/dist/commands/pause.d.ts.map +1 -0
  102. package/dist/commands/pause.js +32 -0
  103. package/dist/commands/pause.js.map +1 -0
  104. package/dist/commands/resources.d.ts +3 -0
  105. package/dist/commands/resources.d.ts.map +1 -0
  106. package/dist/commands/resources.js +95 -0
  107. package/dist/commands/resources.js.map +1 -0
  108. package/dist/commands/restore.d.ts +3 -0
  109. package/dist/commands/restore.d.ts.map +1 -0
  110. package/dist/commands/restore.js +92 -0
  111. package/dist/commands/restore.js.map +1 -0
  112. package/dist/commands/resume.d.ts +3 -0
  113. package/dist/commands/resume.d.ts.map +1 -0
  114. package/dist/commands/resume.js +31 -0
  115. package/dist/commands/resume.js.map +1 -0
  116. package/dist/commands/status.d.ts +3 -0
  117. package/dist/commands/status.d.ts.map +1 -0
  118. package/dist/commands/status.js +63 -0
  119. package/dist/commands/status.js.map +1 -0
  120. package/dist/commands/watch.d.ts +3 -0
  121. package/dist/commands/watch.d.ts.map +1 -0
  122. package/dist/commands/watch.js +163 -0
  123. package/dist/commands/watch.js.map +1 -0
  124. package/dist/core/aws_secrets.d.ts +13 -0
  125. package/dist/core/aws_secrets.d.ts.map +1 -0
  126. package/dist/core/aws_secrets.js +34 -0
  127. package/dist/core/aws_secrets.js.map +1 -0
  128. package/dist/core/budget.d.ts +10 -0
  129. package/dist/core/budget.d.ts.map +1 -0
  130. package/dist/core/budget.js +31 -0
  131. package/dist/core/budget.js.map +1 -0
  132. package/dist/core/channels.d.ts +67 -0
  133. package/dist/core/channels.d.ts.map +1 -0
  134. package/dist/core/channels.js +136 -0
  135. package/dist/core/channels.js.map +1 -0
  136. package/dist/core/check.d.ts +25 -0
  137. package/dist/core/check.d.ts.map +1 -0
  138. package/dist/core/check.js +85 -0
  139. package/dist/core/check.js.map +1 -0
  140. package/dist/core/completion.d.ts +9 -0
  141. package/dist/core/completion.d.ts.map +1 -0
  142. package/dist/core/completion.js +68 -0
  143. package/dist/core/completion.js.map +1 -0
  144. package/dist/core/costs.d.ts +90 -0
  145. package/dist/core/costs.d.ts.map +1 -0
  146. package/dist/core/costs.js +147 -0
  147. package/dist/core/costs.js.map +1 -0
  148. package/dist/core/decoder.d.ts +7 -0
  149. package/dist/core/decoder.d.ts.map +1 -0
  150. package/dist/core/decoder.js +38 -0
  151. package/dist/core/decoder.js.map +1 -0
  152. package/dist/core/discovery.d.ts +38 -0
  153. package/dist/core/discovery.d.ts.map +1 -0
  154. package/dist/core/discovery.js +208 -0
  155. package/dist/core/discovery.js.map +1 -0
  156. package/dist/core/extension.d.ts +83 -0
  157. package/dist/core/extension.d.ts.map +1 -0
  158. package/dist/core/extension.js +429 -0
  159. package/dist/core/extension.js.map +1 -0
  160. package/dist/core/inspect.d.ts +62 -0
  161. package/dist/core/inspect.d.ts.map +1 -0
  162. package/dist/core/inspect.js +303 -0
  163. package/dist/core/inspect.js.map +1 -0
  164. package/dist/core/introspection.d.ts +8 -0
  165. package/dist/core/introspection.d.ts.map +1 -0
  166. package/dist/core/introspection.js +8 -0
  167. package/dist/core/introspection.js.map +1 -0
  168. package/dist/core/monitor.d.ts +42 -0
  169. package/dist/core/monitor.d.ts.map +1 -0
  170. package/dist/core/monitor.js +188 -0
  171. package/dist/core/monitor.js.map +1 -0
  172. package/dist/core/rent_projection.d.ts +153 -0
  173. package/dist/core/rent_projection.d.ts.map +1 -0
  174. package/dist/core/rent_projection.js +146 -0
  175. package/dist/core/rent_projection.js.map +1 -0
  176. package/dist/core/scvalTranslator.d.ts +11 -0
  177. package/dist/core/scvalTranslator.d.ts.map +1 -0
  178. package/dist/core/scvalTranslator.js +36 -0
  179. package/dist/core/scvalTranslator.js.map +1 -0
  180. package/dist/core/state_diff.d.ts +45 -0
  181. package/dist/core/state_diff.d.ts.map +1 -0
  182. package/dist/core/state_diff.js +112 -0
  183. package/dist/core/state_diff.js.map +1 -0
  184. package/dist/core/status.d.ts +24 -0
  185. package/dist/core/status.d.ts.map +1 -0
  186. package/dist/core/status.js +57 -0
  187. package/dist/core/status.js.map +1 -0
  188. package/dist/core/vault.d.ts +37 -0
  189. package/dist/core/vault.d.ts.map +1 -0
  190. package/dist/core/vault.js +179 -0
  191. package/dist/core/vault.js.map +1 -0
  192. package/dist/core/watch.d.ts +36 -0
  193. package/dist/core/watch.d.ts.map +1 -0
  194. package/dist/core/watch.js +176 -0
  195. package/dist/core/watch.js.map +1 -0
  196. package/dist/daemon/loop.d.ts +38 -0
  197. package/dist/daemon/loop.d.ts.map +1 -0
  198. package/dist/daemon/loop.js +169 -0
  199. package/dist/daemon/loop.js.map +1 -0
  200. package/dist/db/backup.d.ts +12 -0
  201. package/dist/db/backup.d.ts.map +1 -0
  202. package/dist/db/backup.js +132 -0
  203. package/dist/db/backup.js.map +1 -0
  204. package/dist/db/budget.d.ts +17 -0
  205. package/dist/db/budget.d.ts.map +1 -0
  206. package/dist/db/budget.js +31 -0
  207. package/dist/db/budget.js.map +1 -0
  208. package/dist/db/database.d.ts +6 -0
  209. package/dist/db/database.d.ts.map +1 -0
  210. package/dist/db/database.js +134 -0
  211. package/dist/db/database.js.map +1 -0
  212. package/dist/db/migrations/.gitkeep +1 -0
  213. package/dist/db/migrations/001_resource_usage_logs.sql +28 -0
  214. package/dist/db/migrator.d.ts +28 -0
  215. package/dist/db/migrator.d.ts.map +1 -0
  216. package/dist/db/migrator.js +75 -0
  217. package/dist/db/migrator.js.map +1 -0
  218. package/dist/db/repositories.d.ts +474 -0
  219. package/dist/db/repositories.d.ts.map +1 -0
  220. package/dist/db/repositories.js +809 -0
  221. package/dist/db/repositories.js.map +1 -0
  222. package/dist/db/schema.sql +207 -0
  223. package/dist/index.d.ts +3 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +47 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/lib.d.ts +20 -0
  228. package/dist/lib.d.ts.map +1 -0
  229. package/dist/lib.js +16 -0
  230. package/dist/lib.js.map +1 -0
  231. package/dist/logging/index.d.ts +22 -0
  232. package/dist/logging/index.d.ts.map +1 -0
  233. package/dist/logging/index.js +34 -0
  234. package/dist/logging/index.js.map +1 -0
  235. package/dist/logging/logger.d.ts +14 -0
  236. package/dist/logging/logger.d.ts.map +1 -0
  237. package/dist/logging/logger.js +135 -0
  238. package/dist/logging/logger.js.map +1 -0
  239. package/dist/logging/types.d.ts +10 -0
  240. package/dist/logging/types.d.ts.map +1 -0
  241. package/dist/logging/types.js +2 -0
  242. package/dist/logging/types.js.map +1 -0
  243. package/dist/mcp/index.d.ts +3 -0
  244. package/dist/mcp/index.d.ts.map +1 -0
  245. package/dist/mcp/index.js +14 -0
  246. package/dist/mcp/index.js.map +1 -0
  247. package/dist/mcp/server.d.ts +10 -0
  248. package/dist/mcp/server.d.ts.map +1 -0
  249. package/dist/mcp/server.js +51 -0
  250. package/dist/mcp/server.js.map +1 -0
  251. package/dist/mcp/tools/get-extension-costs.d.ts +4 -0
  252. package/dist/mcp/tools/get-extension-costs.d.ts.map +1 -0
  253. package/dist/mcp/tools/get-extension-costs.js +33 -0
  254. package/dist/mcp/tools/get-extension-costs.js.map +1 -0
  255. package/dist/mcp/tools/get_contract_status.d.ts +8 -0
  256. package/dist/mcp/tools/get_contract_status.d.ts.map +1 -0
  257. package/dist/mcp/tools/get_contract_status.js +33 -0
  258. package/dist/mcp/tools/get_contract_status.js.map +1 -0
  259. package/dist/rpc/client.d.ts +154 -0
  260. package/dist/rpc/client.d.ts.map +1 -0
  261. package/dist/rpc/client.js +766 -0
  262. package/dist/rpc/client.js.map +1 -0
  263. package/dist/utils/config.d.ts +51 -0
  264. package/dist/utils/config.d.ts.map +1 -0
  265. package/dist/utils/config.js +86 -0
  266. package/dist/utils/config.js.map +1 -0
  267. package/dist/utils/formatting.d.ts +10 -0
  268. package/dist/utils/formatting.d.ts.map +1 -0
  269. package/dist/utils/formatting.js +66 -0
  270. package/dist/utils/formatting.js.map +1 -0
  271. package/dist/utils/watch-config.d.ts +13 -0
  272. package/dist/utils/watch-config.d.ts.map +1 -0
  273. package/dist/utils/watch-config.js +32 -0
  274. package/dist/utils/watch-config.js.map +1 -0
  275. package/package.json +73 -0
@@ -0,0 +1,474 @@
1
+ import type Database from "better-sqlite3";
2
+ export interface Contract {
3
+ id: string;
4
+ name: string | null;
5
+ network: string;
6
+ wasm_hash: string | null;
7
+ tags: string | null;
8
+ poll_interval_seconds?: number | null;
9
+ active: number;
10
+ registered_at: Date;
11
+ last_checked_ledger?: number | null;
12
+ /** ISO-8601 timestamp of the last successful introspection (instance/WASM key discovery). NULL if never introspected. */
13
+ last_introspected_at?: string | null;
14
+ }
15
+ export interface ContractEntry {
16
+ id: number;
17
+ contract_id: string;
18
+ entry_key_xdr: string;
19
+ entry_type: "instance" | "wasm" | "persistent" | "temporary";
20
+ label: string | null;
21
+ live_until_ledger: number;
22
+ last_modified_ledger: number;
23
+ discovery_source: "deterministic" | "manual" | "instance_scan" | "footprint" | "introspection";
24
+ first_seen_at: Date;
25
+ last_checked_at: Date | null;
26
+ }
27
+ export interface ExtensionPolicy {
28
+ id: number;
29
+ contract_id: string;
30
+ enabled: boolean;
31
+ target_ttl_ledgers: number;
32
+ extend_when_below_ledgers: number;
33
+ keypair_public: string | null;
34
+ keypair_source: string | null;
35
+ created_at: Date;
36
+ }
37
+ export interface AlertConfig {
38
+ id: number;
39
+ contract_id: string;
40
+ channel_type: "slack" | "webhook" | "pagerduty" | "discord" | "telegram";
41
+ channel_target: string;
42
+ threshold_ledgers: number;
43
+ webhook_secret: string | null;
44
+ created_at: Date;
45
+ }
46
+ export interface AlertFired {
47
+ id: number;
48
+ alert_config_id: number;
49
+ contract_entry_id: number;
50
+ fired_at_ledger: number;
51
+ fired_at: Date;
52
+ ttl_at_fire: number;
53
+ resolved: boolean;
54
+ resolved_at?: string | null;
55
+ }
56
+ export interface ExtensionRecord {
57
+ id: number;
58
+ contract_id: string;
59
+ contract_entry_id: number;
60
+ old_ttl_ledgers: number;
61
+ new_ttl_ledgers: number;
62
+ tx_hash: string;
63
+ cost_xlm: number | null;
64
+ cpu_insns: number | null;
65
+ mem_bytes: number | null;
66
+ is_anomaly: number;
67
+ executed_at_ledger: number;
68
+ executed_at: string;
69
+ }
70
+ export interface StateSnapshot {
71
+ id: number;
72
+ contract_entry_id: number;
73
+ snapshot_ledger: number;
74
+ value_hash: string;
75
+ value_xdr: string;
76
+ created_at: string;
77
+ }
78
+ export interface StateChange {
79
+ id: number;
80
+ contract_entry_id: number;
81
+ old_snapshot_id: number | null;
82
+ new_snapshot_id: number | null;
83
+ diff_type: "created" | "updated" | "deleted";
84
+ diff_json: string;
85
+ detected_at_ledger: number;
86
+ created_at: string;
87
+ }
88
+ export { upsertBudget, getBudget, addBudgetSpent } from "./budget.js";
89
+ export declare function insertContract(db: Database.Database, contract: {
90
+ id: string;
91
+ name?: string;
92
+ network: string;
93
+ wasm_hash?: string;
94
+ tags?: string;
95
+ poll_interval_seconds?: number | null;
96
+ active?: number;
97
+ }): void;
98
+ export declare function getContract(db: Database.Database, id: string): Contract | undefined;
99
+ export declare function getAllContracts(db: Database.Database): Contract[];
100
+ export declare function updateLastCheckedLedger(db: Database.Database, contractId: string, ledger: number): void;
101
+ export declare function deleteContract(db: Database.Database, id: string): void;
102
+ export declare function updateContractPollInterval(db: Database.Database, contractId: string, pollIntervalSeconds: number | null): void;
103
+ export declare function getContractPollInterval(db: Database.Database, contractId: string): number | null;
104
+ export declare function setContractActiveStatus(db: Database.Database, contractId: string, active: boolean): void;
105
+ /**
106
+ * Record that a successful contract introspection (instance/WASM key discovery)
107
+ * was performed at the given timestamp. Accepts an ISO-8601 string so callers
108
+ * can control the clock in tests.
109
+ */
110
+ export declare function updateLastIntrospectedAt(db: Database.Database, contractId: string, isoTimestamp: string): void;
111
+ /**
112
+ * Return true when the introspection cache for the given contract is still
113
+ * valid — i.e. `last_introspected_at` is not NULL and the timestamp is
114
+ * strictly less than `maxAgeMs` milliseconds ago.
115
+ *
116
+ * The default max-age is 24 hours (86 400 000 ms).
117
+ * The boundary is *exclusive on the valid side*: exactly 24 h ago is expired.
118
+ */
119
+ export declare function isIntrospectionCacheValid(db: Database.Database, contractId: string, maxAgeMs?: number): boolean;
120
+ export declare function upsertEntry(db: Database.Database, entry: {
121
+ contract_id: string;
122
+ entry_key_xdr: string;
123
+ entry_type: string;
124
+ label?: string;
125
+ live_until_ledger?: number;
126
+ last_modified_ledger?: number;
127
+ discovery_source?: string;
128
+ }): void;
129
+ export declare function getEntriesForContract(db: Database.Database, contractId: string): ContractEntry[];
130
+ export declare function upsertExtensionPolicy(db: Database.Database, policy: {
131
+ contract_id: string;
132
+ enabled?: boolean;
133
+ target_ttl_ledgers: number;
134
+ extend_when_below_ledgers: number;
135
+ keypair_public?: string;
136
+ keypair_source?: string;
137
+ }): void;
138
+ export declare function getExtensionPolicy(db: Database.Database, contractId: string): ExtensionPolicy | undefined;
139
+ export declare function insertAlertConfig(db: Database.Database, config: {
140
+ contract_id: string;
141
+ channel_type: string;
142
+ channel_target: string;
143
+ threshold_ledgers: number;
144
+ webhook_secret?: string;
145
+ }): void;
146
+ export declare function getAlertConfigById(db: Database.Database, id: number): AlertConfig | undefined;
147
+ export declare function getAlertConfigsForContract(db: Database.Database, contractId: string): AlertConfig[];
148
+ export declare function deleteAlertConfig(db: Database.Database, id: number): void;
149
+ export declare function recordAlertFired(db: Database.Database, alert: {
150
+ alert_config_id: number;
151
+ contract_entry_id: number;
152
+ fired_at_ledger: number;
153
+ ttl_at_fire: number;
154
+ }): void;
155
+ export declare function hasUnresolvedAlert(db: Database.Database, alertConfigId: number, entryId: number): boolean;
156
+ export declare function resolveAlerts(db: Database.Database, entryId: number, alertConfigId: number): number[];
157
+ export declare function recordExtension(db: Database.Database, record: {
158
+ contract_id: string;
159
+ contract_entry_id: number;
160
+ old_ttl_ledgers: number;
161
+ new_ttl_ledgers: number;
162
+ tx_hash: string;
163
+ cost_xlm?: number | null;
164
+ cpu_insns?: number | null;
165
+ mem_bytes?: number | null;
166
+ is_anomaly?: boolean;
167
+ executed_at_ledger: number;
168
+ }): void;
169
+ export declare function getExtensionHistory(db: Database.Database, contractId: string, days?: number): ExtensionRecord[];
170
+ export interface CostDailySnapshot {
171
+ id: number;
172
+ contract_id: string;
173
+ snapshot_date: string;
174
+ total_extensions: number;
175
+ total_cost_xlm: number;
176
+ instance_extensions: number;
177
+ instance_cost_xlm: number;
178
+ wasm_extensions: number;
179
+ wasm_cost_xlm: number;
180
+ persistent_extensions: number;
181
+ persistent_cost_xlm: number;
182
+ temporary_extensions: number;
183
+ temporary_cost_xlm: number;
184
+ created_at: string;
185
+ }
186
+ export interface ContractCostSummary {
187
+ contract_id: string;
188
+ total_extensions: number;
189
+ total_cost_xlm: number;
190
+ byType: {
191
+ instance: {
192
+ count: number;
193
+ cost_xlm: number;
194
+ };
195
+ wasm: {
196
+ count: number;
197
+ cost_xlm: number;
198
+ };
199
+ persistent: {
200
+ count: number;
201
+ cost_xlm: number;
202
+ };
203
+ temporary: {
204
+ count: number;
205
+ cost_xlm: number;
206
+ };
207
+ };
208
+ }
209
+ export declare function aggregateDailyCostSnapshots(db: Database.Database): void;
210
+ export declare function getCostDailySnapshots(db: Database.Database, contractId: string, days?: number): CostDailySnapshot[];
211
+ export declare function getContractCostSummary(db: Database.Database, contractId: string, days?: number): ContractCostSummary;
212
+ /**
213
+ * Count the number of auto-extension transactions that were executed for the
214
+ * given contract within the last hour.
215
+ *
216
+ * Used by the rate limiter to enforce a maximum of N extensions per hour
217
+ * per contract (issue #142).
218
+ *
219
+ * @param db - The SQLite database connection.
220
+ * @param contractId - The contract to check.
221
+ * @returns The number of extensions recorded in the last 60 minutes.
222
+ */
223
+ export declare function countExtensionsInLastHour(db: Database.Database, contractId: string): number;
224
+ export declare function getAverageResourceUsage(db: Database.Database, contractId: string, limit?: number): {
225
+ avg_cpu_insns: number;
226
+ avg_mem_bytes: number;
227
+ count: number;
228
+ } | null;
229
+ /**
230
+ * The fully-joined shape returned by getUndeliveredAlerts.
231
+ * Contains everything the dispatcher needs to build and route an AlertEvent
232
+ * without any further DB lookups.
233
+ */
234
+ export interface UndeliveredAlert {
235
+ alertFiredId: number;
236
+ alertConfigId: number;
237
+ contractId: string;
238
+ contractName: string | null;
239
+ network: string;
240
+ entryId: number;
241
+ entryKeyXdr: string;
242
+ entryType: string;
243
+ entryLabel: string | null;
244
+ channelType: "webhook" | "slack" | "pagerduty" | "discord" | "telegram";
245
+ channelTarget: string;
246
+ thresholdLedgers: number;
247
+ webhookSecret: string | null;
248
+ /** TTL remaining at the moment the alert fired (ttl_at_fire). */
249
+ remainingTTL: number;
250
+ firedAtLedger: number;
251
+ firedAt: string;
252
+ retryCount: number;
253
+ }
254
+ /** Maximum number of delivery attempts before giving up on an alert. */
255
+ export declare const MAX_RETRY_COUNT = 5;
256
+ /**
257
+ * Return all undelivered (delivered = 0) alerts for the given network,
258
+ * joining alerts_fired → alert_configs → contract_entries → contracts.
259
+ * Alerts that have exceeded MAX_RETRY_COUNT are excluded.
260
+ */
261
+ export declare function getUndeliveredAlerts(db: Database.Database, network: string): UndeliveredAlert[];
262
+ /**
263
+ * Mark a single alerts_fired record as delivered.
264
+ * Idempotent — safe to call more than once.
265
+ */
266
+ export declare function markAlertDelivered(db: Database.Database, alertFiredId: number): void;
267
+ /**
268
+ * Count the number of undelivered alerts for the given network.
269
+ * Uses the same filtering logic as getUndeliveredAlerts:
270
+ * - delivered = 0
271
+ * - retry_count < MAX_RETRY_COUNT
272
+ * - matches the specified network
273
+ */
274
+ export declare function countUndeliveredAlerts(db: Database.Database, network: string): number;
275
+ /**
276
+ * Increment the retry count for a failed alert delivery.
277
+ */
278
+ export declare function incrementRetryCount(db: Database.Database, alertFiredId: number): void;
279
+ /**
280
+ * Get alert history for a contract. Returns fired alerts with config and entry info.
281
+ */
282
+ export interface AlertHistoryRecord {
283
+ alertFiredId: number;
284
+ channelType: string;
285
+ channelTarget: string;
286
+ entryKeyXdr: string;
287
+ entryType: string;
288
+ entryLabel: string | null;
289
+ thresholdLedgers: number;
290
+ ttlAtFire: number;
291
+ firedAtLedger: number;
292
+ firedAt: string;
293
+ resolved: number;
294
+ resolvedAt: string | null;
295
+ delivered: number;
296
+ deliveredAt: string | null;
297
+ retryCount: number;
298
+ }
299
+ export declare function getAlertHistory(db: Database.Database, contractId: string, limit?: number): AlertHistoryRecord[];
300
+ export interface ChannelAccount {
301
+ id: number;
302
+ public_key: string;
303
+ label: string | null;
304
+ network: string;
305
+ keypair_source: string | null;
306
+ funded: boolean;
307
+ balance_xlm: number | null;
308
+ balance_checked_at: string | null;
309
+ created_at: string;
310
+ }
311
+ export declare function insertChannelAccount(db: Database.Database, account: {
312
+ public_key: string;
313
+ label?: string;
314
+ network: string;
315
+ }): void;
316
+ export declare function upsertChannelAccount(db: Database.Database, account: {
317
+ public_key: string;
318
+ keypair_source: string;
319
+ network: string;
320
+ }): void;
321
+ export declare function getChannelAccounts(db: Database.Database, network: string): ChannelAccount[];
322
+ export declare function updateChannelBalance(db: Database.Database, publicKey: string, balanceXlm: number): void;
323
+ export declare function deleteChannelAccount(db: Database.Database, publicKey: string): void;
324
+ export declare function markChannelFunded(db: Database.Database, publicKey: string): void;
325
+ export declare function insertStateSnapshot(db: Database.Database, snapshot: {
326
+ contract_entry_id: number;
327
+ snapshot_ledger: number;
328
+ value_hash: string;
329
+ value_xdr: string;
330
+ }): number;
331
+ export declare function getLatestSnapshot(db: Database.Database, contractEntryId: number): StateSnapshot | undefined;
332
+ export declare function insertStateChange(db: Database.Database, change: {
333
+ contract_entry_id: number;
334
+ old_snapshot_id?: number;
335
+ new_snapshot_id?: number;
336
+ diff_type: StateChange["diff_type"];
337
+ diff_json: string;
338
+ detected_at_ledger: number;
339
+ }): number;
340
+ export declare function getStateChanges(db: Database.Database, contractEntryId: number, limit?: number): StateChange[];
341
+ export interface StateChangeHistoryRecord {
342
+ changeId: number;
343
+ contractEntryId: number;
344
+ entryKeyXdr: string;
345
+ entryType: string;
346
+ entryLabel: string | null;
347
+ diffType: "created" | "updated" | "deleted";
348
+ diffJson: string;
349
+ detectedAtLedger: number;
350
+ createdAt: string;
351
+ oldValueXdr: string | null;
352
+ newValueXdr: string | null;
353
+ }
354
+ /**
355
+ * Return a rich history view of state changes for a contract,
356
+ * joining state_changes → contract_entries → state_snapshots.
357
+ */
358
+ export declare function getStateChangeHistory(db: Database.Database, contractId: string, opts?: {
359
+ limit?: number;
360
+ entryKeyXdr?: string;
361
+ }): StateChangeHistoryRecord[];
362
+ export interface ResourceAlertConfig {
363
+ id: number;
364
+ contract_id: string;
365
+ channel_type: "slack" | "webhook";
366
+ channel_target: string;
367
+ cpu_limit: number;
368
+ mem_limit: number;
369
+ webhook_secret: string | null;
370
+ created_at: Date;
371
+ }
372
+ export declare function insertResourceAlertConfig(db: Database.Database, config: {
373
+ contract_id: string;
374
+ channel_type: string;
375
+ channel_target: string;
376
+ cpu_limit: number;
377
+ mem_limit: number;
378
+ webhook_secret?: string;
379
+ }): void;
380
+ export declare function getResourceAlertConfigsForContract(db: Database.Database, contractId: string): ResourceAlertConfig[];
381
+ export declare function getResourceAlertConfigById(db: Database.Database, id: number): ResourceAlertConfig | undefined;
382
+ export declare function deleteResourceAlertConfig(db: Database.Database, id: number): void;
383
+ export declare function recordResourceAlertFired(db: Database.Database, alert: {
384
+ resource_alert_config_id: number;
385
+ resource_type: "cpu" | "memory";
386
+ usage: number;
387
+ limit: number;
388
+ usage_percent: number;
389
+ fired_at_ledger?: number;
390
+ }): number;
391
+ export interface ResourceUsageRecord {
392
+ resourceType: "cpu" | "memory";
393
+ usage: number;
394
+ usagePercent: number;
395
+ firedAt: string;
396
+ }
397
+ export declare function getResourceUsageHistory(db: Database.Database, contractId: string, days?: number): ResourceUsageRecord[];
398
+ export declare function getUndeliveredResourceAlerts(db: Database.Database, network: string): Array<{
399
+ alertFiredId: number;
400
+ resourceAlertConfigId: number;
401
+ contractId: string;
402
+ contractName: string | null;
403
+ network: string;
404
+ resourceType: "cpu" | "memory";
405
+ usage: number;
406
+ limit: number;
407
+ usagePercent: number;
408
+ channelType: "webhook" | "slack";
409
+ channelTarget: string;
410
+ webhookSecret: string | null;
411
+ retryCount: number;
412
+ firedAtLedger: number | null;
413
+ }>;
414
+ export declare function markResourceAlertDelivered(db: Database.Database, alertFiredId: number): void;
415
+ export declare function incrementResourceAlertRetryCount(db: Database.Database, alertFiredId: number): void;
416
+ export declare function hasUnresolvedResourceAlert(db: Database.Database, configId: number, resourceType: "cpu" | "memory", currentUsagePercent?: number): boolean;
417
+ /**
418
+ * A single resource-usage snapshot captured per Soroban transaction.
419
+ * All fee columns are nullable because not every RPC response includes the
420
+ * full fee breakdown.
421
+ */
422
+ export interface ResourceUsageLog {
423
+ id: number;
424
+ contract_id: string;
425
+ cpu_insns: number;
426
+ mem_bytes: number;
427
+ fee_instructions: number | null;
428
+ fee_read_ledger_entries: number | null;
429
+ fee_write_ledger_entries: number | null;
430
+ fee_read_bytes: number | null;
431
+ fee_write_bytes: number | null;
432
+ fee_transaction_size: number | null;
433
+ fee_historical_ledger: number | null;
434
+ fee_rent_ledger: number | null;
435
+ fee_refundable: number | null;
436
+ recorded_at: string;
437
+ }
438
+ /**
439
+ * Insert a new resource-usage log entry.
440
+ *
441
+ * @returns The auto-assigned row id of the inserted entry.
442
+ */
443
+ export declare function insertResourceUsageLog(db: Database.Database, log: {
444
+ contract_id: string;
445
+ cpu_insns: number;
446
+ mem_bytes: number;
447
+ fee_instructions?: number | null;
448
+ fee_read_ledger_entries?: number | null;
449
+ fee_write_ledger_entries?: number | null;
450
+ fee_read_bytes?: number | null;
451
+ fee_write_bytes?: number | null;
452
+ fee_transaction_size?: number | null;
453
+ fee_historical_ledger?: number | null;
454
+ fee_rent_ledger?: number | null;
455
+ fee_refundable?: number | null;
456
+ /** Optional ISO-8601 timestamp; defaults to CURRENT_TIMESTAMP when omitted. */
457
+ recorded_at?: string;
458
+ }): number;
459
+ /**
460
+ * Return resource-usage logs for a contract, newest first.
461
+ *
462
+ * @param options.limit Maximum number of rows to return (must be ≥ 0).
463
+ * @param options.since ISO-8601 lower-bound for recorded_at (inclusive).
464
+ */
465
+ export declare function getResourceUsageLogs(db: Database.Database, contractId: string, options?: {
466
+ limit?: number;
467
+ since?: string;
468
+ }): ResourceUsageLog[];
469
+ /**
470
+ * Return the single most-recent resource-usage log for a contract,
471
+ * or `undefined` if none exist.
472
+ */
473
+ export declare function getLatestResourceUsageLog(db: Database.Database, contractId: string): ResourceUsageLog | undefined;
474
+ //# sourceMappingURL=repositories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.d.ts","sourceRoot":"","sources":["../../src/db/repositories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,IAAI,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,yHAAyH;IACzH,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;IAC7D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,eAAe,GAAG,QAAQ,GAAG,eAAe,GAAG,WAAW,GAAG,eAAe,CAAC;IAC/F,aAAa,EAAE,IAAI,CAAC;IACpB,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB,EAAE,MAAM,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGtE,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAoB7M;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEnF;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAEjE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAEvG;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,mBAAmB,EAAE,MAAM,GAAG,IAAI,GACjC,IAAI,CAEN;AAED,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAGf;AAED,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,GACd,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,IAAI,CAIN;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAuB,GAC9B,OAAO,CAaT;AAGD,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,IAAI,CAiBP;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE,CAEhG;AAGD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB,EAAE,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,IAAI,CAkBP;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEzG;AAGD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,IAAI,CAQP;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE7F;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE,CAEnG;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAEzE;AAGD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE;IAC7D,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,IAAI,CAKP;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAOzG;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAcrG;AAGD,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,IAAI,CAWP;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CAW/G;AAGD,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE;QACJ,QAAQ,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1C,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;QAChD,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC;KAClD,CAAC;CACL;AAED,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA0DvE;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAanH;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAI,mBAAmB,CA2FrH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ3F;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyBzK;AAID;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IACxE,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,wEAAwE;AACxE,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GAChB,gBAAgB,EAAE,CA+BpB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAMpF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,GAChB,MAAM,CAaR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAMrF;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA6B/G;AAID,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CASP;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAQP;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAG3F;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAMvG;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEnF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEhF;AAGD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE;IACjE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAMT;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAO3G;AAGD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IAC7D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC9B,GAAG,MAAM,CAUT;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAU7G;AAED,MAAM,WAAW,wBAAwB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,wBAAwB,EAAE,CAuC5B;AAKD,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,IAAI,CAAC;CACpB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,IAAI,CAYP;AAED,wBAAgB,kCAAkC,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAEnH;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAE7G;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAEjF;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE;IACnE,wBAAwB,EAAE,MAAM,CAAC;IACjC,aAAa,EAAE,KAAK,GAAG,QAAQ,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,MAAM,CAaT;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAyBvH;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACxF,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC,CAsCD;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAI5F;AAED,wBAAgB,gCAAgC,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAElG;AAED,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,KAAK,GAAG,QAAQ,EAC9B,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAuBT;AAKD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,GAAG,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,GACF,MAAM,CAgDR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,gBAAgB,EAAE,CA2BpB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACrC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,EAAE,MAAM,GACnB,gBAAgB,GAAG,SAAS,CAQ9B"}