@zenx-labs/godl-supply 0.1.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 (234) hide show
  1. package/README.md +289 -0
  2. package/dist/accounts.d.ts +35 -0
  3. package/dist/accounts.d.ts.map +1 -0
  4. package/dist/accounts.js +276 -0
  5. package/dist/accounts.js.map +1 -0
  6. package/dist/cache/store.d.ts +11 -0
  7. package/dist/cache/store.d.ts.map +1 -0
  8. package/dist/cache/store.js +31 -0
  9. package/dist/cache/store.js.map +1 -0
  10. package/dist/client.d.ts +65 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +210 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/constants.d.ts +13 -0
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/constants.js +13 -0
  17. package/dist/constants.js.map +1 -0
  18. package/dist/generated/accounts/automation.d.ts +39 -0
  19. package/dist/generated/accounts/automation.d.ts.map +1 -0
  20. package/dist/generated/accounts/automation.js +60 -0
  21. package/dist/generated/accounts/automation.js.map +1 -0
  22. package/dist/generated/accounts/board.d.ts +31 -0
  23. package/dist/generated/accounts/board.d.ts.map +1 -0
  24. package/dist/generated/accounts/board.js +52 -0
  25. package/dist/generated/accounts/board.js.map +1 -0
  26. package/dist/generated/accounts/config.d.ts +39 -0
  27. package/dist/generated/accounts/config.d.ts.map +1 -0
  28. package/dist/generated/accounts/config.js +60 -0
  29. package/dist/generated/accounts/config.js.map +1 -0
  30. package/dist/generated/accounts/index.d.ts +19 -0
  31. package/dist/generated/accounts/index.d.ts.map +1 -0
  32. package/dist/generated/accounts/index.js +19 -0
  33. package/dist/generated/accounts/index.js.map +1 -0
  34. package/dist/generated/accounts/miner.d.ts +58 -0
  35. package/dist/generated/accounts/miner.d.ts.map +1 -0
  36. package/dist/generated/accounts/miner.js +79 -0
  37. package/dist/generated/accounts/miner.js.map +1 -0
  38. package/dist/generated/accounts/poolMember.d.ts +33 -0
  39. package/dist/generated/accounts/poolMember.d.ts.map +1 -0
  40. package/dist/generated/accounts/poolMember.js +54 -0
  41. package/dist/generated/accounts/poolMember.js.map +1 -0
  42. package/dist/generated/accounts/poolRound.d.ts +35 -0
  43. package/dist/generated/accounts/poolRound.d.ts.map +1 -0
  44. package/dist/generated/accounts/poolRound.js +56 -0
  45. package/dist/generated/accounts/poolRound.js.map +1 -0
  46. package/dist/generated/accounts/referrer.d.ts +37 -0
  47. package/dist/generated/accounts/referrer.d.ts.map +1 -0
  48. package/dist/generated/accounts/referrer.js +58 -0
  49. package/dist/generated/accounts/referrer.js.map +1 -0
  50. package/dist/generated/accounts/round.d.ts +49 -0
  51. package/dist/generated/accounts/round.d.ts.map +1 -0
  52. package/dist/generated/accounts/round.js +70 -0
  53. package/dist/generated/accounts/round.js.map +1 -0
  54. package/dist/generated/accounts/stake.d.ts +44 -0
  55. package/dist/generated/accounts/stake.d.ts.map +1 -0
  56. package/dist/generated/accounts/stake.js +65 -0
  57. package/dist/generated/accounts/stake.js.map +1 -0
  58. package/dist/generated/accounts/stakeV2.d.ts +56 -0
  59. package/dist/generated/accounts/stakeV2.d.ts.map +1 -0
  60. package/dist/generated/accounts/stakeV2.js +77 -0
  61. package/dist/generated/accounts/stakeV2.js.map +1 -0
  62. package/dist/generated/accounts/treasury.d.ts +40 -0
  63. package/dist/generated/accounts/treasury.d.ts.map +1 -0
  64. package/dist/generated/accounts/treasury.js +61 -0
  65. package/dist/generated/accounts/treasury.js.map +1 -0
  66. package/dist/generated/errors/godl.d.ts +24 -0
  67. package/dist/generated/errors/godl.d.ts.map +1 -0
  68. package/dist/generated/errors/godl.js +30 -0
  69. package/dist/generated/errors/godl.js.map +1 -0
  70. package/dist/generated/errors/index.d.ts +9 -0
  71. package/dist/generated/errors/index.d.ts.map +1 -0
  72. package/dist/generated/errors/index.js +9 -0
  73. package/dist/generated/errors/index.js.map +1 -0
  74. package/dist/generated/index.d.ts +13 -0
  75. package/dist/generated/index.d.ts.map +1 -0
  76. package/dist/generated/index.js +13 -0
  77. package/dist/generated/index.js.map +1 -0
  78. package/dist/generated/instructions/automate.d.ts +68 -0
  79. package/dist/generated/instructions/automate.d.ts.map +1 -0
  80. package/dist/generated/instructions/automate.js +94 -0
  81. package/dist/generated/instructions/automate.js.map +1 -0
  82. package/dist/generated/instructions/automateLegacy.d.ts +65 -0
  83. package/dist/generated/instructions/automateLegacy.d.ts.map +1 -0
  84. package/dist/generated/instructions/automateLegacy.js +92 -0
  85. package/dist/generated/instructions/automateLegacy.js.map +1 -0
  86. package/dist/generated/instructions/automateV3.d.ts +74 -0
  87. package/dist/generated/instructions/automateV3.d.ts.map +1 -0
  88. package/dist/generated/instructions/automateV3.js +98 -0
  89. package/dist/generated/instructions/automateV3.js.map +1 -0
  90. package/dist/generated/instructions/checkpointV3.d.ts +58 -0
  91. package/dist/generated/instructions/checkpointV3.d.ts.map +1 -0
  92. package/dist/generated/instructions/checkpointV3.js +87 -0
  93. package/dist/generated/instructions/checkpointV3.js.map +1 -0
  94. package/dist/generated/instructions/claimGodl.d.ts +70 -0
  95. package/dist/generated/instructions/claimGodl.d.ts.map +1 -0
  96. package/dist/generated/instructions/claimGodl.js +103 -0
  97. package/dist/generated/instructions/claimGodl.js.map +1 -0
  98. package/dist/generated/instructions/claimReferral.d.ts +58 -0
  99. package/dist/generated/instructions/claimReferral.d.ts.map +1 -0
  100. package/dist/generated/instructions/claimReferral.js +88 -0
  101. package/dist/generated/instructions/claimReferral.js.map +1 -0
  102. package/dist/generated/instructions/claimSol.d.ts +46 -0
  103. package/dist/generated/instructions/claimSol.d.ts.map +1 -0
  104. package/dist/generated/instructions/claimSol.js +75 -0
  105. package/dist/generated/instructions/claimSol.js.map +1 -0
  106. package/dist/generated/instructions/claimYield.d.ts +65 -0
  107. package/dist/generated/instructions/claimYield.d.ts.map +1 -0
  108. package/dist/generated/instructions/claimYield.js +103 -0
  109. package/dist/generated/instructions/claimYield.js.map +1 -0
  110. package/dist/generated/instructions/claimYieldV2.d.ts +68 -0
  111. package/dist/generated/instructions/claimYieldV2.d.ts.map +1 -0
  112. package/dist/generated/instructions/claimYieldV2.js +105 -0
  113. package/dist/generated/instructions/claimYieldV2.js.map +1 -0
  114. package/dist/generated/instructions/compoundYieldV2.d.ts +65 -0
  115. package/dist/generated/instructions/compoundYieldV2.d.ts.map +1 -0
  116. package/dist/generated/instructions/compoundYieldV2.js +98 -0
  117. package/dist/generated/instructions/compoundYieldV2.js.map +1 -0
  118. package/dist/generated/instructions/deploy.d.ts +71 -0
  119. package/dist/generated/instructions/deploy.d.ts.map +1 -0
  120. package/dist/generated/instructions/deploy.js +101 -0
  121. package/dist/generated/instructions/deploy.js.map +1 -0
  122. package/dist/generated/instructions/deployV3.d.ts +80 -0
  123. package/dist/generated/instructions/deployV3.d.ts.map +1 -0
  124. package/dist/generated/instructions/deployV3.js +108 -0
  125. package/dist/generated/instructions/deployV3.js.map +1 -0
  126. package/dist/generated/instructions/deposit.d.ts +65 -0
  127. package/dist/generated/instructions/deposit.d.ts.map +1 -0
  128. package/dist/generated/instructions/deposit.js +103 -0
  129. package/dist/generated/instructions/deposit.js.map +1 -0
  130. package/dist/generated/instructions/depositV2.d.ts +74 -0
  131. package/dist/generated/instructions/depositV2.d.ts.map +1 -0
  132. package/dist/generated/instructions/depositV2.js +110 -0
  133. package/dist/generated/instructions/depositV2.js.map +1 -0
  134. package/dist/generated/instructions/fundAutomation.d.ts +40 -0
  135. package/dist/generated/instructions/fundAutomation.d.ts.map +1 -0
  136. package/dist/generated/instructions/fundAutomation.js +66 -0
  137. package/dist/generated/instructions/fundAutomation.js.map +1 -0
  138. package/dist/generated/instructions/index.d.ts +30 -0
  139. package/dist/generated/instructions/index.d.ts.map +1 -0
  140. package/dist/generated/instructions/index.js +30 -0
  141. package/dist/generated/instructions/index.js.map +1 -0
  142. package/dist/generated/instructions/initializeReferrer.d.ts +55 -0
  143. package/dist/generated/instructions/initializeReferrer.d.ts.map +1 -0
  144. package/dist/generated/instructions/initializeReferrer.js +85 -0
  145. package/dist/generated/instructions/initializeReferrer.js.map +1 -0
  146. package/dist/generated/instructions/log.d.ts +37 -0
  147. package/dist/generated/instructions/log.d.ts.map +1 -0
  148. package/dist/generated/instructions/log.js +59 -0
  149. package/dist/generated/instructions/log.js.map +1 -0
  150. package/dist/generated/instructions/setReferrer.d.ts +47 -0
  151. package/dist/generated/instructions/setReferrer.d.ts.map +1 -0
  152. package/dist/generated/instructions/setReferrer.js +68 -0
  153. package/dist/generated/instructions/setReferrer.js.map +1 -0
  154. package/dist/generated/instructions/setStakeExecutor.d.ts +47 -0
  155. package/dist/generated/instructions/setStakeExecutor.d.ts.map +1 -0
  156. package/dist/generated/instructions/setStakeExecutor.js +69 -0
  157. package/dist/generated/instructions/setStakeExecutor.js.map +1 -0
  158. package/dist/generated/instructions/stakeNft.d.ts +52 -0
  159. package/dist/generated/instructions/stakeNft.d.ts.map +1 -0
  160. package/dist/generated/instructions/stakeNft.js +78 -0
  161. package/dist/generated/instructions/stakeNft.js.map +1 -0
  162. package/dist/generated/instructions/unstakeNft.d.ts +52 -0
  163. package/dist/generated/instructions/unstakeNft.d.ts.map +1 -0
  164. package/dist/generated/instructions/unstakeNft.js +78 -0
  165. package/dist/generated/instructions/unstakeNft.js.map +1 -0
  166. package/dist/generated/instructions/withdraw.d.ts +65 -0
  167. package/dist/generated/instructions/withdraw.d.ts.map +1 -0
  168. package/dist/generated/instructions/withdraw.js +103 -0
  169. package/dist/generated/instructions/withdraw.js.map +1 -0
  170. package/dist/generated/instructions/withdrawV2.d.ts +68 -0
  171. package/dist/generated/instructions/withdrawV2.d.ts.map +1 -0
  172. package/dist/generated/instructions/withdrawV2.js +105 -0
  173. package/dist/generated/instructions/withdrawV2.js.map +1 -0
  174. package/dist/generated/programs/godl.d.ts +56 -0
  175. package/dist/generated/programs/godl.d.ts.map +1 -0
  176. package/dist/generated/programs/godl.js +74 -0
  177. package/dist/generated/programs/godl.js.map +1 -0
  178. package/dist/generated/programs/index.d.ts +9 -0
  179. package/dist/generated/programs/index.d.ts.map +1 -0
  180. package/dist/generated/programs/index.js +9 -0
  181. package/dist/generated/programs/index.js.map +1 -0
  182. package/dist/generated/shared/index.d.ts +50 -0
  183. package/dist/generated/shared/index.d.ts.map +1 -0
  184. package/dist/generated/shared/index.js +80 -0
  185. package/dist/generated/shared/index.js.map +1 -0
  186. package/dist/generated/types/index.d.ts +9 -0
  187. package/dist/generated/types/index.d.ts.map +1 -0
  188. package/dist/generated/types/index.js +9 -0
  189. package/dist/generated/types/index.js.map +1 -0
  190. package/dist/generated/types/numeric.d.ts +17 -0
  191. package/dist/generated/types/numeric.d.ts.map +1 -0
  192. package/dist/generated/types/numeric.js +18 -0
  193. package/dist/generated/types/numeric.js.map +1 -0
  194. package/dist/index.d.ts +11 -0
  195. package/dist/index.d.ts.map +1 -0
  196. package/dist/index.js +13 -0
  197. package/dist/index.js.map +1 -0
  198. package/dist/instructions/autominer.d.ts +6 -0
  199. package/dist/instructions/autominer.d.ts.map +1 -0
  200. package/dist/instructions/autominer.js +68 -0
  201. package/dist/instructions/autominer.js.map +1 -0
  202. package/dist/instructions/index.d.ts +4 -0
  203. package/dist/instructions/index.d.ts.map +1 -0
  204. package/dist/instructions/index.js +4 -0
  205. package/dist/instructions/index.js.map +1 -0
  206. package/dist/instructions/mining.d.ts +7 -0
  207. package/dist/instructions/mining.d.ts.map +1 -0
  208. package/dist/instructions/mining.js +96 -0
  209. package/dist/instructions/mining.js.map +1 -0
  210. package/dist/instructions/staking.d.ts +13 -0
  211. package/dist/instructions/staking.d.ts.map +1 -0
  212. package/dist/instructions/staking.js +169 -0
  213. package/dist/instructions/staking.js.map +1 -0
  214. package/dist/pda.d.ts +16 -0
  215. package/dist/pda.d.ts.map +1 -0
  216. package/dist/pda.js +58 -0
  217. package/dist/pda.js.map +1 -0
  218. package/dist/slot/tracker.d.ts +13 -0
  219. package/dist/slot/tracker.d.ts.map +1 -0
  220. package/dist/slot/tracker.js +47 -0
  221. package/dist/slot/tracker.js.map +1 -0
  222. package/dist/types.d.ts +178 -0
  223. package/dist/types.d.ts.map +1 -0
  224. package/dist/types.js +16 -0
  225. package/dist/types.js.map +1 -0
  226. package/dist/websocket/codecs.d.ts +12 -0
  227. package/dist/websocket/codecs.d.ts.map +1 -0
  228. package/dist/websocket/codecs.js +243 -0
  229. package/dist/websocket/codecs.js.map +1 -0
  230. package/dist/websocket/connection.d.ts +30 -0
  231. package/dist/websocket/connection.d.ts.map +1 -0
  232. package/dist/websocket/connection.js +212 -0
  233. package/dist/websocket/connection.js.map +1 -0
  234. package/package.json +42 -0
