@aephia/atlas-kit 0.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 (279) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +124 -0
  3. package/dist/bindings.d.ts +11 -0
  4. package/dist/bindings.d.ts.map +1 -0
  5. package/dist/bindings.js +11 -0
  6. package/dist/bindings.js.map +1 -0
  7. package/dist/cargo/actions/index.d.ts +122 -0
  8. package/dist/cargo/actions/index.d.ts.map +1 -0
  9. package/dist/cargo/actions/index.js +526 -0
  10. package/dist/cargo/actions/index.js.map +1 -0
  11. package/dist/cargo/index.d.ts +77 -0
  12. package/dist/cargo/index.d.ts.map +1 -0
  13. package/dist/cargo/index.js +102 -0
  14. package/dist/cargo/index.js.map +1 -0
  15. package/dist/claim-stakes/index.d.ts +64 -0
  16. package/dist/claim-stakes/index.d.ts.map +1 -0
  17. package/dist/claim-stakes/index.js +97 -0
  18. package/dist/claim-stakes/index.js.map +1 -0
  19. package/dist/client/context.d.ts +21 -0
  20. package/dist/client/context.d.ts.map +1 -0
  21. package/dist/client/context.js +1374 -0
  22. package/dist/client/context.js.map +1 -0
  23. package/dist/client/contracts.d.ts +671 -0
  24. package/dist/client/contracts.d.ts.map +1 -0
  25. package/dist/client/contracts.js +2 -0
  26. package/dist/client/contracts.js.map +1 -0
  27. package/dist/client/deployments.d.ts +3 -0
  28. package/dist/client/deployments.d.ts.map +1 -0
  29. package/dist/client/deployments.js +2 -0
  30. package/dist/client/deployments.js.map +1 -0
  31. package/dist/client/errors.d.ts +227 -0
  32. package/dist/client/errors.d.ts.map +1 -0
  33. package/dist/client/errors.js +288 -0
  34. package/dist/client/errors.js.map +1 -0
  35. package/dist/client/index.d.ts +7 -0
  36. package/dist/client/index.d.ts.map +1 -0
  37. package/dist/client/index.js +5 -0
  38. package/dist/client/index.js.map +1 -0
  39. package/dist/client/lifecycle.d.ts +4 -0
  40. package/dist/client/lifecycle.d.ts.map +1 -0
  41. package/dist/client/lifecycle.js +10 -0
  42. package/dist/client/lifecycle.js.map +1 -0
  43. package/dist/client/provider-errors.d.ts +9 -0
  44. package/dist/client/provider-errors.d.ts.map +1 -0
  45. package/dist/client/provider-errors.js +12 -0
  46. package/dist/client/provider-errors.js.map +1 -0
  47. package/dist/client/reconciliation.d.ts +10 -0
  48. package/dist/client/reconciliation.d.ts.map +1 -0
  49. package/dist/client/reconciliation.js +9 -0
  50. package/dist/client/reconciliation.js.map +1 -0
  51. package/dist/client/refs.d.ts +23 -0
  52. package/dist/client/refs.d.ts.map +1 -0
  53. package/dist/client/refs.js +12 -0
  54. package/dist/client/refs.js.map +1 -0
  55. package/dist/combat/index.d.ts +256 -0
  56. package/dist/combat/index.d.ts.map +1 -0
  57. package/dist/combat/index.js +222 -0
  58. package/dist/combat/index.js.map +1 -0
  59. package/dist/crafting/index.d.ts +308 -0
  60. package/dist/crafting/index.d.ts.map +1 -0
  61. package/dist/crafting/index.js +400 -0
  62. package/dist/crafting/index.js.map +1 -0
  63. package/dist/factions/index.d.ts +292 -0
  64. package/dist/factions/index.d.ts.map +1 -0
  65. package/dist/factions/index.js +334 -0
  66. package/dist/factions/index.js.map +1 -0
  67. package/dist/fleets/actions/index.d.ts +200 -0
  68. package/dist/fleets/actions/index.d.ts.map +1 -0
  69. package/dist/fleets/actions/index.js +854 -0
  70. package/dist/fleets/actions/index.js.map +1 -0
  71. package/dist/fleets/index.d.ts +100 -0
  72. package/dist/fleets/index.d.ts.map +1 -0
  73. package/dist/fleets/index.js +124 -0
  74. package/dist/fleets/index.js.map +1 -0
  75. package/dist/identity/index.d.ts +225 -0
  76. package/dist/identity/index.d.ts.map +1 -0
  77. package/dist/identity/index.js +341 -0
  78. package/dist/identity/index.js.map +1 -0
  79. package/dist/index.d.ts +401 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +519 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/internal/c4/adapter.d.ts +6 -0
  84. package/dist/internal/c4/adapter.d.ts.map +1 -0
  85. package/dist/internal/c4/adapter.js +2 -0
  86. package/dist/internal/c4/adapter.js.map +1 -0
  87. package/dist/internal/c4/bindings.d.ts +4 -0
  88. package/dist/internal/c4/bindings.d.ts.map +1 -0
  89. package/dist/internal/c4/bindings.js +4 -0
  90. package/dist/internal/c4/bindings.js.map +1 -0
  91. package/dist/internal/c4/character-modifier.d.ts +5 -0
  92. package/dist/internal/c4/character-modifier.d.ts.map +1 -0
  93. package/dist/internal/c4/character-modifier.js +100 -0
  94. package/dist/internal/c4/character-modifier.js.map +1 -0
  95. package/dist/internal/c4/claim-stake.d.ts +140 -0
  96. package/dist/internal/c4/claim-stake.d.ts.map +1 -0
  97. package/dist/internal/c4/claim-stake.js +205 -0
  98. package/dist/internal/c4/claim-stake.js.map +1 -0
  99. package/dist/internal/c4/combat.d.ts +98 -0
  100. package/dist/internal/c4/combat.d.ts.map +1 -0
  101. package/dist/internal/c4/combat.js +232 -0
  102. package/dist/internal/c4/combat.js.map +1 -0
  103. package/dist/internal/c4/crafting.d.ts +170 -0
  104. package/dist/internal/c4/crafting.d.ts.map +1 -0
  105. package/dist/internal/c4/crafting.js +387 -0
  106. package/dist/internal/c4/crafting.js.map +1 -0
  107. package/dist/internal/c4/factions.d.ts +248 -0
  108. package/dist/internal/c4/factions.d.ts.map +1 -0
  109. package/dist/internal/c4/factions.js +589 -0
  110. package/dist/internal/c4/factions.js.map +1 -0
  111. package/dist/internal/c4/fleet-crew-binding.d.ts +12 -0
  112. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -0
  113. package/dist/internal/c4/fleet-crew-binding.js +51 -0
  114. package/dist/internal/c4/fleet-crew-binding.js.map +1 -0
  115. package/dist/internal/c4/fleet.d.ts +310 -0
  116. package/dist/internal/c4/fleet.d.ts.map +1 -0
  117. package/dist/internal/c4/fleet.js +393 -0
  118. package/dist/internal/c4/fleet.js.map +1 -0
  119. package/dist/internal/c4/game.d.ts +192 -0
  120. package/dist/internal/c4/game.d.ts.map +1 -0
  121. package/dist/internal/c4/game.js +396 -0
  122. package/dist/internal/c4/game.js.map +1 -0
  123. package/dist/internal/c4/identity.d.ts +193 -0
  124. package/dist/internal/c4/identity.d.ts.map +1 -0
  125. package/dist/internal/c4/identity.js +180 -0
  126. package/dist/internal/c4/identity.js.map +1 -0
  127. package/dist/internal/c4/loot-layout.d.ts +20 -0
  128. package/dist/internal/c4/loot-layout.d.ts.map +1 -0
  129. package/dist/internal/c4/loot-layout.js +29 -0
  130. package/dist/internal/c4/loot-layout.js.map +1 -0
  131. package/dist/internal/c4/loyalty.d.ts +102 -0
  132. package/dist/internal/c4/loyalty.d.ts.map +1 -0
  133. package/dist/internal/c4/loyalty.js +318 -0
  134. package/dist/internal/c4/loyalty.js.map +1 -0
  135. package/dist/internal/c4/market.d.ts +112 -0
  136. package/dist/internal/c4/market.d.ts.map +1 -0
  137. package/dist/internal/c4/market.js +247 -0
  138. package/dist/internal/c4/market.js.map +1 -0
  139. package/dist/internal/c4/pda.d.ts +6 -0
  140. package/dist/internal/c4/pda.d.ts.map +1 -0
  141. package/dist/internal/c4/pda.js +45 -0
  142. package/dist/internal/c4/pda.js.map +1 -0
  143. package/dist/internal/c4/profile-faction.d.ts +14 -0
  144. package/dist/internal/c4/profile-faction.d.ts.map +1 -0
  145. package/dist/internal/c4/profile-faction.js +69 -0
  146. package/dist/internal/c4/profile-faction.js.map +1 -0
  147. package/dist/internal/c4/rewards.d.ts +135 -0
  148. package/dist/internal/c4/rewards.d.ts.map +1 -0
  149. package/dist/internal/c4/rewards.js +305 -0
  150. package/dist/internal/c4/rewards.js.map +1 -0
  151. package/dist/internal/c4/scanning.d.ts +85 -0
  152. package/dist/internal/c4/scanning.d.ts.map +1 -0
  153. package/dist/internal/c4/scanning.js +180 -0
  154. package/dist/internal/c4/scanning.js.map +1 -0
  155. package/dist/internal/c4/starbase.d.ts +186 -0
  156. package/dist/internal/c4/starbase.d.ts.map +1 -0
  157. package/dist/internal/c4/starbase.js +259 -0
  158. package/dist/internal/c4/starbase.js.map +1 -0
  159. package/dist/internal/c4/world.d.ts +294 -0
  160. package/dist/internal/c4/world.d.ts.map +1 -0
  161. package/dist/internal/c4/world.js +417 -0
  162. package/dist/internal/c4/world.js.map +1 -0
  163. package/dist/internal/cargo.d.ts +65 -0
  164. package/dist/internal/cargo.d.ts.map +1 -0
  165. package/dist/internal/cargo.js +46 -0
  166. package/dist/internal/cargo.js.map +1 -0
  167. package/dist/internal/claim-stake.d.ts +31 -0
  168. package/dist/internal/claim-stake.d.ts.map +1 -0
  169. package/dist/internal/claim-stake.js +20 -0
  170. package/dist/internal/claim-stake.js.map +1 -0
  171. package/dist/internal/fleet.d.ts +165 -0
  172. package/dist/internal/fleet.d.ts.map +1 -0
  173. package/dist/internal/fleet.js +179 -0
  174. package/dist/internal/fleet.js.map +1 -0
  175. package/dist/internal/game-context.d.ts +4 -0
  176. package/dist/internal/game-context.d.ts.map +1 -0
  177. package/dist/internal/game-context.js +9 -0
  178. package/dist/internal/game-context.js.map +1 -0
  179. package/dist/internal/immutable-tree.d.ts +5 -0
  180. package/dist/internal/immutable-tree.d.ts.map +1 -0
  181. package/dist/internal/immutable-tree.js +47 -0
  182. package/dist/internal/immutable-tree.js.map +1 -0
  183. package/dist/internal/json.d.ts +7 -0
  184. package/dist/internal/json.d.ts.map +1 -0
  185. package/dist/internal/json.js +33 -0
  186. package/dist/internal/json.js.map +1 -0
  187. package/dist/internal/planning/authorization-adapter.d.ts +63 -0
  188. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -0
  189. package/dist/internal/planning/authorization-adapter.js +222 -0
  190. package/dist/internal/planning/authorization-adapter.js.map +1 -0
  191. package/dist/internal/read-meta.d.ts +84 -0
  192. package/dist/internal/read-meta.d.ts.map +1 -0
  193. package/dist/internal/read-meta.js +28 -0
  194. package/dist/internal/read-meta.js.map +1 -0
  195. package/dist/internal/resolved-snapshot.d.ts +3 -0
  196. package/dist/internal/resolved-snapshot.d.ts.map +1 -0
  197. package/dist/internal/resolved-snapshot.js +11 -0
  198. package/dist/internal/resolved-snapshot.js.map +1 -0
  199. package/dist/internal/zink/provider.d.ts +9 -0
  200. package/dist/internal/zink/provider.d.ts.map +1 -0
  201. package/dist/internal/zink/provider.js +213 -0
  202. package/dist/internal/zink/provider.js.map +1 -0
  203. package/dist/loyalty/index.d.ts +195 -0
  204. package/dist/loyalty/index.d.ts.map +1 -0
  205. package/dist/loyalty/index.js +289 -0
  206. package/dist/loyalty/index.js.map +1 -0
  207. package/dist/markets/index.d.ts +195 -0
  208. package/dist/markets/index.d.ts.map +1 -0
  209. package/dist/markets/index.js +232 -0
  210. package/dist/markets/index.js.map +1 -0
  211. package/dist/mining/index.d.ts +156 -0
  212. package/dist/mining/index.d.ts.map +1 -0
  213. package/dist/mining/index.js +236 -0
  214. package/dist/mining/index.js.map +1 -0
  215. package/dist/planning/assembly.d.ts +42 -0
  216. package/dist/planning/assembly.d.ts.map +1 -0
  217. package/dist/planning/assembly.js +141 -0
  218. package/dist/planning/assembly.js.map +1 -0
  219. package/dist/planning/composition.d.ts +4 -0
  220. package/dist/planning/composition.d.ts.map +1 -0
  221. package/dist/planning/composition.js +76 -0
  222. package/dist/planning/composition.js.map +1 -0
  223. package/dist/planning/execution.d.ts +93 -0
  224. package/dist/planning/execution.d.ts.map +1 -0
  225. package/dist/planning/execution.js +549 -0
  226. package/dist/planning/execution.js.map +1 -0
  227. package/dist/planning/index.d.ts +219 -0
  228. package/dist/planning/index.d.ts.map +1 -0
  229. package/dist/planning/index.js +375 -0
  230. package/dist/planning/index.js.map +1 -0
  231. package/dist/planning/plan-instances.d.ts +3 -0
  232. package/dist/planning/plan-instances.d.ts.map +1 -0
  233. package/dist/planning/plan-instances.js +8 -0
  234. package/dist/planning/plan-instances.js.map +1 -0
  235. package/dist/planning/plan-sequence-checkpoint.d.ts +154 -0
  236. package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -0
  237. package/dist/planning/plan-sequence-checkpoint.js +449 -0
  238. package/dist/planning/plan-sequence-checkpoint.js.map +1 -0
  239. package/dist/planning/plan-sequence-execution.d.ts +72 -0
  240. package/dist/planning/plan-sequence-execution.d.ts.map +1 -0
  241. package/dist/planning/plan-sequence-execution.js +410 -0
  242. package/dist/planning/plan-sequence-execution.js.map +1 -0
  243. package/dist/planning/plan-sequence.d.ts +244 -0
  244. package/dist/planning/plan-sequence.d.ts.map +1 -0
  245. package/dist/planning/plan-sequence.js +264 -0
  246. package/dist/planning/plan-sequence.js.map +1 -0
  247. package/dist/planning/simulation.d.ts +50 -0
  248. package/dist/planning/simulation.d.ts.map +1 -0
  249. package/dist/planning/simulation.js +69 -0
  250. package/dist/planning/simulation.js.map +1 -0
  251. package/dist/registry/combat.d.ts +5 -0
  252. package/dist/registry/combat.d.ts.map +1 -0
  253. package/dist/registry/combat.js +7 -0
  254. package/dist/registry/combat.js.map +1 -0
  255. package/dist/registry/index.d.ts +138 -0
  256. package/dist/registry/index.d.ts.map +1 -0
  257. package/dist/registry/index.js +397 -0
  258. package/dist/registry/index.js.map +1 -0
  259. package/dist/rewards/index.d.ts +202 -0
  260. package/dist/rewards/index.d.ts.map +1 -0
  261. package/dist/rewards/index.js +290 -0
  262. package/dist/rewards/index.js.map +1 -0
  263. package/dist/scanning/index.d.ts +185 -0
  264. package/dist/scanning/index.d.ts.map +1 -0
  265. package/dist/scanning/index.js +207 -0
  266. package/dist/scanning/index.js.map +1 -0
  267. package/dist/starbases/actions/index.d.ts +60 -0
  268. package/dist/starbases/actions/index.d.ts.map +1 -0
  269. package/dist/starbases/actions/index.js +245 -0
  270. package/dist/starbases/actions/index.js.map +1 -0
  271. package/dist/starbases/index.d.ts +165 -0
  272. package/dist/starbases/index.d.ts.map +1 -0
  273. package/dist/starbases/index.js +213 -0
  274. package/dist/starbases/index.js.map +1 -0
  275. package/dist/world/index.d.ts +180 -0
  276. package/dist/world/index.d.ts.map +1 -0
  277. package/dist/world/index.js +265 -0
  278. package/dist/world/index.js.map +1 -0
  279. package/package.json +140 -0
