@karn_lat/protocol-sdk 0.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +68 -0
  2. package/dist/__tests__/setup.d.ts +14 -0
  3. package/dist/__tests__/setup.d.ts.map +1 -0
  4. package/dist/__tests__/setup.js +44 -0
  5. package/dist/__tests__/setup.js.map +1 -0
  6. package/dist/clients/GovernorClient.d.ts +9 -0
  7. package/dist/clients/GovernorClient.d.ts.map +1 -0
  8. package/dist/clients/GovernorClient.js +18 -0
  9. package/dist/clients/GovernorClient.js.map +1 -0
  10. package/dist/clients/TreasuryClient.d.ts +9 -0
  11. package/dist/clients/TreasuryClient.d.ts.map +1 -0
  12. package/dist/clients/TreasuryClient.js +18 -0
  13. package/dist/clients/TreasuryClient.js.map +1 -0
  14. package/dist/clients/ValocracyClient.d.ts +13 -0
  15. package/dist/clients/ValocracyClient.d.ts.map +1 -0
  16. package/dist/clients/ValocracyClient.js +32 -0
  17. package/dist/clients/ValocracyClient.js.map +1 -0
  18. package/dist/clients/index.d.ts +4 -0
  19. package/dist/clients/index.d.ts.map +1 -0
  20. package/dist/clients/index.js +4 -0
  21. package/dist/clients/index.js.map +1 -0
  22. package/dist/generated/governor/src/index.d.ts +400 -0
  23. package/dist/generated/governor/src/index.d.ts.map +1 -0
  24. package/dist/generated/governor/src/index.js +63 -0
  25. package/dist/generated/governor/src/index.js.map +1 -0
  26. package/dist/generated/treasury/src/index.d.ts +474 -0
  27. package/dist/generated/treasury/src/index.d.ts.map +1 -0
  28. package/dist/generated/treasury/src/index.js +54 -0
  29. package/dist/generated/treasury/src/index.js.map +1 -0
  30. package/dist/generated/valocracy/src/index.d.ts +807 -0
  31. package/dist/generated/valocracy/src/index.d.ts.map +1 -0
  32. package/dist/generated/valocracy/src/index.js +114 -0
  33. package/dist/generated/valocracy/src/index.js.map +1 -0
  34. package/dist/index.d.ts +5 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +5 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/react/hooks/useGovernor.d.ts +24 -0
  39. package/dist/react/hooks/useGovernor.d.ts.map +1 -0
  40. package/dist/react/hooks/useGovernor.js +45 -0
  41. package/dist/react/hooks/useGovernor.js.map +1 -0
  42. package/dist/react/hooks/useMultiWallet.d.ts +35 -0
  43. package/dist/react/hooks/useMultiWallet.d.ts.map +1 -0
  44. package/dist/react/hooks/useMultiWallet.js +87 -0
  45. package/dist/react/hooks/useMultiWallet.js.map +1 -0
  46. package/dist/react/hooks/useTreasury.d.ts +14 -0
  47. package/dist/react/hooks/useTreasury.d.ts.map +1 -0
  48. package/dist/react/hooks/useTreasury.js +45 -0
  49. package/dist/react/hooks/useTreasury.js.map +1 -0
  50. package/dist/react/hooks/useValocracy.d.ts +16 -0
  51. package/dist/react/hooks/useValocracy.d.ts.map +1 -0
  52. package/dist/react/hooks/useValocracy.js +54 -0
  53. package/dist/react/hooks/useValocracy.js.map +1 -0
  54. package/dist/react/hooks/useWallet.d.ts +13 -0
  55. package/dist/react/hooks/useWallet.d.ts.map +1 -0
  56. package/dist/react/hooks/useWallet.js +51 -0
  57. package/dist/react/hooks/useWallet.js.map +1 -0
  58. package/dist/react/index.d.ts +7 -0
  59. package/dist/react/index.d.ts.map +1 -0
  60. package/dist/react/index.js +7 -0
  61. package/dist/react/index.js.map +1 -0
  62. package/dist/react/providers/KarnProvider.d.ts +25 -0
  63. package/dist/react/providers/KarnProvider.d.ts.map +1 -0
  64. package/dist/react/providers/KarnProvider.js +25 -0
  65. package/dist/react/providers/KarnProvider.js.map +1 -0
  66. package/dist/utils/decay.d.ts +19 -0
  67. package/dist/utils/decay.d.ts.map +1 -0
  68. package/dist/utils/decay.js +33 -0
  69. package/dist/utils/decay.js.map +1 -0
  70. package/dist/utils/index.d.ts +4 -0
  71. package/dist/utils/index.d.ts.map +1 -0
  72. package/dist/utils/index.js +4 -0
  73. package/dist/utils/index.js.map +1 -0
  74. package/dist/utils/polling.d.ts +75 -0
  75. package/dist/utils/polling.d.ts.map +1 -0
  76. package/dist/utils/polling.js +104 -0
  77. package/dist/utils/polling.js.map +1 -0
  78. package/dist/utils/simulation.d.ts +67 -0
  79. package/dist/utils/simulation.d.ts.map +1 -0
  80. package/dist/utils/simulation.js +88 -0
  81. package/dist/utils/simulation.js.map +1 -0
  82. package/dist/wallet/WalletManager.d.ts +77 -0
  83. package/dist/wallet/WalletManager.d.ts.map +1 -0
  84. package/dist/wallet/WalletManager.js +268 -0
  85. package/dist/wallet/WalletManager.js.map +1 -0
  86. package/dist/wallet/adapters/AlbedoAdapter.d.ts +47 -0
  87. package/dist/wallet/adapters/AlbedoAdapter.d.ts.map +1 -0
  88. package/dist/wallet/adapters/AlbedoAdapter.js +84 -0
  89. package/dist/wallet/adapters/AlbedoAdapter.js.map +1 -0
  90. package/dist/wallet/adapters/FreighterAdapter.d.ts +42 -0
  91. package/dist/wallet/adapters/FreighterAdapter.d.ts.map +1 -0
  92. package/dist/wallet/adapters/FreighterAdapter.js +107 -0
  93. package/dist/wallet/adapters/FreighterAdapter.js.map +1 -0
  94. package/dist/wallet/adapters/LobstrAdapter.d.ts +34 -0
  95. package/dist/wallet/adapters/LobstrAdapter.d.ts.map +1 -0
  96. package/dist/wallet/adapters/LobstrAdapter.js +89 -0
  97. package/dist/wallet/adapters/LobstrAdapter.js.map +1 -0
  98. package/dist/wallet/adapters/RabetAdapter.d.ts +39 -0
  99. package/dist/wallet/adapters/RabetAdapter.d.ts.map +1 -0
  100. package/dist/wallet/adapters/RabetAdapter.js +104 -0
  101. package/dist/wallet/adapters/RabetAdapter.js.map +1 -0
  102. package/dist/wallet/adapters/xBullAdapter.d.ts +41 -0
  103. package/dist/wallet/adapters/xBullAdapter.d.ts.map +1 -0
  104. package/dist/wallet/adapters/xBullAdapter.js +72 -0
  105. package/dist/wallet/adapters/xBullAdapter.js.map +1 -0
  106. package/dist/wallet/index.d.ts +20 -0
  107. package/dist/wallet/index.d.ts.map +1 -0
  108. package/dist/wallet/index.js +23 -0
  109. package/dist/wallet/index.js.map +1 -0
  110. package/dist/wallet/types.d.ts +165 -0
  111. package/dist/wallet/types.d.ts.map +1 -0
  112. package/dist/wallet/types.js +50 -0
  113. package/dist/wallet/types.js.map +1 -0
  114. package/examples/basic-usage.ts +28 -0
  115. package/jest.config.js +37 -0
  116. package/package.json +58 -0
  117. package/src/__tests__/README.md +364 -0
  118. package/src/__tests__/setup.ts +57 -0
  119. package/src/__tests__/utils/decay.test.ts +331 -0
  120. package/src/__tests__/wallet/WalletManager.test.ts +410 -0
  121. package/src/clients/GovernorClient.ts +23 -0
  122. package/src/clients/TreasuryClient.ts +23 -0
  123. package/src/clients/ValocracyClient.ts +48 -0
  124. package/src/clients/index.ts +3 -0
  125. package/src/generated/governor/README.md +54 -0
  126. package/src/generated/governor/package.json +17 -0
  127. package/src/generated/governor/src/index.ts +428 -0
  128. package/src/generated/governor/tsconfig.json +98 -0
  129. package/src/generated/treasury/README.md +54 -0
  130. package/src/generated/treasury/package.json +17 -0
  131. package/src/generated/treasury/src/index.ts +495 -0
  132. package/src/generated/treasury/tsconfig.json +98 -0
  133. package/src/generated/valocracy/README.md +54 -0
  134. package/src/generated/valocracy/package.json +17 -0
  135. package/src/generated/valocracy/src/index.ts +831 -0
  136. package/src/generated/valocracy/tsconfig.json +98 -0
  137. package/src/index.ts +4 -0
  138. package/src/react/hooks/useGovernor.ts +69 -0
  139. package/src/react/hooks/useMultiWallet.ts +169 -0
  140. package/src/react/hooks/useTreasury.ts +57 -0
  141. package/src/react/hooks/useValocracy.ts +66 -0
  142. package/src/react/hooks/useWallet.ts +60 -0
  143. package/src/react/index.ts +6 -0
  144. package/src/react/providers/KarnProvider.tsx +63 -0
  145. package/src/utils/decay.ts +44 -0
  146. package/src/utils/index.ts +3 -0
  147. package/src/utils/polling.ts +193 -0
  148. package/src/utils/simulation.ts +136 -0
  149. package/src/wallet/WalletManager.ts +360 -0
  150. package/src/wallet/adapters/AlbedoAdapter.ts +140 -0
  151. package/src/wallet/adapters/FreighterAdapter.ts +179 -0
  152. package/src/wallet/adapters/LobstrAdapter.ts +142 -0
  153. package/src/wallet/adapters/RabetAdapter.ts +162 -0
  154. package/src/wallet/adapters/xBullAdapter.ts +123 -0
  155. package/src/wallet/index.ts +37 -0
  156. package/src/wallet/types.ts +204 -0
  157. package/tsconfig.json +40 -0