package/README.md ADDED
@@ -0,0 +1,289 @@
1
+ # @zenx-labs/godl-supply
2
+
3
+ TypeScript SDK for interacting with the [GODL](https://godl.dev) on-chain program on Solana. Provides real-time WebSocket streaming, account fetching with caching, transaction building, and full type safety.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @zenx-labs/godl-supply
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { GodlSupply } from '@zenx-labs/godl-supply'
15
+
16
+ const sdk = new GodlSupply(signer, {
17
+ rpcUrl: 'https://api.mainnet-beta.solana.com', // optional, defaults to public mainnet
18
+ })
19
+
20
+ // Connect to real-time WebSocket stream
21
+ await sdk.connect()
22
+
23
+ // Listen for events
24
+ sdk.on('board', (board) => {
25
+ console.log('Round:', board.roundId)
26
+ })
27
+
28
+ sdk.on('treasury', (treasury) => {
29
+ console.log('Balance:', treasury.balance)
30
+ })
31
+
32
+ // Fetch account data (cached + RPC fallback)
33
+ const board = await sdk.getBoard()
34
+ const miner = await sdk.getMiner('68m3ocDFeJ1iQE9Pyu9Exn1HdpGcTgh12zpjWM7K8pKU')
35
+
36
+ // Disconnect when done
37
+ sdk.disconnect()
38
+ ```
39
+
40
+ ## Signer
41
+
42
+ The SDK expects a `Signer` compatible with the [gill](https://github.com/solana-developers/gill) library:
43
+
44
+ ```typescript
45
+ import type { Signer } from '@zenx-labs/godl-supply'
46
+
47
+ const signer: Signer = {
48
+ address: address('YourPublicKey...'),
49
+ async signAndSendTransactions(transactions, config) {
50
+ // Sign and submit transactions to the network
51
+ },
52
+ }
53
+ ```
54
+
55
+ ## Configuration
56
+
57
+ ```typescript
58
+ type GodlSupplyConfig = {
59
+ rpcUrl?: string // Solana RPC endpoint (default: public mainnet)
60
+ wsUrl?: string // GODL stream WebSocket URL (default: wss://stream.godl.dev/stream)
61
+ streamApiUrl?: string // GODL stream REST API URL (default: https://stream.godl.dev)
62
+ commitment?: 'confirmed' | 'finalized' | 'processed' // default: 'confirmed'
63
+ }
64
+ ```
65
+
66
+ ## API Reference
67
+
68
+ ### Lifecycle
69
+
70
+ ```typescript
71
+ await sdk.connect() // Connect to WebSocket stream and sync initial state
72
+ sdk.disconnect() // Disconnect and clear cache
73
+ sdk.isConnected // boolean
74
+ ```
75
+
76
+ ### Events
77
+
78
+ The SDK emits typed events via WebSocket. Subscribe with `on()` and unsubscribe with the returned function or `off()`.
79
+
80
+ ```typescript
81
+ // Subscribe
82
+ const unsub = sdk.on('board', (board) => { /* ... */ })
83
+
84
+ // Unsubscribe
85
+ unsub()
86
+ // or
87
+ sdk.off('board', handler)
88
+ ```
89
+
90
+ #### Available Events
91
+
92
+ | Event | Data Type | Description |
93
+ |------------------|-----------------|------------------------------------------|
94
+ | `board` | `Board` | Current board state (round info, slots) |
95
+ | `round` | `Round` | Round deployment data and results |
96
+ | `resetEvent` | `ResetEvent` | Round reset with winners and payouts |
97
+ | `treasury` | `Treasury` | Treasury balances and reward factors |
98
+ | `miner` | `Miner` | Your miner account updates |
99
+ | `automation` | `Automation` | Your autominer account updates |
100
+ | `slotData` | `SlotData` | Slot synchronization data |
101
+ | `solMotherlode` | `SolMotherlode` | SOL motherlode amount |
102
+ | `poolMember` | `PoolMember` | Your pool membership data |
103
+ | `poolRound` | `PoolRound` | Pool round deployment data |
104
+ | `slotTick` | `bigint` | Emitted every ~400ms with current slot |
105
+ | `connected` | `boolean` | WebSocket connection state changes |
106
+ | `error` | `Error` | WebSocket errors |
107
+
108
+ ### Slot Tracking
109
+
110
+ The SDK maintains a local slot counter that increments every ~400ms after the initial sync from the WebSocket.
111
+
112
+ ```typescript
113
+ const currentSlot = sdk.getSlot()
114
+
115
+ const unsub = sdk.onSlotTick((slot) => {
116
+ console.log('Slot:', slot)
117
+ })
118
+ ```
119
+
120
+ ### Account Getters
121
+
122
+ All account getters use a two-tier strategy: check the in-memory cache first (15s TTL), then fall back to the stream API or RPC. The WebSocket stream also keeps the cache warm with real-time updates.
123
+
124
+ ```typescript
125
+ // Global state
126
+ const board = await sdk.getBoard()
127
+ const treasury = await sdk.getTreasury()
128
+ const config = await sdk.getConfig()
129
+
130
+ // Per-user accounts (defaults to signer if no authority provided)
131
+ const miner = await sdk.getMiner()
132
+ const miner2 = await sdk.getMiner('SomeOtherPublicKey...')
133
+ const automation = await sdk.getAutomation() // returns null if not set up
134
+ const stake = await sdk.getStake()
135
+ const stakeV2 = await sdk.getStakeV2(0n) // by stake ID
136
+ const allStakes = await sdk.getStakeV2Accounts() // all StakeV2 accounts
137
+
138
+ // Round data
139
+ const round = await sdk.getRound(42n) // returns null if not found
140
+ const poolRound = await sdk.getPoolRound(42n)
141
+
142
+ // Pool and referral
143
+ const poolMember = await sdk.getPoolMember() // returns null if not a member
144
+ const referrer = await sdk.getReferrer() // returns null if not a referrer
145
+ ```
146
+
147
+ ### Mining
148
+
149
+ ```typescript
150
+ // Deploy to the board
151
+ const sig = await sdk.deploy({
152
+ amount: 100,
153
+ squares: [0, 5, 12, 18, 24],
154
+ varAddress: address('...'),
155
+ isPooled: false, // optional, default: false
156
+ })
157
+
158
+ // Claim rewards
159
+ const sig = await sdk.claim({
160
+ claimSol: true,
161
+ claimGodl: true,
162
+ })
163
+ ```
164
+
165
+ ### Autominer
166
+
167
+ ```typescript
168
+ // Set up autominer
169
+ const sig = await sdk.setupAutominer({
170
+ amount: 100,
171
+ deposit: 500_000,
172
+ squares: [0, 5, 12, 18, 24],
173
+ strategy: 1,
174
+ numRounds: 10,
175
+ claimAndFund: false, // optional
176
+ isPooled: false, // optional
177
+ })
178
+
179
+ // Fund autominer
180
+ const sig = await sdk.fundAutomation(1_000_000)
181
+
182
+ // Stop autominer
183
+ const sig = await sdk.stopAutominer()
184
+ ```
185
+
186
+ ### Staking
187
+
188
+ ```typescript
189
+ // V1 Staking
190
+ const sig = await sdk.stakeDeposit(1_000_000n)
191
+ const sig = await sdk.stakeWithdraw(500_000n)
192
+ const sig = await sdk.stakeClaimYield(100_000n)
193
+
194
+ // V2 Staking (with lock duration and multiplier)
195
+ const sig = await sdk.stakeV2Deposit(0n, 1_000_000n, 30n) // id, amount, lockDuration
196
+ const sig = await sdk.stakeV2Withdraw(0n, 500_000n)
197
+ const sig = await sdk.stakeV2ClaimYield(0n, 100_000n)
198
+ const sig = await sdk.stakeV2CompoundYield(0n)
199
+
200
+ // Set executor for V2 stake
201
+ const sig = await sdk.setStakeExecutor(0n, address('executor...'))
202
+
203
+ // NFT boost
204
+ const sig = await sdk.stakeNft(0n, address('nftAsset...'))
205
+ const sig = await sdk.unstakeNft(0n, address('nftAsset...'))
206
+ ```
207
+
208
+ ## Low-Level Instruction Builders
209
+
210
+ For custom transaction composition, you can use the instruction builders directly:
211
+
212
+ ```typescript
213
+ import {
214
+ getDeployV3Instruction,
215
+ getCheckpointV3Instruction,
216
+ getClaimSolInstruction,
217
+ getClaimGodlInstruction,
218
+ getAutomateV3Instruction,
219
+ getStopAutominerInstruction,
220
+ getFundAutomationInstruction,
221
+ getStakeDepositInstruction,
222
+ getStakeWithdrawInstruction,
223
+ getStakeClaimYieldInstruction,
224
+ getStakeV2DepositInstruction,
225
+ getStakeV2WithdrawInstruction,
226
+ getStakeV2ClaimYieldInstruction,
227
+ getStakeV2CompoundYieldInstruction,
228
+ getSetStakeExecutorV2Instruction,
229
+ getStakeNftInstruction,
230
+ getUnstakeNftInstruction,
231
+ } from '@zenx-labs/godl-supply'
232
+ ```
233
+
234
+ ## PDA Derivation
235
+
236
+ All PDA helpers return `[PublicKey, bumpSeed]`:
237
+
238
+ ```typescript
239
+ import {
240
+ getBoardPda,
241
+ getTreasuryPda,
242
+ getConfigPda,
243
+ getRoundPda,
244
+ getMinerPda,
245
+ getAutomationPda,
246
+ getStakePda,
247
+ getStakeV2Pda,
248
+ getPoolRoundPda,
249
+ getPoolMemberPda,
250
+ getGodlAta, // returns Promise<Address>
251
+ } from '@zenx-labs/godl-supply'
252
+
253
+ const [boardKey, bump] = getBoardPda()
254
+ const [minerKey, bump] = getMinerPda(publicKey)
255
+ const [stakeKey, bump] = getStakeV2Pda(publicKey, 0n)
256
+ const ata = await getGodlAta(address('owner...'))
257
+ ```
258
+
259
+ ## Advanced Usage
260
+
261
+ The SDK exports internal components for custom integrations:
262
+
263
+ ```typescript
264
+ import { HotCache, SlotTracker, AccountFetcher } from '@zenx-labs/godl-supply'
265
+
266
+ // Custom cache with 5s TTL
267
+ const cache = new HotCache(5_000)
268
+
269
+ // Direct account fetching without the full client
270
+ const fetcher = new AccountFetcher(rpc, cache, 'https://stream.godl.dev')
271
+ const initData = await fetcher.fetchInitData()
272
+ ```
273
+
274
+ ## Constants
275
+
276
+ ```typescript
277
+ import {
278
+ GODL_PROGRAM_ID, // Program public key
279
+ GODL_MINT, // GODL token mint address
280
+ ENTROPY_PROGRAM_ADDRESS, // Entropy program for randomness
281
+ EXECUTOR_ADDRESS, // Autominer executor
282
+ AUTOMATION_FEE, // Fee per automation round (30,000 lamports)
283
+ NFT_BOOST_COLLECTION, // NFT collection for stake boosts
284
+ } from '@zenx-labs/godl-supply'
285
+ ```
286
+
287
+ ## License
288
+
289
+ MIT
@@ -0,0 +1,35 @@
1
+ import { type Rpc, type SolanaRpcApi, type FetchAccountConfig } from 'gill';
2
+ import type { Treasury, Board, Config, Miner, Automation, Round, Stake, StakeV2, PoolRound, PoolMember, ReferrerInfo, SolMotherlode, SlotData } from './types.js';
3
+ import type { HotCache } from './cache/store.js';
4
+ export interface InitData {
5
+ board: Board;
6
+ round: Round;
7
+ treasury: Treasury;
8
+ slotData: SlotData;
9
+ solMotherlode: SolMotherlode;
10
+ poolRound: PoolRound;
11
+ lastMotherlodeRoundId: bigint | null;
12
+ }
13
+ export declare class AccountFetcher {
14
+ private rpc;
15
+ private cache;
16
+ private streamApiUrl;
17
+ private initDataLoaded;
18
+ constructor(rpc: Rpc<SolanaRpcApi>, cache: HotCache, streamApiUrl?: string);
19
+ fetchInitData(): Promise<InitData | null>;
20
+ private ensureInitData;
21
+ getBoard(): Promise<Board>;
22
+ getTreasury(): Promise<Treasury>;
23
+ getConfig(): Promise<Config>;
24
+ getMiner(authority: string): Promise<Miner>;
25
+ getAutomation(authority: string): Promise<Automation | null>;
26
+ getAutomationLegacy(authority: string): Promise<Automation>;
27
+ getRound(roundId: bigint, config?: FetchAccountConfig): Promise<Round | null>;
28
+ getStake(authority: string): Promise<Stake>;
29
+ getStakeV2(authority: string, id: bigint): Promise<StakeV2>;
30
+ getStakeV2Accounts(authority: string): Promise<StakeV2[]>;
31
+ getPoolRound(roundId: bigint, config?: FetchAccountConfig): Promise<PoolRound | null>;
32
+ getPoolMember(authority: string, config?: FetchAccountConfig): Promise<PoolMember | null>;
33
+ getReferrer(authority: string): Promise<ReferrerInfo | null>;
34
+ }
35
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,GAAG,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAuCpF,OAAO,KAAK,EACV,QAAQ,EACR,KAAK,EACL,MAAM,EACN,KAAK,EACL,UAAU,EACV,KAAK,EACL,KAAK,EACL,OAAO,EACP,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,EACb,QAAQ,EACT,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;IAC5B,SAAS,EAAE,SAAS,CAAA;IACpB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAA;CACrC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,cAAc,CAAQ;gBAElB,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,MAAM;IAMpE,aAAa,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YAmCjC,cAAc;IAMtB,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC;IAgB1B,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAoBhC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAmB5B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAgB3C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAkB5D,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAU3D,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAwB7E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAU3C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY3D,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAuCzD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAsBrF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiBzF,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAkBnE"}
@@ -0,0 +1,276 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import { address } from 'gill';
3
+ import bs58 from 'bs58';
4
+ import { fetchMiner, fetchMaybeRound, fetchStake, fetchStakeV2, fetchTreasury, fetchAutomation, fetchMaybeAutomation, fetchConfig, fetchBoard, fetchMaybePoolRound, fetchMaybePoolMember, fetchReferrer, getStakeV2Decoder, } from './generated/index.js';
5
+ import { getBoardPda, getTreasuryPda, getConfigPda, getMinerPda, getAutomationPda, getAutomationLegacyPda, getRoundPda, getStakePda, getStakeV2Pda, getPoolRoundPda, getPoolMemberPda, } from './pda.js';
6
+ import { GODL_PROGRAM_ID, DEFAULT_STREAM_API_URL } from './constants.js';
7
+ import { decodeBoard, decodeRound, decodeTreasury, decodeSlotData, decodeSolMotherlode, decodePoolRound, } from './websocket/codecs.js';
8
+ export class AccountFetcher {
9
+ rpc;
10
+ cache;
11
+ streamApiUrl;
12
+ initDataLoaded = false;
13
+ constructor(rpc, cache, streamApiUrl) {
14
+ this.rpc = rpc;
15
+ this.cache = cache;
16
+ this.streamApiUrl = streamApiUrl ?? DEFAULT_STREAM_API_URL;
17
+ }
18
+ async fetchInitData() {
19
+ try {
20
+ const response = await fetch(`${this.streamApiUrl}/api/init-data`, {
21
+ cache: 'no-store',
22
+ });
23
+ if (!response.ok)
24
+ return null;
25
+ const data = await response.json();
26
+ if (!data.round || !data.board || !data.slotData)
27
+ return null;
28
+ const board = decodeBoard(new Uint8Array(Buffer.from(data.board, 'base64')));
29
+ const round = decodeRound(new Uint8Array(Buffer.from(data.round, 'base64')));
30
+ const treasury = decodeTreasury(new Uint8Array(Buffer.from(data.treasury, 'base64')));
31
+ const slotData = decodeSlotData(new Uint8Array(Buffer.from(data.slotData, 'base64')));
32
+ const solMotherlode = decodeSolMotherlode(new Uint8Array(Buffer.from(data.solMotherlode, 'base64')));
33
+ const poolRound = decodePoolRound(new Uint8Array(Buffer.from(data.poolRound, 'base64')));
34
+ const lastMotherlodeRoundId = data.lastMotherlodeRoundId ? BigInt(data.lastMotherlodeRoundId) : null;
35
+ this.cache.set('board', board);
36
+ this.cache.set('currentRound', round);
37
+ this.cache.set(`round:${round.id}`, round);
38
+ this.cache.set('treasury', treasury);
39
+ this.cache.set('slotData', slotData);
40
+ this.cache.set('solMotherlode', solMotherlode);
41
+ this.cache.set('poolRound', poolRound);
42
+ this.cache.set(`poolRound:${poolRound.id}`, poolRound);
43
+ this.initDataLoaded = true;
44
+ return { board, round, treasury, slotData, solMotherlode, poolRound, lastMotherlodeRoundId };
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ async ensureInitData() {
51
+ if (!this.initDataLoaded) {
52
+ await this.fetchInitData();
53
+ }
54
+ }
55
+ async getBoard() {
56
+ const cached = this.cache.get('board');
57
+ if (cached)
58
+ return cached;
59
+ await this.ensureInitData();
60
+ const fromInit = this.cache.get('board');
61
+ if (fromInit)
62
+ return fromInit;
63
+ // Fallback to RPC
64
+ const [boardPda] = getBoardPda();
65
+ const board = await fetchBoard(this.rpc, address(boardPda.toBase58()));
66
+ const result = { ...board.data };
67
+ this.cache.set('board', result);
68
+ return result;
69
+ }
70
+ async getTreasury() {
71
+ const cached = this.cache.get('treasury');
72
+ if (cached)
73
+ return cached;
74
+ await this.ensureInitData();
75
+ const fromInit = this.cache.get('treasury');
76
+ if (fromInit)
77
+ return fromInit;
78
+ // Fallback to RPC
79
+ const [treasuryPda] = getTreasuryPda();
80
+ const treasury = await fetchTreasury(this.rpc, address(treasuryPda.toBase58()));
81
+ const result = {
82
+ ...treasury.data,
83
+ minerRewardsFactor: new Uint8Array(treasury.data.minerRewardsFactor.bits),
84
+ stakeRewardsFactor: new Uint8Array(treasury.data.stakeRewardsFactor.bits),
85
+ };
86
+ this.cache.set('treasury', result);
87
+ return result;
88
+ }
89
+ async getConfig() {
90
+ const cached = this.cache.get('config');
91
+ if (cached)
92
+ return cached;
93
+ // Config is not part of init-data, always fetch from RPC
94
+ const [configPda] = getConfigPda();
95
+ const config = await fetchConfig(this.rpc, address(configPda.toBase58()));
96
+ const result = {
97
+ ...config.data,
98
+ admin: config.data.admin.toString(),
99
+ buryAuthority: config.data.buryAuthority.toString(),
100
+ feeCollector: config.data.feeCollector.toString(),
101
+ swapProgram: config.data.swapProgram.toString(),
102
+ varAddress: config.data.varAddress.toString(),
103
+ };
104
+ this.cache.set('config', result);
105
+ return result;
106
+ }
107
+ async getMiner(authority) {
108
+ const cacheKey = `miner:${authority}`;
109
+ const cached = this.cache.get(cacheKey);
110
+ if (cached)
111
+ return cached;
112
+ const [minerPda] = getMinerPda(new PublicKey(authority));
113
+ const miner = await fetchMiner(this.rpc, address(minerPda.toBase58()));
114
+ const result = {
115
+ ...miner.data,
116
+ authority: miner.data.authority.toString(),
117
+ rewardsFactor: new Uint8Array(miner.data.rewardsFactor.bits),
118
+ };
119
+ this.cache.set(cacheKey, result);
120
+ return result;
121
+ }
122
+ async getAutomation(authority) {
123
+ const cacheKey = `automation:${authority}`;
124
+ const cached = this.cache.get(cacheKey);
125
+ if (cached)
126
+ return cached;
127
+ const [automationPda] = getAutomationPda(new PublicKey(authority));
128
+ const automation = await fetchMaybeAutomation(this.rpc, address(automationPda.toBase58()));
129
+ if (!automation.exists)
130
+ return null;
131
+ const result = {
132
+ ...automation.data,
133
+ authority: automation.data.authority.toString(),
134
+ executor: automation.data.executor.toString(),
135
+ };
136
+ this.cache.set(cacheKey, result);
137
+ return result;
138
+ }
139
+ async getAutomationLegacy(authority) {
140
+ const [automationPda] = getAutomationLegacyPda(new PublicKey(authority));
141
+ const automation = await fetchAutomation(this.rpc, address(automationPda.toBase58()));
142
+ return {
143
+ ...automation.data,
144
+ authority: automation.data.authority.toString(),
145
+ executor: automation.data.executor.toString(),
146
+ };
147
+ }
148
+ async getRound(roundId, config) {
149
+ const cacheKey = `round:${roundId}`;
150
+ const cached = this.cache.get(cacheKey);
151
+ if (cached)
152
+ return cached;
153
+ await this.ensureInitData();
154
+ const fromInit = this.cache.get(cacheKey);
155
+ if (fromInit)
156
+ return fromInit;
157
+ // Fallback to RPC for historical rounds
158
+ const [roundPda] = getRoundPda(roundId);
159
+ const maybeRound = await fetchMaybeRound(this.rpc, address(roundPda.toBase58()), config);
160
+ if (!maybeRound.exists)
161
+ return null;
162
+ const result = {
163
+ ...maybeRound.data,
164
+ slotHash: new Uint8Array(maybeRound.data.slotHash.buffer),
165
+ rentPayer: maybeRound.data.rentPayer.toString(),
166
+ topMiner: maybeRound.data.topMiner.toString(),
167
+ };
168
+ this.cache.set(cacheKey, result);
169
+ return result;
170
+ }
171
+ async getStake(authority) {
172
+ const [stakePda] = getStakePda(new PublicKey(authority));
173
+ const stake = await fetchStake(this.rpc, address(stakePda.toBase58()));
174
+ return {
175
+ ...stake.data,
176
+ authority: stake.data.authority.toString(),
177
+ rewardsFactor: new Uint8Array(stake.data.rewardsFactor.bits),
178
+ };
179
+ }
180
+ async getStakeV2(authority, id) {
181
+ const [stakeV2Pda] = getStakeV2Pda(new PublicKey(authority), id);
182
+ const stakeV2 = await fetchStakeV2(this.rpc, address(stakeV2Pda.toBase58()));
183
+ return {
184
+ ...stakeV2.data,
185
+ authority: stakeV2.data.authority.toString(),
186
+ rewardsFactor: new Uint8Array(stakeV2.data.rewardsFactor.bits),
187
+ isNftStaked: stakeV2.data.isNftStaked,
188
+ buffer: new Uint8Array(stakeV2.data.buffer.buffer),
189
+ };
190
+ }
191
+ async getStakeV2Accounts(authority) {
192
+ const discriminator = new Uint8Array(8);
193
+ const view = new DataView(discriminator.buffer);
194
+ view.setBigUint64(0, 115n, true);
195
+ const filters = [
196
+ { memcmp: { offset: 0n, bytes: bs58.encode(discriminator) } },
197
+ { memcmp: { offset: 16n, bytes: authority } },
198
+ ];
199
+ const response = await this.rpc
200
+ .getProgramAccounts(address(GODL_PROGRAM_ID.toBase58()), {
201
+ encoding: 'base64',
202
+ filters: filters,
203
+ })
204
+ .send();
205
+ const accountsResponse = response;
206
+ const accounts = (Array.isArray(accountsResponse) ? accountsResponse : (accountsResponse.value ?? []));
207
+ if (!accounts || accounts.length === 0)
208
+ return [];
209
+ const decoder = getStakeV2Decoder();
210
+ return accounts.map(({ account }) => {
211
+ const data = Buffer.from(account.data[0], 'base64');
212
+ const decoded = decoder.decode(data);
213
+ return {
214
+ ...decoded,
215
+ authority: decoded.authority.toString(),
216
+ rewardsFactor: new Uint8Array(decoded.rewardsFactor.bits),
217
+ isNftStaked: decoded.isNftStaked,
218
+ buffer: new Uint8Array(decoded.buffer),
219
+ };
220
+ });
221
+ }
222
+ async getPoolRound(roundId, config) {
223
+ const cacheKey = `poolRound:${roundId}`;
224
+ const cached = this.cache.get(cacheKey);
225
+ if (cached)
226
+ return cached;
227
+ await this.ensureInitData();
228
+ const fromInit = this.cache.get(cacheKey);
229
+ if (fromInit)
230
+ return fromInit;
231
+ // Fallback to RPC
232
+ const [poolRoundPda] = getPoolRoundPda(roundId);
233
+ const maybePoolRound = await fetchMaybePoolRound(this.rpc, address(poolRoundPda.toBase58()), config);
234
+ if (!maybePoolRound.exists)
235
+ return null;
236
+ const result = {
237
+ ...maybePoolRound.data,
238
+ rentPayer: maybePoolRound.data.rentPayer.toString(),
239
+ };
240
+ this.cache.set(cacheKey, result);
241
+ return result;
242
+ }
243
+ async getPoolMember(authority, config) {
244
+ const cacheKey = `poolMember:${authority}`;
245
+ const cached = this.cache.get(cacheKey);
246
+ if (cached)
247
+ return cached;
248
+ const [poolMemberPda] = getPoolMemberPda(new PublicKey(authority));
249
+ const maybePoolMember = await fetchMaybePoolMember(this.rpc, address(poolMemberPda.toBase58()), config);
250
+ if (!maybePoolMember.exists)
251
+ return null;
252
+ const result = {
253
+ ...maybePoolMember.data,
254
+ authority: maybePoolMember.data.authority.toString(),
255
+ };
256
+ this.cache.set(cacheKey, result);
257
+ return result;
258
+ }
259
+ async getReferrer(authority) {
260
+ const [referrerPda] = PublicKey.findProgramAddressSync([Buffer.from('referrer'), new PublicKey(authority).toBuffer()], GODL_PROGRAM_ID);
261
+ try {
262
+ const referrer = await fetchReferrer(this.rpc, address(referrerPda.toBase58()));
263
+ return {
264
+ rewardsSol: referrer.data.rewardsSol,
265
+ rewardsGodl: referrer.data.rewardsGodl,
266
+ cumulativeRewardsSol: referrer.data.cumulativeRewardsSol,
267
+ cumulativeRewardsGodl: referrer.data.cumulativeRewardsGodl,
268
+ referrerCount: referrer.data.referrerCount,
269
+ };
270
+ }
271
+ catch {
272
+ return null;
273
+ }
274
+ }
275
+ }
276
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class HotCache {
2
+ private store;
3
+ private ttlMs;
4
+ constructor(ttlMs?: number);
5
+ set<T>(key: string, data: T): void;
6
+ get<T>(key: string): T | null;
7
+ has(key: string): boolean;
8
+ delete(key: string): void;
9
+ clear(): void;
10
+ }
11
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AAOA,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,KAAK,CAAQ;gBAET,KAAK,GAAE,MAAqB;IAIxC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAIlC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAU7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,31 @@
1
+ import { CACHE_TTL_MS } from '../constants.js';
2
+ export class HotCache {
3
+ store = new Map();
4
+ ttlMs;
5
+ constructor(ttlMs = CACHE_TTL_MS) {
6
+ this.ttlMs = ttlMs;
7
+ }
8
+ set(key, data) {
9
+ this.store.set(key, { data, updatedAt: Date.now() });
10
+ }
11
+ get(key) {
12
+ const entry = this.store.get(key);
13
+ if (!entry)
14
+ return null;
15
+ if (Date.now() - entry.updatedAt > this.ttlMs) {
16
+ this.store.delete(key);
17
+ return null;
18
+ }
19
+ return entry.data;
20
+ }
21
+ has(key) {
22
+ return this.get(key) !== null;
23
+ }
24
+ delete(key) {
25
+ this.store.delete(key);
26
+ }
27
+ clear() {
28
+ this.store.clear();
29
+ }
30
+ }
31
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAO9C,MAAM,OAAO,QAAQ;IACX,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAA;IAC9C,KAAK,CAAQ;IAErB,YAAY,QAAgB,YAAY;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,IAAO;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,GAAG,CAAI,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAC,IAAS,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;IAC/B,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;CACF"}