@@ -0,0 +1,387 @@
1
+ import { CRAFTING_HAB_INSTANCE_DISCRIMINATOR, CRAFTING_PROCESS_DISCRIMINATOR, RECIPE_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, RecipeFeeRecipient, RecipeStatus, StarbaseLevel, getCraftingHabInstanceDecoder, getCraftingProcessDecoder, getRecipeDecoder, } from '@staratlas/dev-sage';
2
+ import { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, getU16Encoder, } from '@solana/kit';
3
+ import { AccountDecodeError, InvalidAccountOwnerError, InvalidDiscriminatorError, } from '../../client/errors.js';
4
+ import { validateUnsignedU16EntityId } from './pda.js';
5
+ const FLOYDS_PER_ATLAS = 100_000_000;
6
+ const RECIPE_MINIMUM_DATA_LENGTH = 235;
7
+ const CRAFTING_HAB_MINIMUM_DATA_LENGTH = 220;
8
+ const CRAFTING_PROCESS_MINIMUM_DATA_LENGTH = 227;
9
+ const RECIPE_ACCOUNT_DISCRIMINATOR = Object.freeze(Array.from(RECIPE_DISCRIMINATOR));
10
+ const HAB_ACCOUNT_DISCRIMINATOR = Object.freeze(Array.from(CRAFTING_HAB_INSTANCE_DISCRIMINATOR));
11
+ const PROCESS_ACCOUNT_DISCRIMINATOR = Object.freeze(Array.from(CRAFTING_PROCESS_DISCRIMINATOR));
12
+ export const CRAFTING_HAB_FILTER_OFFSETS = Object.freeze({
13
+ discriminator: 0,
14
+ game: 41,
15
+ owner: 9,
16
+ system: 73,
17
+ });
18
+ export const CRAFTING_PROCESS_FILTER_OFFSETS = Object.freeze({
19
+ craftingHab: 145,
20
+ discriminator: 0,
21
+ profile: 41,
22
+ recipe: 9,
23
+ starbasePlayer: 105,
24
+ system: 73,
25
+ });
26
+ export const CRAFTING_RELATIONSHIPS = Object.freeze([
27
+ {
28
+ from: 'game + recipeId',
29
+ kind: 'derived',
30
+ mechanism: 'Recipe PDA seeds: literal, Game, and recipe id',
31
+ to: 'recipe',
32
+ },
33
+ {
34
+ from: 'profile | starSystem',
35
+ kind: 'discovered',
36
+ mechanism: 'targeted CraftingHabInstance stored-field filters',
37
+ to: 'craftingHabInstance[]',
38
+ },
39
+ {
40
+ from: 'profile | starbasePlayer',
41
+ kind: 'discovered',
42
+ mechanism: 'targeted CraftingProcess stored-field filters',
43
+ to: 'craftingProcess[]',
44
+ },
45
+ {
46
+ from: 'craftingProcess',
47
+ kind: 'stored',
48
+ mechanism: 'Recipe, Profile, System, StarbasePlayer, and Crafting Hab fields',
49
+ to: 'recipe | profile | starSystem | starbasePlayer | craftingHabInstance',
50
+ },
51
+ {
52
+ from: 'craftingHabInstance | craftingProcess',
53
+ kind: 'nested',
54
+ mechanism: 'ProductionCore and committed-input CargoPod values',
55
+ to: 'cargoPod',
56
+ },
57
+ {
58
+ from: 'craftingProcess',
59
+ kind: 'instruction-only',
60
+ mechanism: 'currency cache and output CargoPod co-accounts are not stored',
61
+ to: 'currencyCache | outputCargoPod',
62
+ },
63
+ ]);
64
+ function fixed(value) {
65
+ return { raw: value.raw, value: value.toNumber() };
66
+ }
67
+ function modifiers(value) {
68
+ return {
69
+ crewCount: fixed(value.crewCountModifier),
70
+ efficiency: fixed(value.craftingEfficiencyModifier),
71
+ fee: fixed(value.craftingFeeModifier),
72
+ speed: fixed(value.craftingSpeedModifier),
73
+ };
74
+ }
75
+ function bounds(value) {
76
+ return { maximum: fixed(value.max), minimum: fixed(value.min) };
77
+ }
78
+ function amounts(values) {
79
+ return [...values].map(([cargoId, quantityRaw]) => ({
80
+ cargoId,
81
+ quantityRaw,
82
+ }));
83
+ }
84
+ function cargoPod(value) {
85
+ return {
86
+ amounts: amounts(value.amounts),
87
+ sequenceId: value.seqId,
88
+ storageCostRaw: value.storageCost,
89
+ };
90
+ }
91
+ function recipeStatus(value) {
92
+ switch (value) {
93
+ case RecipeStatus.Active:
94
+ return 'active';
95
+ case RecipeStatus.Deactivated:
96
+ return 'deactivated';
97
+ /* v8 ignore next -- the generated enum decoder rejects unknown values. */
98
+ default:
99
+ throw new RangeError(`Unsupported RecipeStatus ${String(value)}.`);
100
+ }
101
+ }
102
+ function feeRecipient(value) {
103
+ switch (value) {
104
+ case RecipeFeeRecipient.Atlas:
105
+ return 'atlas';
106
+ case RecipeFeeRecipient.Daoatlas:
107
+ return 'dao-atlas';
108
+ /* v8 ignore next -- the generated enum decoder rejects unknown values. */
109
+ default:
110
+ throw new RangeError(`Unsupported RecipeFeeRecipient ${String(value)}.`);
111
+ }
112
+ }
113
+ function starbaseLevel(value) {
114
+ switch (value) {
115
+ case StarbaseLevel.Level0:
116
+ return 'level-0';
117
+ case StarbaseLevel.Level1:
118
+ return 'level-1';
119
+ case StarbaseLevel.Level2:
120
+ return 'level-2';
121
+ case StarbaseLevel.Level3:
122
+ return 'level-3';
123
+ case StarbaseLevel.Level4:
124
+ return 'level-4';
125
+ case StarbaseLevel.Level5:
126
+ return 'level-5';
127
+ case StarbaseLevel.Css:
128
+ return 'css';
129
+ /* v8 ignore next -- the generated enum decoder rejects unknown values. */
130
+ default:
131
+ throw new RangeError(`Unsupported StarbaseLevel ${String(value)}.`);
132
+ }
133
+ }
134
+ function buildingQuantities(values) {
135
+ return [...values].map(([buildingId, quantity]) => ({
136
+ buildingId,
137
+ quantity,
138
+ }));
139
+ }
140
+ function habState(value) {
141
+ switch (value.__kind) {
142
+ case 'Active':
143
+ return { kind: 'active' };
144
+ case 'Design':
145
+ return {
146
+ buildings: buildingQuantities(value.fields[0].buildings),
147
+ kind: 'design',
148
+ sequenceId: value.fields[0].sequenceId,
149
+ };
150
+ case 'Deactivated':
151
+ return {
152
+ deactivatedAtUnixSeconds: value.fields[0].deactivationTime,
153
+ kind: 'deactivated',
154
+ };
155
+ /* v8 ignore next -- assigning a generated union variant fails compilation. */
156
+ default: {
157
+ const exhaustive = value;
158
+ throw new RangeError(`Unsupported StructureInstanceState ${String(exhaustive)}.`);
159
+ }
160
+ }
161
+ }
162
+ function translateRecipe(value) {
163
+ return {
164
+ craftingDurationSeconds: value.craftingDuration,
165
+ fee: {
166
+ amountAtlas: Number(value.feeAmount) / FLOYDS_PER_ATLAS,
167
+ amountRaw: value.feeAmount,
168
+ recipient: feeRecipient(value.feeRecipient),
169
+ },
170
+ game: value.gameId,
171
+ habRequired: value.habRequired,
172
+ id: value.recipeId,
173
+ inputs: amounts(value.inputs),
174
+ minimumDurationSeconds: value.minDuration,
175
+ minimumStarbaseLevel: starbaseLevel(value.minStarbaseLevel),
176
+ modifierBounds: {
177
+ crewCount: bounds(value.craftingCrewCountMinmax),
178
+ efficiency: bounds(value.craftingEfficiencyMinmax),
179
+ fee: bounds(value.craftingFeeMinmax),
180
+ speed: bounds(value.craftingSpeedMinmax),
181
+ },
182
+ name: value.name.replace(/\0/gu, '').trim(),
183
+ outputs: amounts(value.outputs),
184
+ researchRequirementIds: [...value.researchRequirements],
185
+ status: recipeStatus(value.status),
186
+ usageCountRaw: value.usageCount,
187
+ usageLimitRaw: value.usageLimit,
188
+ version: value.version,
189
+ xpValueRaw: value.value,
190
+ };
191
+ }
192
+ function translateHab(value) {
193
+ return {
194
+ buildingDefinitionSequenceId: value.buildingDefinitionSeqId,
195
+ buildings: buildingQuantities(value.habBuildings),
196
+ constructionProgressAtUnixSeconds: value.constructionProgressTimestamp,
197
+ constructionRemainingSeconds: value.constructionRemaining,
198
+ definitionId: value.craftingHabDefinitionId,
199
+ definitionSequenceId: value.craftingHabDefinitionSeqId,
200
+ game: value.gameId,
201
+ jobCapacity: value.craftingJobConcurrency,
202
+ jobsRunning: value.craftingJobs,
203
+ lastRentAtUnixSeconds: value.lastRentClockTimestamp,
204
+ modifiers: modifiers(value.craftingModifiers),
205
+ neededCrew: value.neededCrew,
206
+ ownerProfile: value.owner,
207
+ production: {
208
+ inventory: cargoPod(value.productionCore.cargoPod),
209
+ lastTickAtUnixSeconds: value.productionCore.lastTickTimestamp,
210
+ netRates: [...value.productionCore.netResourceProduction].map(([cargoId, rate]) => ({
211
+ cargoId,
212
+ unitsPerSecond: rate.toNumber(),
213
+ unitsPerSecondRaw: rate.raw,
214
+ })),
215
+ resourceCapacityRaw: value.productionCore.resourceStorage,
216
+ },
217
+ rentBalanceRaw: value.rentBalance,
218
+ state: habState(value.state),
219
+ system: value.system,
220
+ systemSequenceId: value.systemSeqId,
221
+ unlockedRecipeIds: [...value.recipesUnlocked],
222
+ version: value.version,
223
+ };
224
+ }
225
+ function translateProcess(value) {
226
+ return {
227
+ craftingHab: value.craftingHab,
228
+ endsAtUnixSeconds: value.endTime,
229
+ feeEscrowRaw: value.feeEscrow,
230
+ inputs: cargoPod(value.inputs),
231
+ numCrew: value.numCrew,
232
+ profile: value.profile,
233
+ quantityRaw: value.quantity,
234
+ recipe: value.recipe,
235
+ starbasePlayer: value.starbasePlayer,
236
+ starbaseSequenceId: value.starbaseSeqId,
237
+ startsAtUnixSeconds: value.startTime,
238
+ system: value.system,
239
+ version: value.version,
240
+ };
241
+ }
242
+ function validate(account, type, discriminator, minimumDataLength) {
243
+ if (account.owner !== SAGE_PROGRAM_ADDRESS) {
244
+ throw new InvalidAccountOwnerError(type, account.address, SAGE_PROGRAM_ADDRESS, account.owner);
245
+ }
246
+ if (account.data.length < discriminator.length ||
247
+ !discriminator.every((byte, index) => account.data[index] === byte)) {
248
+ throw new InvalidDiscriminatorError(type, account.address);
249
+ }
250
+ if (account.data.length < minimumDataLength) {
251
+ throw new AccountDecodeError(type, account.address, new RangeError(`Expected at least ${minimumDataLength} ${type} account bytes, received ${account.data.length}.`));
252
+ }
253
+ }
254
+ function decodeExactly(account, type, read) {
255
+ try {
256
+ const [decoded, offset] = read(account.data, 0);
257
+ if (offset !== account.data.length) {
258
+ throw new RangeError(`Decoded ${offset} of ${account.data.length} ${type} account bytes; trailing bytes are not accepted.`);
259
+ }
260
+ return decoded;
261
+ }
262
+ catch (cause) {
263
+ throw new AccountDecodeError(type, account.address, cause);
264
+ }
265
+ }
266
+ function recipeValidation(account) {
267
+ validate(account, 'recipe', RECIPE_ACCOUNT_DISCRIMINATOR, RECIPE_MINIMUM_DATA_LENGTH);
268
+ }
269
+ function habValidation(account) {
270
+ validate(account, 'craftingHabInstance', HAB_ACCOUNT_DISCRIMINATOR, CRAFTING_HAB_MINIMUM_DATA_LENGTH);
271
+ }
272
+ function processValidation(account) {
273
+ validate(account, 'craftingProcess', PROCESS_ACCOUNT_DISCRIMINATOR, CRAFTING_PROCESS_MINIMUM_DATA_LENGTH);
274
+ }
275
+ export const recipeAccountDefinition = Object.freeze({
276
+ decode(account) {
277
+ recipeValidation(account);
278
+ return translateRecipe(decodeExactly(account, 'recipe', (bytes, offset) => getRecipeDecoder().read(bytes, offset)));
279
+ },
280
+ discriminator: RECIPE_ACCOUNT_DISCRIMINATOR,
281
+ minimumDataLength: RECIPE_MINIMUM_DATA_LENGTH,
282
+ programAddress: SAGE_PROGRAM_ADDRESS,
283
+ type: 'recipe',
284
+ validate: recipeValidation,
285
+ });
286
+ export const craftingHabAccountDefinition = Object.freeze({
287
+ decode(account) {
288
+ habValidation(account);
289
+ return translateHab(decodeExactly(account, 'craftingHabInstance', (bytes, offset) => getCraftingHabInstanceDecoder().read(bytes, offset)));
290
+ },
291
+ discriminator: HAB_ACCOUNT_DISCRIMINATOR,
292
+ minimumDataLength: CRAFTING_HAB_MINIMUM_DATA_LENGTH,
293
+ programAddress: SAGE_PROGRAM_ADDRESS,
294
+ type: 'craftingHabInstance',
295
+ validate: habValidation,
296
+ });
297
+ export const craftingProcessAccountDefinition = Object.freeze({
298
+ decode(account) {
299
+ processValidation(account);
300
+ return translateProcess(decodeExactly(account, 'craftingProcess', (bytes, offset) => getCraftingProcessDecoder().read(bytes, offset)));
301
+ },
302
+ discriminator: PROCESS_ACCOUNT_DISCRIMINATOR,
303
+ minimumDataLength: CRAFTING_PROCESS_MINIMUM_DATA_LENGTH,
304
+ programAddress: SAGE_PROGRAM_ADDRESS,
305
+ type: 'craftingProcess',
306
+ validate: processValidation,
307
+ });
308
+ export async function deriveRecipeAddress(game, recipeId) {
309
+ validateUnsignedU16EntityId('recipe', recipeId);
310
+ const [address] = await getProgramDerivedAddress({
311
+ programAddress: SAGE_PROGRAM_ADDRESS,
312
+ seeds: [
313
+ getBytesEncoder().encode(new Uint8Array([82, 101, 99, 105, 112, 101])),
314
+ getAddressEncoder().encode(game),
315
+ getU16Encoder().encode(recipeId),
316
+ ],
317
+ });
318
+ return address;
319
+ }
320
+ function filters(discriminator, entries) {
321
+ return Object.freeze([
322
+ { bytes: new Uint8Array(discriminator), offset: 0 },
323
+ ...entries.map(({ address, offset }) => ({
324
+ bytes: new Uint8Array(getAddressEncoder().encode(address)),
325
+ offset,
326
+ })),
327
+ ]);
328
+ }
329
+ export function buildCraftingHabOwnerDiscoveryFilters(game, owner, system) {
330
+ return filters(CRAFTING_HAB_INSTANCE_DISCRIMINATOR, [
331
+ { address: game, offset: CRAFTING_HAB_FILTER_OFFSETS.game },
332
+ { address: owner, offset: CRAFTING_HAB_FILTER_OFFSETS.owner },
333
+ ...(system === undefined
334
+ ? []
335
+ : [{ address: system, offset: CRAFTING_HAB_FILTER_OFFSETS.system }]),
336
+ ]);
337
+ }
338
+ export function buildCraftingProcessProfileDiscoveryFilters(profile) {
339
+ return filters(CRAFTING_PROCESS_DISCRIMINATOR, [
340
+ { address: profile, offset: CRAFTING_PROCESS_FILTER_OFFSETS.profile },
341
+ ]);
342
+ }
343
+ export function buildCraftingProcessStarbaseDiscoveryFilters(starbasePlayer) {
344
+ return filters(CRAFTING_PROCESS_DISCRIMINATOR, [
345
+ {
346
+ address: starbasePlayer,
347
+ offset: CRAFTING_PROCESS_FILTER_OFFSETS.starbasePlayer,
348
+ },
349
+ ]);
350
+ }
351
+ export async function discoverCraftingHabsByOwner(context, game, owner, system, options = {}) {
352
+ const values = await context.data.discover(craftingHabAccountDefinition, {
353
+ ...options,
354
+ filters: buildCraftingHabOwnerDiscoveryFilters(game, owner, system),
355
+ strategy: 'targeted-program-accounts',
356
+ });
357
+ for (const value of values) {
358
+ if (value.data.game !== game ||
359
+ value.data.ownerProfile !== owner ||
360
+ (system !== undefined && value.data.system !== system)) {
361
+ throw new AccountDecodeError('craftingHabInstance', value.address, new RangeError('The decoded CraftingHabInstance contradicted its discovery filters.'), 'A discovered Crafting Hab did not match the requested Game, Profile, or Star System. Verify the provider and pinned CraftingHabInstance offsets before retrying.');
362
+ }
363
+ }
364
+ return values;
365
+ }
366
+ async function discoverProcesses(context, relation, address, options = {}) {
367
+ const values = await context.data.discover(craftingProcessAccountDefinition, {
368
+ ...options,
369
+ filters: relation === 'profile'
370
+ ? buildCraftingProcessProfileDiscoveryFilters(address)
371
+ : buildCraftingProcessStarbaseDiscoveryFilters(address),
372
+ strategy: 'targeted-program-accounts',
373
+ });
374
+ for (const value of values) {
375
+ if (value.data[relation] !== address) {
376
+ throw new AccountDecodeError('craftingProcess', value.address, new RangeError('The decoded CraftingProcess contradicted its discovery filter.'), `A discovered Crafting Process did not match the requested ${relation}. Verify the provider and pinned CraftingProcess offsets before retrying.`);
377
+ }
378
+ }
379
+ return values;
380
+ }
381
+ export function discoverCraftingProcessesByProfile(context, profile, options) {
382
+ return discoverProcesses(context, 'profile', profile, options);
383
+ }
384
+ export function discoverCraftingProcessesByStarbasePlayer(context, player, options) {
385
+ return discoverProcesses(context, 'starbasePlayer', player, options);
386
+ }
387
+ //# sourceMappingURL=crafting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crafting.js","sourceRoot":"","sources":["../../../src/internal/c4/crafting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,248 @@
1
+ import type { Address, DiscoveryRequest, ProgramAccountFilter, SageContext, SnapshotEnvelope } from '../../client/contracts.js';
2
+ import type { C4AccountAdapter } from './adapter.js';
3
+ import { deriveFactionAccountAddress } from './pda.js';
4
+ /** Stable FactionOwnership offsets verified against the pinned generated codec. */
5
+ export declare const FACTION_OWNERSHIP_FILTER_OFFSETS: Readonly<{
6
+ assetKind: 42;
7
+ discriminator: 0;
8
+ game: 10;
9
+ }>;
10
+ /** Audited read and deferred-action relationships for faction and territory state. */
11
+ export declare const FACTION_RELATIONSHIPS: readonly [{
12
+ readonly from: "game + faction/profile/system/asset keys";
13
+ readonly kind: "derived";
14
+ readonly mechanism: "generated faction and territory PDA seeds";
15
+ readonly to: "faction state";
16
+ }, {
17
+ readonly from: "faction state";
18
+ readonly kind: "stored";
19
+ readonly mechanism: "controller, operator, profile, system, asset, and ownership fields";
20
+ readonly to: "profiles | systems | fleets | regions";
21
+ }, {
22
+ readonly from: "trackers | treasury";
23
+ readonly kind: "nested";
24
+ readonly mechanism: "relation, reserve, King-system, and Region maps";
25
+ readonly to: "diplomacy | economics | territory summaries";
26
+ }, {
27
+ readonly from: "factions";
28
+ readonly kind: "instruction-only";
29
+ readonly mechanism: "administration, diplomacy, capture, yield, and NPC actions are deferred";
30
+ readonly to: "actions";
31
+ }, {
32
+ readonly from: "game + asset kind";
33
+ readonly kind: "discovered";
34
+ readonly mechanism: "FactionOwnership discriminator, Game, and asset-kind filters";
35
+ readonly to: "factionOwnership[]";
36
+ }];
37
+ export type FactionAlignment = 'unaligned' | 'mud' | 'oni' | 'ustur';
38
+ export type FactionLifecycleStatus = 'draft' | 'active' | 'retired';
39
+ export type FactionRelationship = 'neutral' | 'allied' | 'hostile' | 'ceasefire';
40
+ export type FactionOwnershipKind = 'starbase' | 'fleet' | 'region';
41
+ export interface FactionAccountData {
42
+ readonly version: number;
43
+ readonly bump: number;
44
+ readonly game: Address;
45
+ readonly factionId: number;
46
+ readonly alignment: FactionAlignment;
47
+ readonly capabilityFlags: number;
48
+ readonly status: FactionLifecycleStatus;
49
+ readonly authorityBump: number;
50
+ readonly controller: Address | null;
51
+ readonly maxAllies: number;
52
+ readonly treasuryCount: number;
53
+ readonly homeRegionId: number | null;
54
+ readonly nameHash: readonly number[] | null;
55
+ readonly contentUriHash: readonly number[] | null;
56
+ readonly createdAtUnixSeconds: bigint;
57
+ readonly operatorProfile: Address | null;
58
+ readonly lastCaptureAtUnixSeconds: bigint | null;
59
+ readonly npcFleetCount: number;
60
+ readonly maxNpcFleets: number;
61
+ }
62
+ export interface FactionConfigAccountData {
63
+ readonly version: number;
64
+ readonly bump: number;
65
+ readonly decayPerDay: number;
66
+ readonly dailyCap: number;
67
+ readonly standingBps: number;
68
+ readonly diminishingReturnsHalfLifeRaw: bigint;
69
+ readonly diminishingReturnsScaleRaw: bigint;
70
+ readonly standingEpochCap: number;
71
+ readonly standingEpochLengthSeconds: bigint;
72
+ readonly dockMinimumBand: number;
73
+ readonly territoryYieldPerTick: number;
74
+ readonly territoryYieldTickSeconds: number;
75
+ }
76
+ export interface FactionEconomicsConfigAccountData {
77
+ readonly version: number;
78
+ readonly bump: number;
79
+ readonly game: Address;
80
+ readonly npcMintCostAtlasRaw: bigint;
81
+ readonly npcMintCostAtlas: number;
82
+ readonly npcRespawnCostAtlasRaw: bigint;
83
+ readonly npcRespawnCostAtlas: number;
84
+ /** Exact dynamic-capture cost in ATLAS Floyds. */
85
+ readonly captureCostAtlasRaw: bigint;
86
+ /** Dynamic-capture cost in ATLAS. */
87
+ readonly captureCostAtlas: number;
88
+ readonly factionCaptureCooldownSeconds: bigint;
89
+ }
90
+ export interface FactionRelationTrackerAccountData {
91
+ readonly version: number;
92
+ readonly bump: number;
93
+ readonly game: Address;
94
+ readonly combatGatingEnabled: boolean;
95
+ readonly territoryAccessEnabled: boolean;
96
+ readonly crossFactionEconomicsEnabled: boolean;
97
+ readonly alliedTollBps: number;
98
+ readonly neutralTollBps: number;
99
+ readonly ceasefireMinimumDurationSeconds: bigint;
100
+ readonly reCeasefireCooldownSeconds: bigint;
101
+ readonly dynamicCaptureEnabled: boolean;
102
+ readonly contestedWindowSeconds: number;
103
+ readonly nemesisActive: boolean;
104
+ readonly relations: readonly {
105
+ readonly factions: readonly [number, number];
106
+ readonly relationship: FactionRelationship;
107
+ readonly ceasefireUntilUnixSeconds: bigint | null;
108
+ }[];
109
+ }
110
+ export interface FactionStandingAccountData {
111
+ readonly version: number;
112
+ readonly bump: number;
113
+ readonly game: Address;
114
+ readonly profile: Address;
115
+ readonly factionId: number;
116
+ readonly storylineActive: boolean;
117
+ readonly bandFloor: number;
118
+ readonly standing: number;
119
+ readonly lifetimeEarnedRaw: bigint;
120
+ readonly accrualToday: number;
121
+ readonly dayAnchorUnixSeconds: bigint;
122
+ readonly lastUpdateUnixSeconds: bigint;
123
+ readonly bandFloorReachedAtUnixSeconds: bigint;
124
+ readonly storylineExpiresAtUnixSeconds: bigint | null;
125
+ }
126
+ export interface FactionTreasuryAccountData {
127
+ readonly version: number;
128
+ readonly bump: number;
129
+ readonly game: Address;
130
+ readonly factionId: number;
131
+ readonly atlasBalanceRaw: bigint;
132
+ readonly atlasBalance: number;
133
+ readonly epochStartedAtUnixSeconds: bigint;
134
+ readonly epochLengthSeconds: bigint;
135
+ readonly atlasOutThisEpochRaw: bigint;
136
+ readonly atlasOutThisEpoch: number;
137
+ readonly atlasOutCapPerEpochRaw: bigint;
138
+ readonly atlasOutCapPerEpoch: number;
139
+ readonly reserves: readonly {
140
+ readonly cargoId: number;
141
+ readonly quantityRaw: bigint;
142
+ readonly floorRaw: bigint;
143
+ }[];
144
+ }
145
+ export type FactionOwnershipAssetData = {
146
+ readonly kind: 'starbase';
147
+ readonly system: Address;
148
+ } | {
149
+ readonly kind: 'fleet';
150
+ readonly fleet: Address;
151
+ } | {
152
+ readonly kind: 'region';
153
+ readonly key: Address;
154
+ readonly regionId: number;
155
+ };
156
+ export interface FactionOwnershipAccountData {
157
+ readonly version: number;
158
+ readonly bump: number;
159
+ readonly game: Address;
160
+ readonly asset: FactionOwnershipAssetData;
161
+ readonly controllingFactionId: number | null;
162
+ readonly previousControllerFactionId: number | null;
163
+ readonly capturedAtUnixSeconds: bigint;
164
+ readonly contestedUntilUnixSeconds: bigint | null;
165
+ readonly capturedSystemSequenceId: bigint | null;
166
+ readonly lastYieldTickUnixSeconds: bigint | null;
167
+ }
168
+ export interface KingSystemTrackerAccountData {
169
+ readonly version: number;
170
+ readonly bump: number;
171
+ readonly game: Address;
172
+ readonly configuredAtUnixSeconds: bigint;
173
+ readonly majorFactionCounts: Readonly<{
174
+ mud: number;
175
+ oni: number;
176
+ ustur: number;
177
+ }>;
178
+ readonly systems: readonly {
179
+ readonly systemId: number;
180
+ readonly factionId: number | null;
181
+ }[];
182
+ }
183
+ export interface FactionFixedValueData {
184
+ readonly raw: bigint;
185
+ readonly value: number;
186
+ }
187
+ export interface FactionRegionSystemData {
188
+ readonly systemId: number;
189
+ readonly faction: FactionAlignment;
190
+ }
191
+ export interface FactionRegionData {
192
+ readonly id: number;
193
+ readonly name: string;
194
+ readonly owner: FactionAlignment;
195
+ readonly safety: 'safe' | 'border';
196
+ readonly risk: {
197
+ readonly kind: 'low';
198
+ readonly faction: FactionAlignment;
199
+ } | {
200
+ readonly kind: 'medium' | 'high';
201
+ };
202
+ readonly xpMultiplier: FactionFixedValueData;
203
+ readonly boundingBox: {
204
+ readonly minX: number;
205
+ readonly maxX: number;
206
+ readonly minY: number;
207
+ readonly maxY: number;
208
+ };
209
+ readonly border: readonly {
210
+ readonly x: number;
211
+ readonly y: number;
212
+ }[];
213
+ readonly neighborsByEdge: readonly (number | null)[];
214
+ readonly connections: readonly number[];
215
+ readonly systems: readonly FactionRegionSystemData[];
216
+ readonly coreSystems: readonly FactionRegionSystemData[];
217
+ readonly scanningResearchRequirementTagIds: readonly number[];
218
+ readonly miningResearchRequirementTagIds: readonly number[];
219
+ }
220
+ export interface RegionTrackerAccountData {
221
+ readonly version: number;
222
+ readonly game: Address;
223
+ readonly gridExponent: number;
224
+ readonly regions: readonly FactionRegionData[];
225
+ }
226
+ export declare const factionAccountDefinition: C4AccountAdapter<FactionAccountData>;
227
+ export declare const factionConfigAccountDefinition: C4AccountAdapter<FactionConfigAccountData>;
228
+ export declare const factionEconomicsConfigAccountDefinition: C4AccountAdapter<FactionEconomicsConfigAccountData>;
229
+ export declare const factionRelationTrackerAccountDefinition: C4AccountAdapter<FactionRelationTrackerAccountData>;
230
+ export declare const factionStandingAccountDefinition: C4AccountAdapter<FactionStandingAccountData>;
231
+ export declare const factionTreasuryAccountDefinition: C4AccountAdapter<FactionTreasuryAccountData>;
232
+ export declare const factionOwnershipAccountDefinition: C4AccountAdapter<FactionOwnershipAccountData>;
233
+ export declare const kingSystemTrackerAccountDefinition: C4AccountAdapter<KingSystemTrackerAccountData>;
234
+ export declare const regionTrackerAccountDefinition: C4AccountAdapter<RegionTrackerAccountData>;
235
+ export { deriveFactionAccountAddress };
236
+ export declare function deriveFactionConfigAddress(game: Address): Promise<Address>;
237
+ export declare function deriveFactionEconomicsConfigAddress(game: Address): Promise<Address>;
238
+ export declare function deriveFactionRelationTrackerAddress(game: Address): Promise<Address>;
239
+ export declare function deriveFactionStandingAddress(game: Address, profile: Address, factionId: number): Promise<Address>;
240
+ export declare function deriveFactionTreasuryAddress(game: Address, factionId: number): Promise<Address>;
241
+ export declare function deriveFactionOwnershipAddress(game: Address, kind: 'region', regionId: number): Promise<Address>;
242
+ export declare function deriveFactionOwnershipAddress(game: Address, kind: Exclude<FactionOwnershipKind, 'region'>, assetKey: Address): Promise<Address>;
243
+ export declare function deriveKingSystemTrackerAddress(game: Address): Promise<Address>;
244
+ export declare function deriveRegionTrackerAddress(game: Address): Promise<Address>;
245
+ export declare function deriveFactionStarSystemAddress(game: Address, systemId: number): Promise<Address>;
246
+ export declare function buildFactionOwnershipDiscoveryFilters(game: Address, kind: FactionOwnershipKind): readonly ProgramAccountFilter[];
247
+ export declare function discoverFactionOwnershipAccounts(context: SageContext, kind: FactionOwnershipKind, options?: Omit<DiscoveryRequest, 'filters' | 'strategy'>): Promise<readonly SnapshotEnvelope<FactionOwnershipAccountData>[]>;
248
+ //# sourceMappingURL=factions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factions.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/factions.ts"],"names":[],"mappings":"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"}