@@ -0,0 +1,831 @@
1
+ import { Buffer } from "buffer";
2
+ import { Address } from '@stellar/stellar-sdk';
3
+ import {
4
+ AssembledTransaction,
5
+ Client as ContractClient,
6
+ ClientOptions as ContractClientOptions,
7
+ MethodOptions,
8
+ Result,
9
+ Spec as ContractSpec,
10
+ } from '@stellar/stellar-sdk/contract';
11
+ import type {
12
+ u32,
13
+ i32,
14
+ u64,
15
+ i64,
16
+ u128,
17
+ i128,
18
+ u256,
19
+ i256,
20
+ Option,
21
+ Typepoint,
22
+ Duration,
23
+ } from '@stellar/stellar-sdk/contract';
24
+ export * from '@stellar/stellar-sdk'
25
+ export * as contract from '@stellar/stellar-sdk/contract'
26
+ export * as rpc from '@stellar/stellar-sdk/rpc'
27
+
28
+ if (typeof window !== 'undefined') {
29
+ //@ts-ignore Buffer exists
30
+ window.Buffer = window.Buffer || Buffer;
31
+ }
32
+
33
+
34
+
35
+
36
+
37
+ /**
38
+ * Valor type definition with rarity and metadata
39
+ */
40
+ export interface Valor {
41
+ /**
42
+ * Metadata string (e.g., description, URI)
43
+ */
44
+ metadata: string;
45
+ /**
46
+ * The rarity multiplier for this valor type
47
+ */
48
+ rarity: u64;
49
+ }
50
+
51
+
52
+ /**
53
+ * User statistics including level and expiration
54
+ */
55
+ export interface UserStats {
56
+ /**
57
+ * The expiration timestamp (Unix seconds)
58
+ */
59
+ expiry: u64;
60
+ /**
61
+ * The accumulated governance level
62
+ */
63
+ level: u64;
64
+ /**
65
+ * The permanent portion of level that never decays (e.g., Founder badge)
66
+ */
67
+ permanent_level: u64;
68
+ /**
69
+ * Whether the user has verified their identity (ADR-003)
70
+ */
71
+ verified: boolean;
72
+ }
73
+
74
+ export const ValocracyError = {
75
+ /**
76
+ * Contract has already been initialized
77
+ */
78
+ 1: {message:"AlreadyInitialized"},
79
+ /**
80
+ * Contract has not been initialized
81
+ */
82
+ 2: {message:"NotInitialized"},
83
+ /**
84
+ * Caller is not authorized (not a member or not the governor)
85
+ */
86
+ 3: {message:"NotAuthorized"},
87
+ /**
88
+ * Valor ID does not exist
89
+ */
90
+ 4: {message:"NonExistentValor"},
91
+ /**
92
+ * Token ID does not exist
93
+ */
94
+ 5: {message:"NonExistentToken"},
95
+ /**
96
+ * Account does not exist
97
+ */
98
+ 6: {message:"NonExistentAccount"},
99
+ /**
100
+ * Token is soulbound and cannot be transferred
101
+ */
102
+ 7: {message:"TokenSoulbound"},
103
+ /**
104
+ * User has already self-registered (has a Member badge)
105
+ */
106
+ 8: {message:"AlreadyRegistered"},
107
+ /**
108
+ * Invalid signature
109
+ */
110
+ 9: {message:"InvalidSignature"},
111
+ /**
112
+ * Nonce already used
113
+ */
114
+ 10: {message:"NonceUsed"},
115
+ /**
116
+ * Signature expired
117
+ */
118
+ 11: {message:"SignatureExpired"},
119
+ /**
120
+ * Invalid Valor ID
121
+ */
122
+ 12: {message:"InvalidValorId"},
123
+ /**
124
+ * Mint not authorized
125
+ */
126
+ 13: {message:"MintNotAuthorized"},
127
+ /**
128
+ * Badge not mintable
129
+ */
130
+ 14: {message:"BadgeNotMintable"},
131
+ /**
132
+ * Reentrancy detected
133
+ */
134
+ 15: {message:"ReentrancyDetected"}
135
+ }
136
+
137
+ /**
138
+ * Storage keys for the contract
139
+ */
140
+ export type DataKey = {tag: "Admin", values: void} | {tag: "Initialized", values: void} | {tag: "Founder", values: void} | {tag: "Governor", values: void} | {tag: "Treasury", values: void} | {tag: "TotalSupply", values: void} | {tag: "MemberValorId", values: void} | {tag: "TokenValorId", values: readonly [u64]} | {tag: "ValorData", values: readonly [u64]} | {tag: "UserStats", values: readonly [string]} | {tag: "TokenOwner", values: readonly [u64]} | {tag: "Signer", values: void} | {tag: "UsedNonce", values: readonly [string, u64]};
141
+
142
+ export interface Client {
143
+ /**
144
+ * Construct and simulate a mint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
145
+ * Mint a new soulbound NFT to an account.
146
+ *
147
+ * Requires authorization from a valid minter for the specific badge category.
148
+ * - Governance/Leadership/Track: See RBAC matrix
149
+ * - Community: Any member
150
+ */
151
+ mint: ({minter, recipient, valor_id}: {minter: string, recipient: string, valor_id: u64}, options?: {
152
+ /**
153
+ * The fee to pay for the transaction. Default: BASE_FEE
154
+ */
155
+ fee?: number;
156
+
157
+ /**
158
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
159
+ */
160
+ timeoutInSeconds?: number;
161
+
162
+ /**
163
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
164
+ */
165
+ simulate?: boolean;
166
+ }) => Promise<AssembledTransaction<Result<u64>>>
167
+
168
+ /**
169
+ * Construct and simulate a name transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
170
+ * Get the contract name
171
+ */
172
+ name: (options?: {
173
+ /**
174
+ * The fee to pay for the transaction. Default: BASE_FEE
175
+ */
176
+ fee?: number;
177
+
178
+ /**
179
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
180
+ */
181
+ timeoutInSeconds?: number;
182
+
183
+ /**
184
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
185
+ */
186
+ simulate?: boolean;
187
+ }) => Promise<AssembledTransaction<string>>
188
+
189
+ /**
190
+ * Construct and simulate a revoke transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
191
+ * Revoke (burn) a badge token.
192
+ *
193
+ * Governor-only. Removes the token, reduces the user's level by
194
+ * the badge's rarity value. Used for governance-decided removal.
195
+ */
196
+ revoke: ({token_id}: {token_id: u64}, options?: {
197
+ /**
198
+ * The fee to pay for the transaction. Default: BASE_FEE
199
+ */
200
+ fee?: number;
201
+
202
+ /**
203
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
204
+ */
205
+ timeoutInSeconds?: number;
206
+
207
+ /**
208
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
209
+ */
210
+ simulate?: boolean;
211
+ }) => Promise<AssembledTransaction<Result<void>>>
212
+
213
+ /**
214
+ * Construct and simulate a symbol transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
215
+ * Get the contract symbol
216
+ */
217
+ symbol: (options?: {
218
+ /**
219
+ * The fee to pay for the transaction. Default: BASE_FEE
220
+ */
221
+ fee?: number;
222
+
223
+ /**
224
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
225
+ */
226
+ timeoutInSeconds?: number;
227
+
228
+ /**
229
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
230
+ */
231
+ simulate?: boolean;
232
+ }) => Promise<AssembledTransaction<string>>
233
+
234
+ /**
235
+ * Construct and simulate a founder transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
236
+ * Get the founder address
237
+ */
238
+ founder: (options?: {
239
+ /**
240
+ * The fee to pay for the transaction. Default: BASE_FEE
241
+ */
242
+ fee?: number;
243
+
244
+ /**
245
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
246
+ */
247
+ timeoutInSeconds?: number;
248
+
249
+ /**
250
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
251
+ */
252
+ simulate?: boolean;
253
+ }) => Promise<AssembledTransaction<Option<string>>>
254
+
255
+ /**
256
+ * Construct and simulate a upgrade transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
257
+ * Upgrade the contract to a new WASM hash.
258
+ * Only callable by the governor (requires governance proposal).
259
+ */
260
+ upgrade: ({new_wasm_hash}: {new_wasm_hash: Buffer}, options?: {
261
+ /**
262
+ * The fee to pay for the transaction. Default: BASE_FEE
263
+ */
264
+ fee?: number;
265
+
266
+ /**
267
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
268
+ */
269
+ timeoutInSeconds?: number;
270
+
271
+ /**
272
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
273
+ */
274
+ simulate?: boolean;
275
+ }) => Promise<AssembledTransaction<Result<void>>>
276
+
277
+ /**
278
+ * Construct and simulate a governor transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
279
+ * Get the governor contract address
280
+ */
281
+ governor: (options?: {
282
+ /**
283
+ * The fee to pay for the transaction. Default: BASE_FEE
284
+ */
285
+ fee?: number;
286
+
287
+ /**
288
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
289
+ */
290
+ timeoutInSeconds?: number;
291
+
292
+ /**
293
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
294
+ */
295
+ simulate?: boolean;
296
+ }) => Promise<AssembledTransaction<Option<string>>>
297
+
298
+ /**
299
+ * Construct and simulate a level_of transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
300
+ * Get the raw level of an account (without decay)
301
+ */
302
+ level_of: ({account}: {account: string}, options?: {
303
+ /**
304
+ * The fee to pay for the transaction. Default: BASE_FEE
305
+ */
306
+ fee?: number;
307
+
308
+ /**
309
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
310
+ */
311
+ timeoutInSeconds?: number;
312
+
313
+ /**
314
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
315
+ */
316
+ simulate?: boolean;
317
+ }) => Promise<AssembledTransaction<u64>>
318
+
319
+ /**
320
+ * Construct and simulate a owner_of transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
321
+ * Get the owner of a token
322
+ */
323
+ owner_of: ({token_id}: {token_id: u64}, options?: {
324
+ /**
325
+ * The fee to pay for the transaction. Default: BASE_FEE
326
+ */
327
+ fee?: number;
328
+
329
+ /**
330
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
331
+ */
332
+ timeoutInSeconds?: number;
333
+
334
+ /**
335
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
336
+ */
337
+ simulate?: boolean;
338
+ }) => Promise<AssembledTransaction<Option<string>>>
339
+
340
+ /**
341
+ * Construct and simulate a treasury transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
342
+ * Get the treasury contract address
343
+ */
344
+ treasury: (options?: {
345
+ /**
346
+ * The fee to pay for the transaction. Default: BASE_FEE
347
+ */
348
+ fee?: number;
349
+
350
+ /**
351
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
352
+ */
353
+ timeoutInSeconds?: number;
354
+
355
+ /**
356
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
357
+ */
358
+ simulate?: boolean;
359
+ }) => Promise<AssembledTransaction<Option<string>>>
360
+
361
+ /**
362
+ * Construct and simulate a expiry_of transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
363
+ * Get the expiry timestamp of an account
364
+ */
365
+ expiry_of: ({account}: {account: string}, options?: {
366
+ /**
367
+ * The fee to pay for the transaction. Default: BASE_FEE
368
+ */
369
+ fee?: number;
370
+
371
+ /**
372
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
373
+ */
374
+ timeoutInSeconds?: number;
375
+
376
+ /**
377
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
378
+ */
379
+ simulate?: boolean;
380
+ }) => Promise<AssembledTransaction<u64>>
381
+
382
+ /**
383
+ * Construct and simulate a get_votes transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
384
+ * Get the current voting power (Mana) of an account
385
+ *
386
+ * Mana = MEMBER_FLOOR + bonus (decay applies to extra_level only)
387
+ * Registered accounts always retain at least MEMBER_FLOOR voting power.
388
+ */
389
+ get_votes: ({account}: {account: string}, options?: {
390
+ /**
391
+ * The fee to pay for the transaction. Default: BASE_FEE
392
+ */
393
+ fee?: number;
394
+
395
+ /**
396
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
397
+ */
398
+ timeoutInSeconds?: number;
399
+
400
+ /**
401
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
402
+ */
403
+ simulate?: boolean;
404
+ }) => Promise<AssembledTransaction<u64>>
405
+
406
+ /**
407
+ * Construct and simulate a rarity_of transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
408
+ * Get the rarity of a valor type
409
+ */
410
+ rarity_of: ({valor_id}: {valor_id: u64}, options?: {
411
+ /**
412
+ * The fee to pay for the transaction. Default: BASE_FEE
413
+ */
414
+ fee?: number;
415
+
416
+ /**
417
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
418
+ */
419
+ timeoutInSeconds?: number;
420
+
421
+ /**
422
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
423
+ */
424
+ simulate?: boolean;
425
+ }) => Promise<AssembledTransaction<u64>>
426
+
427
+ /**
428
+ * Construct and simulate a set_valor transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
429
+ * Create or update a Valor type with rarity and metadata.
430
+ *
431
+ * Governor-only. Badge type changes require a governance proposal.
432
+ */
433
+ set_valor: ({valor_id, rarity, metadata}: {valor_id: u64, rarity: u64, metadata: string}, options?: {
434
+ /**
435
+ * The fee to pay for the transaction. Default: BASE_FEE
436
+ */
437
+ fee?: number;
438
+
439
+ /**
440
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
441
+ */
442
+ timeoutInSeconds?: number;
443
+
444
+ /**
445
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
446
+ */
447
+ simulate?: boolean;
448
+ }) => Promise<AssembledTransaction<Result<void>>>
449
+
450
+ /**
451
+ * Construct and simulate a initialize transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
452
+ * Initialize the Valocracy contract.
453
+ *
454
+ * No admin: sets all configuration at once. Registers initial valor types,
455
+ * mints the Founder badge, and stores the member badge ID for self-registration.
456
+ *
457
+ * # Arguments
458
+ * * `founder` - Address that receives the permanent Founder badge
459
+ * * `governor` - Governor contract address
460
+ * * `treasury` - Treasury contract address
461
+ * * `name` - Contract name
462
+ * * `symbol` - Contract symbol
463
+ * * `member_valor_id` - Valor ID used by self_register() (the Member badge)
464
+ * * `valor_ids` - List of valor IDs to register
465
+ * * `valor_rarities` - List of rarities (parallel to valor_ids)
466
+ * * `valor_metadatas` - List of metadata strings (parallel to valor_ids)
467
+ * * `founder_valor_id` - Which valor_id is the Founder badge
468
+ */
469
+ initialize: ({founder, governor, treasury, member_valor_id, valor_ids, valor_rarities, valor_metadatas, founder_valor_id, signer}: {founder: string, governor: string, treasury: string, member_valor_id: u64, valor_ids: Array<u64>, valor_rarities: Array<u64>, valor_metadatas: Array<string>, founder_valor_id: u64, signer: Buffer}, options?: {
470
+ /**
471
+ * The fee to pay for the transaction. Default: BASE_FEE
472
+ */
473
+ fee?: number;
474
+
475
+ /**
476
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
477
+ */
478
+ timeoutInSeconds?: number;
479
+
480
+ /**
481
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
482
+ */
483
+ simulate?: boolean;
484
+ }) => Promise<AssembledTransaction<Result<void>>>
485
+
486
+ /**
487
+ * Construct and simulate a is_verified transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
488
+ * Check if a member has completed identity verification (ADR-003).
489
+ *
490
+ * Returns false if the account is not registered.
491
+ */
492
+ is_verified: ({account}: {account: string}, options?: {
493
+ /**
494
+ * The fee to pay for the transaction. Default: BASE_FEE
495
+ */
496
+ fee?: number;
497
+
498
+ /**
499
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
500
+ */
501
+ timeoutInSeconds?: number;
502
+
503
+ /**
504
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
505
+ */
506
+ simulate?: boolean;
507
+ }) => Promise<AssembledTransaction<boolean>>
508
+
509
+ /**
510
+ * Construct and simulate a metadata_of transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
511
+ * Get the metadata of a valor type
512
+ */
513
+ metadata_of: ({valor_id}: {valor_id: u64}, options?: {
514
+ /**
515
+ * The fee to pay for the transaction. Default: BASE_FEE
516
+ */
517
+ fee?: number;
518
+
519
+ /**
520
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
521
+ */
522
+ timeoutInSeconds?: number;
523
+
524
+ /**
525
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
526
+ */
527
+ simulate?: boolean;
528
+ }) => Promise<AssembledTransaction<string>>
529
+
530
+ /**
531
+ * Construct and simulate a valor_id_of transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
532
+ * Get the valor ID linked to a token
533
+ */
534
+ valor_id_of: ({token_id}: {token_id: u64}, options?: {
535
+ /**
536
+ * The fee to pay for the transaction. Default: BASE_FEE
537
+ */
538
+ fee?: number;
539
+
540
+ /**
541
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
542
+ */
543
+ timeoutInSeconds?: number;
544
+
545
+ /**
546
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
547
+ */
548
+ simulate?: boolean;
549
+ }) => Promise<AssembledTransaction<Option<u64>>>
550
+
551
+ /**
552
+ * Construct and simulate a set_verified transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
553
+ * Set the verification status of a member (ADR-003).
554
+ *
555
+ * Governor-only. Used after identity verification is complete.
556
+ * Unverified members cannot withdraw funds from the treasury.
557
+ */
558
+ set_verified: ({member, verified}: {member: string, verified: boolean}, options?: {
559
+ /**
560
+ * The fee to pay for the transaction. Default: BASE_FEE
561
+ */
562
+ fee?: number;
563
+
564
+ /**
565
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
566
+ */
567
+ timeoutInSeconds?: number;
568
+
569
+ /**
570
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
571
+ */
572
+ simulate?: boolean;
573
+ }) => Promise<AssembledTransaction<Result<void>>>
574
+
575
+ /**
576
+ * Construct and simulate a total_supply transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
577
+ * Get total supply of minted tokens
578
+ */
579
+ total_supply: (options?: {
580
+ /**
581
+ * The fee to pay for the transaction. Default: BASE_FEE
582
+ */
583
+ fee?: number;
584
+
585
+ /**
586
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
587
+ */
588
+ timeoutInSeconds?: number;
589
+
590
+ /**
591
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
592
+ */
593
+ simulate?: boolean;
594
+ }) => Promise<AssembledTransaction<u64>>
595
+
596
+ /**
597
+ * Construct and simulate a guardian_mint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
598
+ * Mint a new soulbound NFT using backend signature (Guardian).
599
+ *
600
+ * Payload: account | valor_id | nonce | expiry
601
+ */
602
+ guardian_mint: ({account, valor_id, signature, nonce, expiry}: {account: string, valor_id: u64, signature: Buffer, nonce: u64, expiry: u64}, options?: {
603
+ /**
604
+ * The fee to pay for the transaction. Default: BASE_FEE
605
+ */
606
+ fee?: number;
607
+
608
+ /**
609
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
610
+ */
611
+ timeoutInSeconds?: number;
612
+
613
+ /**
614
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
615
+ */
616
+ simulate?: boolean;
617
+ }) => Promise<AssembledTransaction<Result<u64>>>
618
+
619
+ /**
620
+ * Construct and simulate a self_register transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
621
+ */
622
+ self_register: ({caller, signature, nonce, expiry}: {caller: string, signature: Buffer, nonce: u64, expiry: u64}, options?: {
623
+ /**
624
+ * The fee to pay for the transaction. Default: BASE_FEE
625
+ */
626
+ fee?: number;
627
+
628
+ /**
629
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
630
+ */
631
+ timeoutInSeconds?: number;
632
+
633
+ /**
634
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
635
+ */
636
+ simulate?: boolean;
637
+ }) => Promise<AssembledTransaction<Result<u64>>>
638
+
639
+ /**
640
+ * Construct and simulate a calculate_mana transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
641
+ * Calculate Mana (voting power with Member Floor)
642
+ *
643
+ * Formula: Mana = floor + bonus
644
+ * - floor = MEMBER_FLOOR (fixed constant, e.g. 5)
645
+ * - extra_level = level - floor
646
+ * - bonus = (extra_level * time_remaining) / VACANCY_PERIOD
647
+ *
648
+ * Inactive members decay to exactly MEMBER_FLOOR regardless of their
649
+ * accumulated level. Legacy status offers zero protection against inactivity.
650
+ */
651
+ calculate_mana: ({level, permanent_level, expiry, current_time}: {level: u64, permanent_level: u64, expiry: u64, current_time: u64}, options?: {
652
+ /**
653
+ * The fee to pay for the transaction. Default: BASE_FEE
654
+ */
655
+ fee?: number;
656
+
657
+ /**
658
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
659
+ */
660
+ timeoutInSeconds?: number;
661
+
662
+ /**
663
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
664
+ */
665
+ simulate?: boolean;
666
+ }) => Promise<AssembledTransaction<u64>>
667
+
668
+ /**
669
+ * Construct and simulate a vacancy_period transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
670
+ * Get the vacancy period (180 days in seconds)
671
+ */
672
+ vacancy_period: (options?: {
673
+ /**
674
+ * The fee to pay for the transaction. Default: BASE_FEE
675
+ */
676
+ fee?: number;
677
+
678
+ /**
679
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
680
+ */
681
+ timeoutInSeconds?: number;
682
+
683
+ /**
684
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
685
+ */
686
+ simulate?: boolean;
687
+ }) => Promise<AssembledTransaction<u64>>
688
+
689
+ /**
690
+ * Construct and simulate a update_governor transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
691
+ * Update the governor contract address (migration path).
692
+ * Only callable by the current governor.
693
+ */
694
+ update_governor: ({new_governor}: {new_governor: string}, options?: {
695
+ /**
696
+ * The fee to pay for the transaction. Default: BASE_FEE
697
+ */
698
+ fee?: number;
699
+
700
+ /**
701
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
702
+ */
703
+ timeoutInSeconds?: number;
704
+
705
+ /**
706
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
707
+ */
708
+ simulate?: boolean;
709
+ }) => Promise<AssembledTransaction<Result<void>>>
710
+
711
+ /**
712
+ * Construct and simulate a update_treasury transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
713
+ * Update the treasury contract address.
714
+ * Only callable by the current governor.
715
+ */
716
+ update_treasury: ({new_treasury}: {new_treasury: string}, options?: {
717
+ /**
718
+ * The fee to pay for the transaction. Default: BASE_FEE
719
+ */
720
+ fee?: number;
721
+
722
+ /**
723
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
724
+ */
725
+ timeoutInSeconds?: number;
726
+
727
+ /**
728
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
729
+ */
730
+ simulate?: boolean;
731
+ }) => Promise<AssembledTransaction<Result<void>>>
732
+
733
+ /**
734
+ * Construct and simulate a has_voting_power transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
735
+ * Check if account has any active voting power
736
+ *
737
+ * Any registered account (level > 0) always has at least MEMBER_FLOOR voting power.
738
+ */
739
+ has_voting_power: ({account}: {account: string}, options?: {
740
+ /**
741
+ * The fee to pay for the transaction. Default: BASE_FEE
742
+ */
743
+ fee?: number;
744
+
745
+ /**
746
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
747
+ */
748
+ timeoutInSeconds?: number;
749
+
750
+ /**
751
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
752
+ */
753
+ simulate?: boolean;
754
+ }) => Promise<AssembledTransaction<boolean>>
755
+
756
+ /**
757
+ * Construct and simulate a permanent_level_of transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
758
+ * Get the permanent level of an account
759
+ */
760
+ permanent_level_of: ({account}: {account: string}, options?: {
761
+ /**
762
+ * The fee to pay for the transaction. Default: BASE_FEE
763
+ */
764
+ fee?: number;
765
+
766
+ /**
767
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
768
+ */
769
+ timeoutInSeconds?: number;
770
+
771
+ /**
772
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
773
+ */
774
+ simulate?: boolean;
775
+ }) => Promise<AssembledTransaction<u64>>
776
+
777
+ }
778
+ export class Client extends ContractClient {
779
+ static async deploy<T = Client>(
780
+ /** Options for initializing a Client as well as for calling a method, with extras specific to deploying. */
781
+ options: MethodOptions &
782
+ Omit<ContractClientOptions, "contractId"> & {
783
+ /** The hash of the Wasm blob, which must already be installed on-chain. */
784
+ wasmHash: Buffer | string;
785
+ /** Salt used to generate the contract's ID. Passed through to {@link Operation.createCustomContract}. Default: random. */
786
+ salt?: Buffer | Uint8Array;
787
+ /** The format used to decode `wasmHash`, if it's provided as a string. */
788
+ format?: "hex" | "base64";
789
+ }
790
+ ): Promise<AssembledTransaction<T>> {
791
+ return ContractClient.deploy(null, options)
792
+ }
793
+ constructor(public readonly options: ContractClientOptions) {
794
+ super(
795
+ new ContractSpec([ "AAAAAAAAALtNaW50IGEgbmV3IHNvdWxib3VuZCBORlQgdG8gYW4gYWNjb3VudC4KClJlcXVpcmVzIGF1dGhvcml6YXRpb24gZnJvbSBhIHZhbGlkIG1pbnRlciBmb3IgdGhlIHNwZWNpZmljIGJhZGdlIGNhdGVnb3J5LgotIEdvdmVybmFuY2UvTGVhZGVyc2hpcC9UcmFjazogU2VlIFJCQUMgbWF0cml4Ci0gQ29tbXVuaXR5OiBBbnkgbWVtYmVyAAAAAARtaW50AAAAAwAAAAAAAAAGbWludGVyAAAAAAATAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAh2YWxvcl9pZAAAAAYAAAABAAAD6QAAAAYAAAfQAAAADlZhbG9jcmFjeUVycm9yAAA=",
796
+ "AAAAAAAAABVHZXQgdGhlIGNvbnRyYWN0IG5hbWUAAAAAAAAEbmFtZQAAAAAAAAABAAAAEA==",
797
+ "AAAAAAAAAJpSZXZva2UgKGJ1cm4pIGEgYmFkZ2UgdG9rZW4uCgpHb3Zlcm5vci1vbmx5LiBSZW1vdmVzIHRoZSB0b2tlbiwgcmVkdWNlcyB0aGUgdXNlcidzIGxldmVsIGJ5CnRoZSBiYWRnZSdzIHJhcml0eSB2YWx1ZS4gVXNlZCBmb3IgZ292ZXJuYW5jZS1kZWNpZGVkIHJlbW92YWwuAAAAAAAGcmV2b2tlAAAAAAABAAAAAAAAAAh0b2tlbl9pZAAAAAYAAAABAAAD6QAAA+0AAAAAAAAH0AAAAA5WYWxvY3JhY3lFcnJvcgAA",
798
+ "AAAAAAAAABdHZXQgdGhlIGNvbnRyYWN0IHN5bWJvbAAAAAAGc3ltYm9sAAAAAAAAAAAAAQAAABA=",
799
+ "AAAAAAAAABdHZXQgdGhlIGZvdW5kZXIgYWRkcmVzcwAAAAAHZm91bmRlcgAAAAAAAAAAAQAAA+gAAAAT",
800
+ "AAAAAAAAAGZVcGdyYWRlIHRoZSBjb250cmFjdCB0byBhIG5ldyBXQVNNIGhhc2guCk9ubHkgY2FsbGFibGUgYnkgdGhlIGdvdmVybm9yIChyZXF1aXJlcyBnb3Zlcm5hbmNlIHByb3Bvc2FsKS4AAAAAAAd1cGdyYWRlAAAAAAEAAAAAAAAADW5ld193YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAfQAAAADlZhbG9jcmFjeUVycm9yAAA=",
801
+ "AAAAAAAAACFHZXQgdGhlIGdvdmVybm9yIGNvbnRyYWN0IGFkZHJlc3MAAAAAAAAIZ292ZXJub3IAAAAAAAAAAQAAA+gAAAAT",
802
+ "AAAAAAAAAC9HZXQgdGhlIHJhdyBsZXZlbCBvZiBhbiBhY2NvdW50ICh3aXRob3V0IGRlY2F5KQAAAAAIbGV2ZWxfb2YAAAABAAAAAAAAAAdhY2NvdW50AAAAABMAAAABAAAABg==",
803
+ "AAAAAAAAABhHZXQgdGhlIG93bmVyIG9mIGEgdG9rZW4AAAAIb3duZXJfb2YAAAABAAAAAAAAAAh0b2tlbl9pZAAAAAYAAAABAAAD6AAAABM=",
804
+ "AAAAAAAAACFHZXQgdGhlIHRyZWFzdXJ5IGNvbnRyYWN0IGFkZHJlc3MAAAAAAAAIdHJlYXN1cnkAAAAAAAAAAQAAA+gAAAAT",
805
+ "AAAAAAAAACZHZXQgdGhlIGV4cGlyeSB0aW1lc3RhbXAgb2YgYW4gYWNjb3VudAAAAAAACWV4cGlyeV9vZgAAAAAAAAEAAAAAAAAAB2FjY291bnQAAAAAEwAAAAEAAAAG",
806
+ "AAAAAAAAALhHZXQgdGhlIGN1cnJlbnQgdm90aW5nIHBvd2VyIChNYW5hKSBvZiBhbiBhY2NvdW50CgpNYW5hID0gTUVNQkVSX0ZMT09SICsgYm9udXMgKGRlY2F5IGFwcGxpZXMgdG8gZXh0cmFfbGV2ZWwgb25seSkKUmVnaXN0ZXJlZCBhY2NvdW50cyBhbHdheXMgcmV0YWluIGF0IGxlYXN0IE1FTUJFUl9GTE9PUiB2b3RpbmcgcG93ZXIuAAAACWdldF92b3RlcwAAAAAAAAEAAAAAAAAAB2FjY291bnQAAAAAEwAAAAEAAAAG",
807
+ "AAAAAAAAAB5HZXQgdGhlIHJhcml0eSBvZiBhIHZhbG9yIHR5cGUAAAAAAAlyYXJpdHlfb2YAAAAAAAABAAAAAAAAAAh2YWxvcl9pZAAAAAYAAAABAAAABg==",
808
+ "AAAAAAAAAHlDcmVhdGUgb3IgdXBkYXRlIGEgVmFsb3IgdHlwZSB3aXRoIHJhcml0eSBhbmQgbWV0YWRhdGEuCgpHb3Zlcm5vci1vbmx5LiBCYWRnZSB0eXBlIGNoYW5nZXMgcmVxdWlyZSBhIGdvdmVybmFuY2UgcHJvcG9zYWwuAAAAAAAACXNldF92YWxvcgAAAAAAAAMAAAAAAAAACHZhbG9yX2lkAAAABgAAAAAAAAAGcmFyaXR5AAAAAAAGAAAAAAAAAAhtZXRhZGF0YQAAABAAAAABAAAD6QAAA+0AAAAAAAAH0AAAAA5WYWxvY3JhY3lFcnJvcgAA",
809
+ "AAAAAAAAAshJbml0aWFsaXplIHRoZSBWYWxvY3JhY3kgY29udHJhY3QuCgpObyBhZG1pbjogc2V0cyBhbGwgY29uZmlndXJhdGlvbiBhdCBvbmNlLiBSZWdpc3RlcnMgaW5pdGlhbCB2YWxvciB0eXBlcywKbWludHMgdGhlIEZvdW5kZXIgYmFkZ2UsIGFuZCBzdG9yZXMgdGhlIG1lbWJlciBiYWRnZSBJRCBmb3Igc2VsZi1yZWdpc3RyYXRpb24uCgojIEFyZ3VtZW50cwoqIGBmb3VuZGVyYCAtIEFkZHJlc3MgdGhhdCByZWNlaXZlcyB0aGUgcGVybWFuZW50IEZvdW5kZXIgYmFkZ2UKKiBgZ292ZXJub3JgIC0gR292ZXJub3IgY29udHJhY3QgYWRkcmVzcwoqIGB0cmVhc3VyeWAgLSBUcmVhc3VyeSBjb250cmFjdCBhZGRyZXNzCiogYG5hbWVgIC0gQ29udHJhY3QgbmFtZQoqIGBzeW1ib2xgIC0gQ29udHJhY3Qgc3ltYm9sCiogYG1lbWJlcl92YWxvcl9pZGAgLSBWYWxvciBJRCB1c2VkIGJ5IHNlbGZfcmVnaXN0ZXIoKSAodGhlIE1lbWJlciBiYWRnZSkKKiBgdmFsb3JfaWRzYCAtIExpc3Qgb2YgdmFsb3IgSURzIHRvIHJlZ2lzdGVyCiogYHZhbG9yX3Jhcml0aWVzYCAtIExpc3Qgb2YgcmFyaXRpZXMgKHBhcmFsbGVsIHRvIHZhbG9yX2lkcykKKiBgdmFsb3JfbWV0YWRhdGFzYCAtIExpc3Qgb2YgbWV0YWRhdGEgc3RyaW5ncyAocGFyYWxsZWwgdG8gdmFsb3JfaWRzKQoqIGBmb3VuZGVyX3ZhbG9yX2lkYCAtIFdoaWNoIHZhbG9yX2lkIGlzIHRoZSBGb3VuZGVyIGJhZGdlAAAACmluaXRpYWxpemUAAAAAAAkAAAAAAAAAB2ZvdW5kZXIAAAAAEwAAAAAAAAAIZ292ZXJub3IAAAATAAAAAAAAAAh0cmVhc3VyeQAAABMAAAAAAAAAD21lbWJlcl92YWxvcl9pZAAAAAAGAAAAAAAAAAl2YWxvcl9pZHMAAAAAAAPqAAAABgAAAAAAAAAOdmFsb3JfcmFyaXRpZXMAAAAAA+oAAAAGAAAAAAAAAA92YWxvcl9tZXRhZGF0YXMAAAAD6gAAABAAAAAAAAAAEGZvdW5kZXJfdmFsb3JfaWQAAAAGAAAAAAAAAAZzaWduZXIAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAOVmFsb2NyYWN5RXJyb3IAAA==",
810
+ "AAAAAAAAAHFDaGVjayBpZiBhIG1lbWJlciBoYXMgY29tcGxldGVkIGlkZW50aXR5IHZlcmlmaWNhdGlvbiAoQURSLTAwMykuCgpSZXR1cm5zIGZhbHNlIGlmIHRoZSBhY2NvdW50IGlzIG5vdCByZWdpc3RlcmVkLgAAAAAAAAtpc192ZXJpZmllZAAAAAABAAAAAAAAAAdhY2NvdW50AAAAABMAAAABAAAAAQ==",
811
+ "AAAAAAAAACBHZXQgdGhlIG1ldGFkYXRhIG9mIGEgdmFsb3IgdHlwZQAAAAttZXRhZGF0YV9vZgAAAAABAAAAAAAAAAh2YWxvcl9pZAAAAAYAAAABAAAAEA==",
812
+ "AAAAAAAAACJHZXQgdGhlIHZhbG9yIElEIGxpbmtlZCB0byBhIHRva2VuAAAAAAALdmFsb3JfaWRfb2YAAAAAAQAAAAAAAAAIdG9rZW5faWQAAAAGAAAAAQAAA+gAAAAG",
813
+ "AAAAAAAAAKxTZXQgdGhlIHZlcmlmaWNhdGlvbiBzdGF0dXMgb2YgYSBtZW1iZXIgKEFEUi0wMDMpLgoKR292ZXJub3Itb25seS4gVXNlZCBhZnRlciBpZGVudGl0eSB2ZXJpZmljYXRpb24gaXMgY29tcGxldGUuClVudmVyaWZpZWQgbWVtYmVycyBjYW5ub3Qgd2l0aGRyYXcgZnVuZHMgZnJvbSB0aGUgdHJlYXN1cnkuAAAADHNldF92ZXJpZmllZAAAAAIAAAAAAAAABm1lbWJlcgAAAAAAEwAAAAAAAAAIdmVyaWZpZWQAAAABAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAOVmFsb2NyYWN5RXJyb3IAAA==",
814
+ "AAAAAAAAACFHZXQgdG90YWwgc3VwcGx5IG9mIG1pbnRlZCB0b2tlbnMAAAAAAAAMdG90YWxfc3VwcGx5AAAAAAAAAAEAAAAG",
815
+ "AAAAAAAAAGpNaW50IGEgbmV3IHNvdWxib3VuZCBORlQgdXNpbmcgYmFja2VuZCBzaWduYXR1cmUgKEd1YXJkaWFuKS4KClBheWxvYWQ6IGFjY291bnQgfCB2YWxvcl9pZCB8IG5vbmNlIHwgZXhwaXJ5AAAAAAANZ3VhcmRpYW5fbWludAAAAAAAAAUAAAAAAAAAB2FjY291bnQAAAAAEwAAAAAAAAAIdmFsb3JfaWQAAAAGAAAAAAAAAAlzaWduYXR1cmUAAAAAAAPuAAAAQAAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAAZleHBpcnkAAAAAAAYAAAABAAAD6QAAAAYAAAfQAAAADlZhbG9jcmFjeUVycm9yAAA=",
816
+ "AAAAAAAAAAAAAAANc2VsZl9yZWdpc3RlcgAAAAAAAAQAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAAJc2lnbmF0dXJlAAAAAAAD7gAAAEAAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAGZXhwaXJ5AAAAAAAGAAAAAQAAA+kAAAAGAAAH0AAAAA5WYWxvY3JhY3lFcnJvcgAA",
817
+ "AAAAAAAAAWZDYWxjdWxhdGUgTWFuYSAodm90aW5nIHBvd2VyIHdpdGggTWVtYmVyIEZsb29yKQoKRm9ybXVsYTogTWFuYSA9IGZsb29yICsgYm9udXMKLSBmbG9vciA9IE1FTUJFUl9GTE9PUiAoZml4ZWQgY29uc3RhbnQsIGUuZy4gNSkKLSBleHRyYV9sZXZlbCA9IGxldmVsIC0gZmxvb3IKLSBib251cyA9IChleHRyYV9sZXZlbCAqIHRpbWVfcmVtYWluaW5nKSAvIFZBQ0FOQ1lfUEVSSU9ECgpJbmFjdGl2ZSBtZW1iZXJzIGRlY2F5IHRvIGV4YWN0bHkgTUVNQkVSX0ZMT09SIHJlZ2FyZGxlc3Mgb2YgdGhlaXIKYWNjdW11bGF0ZWQgbGV2ZWwuIExlZ2FjeSBzdGF0dXMgb2ZmZXJzIHplcm8gcHJvdGVjdGlvbiBhZ2FpbnN0IGluYWN0aXZpdHkuAAAAAAAOY2FsY3VsYXRlX21hbmEAAAAAAAQAAAAAAAAABWxldmVsAAAAAAAABgAAAAAAAAAPcGVybWFuZW50X2xldmVsAAAAAAYAAAAAAAAABmV4cGlyeQAAAAAABgAAAAAAAAAMY3VycmVudF90aW1lAAAABgAAAAEAAAAG",
818
+ "AAAAAAAAACxHZXQgdGhlIHZhY2FuY3kgcGVyaW9kICgxODAgZGF5cyBpbiBzZWNvbmRzKQAAAA52YWNhbmN5X3BlcmlvZAAAAAAAAAAAAAEAAAAG",
819
+ "AAAAAAAAAF1VcGRhdGUgdGhlIGdvdmVybm9yIGNvbnRyYWN0IGFkZHJlc3MgKG1pZ3JhdGlvbiBwYXRoKS4KT25seSBjYWxsYWJsZSBieSB0aGUgY3VycmVudCBnb3Zlcm5vci4AAAAAAAAPdXBkYXRlX2dvdmVybm9yAAAAAAEAAAAAAAAADG5ld19nb3Zlcm5vcgAAABMAAAABAAAD6QAAA+0AAAAAAAAH0AAAAA5WYWxvY3JhY3lFcnJvcgAA",
820
+ "AAAAAAAAAExVcGRhdGUgdGhlIHRyZWFzdXJ5IGNvbnRyYWN0IGFkZHJlc3MuCk9ubHkgY2FsbGFibGUgYnkgdGhlIGN1cnJlbnQgZ292ZXJub3IuAAAAD3VwZGF0ZV90cmVhc3VyeQAAAAABAAAAAAAAAAxuZXdfdHJlYXN1cnkAAAATAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAOVmFsb2NyYWN5RXJyb3IAAA==",
821
+ "AAAAAAAAAH9DaGVjayBpZiBhY2NvdW50IGhhcyBhbnkgYWN0aXZlIHZvdGluZyBwb3dlcgoKQW55IHJlZ2lzdGVyZWQgYWNjb3VudCAobGV2ZWwgPiAwKSBhbHdheXMgaGFzIGF0IGxlYXN0IE1FTUJFUl9GTE9PUiB2b3RpbmcgcG93ZXIuAAAAABBoYXNfdm90aW5nX3Bvd2VyAAAAAQAAAAAAAAAHYWNjb3VudAAAAAATAAAAAQAAAAE=",
822
+ "AAAAAAAAACVHZXQgdGhlIHBlcm1hbmVudCBsZXZlbCBvZiBhbiBhY2NvdW50AAAAAAAAEnBlcm1hbmVudF9sZXZlbF9vZgAAAAAAAQAAAAAAAAAHYWNjb3VudAAAAAATAAAAAQAAAAY=",
823
+ "AAAAAQAAAC5WYWxvciB0eXBlIGRlZmluaXRpb24gd2l0aCByYXJpdHkgYW5kIG1ldGFkYXRhAAAAAAAAAAAABVZhbG9yAAAAAAAAAgAAAChNZXRhZGF0YSBzdHJpbmcgKGUuZy4sIGRlc2NyaXB0aW9uLCBVUkkpAAAACG1ldGFkYXRhAAAAEAAAAClUaGUgcmFyaXR5IG11bHRpcGxpZXIgZm9yIHRoaXMgdmFsb3IgdHlwZQAAAAAAAAZyYXJpdHkAAAAAAAY=",
824
+ "AAAAAQAAAC5Vc2VyIHN0YXRpc3RpY3MgaW5jbHVkaW5nIGxldmVsIGFuZCBleHBpcmF0aW9uAAAAAAAAAAAACVVzZXJTdGF0cwAAAAAAAAQAAAAnVGhlIGV4cGlyYXRpb24gdGltZXN0YW1wIChVbml4IHNlY29uZHMpAAAAAAZleHBpcnkAAAAAAAYAAAAgVGhlIGFjY3VtdWxhdGVkIGdvdmVybmFuY2UgbGV2ZWwAAAAFbGV2ZWwAAAAAAAAGAAAARlRoZSBwZXJtYW5lbnQgcG9ydGlvbiBvZiBsZXZlbCB0aGF0IG5ldmVyIGRlY2F5cyAoZS5nLiwgRm91bmRlciBiYWRnZSkAAAAAAA9wZXJtYW5lbnRfbGV2ZWwAAAAABgAAADZXaGV0aGVyIHRoZSB1c2VyIGhhcyB2ZXJpZmllZCB0aGVpciBpZGVudGl0eSAoQURSLTAwMykAAAAAAAh2ZXJpZmllZAAAAAE=",
825
+ "AAAABAAAAAAAAAAAAAAADlZhbG9jcmFjeUVycm9yAAAAAAAPAAAAJUNvbnRyYWN0IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQAAAAAAAASQWxyZWFkeUluaXRpYWxpemVkAAAAAAABAAAAIUNvbnRyYWN0IGhhcyBub3QgYmVlbiBpbml0aWFsaXplZAAAAAAAAA5Ob3RJbml0aWFsaXplZAAAAAAAAgAAADtDYWxsZXIgaXMgbm90IGF1dGhvcml6ZWQgKG5vdCBhIG1lbWJlciBvciBub3QgdGhlIGdvdmVybm9yKQAAAAANTm90QXV0aG9yaXplZAAAAAAAAAMAAAAXVmFsb3IgSUQgZG9lcyBub3QgZXhpc3QAAAAAEE5vbkV4aXN0ZW50VmFsb3IAAAAEAAAAF1Rva2VuIElEIGRvZXMgbm90IGV4aXN0AAAAABBOb25FeGlzdGVudFRva2VuAAAABQAAABZBY2NvdW50IGRvZXMgbm90IGV4aXN0AAAAAAASTm9uRXhpc3RlbnRBY2NvdW50AAAAAAAGAAAALFRva2VuIGlzIHNvdWxib3VuZCBhbmQgY2Fubm90IGJlIHRyYW5zZmVycmVkAAAADlRva2VuU291bGJvdW5kAAAAAAAHAAAANVVzZXIgaGFzIGFscmVhZHkgc2VsZi1yZWdpc3RlcmVkIChoYXMgYSBNZW1iZXIgYmFkZ2UpAAAAAAAAEUFscmVhZHlSZWdpc3RlcmVkAAAAAAAACAAAABFJbnZhbGlkIHNpZ25hdHVyZQAAAAAAABBJbnZhbGlkU2lnbmF0dXJlAAAACQAAABJOb25jZSBhbHJlYWR5IHVzZWQAAAAAAAlOb25jZVVzZWQAAAAAAAAKAAAAEVNpZ25hdHVyZSBleHBpcmVkAAAAAAAAEFNpZ25hdHVyZUV4cGlyZWQAAAALAAAAEEludmFsaWQgVmFsb3IgSUQAAAAOSW52YWxpZFZhbG9ySWQAAAAAAAwAAAATTWludCBub3QgYXV0aG9yaXplZAAAAAARTWludE5vdEF1dGhvcml6ZWQAAAAAAAANAAAAEkJhZGdlIG5vdCBtaW50YWJsZQAAAAAAEEJhZGdlTm90TWludGFibGUAAAAOAAAAE1JlZW50cmFuY3kgZGV0ZWN0ZWQAAAAAElJlZW50cmFuY3lEZXRlY3RlZAAAAAAADw==",
826
+ "AAAAAgAAAB1TdG9yYWdlIGtleXMgZm9yIHRoZSBjb250cmFjdAAAAAAAAAAAAAAHRGF0YUtleQAAAAANAAAAAAAAAEpBZG1pbiBhZGRyZXNzIChrZXB0IGZvciBiYWNrd2FyZCBjb21wYXQgZHVyaW5nIG1pZ3JhdGlvbiwgd2lsbCBiZSByZW1vdmVkKQAAAAAABUFkbWluAAAAAAAAAAAAAClXaGV0aGVyIHRoZSBjb250cmFjdCBoYXMgYmVlbiBpbml0aWFsaXplZAAAAAAAAAtJbml0aWFsaXplZAAAAAAAAAAAMkZvdW5kZXIgYWRkcmVzcyAocmVjZWl2ZXMgcGVybWFuZW50IEZvdW5kZXIgYmFkZ2UpAAAAAAAHRm91bmRlcgAAAAAAAAAAGUdvdmVybm9yIGNvbnRyYWN0IGFkZHJlc3MAAAAAAAAIR292ZXJub3IAAAAAAAAAGVRyZWFzdXJ5IGNvbnRyYWN0IGFkZHJlc3MAAAAAAAAIVHJlYXN1cnkAAAAAAAAAFlRvdGFsIHN1cHBseSBvZiB0b2tlbnMAAAAAAAtUb3RhbFN1cHBseQAAAAAAAAAAOVRoZSB2YWxvcl9pZCB1c2VkIGJ5IHNlbGZfcmVnaXN0ZXIoKSBmb3IgdGhlIE1lbWJlciBiYWRnZQAAAAAAAA1NZW1iZXJWYWxvcklkAAAAAAAAAQAAABxUb2tlbiBJRCAtPiBWYWxvciBJRCBtYXBwaW5nAAAADFRva2VuVmFsb3JJZAAAAAEAAAAGAAAAAQAAAB5WYWxvciBJRCAtPiBWYWxvciBkYXRhIG1hcHBpbmcAAAAAAAlWYWxvckRhdGEAAAAAAAABAAAABgAAAAEAAAAcQWNjb3VudCAtPiBVc2VyU3RhdHMgbWFwcGluZwAAAAlVc2VyU3RhdHMAAAAAAAABAAAAEwAAAAEAAAAhVG9rZW4gSUQgLT4gT3duZXIgYWRkcmVzcyBtYXBwaW5nAAAAAAAAClRva2VuT3duZXIAAAAAAAEAAAAGAAAAAAAAAC1CYWNrZW5kIHB1YmxpYyBrZXkgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24AAAAAAAAGU2lnbmVyAAAAAAABAAAAOVVzZWQgbm9uY2VzIGZvciByZXBsYXkgcHJvdGVjdGlvbjogKEFkZHJlc3MsIHU2NCkgLT4gYm9vbAAAAAAAAAlVc2VkTm9uY2UAAAAAAAACAAAAEwAAAAY=" ]),
827
+ options
828
+ )
829
+ }
830
+
831
+ }