@wuwei-labs/srsly 3.0.0-beta.21 → 3.0.0-beta.22

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 (395) hide show
  1. package/dist/cjs/accounts/index.js +23 -0
  2. package/dist/cjs/accounts/index.js.map +1 -0
  3. package/dist/cjs/demos.js +157 -57
  4. package/dist/cjs/demos.js.map +1 -1
  5. package/dist/cjs/generated/codama/accounts/borrowerState.js +8 -2
  6. package/dist/cjs/generated/codama/accounts/borrowerState.js.map +1 -1
  7. package/dist/cjs/generated/codama/accounts/configState.js +0 -2
  8. package/dist/cjs/generated/codama/accounts/configState.js.map +1 -1
  9. package/dist/cjs/generated/codama/accounts/contractState.js +23 -30
  10. package/dist/cjs/generated/codama/accounts/contractState.js.map +1 -1
  11. package/dist/cjs/generated/codama/accounts/index.js +0 -1
  12. package/dist/cjs/generated/codama/accounts/index.js.map +1 -1
  13. package/dist/cjs/generated/codama/accounts/rentalState.js +20 -14
  14. package/dist/cjs/generated/codama/accounts/rentalState.js.map +1 -1
  15. package/dist/cjs/generated/codama/errors/srsly.js +43 -43
  16. package/dist/cjs/generated/codama/errors/srsly.js.map +1 -1
  17. package/dist/cjs/generated/codama/instructions/acceptRental.js +60 -47
  18. package/dist/cjs/generated/codama/instructions/acceptRental.js.map +1 -1
  19. package/dist/cjs/generated/codama/instructions/activateRental.js +144 -22
  20. package/dist/cjs/generated/codama/instructions/activateRental.js.map +1 -1
  21. package/dist/cjs/generated/codama/instructions/cancelRental.js +13 -42
  22. package/dist/cjs/generated/codama/instructions/cancelRental.js.map +1 -1
  23. package/dist/cjs/generated/codama/instructions/claimBorrower.js.map +1 -1
  24. package/dist/cjs/generated/codama/instructions/claimContract.js +197 -0
  25. package/dist/cjs/generated/codama/instructions/claimContract.js.map +1 -0
  26. package/dist/cjs/generated/codama/instructions/closeContract.js +130 -14
  27. package/dist/cjs/generated/codama/instructions/closeContract.js.map +1 -1
  28. package/dist/cjs/generated/codama/instructions/closeContractThread.js +154 -0
  29. package/dist/cjs/generated/codama/instructions/closeContractThread.js.map +1 -0
  30. package/dist/cjs/generated/codama/instructions/closeRental.js +10 -121
  31. package/dist/cjs/generated/codama/instructions/closeRental.js.map +1 -1
  32. package/dist/cjs/generated/codama/instructions/createBorrower.js +211 -0
  33. package/dist/cjs/generated/codama/instructions/createBorrower.js.map +1 -0
  34. package/dist/cjs/generated/codama/instructions/createContract.js +40 -24
  35. package/dist/cjs/generated/codama/instructions/createContract.js.map +1 -1
  36. package/dist/cjs/generated/codama/instructions/createContractThread.js +299 -0
  37. package/dist/cjs/generated/codama/instructions/createContractThread.js.map +1 -0
  38. package/dist/cjs/generated/codama/instructions/index.js +6 -5
  39. package/dist/cjs/generated/codama/instructions/index.js.map +1 -1
  40. package/dist/cjs/generated/codama/instructions/payContract.js +237 -0
  41. package/dist/cjs/generated/codama/instructions/payContract.js.map +1 -0
  42. package/dist/cjs/generated/codama/instructions/reserveRental.js +81 -60
  43. package/dist/cjs/generated/codama/instructions/reserveRental.js.map +1 -1
  44. package/dist/cjs/generated/codama/instructions/updateBorrower.js +7 -43
  45. package/dist/cjs/generated/codama/instructions/updateBorrower.js.map +1 -1
  46. package/dist/cjs/generated/codama/instructions/updateConfig.js +0 -2
  47. package/dist/cjs/generated/codama/instructions/updateConfig.js.map +1 -1
  48. package/dist/cjs/generated/codama/instructions/updateContract.js +0 -10
  49. package/dist/cjs/generated/codama/instructions/updateContract.js.map +1 -1
  50. package/dist/cjs/generated/codama/instructions/updateContractThread.js +177 -0
  51. package/dist/cjs/generated/codama/instructions/updateContractThread.js.map +1 -0
  52. package/dist/cjs/generated/codama/programs/srsly.js +36 -36
  53. package/dist/cjs/generated/codama/programs/srsly.js.map +1 -1
  54. package/dist/cjs/generated/codama/types/bidType.js +30 -0
  55. package/dist/cjs/generated/codama/types/bidType.js.map +1 -0
  56. package/dist/cjs/generated/codama/types/contractThreadClosed.js +29 -0
  57. package/dist/cjs/generated/codama/types/contractThreadClosed.js.map +1 -0
  58. package/dist/cjs/generated/codama/types/contractThreadCreated.js +29 -0
  59. package/dist/cjs/generated/codama/types/contractThreadCreated.js.map +1 -0
  60. package/dist/cjs/generated/codama/types/contractThreadUpdated.js +39 -0
  61. package/dist/cjs/generated/codama/types/contractThreadUpdated.js.map +1 -0
  62. package/dist/cjs/generated/codama/types/index.js +6 -2
  63. package/dist/cjs/generated/codama/types/index.js.map +1 -1
  64. package/dist/cjs/generated/codama/types/queuedRentalRefunded.js +33 -0
  65. package/dist/cjs/generated/codama/types/queuedRentalRefunded.js.map +1 -0
  66. package/dist/cjs/generated/codama/types/rentalActivated.js +2 -0
  67. package/dist/cjs/generated/codama/types/rentalActivated.js.map +1 -1
  68. package/dist/cjs/generated/codama/types/rentalExpiredInline.js +31 -0
  69. package/dist/cjs/generated/codama/types/rentalExpiredInline.js.map +1 -0
  70. package/dist/cjs/generated/codama/types/rentalStatus.js +4 -3
  71. package/dist/cjs/generated/codama/types/rentalStatus.js.map +1 -1
  72. package/dist/cjs/generated/codama/types/reservationCreated.js +9 -4
  73. package/dist/cjs/generated/codama/types/reservationCreated.js.map +1 -1
  74. package/dist/cjs/index.js +4 -221
  75. package/dist/cjs/index.js.map +1 -1
  76. package/dist/cjs/instructions/acceptRental.js +23 -79
  77. package/dist/cjs/instructions/acceptRental.js.map +1 -1
  78. package/dist/cjs/instructions/activateRental.js +83 -0
  79. package/dist/cjs/instructions/activateRental.js.map +1 -0
  80. package/dist/cjs/instructions/cancelRental.js +21 -23
  81. package/dist/cjs/instructions/cancelRental.js.map +1 -1
  82. package/dist/cjs/instructions/claimBorrower.js +27 -14
  83. package/dist/cjs/instructions/claimBorrower.js.map +1 -1
  84. package/dist/cjs/instructions/claimContract.js +56 -0
  85. package/dist/cjs/instructions/claimContract.js.map +1 -0
  86. package/dist/cjs/instructions/closeContract.js +13 -12
  87. package/dist/cjs/instructions/closeContract.js.map +1 -1
  88. package/dist/cjs/instructions/closeContractThread.js +58 -0
  89. package/dist/cjs/instructions/closeContractThread.js.map +1 -0
  90. package/dist/cjs/instructions/closeRental.js +34 -45
  91. package/dist/cjs/instructions/closeRental.js.map +1 -1
  92. package/dist/cjs/instructions/createBorrower.js +64 -0
  93. package/dist/cjs/instructions/createBorrower.js.map +1 -0
  94. package/dist/cjs/instructions/createContract.js +2 -34
  95. package/dist/cjs/instructions/createContract.js.map +1 -1
  96. package/dist/cjs/instructions/createContractThread.js +74 -0
  97. package/dist/cjs/instructions/createContractThread.js.map +1 -0
  98. package/dist/cjs/instructions/index.js +41 -49
  99. package/dist/cjs/instructions/index.js.map +1 -1
  100. package/dist/cjs/instructions/reserveRental.js +70 -68
  101. package/dist/cjs/instructions/reserveRental.js.map +1 -1
  102. package/dist/cjs/instructions/updateBorrower.js +44 -40
  103. package/dist/cjs/instructions/updateBorrower.js.map +1 -1
  104. package/dist/cjs/instructions/updateConfig.js +0 -1
  105. package/dist/cjs/instructions/updateConfig.js.map +1 -1
  106. package/dist/cjs/instructions/updateContract.js +14 -30
  107. package/dist/cjs/instructions/updateContract.js.map +1 -1
  108. package/dist/cjs/instructions/updateContractThread.js +60 -0
  109. package/dist/cjs/instructions/updateContractThread.js.map +1 -0
  110. package/dist/cjs/kit/index.js +37 -3
  111. package/dist/cjs/kit/index.js.map +1 -1
  112. package/dist/cjs/legacy/index.js +13 -16
  113. package/dist/cjs/legacy/index.js.map +1 -1
  114. package/dist/cjs/package.json +1 -1
  115. package/dist/cjs/params/index.js +21 -0
  116. package/dist/cjs/params/index.js.map +1 -0
  117. package/dist/cjs/params/sol.js +71 -0
  118. package/dist/cjs/params/sol.js.map +1 -0
  119. package/dist/cjs/pda/constants.js +4 -2
  120. package/dist/cjs/pda/constants.js.map +1 -1
  121. package/dist/cjs/pda/index.js +7 -23
  122. package/dist/cjs/pda/index.js.map +1 -1
  123. package/dist/cjs/pda/srsly.js +30 -37
  124. package/dist/cjs/pda/srsly.js.map +1 -1
  125. package/dist/cjs/pda/thread.js +37 -24
  126. package/dist/cjs/pda/thread.js.map +1 -1
  127. package/dist/cjs/utils/index.js +3 -5
  128. package/dist/cjs/utils/index.js.map +1 -1
  129. package/dist/cjs/utils/rental.js +23 -109
  130. package/dist/cjs/utils/rental.js.map +1 -1
  131. package/dist/cjs/version.js +1 -1
  132. package/dist/esm/accounts/index.js +7 -0
  133. package/dist/esm/accounts/index.js.map +1 -0
  134. package/dist/esm/demos.js +156 -56
  135. package/dist/esm/demos.js.map +1 -1
  136. package/dist/esm/generated/codama/accounts/borrowerState.js +9 -3
  137. package/dist/esm/generated/codama/accounts/borrowerState.js.map +1 -1
  138. package/dist/esm/generated/codama/accounts/configState.js +0 -2
  139. package/dist/esm/generated/codama/accounts/configState.js.map +1 -1
  140. package/dist/esm/generated/codama/accounts/contractState.js +24 -31
  141. package/dist/esm/generated/codama/accounts/contractState.js.map +1 -1
  142. package/dist/esm/generated/codama/accounts/index.js +0 -1
  143. package/dist/esm/generated/codama/accounts/index.js.map +1 -1
  144. package/dist/esm/generated/codama/accounts/rentalState.js +22 -16
  145. package/dist/esm/generated/codama/accounts/rentalState.js.map +1 -1
  146. package/dist/esm/generated/codama/errors/srsly.js +41 -41
  147. package/dist/esm/generated/codama/errors/srsly.js.map +1 -1
  148. package/dist/esm/generated/codama/instructions/acceptRental.js +60 -47
  149. package/dist/esm/generated/codama/instructions/acceptRental.js.map +1 -1
  150. package/dist/esm/generated/codama/instructions/activateRental.js +146 -24
  151. package/dist/esm/generated/codama/instructions/activateRental.js.map +1 -1
  152. package/dist/esm/generated/codama/instructions/cancelRental.js +14 -43
  153. package/dist/esm/generated/codama/instructions/cancelRental.js.map +1 -1
  154. package/dist/esm/generated/codama/instructions/claimBorrower.js.map +1 -1
  155. package/dist/esm/generated/codama/instructions/claimContract.js +187 -0
  156. package/dist/esm/generated/codama/instructions/claimContract.js.map +1 -0
  157. package/dist/esm/generated/codama/instructions/closeContract.js +130 -14
  158. package/dist/esm/generated/codama/instructions/closeContract.js.map +1 -1
  159. package/dist/esm/generated/codama/instructions/closeContractThread.js +144 -0
  160. package/dist/esm/generated/codama/instructions/closeContractThread.js.map +1 -0
  161. package/dist/esm/generated/codama/instructions/closeRental.js +11 -122
  162. package/dist/esm/generated/codama/instructions/closeRental.js.map +1 -1
  163. package/dist/esm/generated/codama/instructions/createBorrower.js +201 -0
  164. package/dist/esm/generated/codama/instructions/createBorrower.js.map +1 -0
  165. package/dist/esm/generated/codama/instructions/createContract.js +41 -25
  166. package/dist/esm/generated/codama/instructions/createContract.js.map +1 -1
  167. package/dist/esm/generated/codama/instructions/createContractThread.js +289 -0
  168. package/dist/esm/generated/codama/instructions/createContractThread.js.map +1 -0
  169. package/dist/esm/generated/codama/instructions/index.js +6 -5
  170. package/dist/esm/generated/codama/instructions/index.js.map +1 -1
  171. package/dist/esm/generated/codama/instructions/payContract.js +227 -0
  172. package/dist/esm/generated/codama/instructions/payContract.js.map +1 -0
  173. package/dist/esm/generated/codama/instructions/reserveRental.js +82 -61
  174. package/dist/esm/generated/codama/instructions/reserveRental.js.map +1 -1
  175. package/dist/esm/generated/codama/instructions/updateBorrower.js +8 -43
  176. package/dist/esm/generated/codama/instructions/updateBorrower.js.map +1 -1
  177. package/dist/esm/generated/codama/instructions/updateConfig.js +0 -2
  178. package/dist/esm/generated/codama/instructions/updateConfig.js.map +1 -1
  179. package/dist/esm/generated/codama/instructions/updateContract.js +1 -11
  180. package/dist/esm/generated/codama/instructions/updateContract.js.map +1 -1
  181. package/dist/esm/generated/codama/instructions/updateContractThread.js +167 -0
  182. package/dist/esm/generated/codama/instructions/updateContractThread.js.map +1 -0
  183. package/dist/esm/generated/codama/programs/srsly.js +36 -36
  184. package/dist/esm/generated/codama/programs/srsly.js.map +1 -1
  185. package/dist/esm/generated/codama/types/bidType.js +24 -0
  186. package/dist/esm/generated/codama/types/bidType.js.map +1 -0
  187. package/dist/esm/generated/codama/types/contractThreadClosed.js +24 -0
  188. package/dist/esm/generated/codama/types/contractThreadClosed.js.map +1 -0
  189. package/dist/esm/generated/codama/types/contractThreadCreated.js +24 -0
  190. package/dist/esm/generated/codama/types/contractThreadCreated.js.map +1 -0
  191. package/dist/esm/generated/codama/types/contractThreadUpdated.js +34 -0
  192. package/dist/esm/generated/codama/types/contractThreadUpdated.js.map +1 -0
  193. package/dist/esm/generated/codama/types/index.js +6 -2
  194. package/dist/esm/generated/codama/types/index.js.map +1 -1
  195. package/dist/esm/generated/codama/types/queuedRentalRefunded.js +28 -0
  196. package/dist/esm/generated/codama/types/queuedRentalRefunded.js.map +1 -0
  197. package/dist/esm/generated/codama/types/rentalActivated.js +3 -1
  198. package/dist/esm/generated/codama/types/rentalActivated.js.map +1 -1
  199. package/dist/esm/generated/codama/types/rentalExpiredInline.js +26 -0
  200. package/dist/esm/generated/codama/types/rentalExpiredInline.js.map +1 -0
  201. package/dist/esm/generated/codama/types/rentalStatus.js +4 -3
  202. package/dist/esm/generated/codama/types/rentalStatus.js.map +1 -1
  203. package/dist/esm/generated/codama/types/reservationCreated.js +10 -5
  204. package/dist/esm/generated/codama/types/reservationCreated.js.map +1 -1
  205. package/dist/esm/index.js +1 -99
  206. package/dist/esm/index.js.map +1 -1
  207. package/dist/esm/instructions/acceptRental.js +26 -82
  208. package/dist/esm/instructions/acceptRental.js.map +1 -1
  209. package/dist/esm/instructions/activateRental.js +80 -0
  210. package/dist/esm/instructions/activateRental.js.map +1 -0
  211. package/dist/esm/instructions/cancelRental.js +22 -24
  212. package/dist/esm/instructions/cancelRental.js.map +1 -1
  213. package/dist/esm/instructions/claimBorrower.js +27 -14
  214. package/dist/esm/instructions/claimBorrower.js.map +1 -1
  215. package/dist/esm/instructions/claimContract.js +53 -0
  216. package/dist/esm/instructions/claimContract.js.map +1 -0
  217. package/dist/esm/instructions/closeContract.js +13 -12
  218. package/dist/esm/instructions/closeContract.js.map +1 -1
  219. package/dist/esm/instructions/closeContractThread.js +55 -0
  220. package/dist/esm/instructions/closeContractThread.js.map +1 -0
  221. package/dist/esm/instructions/closeRental.js +35 -46
  222. package/dist/esm/instructions/closeRental.js.map +1 -1
  223. package/dist/esm/instructions/createBorrower.js +61 -0
  224. package/dist/esm/instructions/createBorrower.js.map +1 -0
  225. package/dist/esm/instructions/createContract.js +2 -34
  226. package/dist/esm/instructions/createContract.js.map +1 -1
  227. package/dist/esm/instructions/createContractThread.js +71 -0
  228. package/dist/esm/instructions/createContractThread.js.map +1 -0
  229. package/dist/esm/instructions/index.js +27 -24
  230. package/dist/esm/instructions/index.js.map +1 -1
  231. package/dist/esm/instructions/reserveRental.js +71 -69
  232. package/dist/esm/instructions/reserveRental.js.map +1 -1
  233. package/dist/esm/instructions/updateBorrower.js +45 -41
  234. package/dist/esm/instructions/updateBorrower.js.map +1 -1
  235. package/dist/esm/instructions/updateConfig.js +0 -1
  236. package/dist/esm/instructions/updateConfig.js.map +1 -1
  237. package/dist/esm/instructions/updateContract.js +14 -30
  238. package/dist/esm/instructions/updateContract.js.map +1 -1
  239. package/dist/esm/instructions/updateContractThread.js +57 -0
  240. package/dist/esm/instructions/updateContractThread.js.map +1 -0
  241. package/dist/esm/kit/index.js +11 -3
  242. package/dist/esm/kit/index.js.map +1 -1
  243. package/dist/esm/legacy/index.js +11 -14
  244. package/dist/esm/legacy/index.js.map +1 -1
  245. package/dist/esm/package.json +1 -1
  246. package/dist/esm/params/index.js +5 -0
  247. package/dist/esm/params/index.js.map +1 -0
  248. package/dist/esm/params/sol.js +68 -0
  249. package/dist/esm/params/sol.js.map +1 -0
  250. package/dist/esm/pda/constants.js +3 -1
  251. package/dist/esm/pda/constants.js.map +1 -1
  252. package/dist/esm/pda/index.js +3 -21
  253. package/dist/esm/pda/index.js.map +1 -1
  254. package/dist/esm/pda/srsly.js +29 -36
  255. package/dist/esm/pda/srsly.js.map +1 -1
  256. package/dist/esm/pda/thread.js +36 -24
  257. package/dist/esm/pda/thread.js.map +1 -1
  258. package/dist/esm/utils/index.js +1 -1
  259. package/dist/esm/utils/index.js.map +1 -1
  260. package/dist/esm/utils/rental.js +22 -106
  261. package/dist/esm/utils/rental.js.map +1 -1
  262. package/dist/esm/version.js +1 -1
  263. package/dist/idl/srsly.json +1704 -1909
  264. package/dist/types/accounts/index.d.ts +7 -0
  265. package/dist/types/accounts/index.d.ts.map +1 -0
  266. package/dist/types/demos.d.ts +24 -10
  267. package/dist/types/demos.d.ts.map +1 -1
  268. package/dist/types/generated/codama/accounts/borrowerState.d.ts +15 -3
  269. package/dist/types/generated/codama/accounts/borrowerState.d.ts.map +1 -1
  270. package/dist/types/generated/codama/accounts/configState.d.ts +0 -4
  271. package/dist/types/generated/codama/accounts/configState.d.ts.map +1 -1
  272. package/dist/types/generated/codama/accounts/contractState.d.ts +51 -74
  273. package/dist/types/generated/codama/accounts/contractState.d.ts.map +1 -1
  274. package/dist/types/generated/codama/accounts/index.d.ts +0 -1
  275. package/dist/types/generated/codama/accounts/index.d.ts.map +1 -1
  276. package/dist/types/generated/codama/accounts/rentalState.d.ts +46 -34
  277. package/dist/types/generated/codama/accounts/rentalState.d.ts.map +1 -1
  278. package/dist/types/generated/codama/errors/srsly.d.ts +39 -39
  279. package/dist/types/generated/codama/errors/srsly.d.ts.map +1 -1
  280. package/dist/types/generated/codama/instructions/acceptRental.d.ts +50 -35
  281. package/dist/types/generated/codama/instructions/acceptRental.d.ts.map +1 -1
  282. package/dist/types/generated/codama/instructions/activateRental.d.ts +72 -32
  283. package/dist/types/generated/codama/instructions/activateRental.d.ts.map +1 -1
  284. package/dist/types/generated/codama/instructions/cancelRental.d.ts +20 -28
  285. package/dist/types/generated/codama/instructions/cancelRental.d.ts.map +1 -1
  286. package/dist/types/generated/codama/instructions/claimBorrower.d.ts +3 -18
  287. package/dist/types/generated/codama/instructions/claimBorrower.d.ts.map +1 -1
  288. package/dist/types/generated/codama/instructions/claimContract.d.ts +75 -0
  289. package/dist/types/generated/codama/instructions/claimContract.d.ts.map +1 -0
  290. package/dist/types/generated/codama/instructions/closeContract.d.ts +70 -18
  291. package/dist/types/generated/codama/instructions/closeContract.d.ts.map +1 -1
  292. package/dist/types/generated/codama/instructions/closeContractThread.d.ts +63 -0
  293. package/dist/types/generated/codama/instructions/closeContractThread.d.ts.map +1 -0
  294. package/dist/types/generated/codama/instructions/closeRental.d.ts +20 -70
  295. package/dist/types/generated/codama/instructions/closeRental.d.ts.map +1 -1
  296. package/dist/types/generated/codama/instructions/createBorrower.d.ts +88 -0
  297. package/dist/types/generated/codama/instructions/createBorrower.d.ts.map +1 -0
  298. package/dist/types/generated/codama/instructions/createContract.d.ts +28 -32
  299. package/dist/types/generated/codama/instructions/createContract.d.ts.map +1 -1
  300. package/dist/types/generated/codama/instructions/createContractThread.d.ts +125 -0
  301. package/dist/types/generated/codama/instructions/createContractThread.d.ts.map +1 -0
  302. package/dist/types/generated/codama/instructions/index.d.ts +6 -5
  303. package/dist/types/generated/codama/instructions/index.d.ts.map +1 -1
  304. package/dist/types/generated/codama/instructions/payContract.d.ts +104 -0
  305. package/dist/types/generated/codama/instructions/payContract.d.ts.map +1 -0
  306. package/dist/types/generated/codama/instructions/reserveRental.d.ts +84 -68
  307. package/dist/types/generated/codama/instructions/reserveRental.d.ts.map +1 -1
  308. package/dist/types/generated/codama/instructions/updateBorrower.d.ts +21 -19
  309. package/dist/types/generated/codama/instructions/updateBorrower.d.ts.map +1 -1
  310. package/dist/types/generated/codama/instructions/updateConfig.d.ts +0 -6
  311. package/dist/types/generated/codama/instructions/updateConfig.d.ts.map +1 -1
  312. package/dist/types/generated/codama/instructions/updateContract.d.ts +2 -14
  313. package/dist/types/generated/codama/instructions/updateContract.d.ts.map +1 -1
  314. package/dist/types/generated/codama/instructions/updateContractThread.d.ts +76 -0
  315. package/dist/types/generated/codama/instructions/updateContractThread.d.ts.map +1 -0
  316. package/dist/types/generated/codama/programs/srsly.d.ts +34 -32
  317. package/dist/types/generated/codama/programs/srsly.d.ts.map +1 -1
  318. package/dist/types/generated/codama/types/bidType.d.ts +18 -0
  319. package/dist/types/generated/codama/types/bidType.d.ts.map +1 -0
  320. package/dist/types/generated/codama/types/contractThreadClosed.d.ts +17 -0
  321. package/dist/types/generated/codama/types/contractThreadClosed.d.ts.map +1 -0
  322. package/dist/types/generated/codama/types/contractThreadCreated.d.ts +17 -0
  323. package/dist/types/generated/codama/types/contractThreadCreated.d.ts.map +1 -0
  324. package/dist/types/generated/codama/types/contractThreadUpdated.d.ts +24 -0
  325. package/dist/types/generated/codama/types/contractThreadUpdated.d.ts.map +1 -0
  326. package/dist/types/generated/codama/types/index.d.ts +6 -2
  327. package/dist/types/generated/codama/types/index.d.ts.map +1 -1
  328. package/dist/types/generated/codama/types/queuedRentalRefunded.d.ts +24 -0
  329. package/dist/types/generated/codama/types/queuedRentalRefunded.d.ts.map +1 -0
  330. package/dist/types/generated/codama/types/rentalActivated.d.ts +7 -1
  331. package/dist/types/generated/codama/types/rentalActivated.d.ts.map +1 -1
  332. package/dist/types/generated/codama/types/rentalExpiredInline.d.ts +18 -0
  333. package/dist/types/generated/codama/types/rentalExpiredInline.d.ts.map +1 -0
  334. package/dist/types/generated/codama/types/rentalStatus.d.ts +4 -3
  335. package/dist/types/generated/codama/types/rentalStatus.d.ts.map +1 -1
  336. package/dist/types/generated/codama/types/reservationCreated.d.ts +9 -4
  337. package/dist/types/generated/codama/types/reservationCreated.d.ts.map +1 -1
  338. package/dist/types/index.d.ts +1 -42
  339. package/dist/types/index.d.ts.map +1 -1
  340. package/dist/types/instructions/acceptRental.d.ts +2 -31
  341. package/dist/types/instructions/acceptRental.d.ts.map +1 -1
  342. package/dist/types/instructions/activateRental.d.ts +41 -0
  343. package/dist/types/instructions/activateRental.d.ts.map +1 -0
  344. package/dist/types/instructions/cancelRental.d.ts +8 -18
  345. package/dist/types/instructions/cancelRental.d.ts.map +1 -1
  346. package/dist/types/instructions/claimBorrower.d.ts +27 -10
  347. package/dist/types/instructions/claimBorrower.d.ts.map +1 -1
  348. package/dist/types/instructions/claimContract.d.ts +40 -0
  349. package/dist/types/instructions/claimContract.d.ts.map +1 -0
  350. package/dist/types/instructions/closeContract.d.ts +1 -12
  351. package/dist/types/instructions/closeContract.d.ts.map +1 -1
  352. package/dist/types/instructions/closeContractThread.d.ts +40 -0
  353. package/dist/types/instructions/closeContractThread.d.ts.map +1 -0
  354. package/dist/types/instructions/closeRental.d.ts +6 -14
  355. package/dist/types/instructions/closeRental.d.ts.map +1 -1
  356. package/dist/types/instructions/createBorrower.d.ts +49 -0
  357. package/dist/types/instructions/createBorrower.d.ts.map +1 -0
  358. package/dist/types/instructions/createContract.d.ts +1 -41
  359. package/dist/types/instructions/createContract.d.ts.map +1 -1
  360. package/dist/types/instructions/createContractThread.d.ts +50 -0
  361. package/dist/types/instructions/createContractThread.d.ts.map +1 -0
  362. package/dist/types/instructions/index.d.ts +27 -24
  363. package/dist/types/instructions/index.d.ts.map +1 -1
  364. package/dist/types/instructions/reserveRental.d.ts +33 -29
  365. package/dist/types/instructions/reserveRental.d.ts.map +1 -1
  366. package/dist/types/instructions/updateBorrower.d.ts +23 -29
  367. package/dist/types/instructions/updateBorrower.d.ts.map +1 -1
  368. package/dist/types/instructions/updateConfig.d.ts +0 -4
  369. package/dist/types/instructions/updateConfig.d.ts.map +1 -1
  370. package/dist/types/instructions/updateContract.d.ts +11 -33
  371. package/dist/types/instructions/updateContract.d.ts.map +1 -1
  372. package/dist/types/instructions/updateContractThread.d.ts +48 -0
  373. package/dist/types/instructions/updateContractThread.d.ts.map +1 -0
  374. package/dist/types/kit/index.d.ts +10 -3
  375. package/dist/types/kit/index.d.ts.map +1 -1
  376. package/dist/types/legacy/index.d.ts +11 -39
  377. package/dist/types/legacy/index.d.ts.map +1 -1
  378. package/dist/types/params/index.d.ts +5 -0
  379. package/dist/types/params/index.d.ts.map +1 -0
  380. package/dist/types/params/sol.d.ts +34 -0
  381. package/dist/types/params/sol.d.ts.map +1 -0
  382. package/dist/types/pda/constants.d.ts +3 -1
  383. package/dist/types/pda/constants.d.ts.map +1 -1
  384. package/dist/types/pda/index.d.ts +3 -21
  385. package/dist/types/pda/index.d.ts.map +1 -1
  386. package/dist/types/pda/srsly.d.ts +13 -15
  387. package/dist/types/pda/srsly.d.ts.map +1 -1
  388. package/dist/types/pda/thread.d.ts +17 -18
  389. package/dist/types/pda/thread.d.ts.map +1 -1
  390. package/dist/types/utils/index.d.ts +1 -1
  391. package/dist/types/utils/index.d.ts.map +1 -1
  392. package/dist/types/utils/rental.d.ts +8 -66
  393. package/dist/types/utils/rental.d.ts.map +1 -1
  394. package/dist/types/version.d.ts +1 -1
  395. package/package.json +1 -1
@@ -11,7 +11,7 @@
11
11
  "name": "accept_rental",
12
12
  "docs": [
13
13
  "Accept a rental contract by providing payment and specifying duration.",
14
- "Used when no active rental exists. For queued rentals, use claim_rental.",
14
+ "Used when no active rental exists. For queued rentals, use reserve_rental.",
15
15
  "Optionally includes discount authorization for referrer/affiliate discounts."
16
16
  ],
17
17
  "discriminator": [
@@ -28,7 +28,10 @@
28
28
  {
29
29
  "name": "borrower",
30
30
  "writable": true,
31
- "signer": true
31
+ "signer": true,
32
+ "relations": [
33
+ "borrower_state"
34
+ ]
32
35
  },
33
36
  {
34
37
  "name": "config",
@@ -181,10 +184,18 @@
181
184
  },
182
185
  {
183
186
  "name": "fleet",
187
+ "docs": [
188
+ "Fleet validated by contract.has_one"
189
+ ],
190
+ "writable": true
191
+ },
192
+ {
193
+ "name": "expired_borrower_state",
194
+ "docs": [
195
+ "BorrowerState for the expired rental's borrower (required when inline replacement fires)"
196
+ ],
184
197
  "writable": true,
185
- "relations": [
186
- "contract"
187
- ]
198
+ "optional": true
188
199
  },
189
200
  {
190
201
  "name": "game_id"
@@ -193,7 +204,8 @@
193
204
  "name": "starbase"
194
205
  },
195
206
  {
196
- "name": "starbase_player"
207
+ "name": "starbase_player",
208
+ "writable": true
197
209
  },
198
210
  {
199
211
  "name": "contract",
@@ -230,13 +242,7 @@
230
242
  },
231
243
  {
232
244
  "name": "rental_state",
233
- "writable": true
234
- },
235
- {
236
- "name": "rental_authority",
237
- "docs": [
238
- "Instead of using (address =), we use seeds here so that codama generates it for us"
239
- ],
245
+ "writable": true,
240
246
  "pda": {
241
247
  "seeds": [
242
248
  {
@@ -249,110 +255,64 @@
249
255
  97,
250
256
  108,
251
257
  95,
258
+ 115,
259
+ 116,
252
260
  97,
253
- 117,
254
261
  116,
255
- 104,
256
- 111,
257
- 114,
258
- 105,
262
+ 101
263
+ ]
264
+ },
265
+ {
266
+ "kind": "account",
267
+ "path": "contract"
268
+ },
269
+ {
270
+ "kind": "const",
271
+ "value": [
272
+ 97,
273
+ 99,
259
274
  116,
260
- 121
275
+ 105,
276
+ 118,
277
+ 101
261
278
  ]
262
279
  }
263
280
  ]
264
281
  }
265
282
  },
266
283
  {
267
- "name": "rental_token_account",
284
+ "name": "rental_authority",
268
285
  "writable": true,
269
286
  "pda": {
270
287
  "seeds": [
271
- {
272
- "kind": "account",
273
- "path": "rental_state"
274
- },
275
288
  {
276
289
  "kind": "const",
277
290
  "value": [
278
- 6,
279
- 221,
280
- 246,
281
- 225,
282
- 215,
291
+ 114,
283
292
  101,
284
- 161,
285
- 147,
286
- 217,
287
- 203,
288
- 225,
289
- 70,
290
- 206,
291
- 235,
292
- 121,
293
- 172,
294
- 28,
295
- 180,
296
- 133,
297
- 237,
293
+ 110,
294
+ 116,
295
+ 97,
296
+ 108,
298
297
  95,
299
- 91,
300
- 55,
301
- 145,
302
- 58,
303
- 140,
304
- 245,
305
- 133,
306
- 126,
307
- 255,
308
- 0,
309
- 169
298
+ 97,
299
+ 117,
300
+ 116,
301
+ 104,
302
+ 111,
303
+ 114,
304
+ 105,
305
+ 116,
306
+ 121
310
307
  ]
311
- },
312
- {
313
- "kind": "account",
314
- "path": "mint"
315
308
  }
316
- ],
317
- "program": {
318
- "kind": "const",
319
- "value": [
320
- 140,
321
- 151,
322
- 37,
323
- 143,
324
- 78,
325
- 36,
326
- 137,
327
- 241,
328
- 187,
329
- 61,
330
- 16,
331
- 41,
332
- 20,
333
- 142,
334
- 13,
335
- 131,
336
- 11,
337
- 90,
338
- 19,
339
- 153,
340
- 218,
341
- 255,
342
- 16,
343
- 132,
344
- 4,
345
- 142,
346
- 123,
347
- 216,
348
- 219,
349
- 233,
350
- 248,
351
- 89
352
- ]
353
- }
309
+ ]
354
310
  }
355
311
  },
312
+ {
313
+ "name": "contract_token_account",
314
+ "writable": true
315
+ },
356
316
  {
357
317
  "name": "vault",
358
318
  "writable": true
@@ -367,8 +327,12 @@
367
327
  "optional": true
368
328
  },
369
329
  {
370
- "name": "instructions_sysvar",
371
- "address": "Sysvar1nstructions1111111111111111111111111"
330
+ "name": "contract_thread",
331
+ "writable": true
332
+ },
333
+ {
334
+ "name": "close_rental_fiber",
335
+ "writable": true
372
336
  },
373
337
  {
374
338
  "name": "sage_program"
@@ -377,6 +341,10 @@
377
341
  "name": "slyvault_program",
378
342
  "address": "VLTukwau1TDGhQUgBJfSSojSMv3BfnMHKrewnGN98M3"
379
343
  },
344
+ {
345
+ "name": "antegen_program",
346
+ "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
347
+ },
380
348
  {
381
349
  "name": "token_program",
382
350
  "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
@@ -410,9 +378,9 @@
410
378
  {
411
379
  "name": "activate_rental",
412
380
  "docs": [
413
- "Activate a pending (queued) rental manually.",
414
- "Works as fallback when automation is delayed/stuck, OR for non-threaded rentals.",
415
- "If a thread exists, updates the trigger from Immediate Cron."
381
+ "Activate a pending (queued) rental.",
382
+ "Works as fallback when automation is delayed/stuck, OR for non-threaded contracts.",
383
+ "If a per-contract thread exists, updates fiber 1 with new active borrower's accounts."
416
384
  ],
417
385
  "discriminator": [
418
386
  180,
@@ -426,36 +394,31 @@
426
394
  ],
427
395
  "accounts": [
428
396
  {
429
- "name": "borrower",
397
+ "name": "payer",
430
398
  "writable": true,
431
- "signer": true,
432
- "relations": [
433
- "rental_state"
434
- ]
435
- },
436
- {
437
- "name": "rental_state",
438
- "writable": true
439
- },
440
- {
441
- "name": "contract",
442
- "writable": true
443
- },
444
- {
445
- "name": "borrower_profile"
446
- },
447
- {
448
- "name": "borrower_profile_faction"
449
- },
450
- {
451
- "name": "fleet",
452
- "writable": true
399
+ "signer": true
453
400
  },
454
401
  {
455
- "name": "game_id"
402
+ "name": "config",
403
+ "pda": {
404
+ "seeds": [
405
+ {
406
+ "kind": "const",
407
+ "value": [
408
+ 99,
409
+ 111,
410
+ 110,
411
+ 102,
412
+ 105,
413
+ 103
414
+ ]
415
+ }
416
+ ]
417
+ }
456
418
  },
457
419
  {
458
- "name": "rental_authority",
420
+ "name": "active_rental",
421
+ "writable": true,
459
422
  "pda": {
460
423
  "seeds": [
461
424
  {
@@ -468,40 +431,174 @@
468
431
  97,
469
432
  108,
470
433
  95,
434
+ 115,
435
+ 116,
471
436
  97,
472
- 117,
473
437
  116,
474
- 104,
475
- 111,
476
- 114,
438
+ 101
439
+ ]
440
+ },
441
+ {
442
+ "kind": "account",
443
+ "path": "contract"
444
+ },
445
+ {
446
+ "kind": "const",
447
+ "value": [
448
+ 97,
449
+ 99,
450
+ 116,
477
451
  105,
452
+ 118,
453
+ 101
454
+ ]
455
+ }
456
+ ]
457
+ }
458
+ },
459
+ {
460
+ "name": "queued_rental",
461
+ "writable": true,
462
+ "pda": {
463
+ "seeds": [
464
+ {
465
+ "kind": "const",
466
+ "value": [
467
+ 114,
468
+ 101,
469
+ 110,
478
470
  116,
479
- 121
471
+ 97,
472
+ 108,
473
+ 95,
474
+ 115,
475
+ 116,
476
+ 97,
477
+ 116,
478
+ 101
479
+ ]
480
+ },
481
+ {
482
+ "kind": "account",
483
+ "path": "contract"
484
+ },
485
+ {
486
+ "kind": "const",
487
+ "value": [
488
+ 113,
489
+ 117,
490
+ 101,
491
+ 117,
492
+ 101,
493
+ 100
480
494
  ]
481
495
  }
482
496
  ]
483
497
  }
484
498
  },
485
499
  {
486
- "name": "rental_thread",
500
+ "name": "contract",
501
+ "writable": true
502
+ },
503
+ {
504
+ "name": "contract_token_account",
487
505
  "docs": [
488
- "Client always passes derived address; we check data_is_empty() before use."
506
+ "Contract's token account (source for deferred fee payment)"
489
507
  ],
490
508
  "writable": true
491
509
  },
492
510
  {
493
- "name": "sage_program"
511
+ "name": "mint"
494
512
  },
495
513
  {
496
- "name": "antegen_program",
497
- "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
514
+ "name": "borrower_profile"
515
+ },
516
+ {
517
+ "name": "borrower_profile_faction"
518
+ },
519
+ {
520
+ "name": "fleet",
521
+ "writable": true
522
+ },
523
+ {
524
+ "name": "game_id"
525
+ },
526
+ {
527
+ "name": "contract_thread",
528
+ "writable": true
529
+ },
530
+ {
531
+ "name": "close_rental_fiber",
532
+ "writable": true
533
+ },
534
+ {
535
+ "name": "vault",
536
+ "writable": true
537
+ },
538
+ {
539
+ "name": "vault_token_account",
540
+ "writable": true
541
+ },
542
+ {
543
+ "name": "referrer",
544
+ "writable": true,
545
+ "optional": true
546
+ },
547
+ {
548
+ "name": "rental_authority",
549
+ "writable": true,
550
+ "pda": {
551
+ "seeds": [
552
+ {
553
+ "kind": "const",
554
+ "value": [
555
+ 114,
556
+ 101,
557
+ 110,
558
+ 116,
559
+ 97,
560
+ 108,
561
+ 95,
562
+ 97,
563
+ 117,
564
+ 116,
565
+ 104,
566
+ 111,
567
+ 114,
568
+ 105,
569
+ 116,
570
+ 121
571
+ ]
572
+ }
573
+ ]
574
+ }
575
+ },
576
+ {
577
+ "name": "sage_program"
578
+ },
579
+ {
580
+ "name": "slyvault_program",
581
+ "address": "VLTukwau1TDGhQUgBJfSSojSMv3BfnMHKrewnGN98M3"
582
+ },
583
+ {
584
+ "name": "antegen_program",
585
+ "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
586
+ },
587
+ {
588
+ "name": "token_program",
589
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
498
590
  },
499
591
  {
500
592
  "name": "system_program",
501
593
  "address": "11111111111111111111111111111111"
502
594
  }
503
595
  ],
504
- "args": []
596
+ "args": [],
597
+ "returns": {
598
+ "defined": {
599
+ "name": "Signal"
600
+ }
601
+ }
505
602
  },
506
603
  {
507
604
  "name": "cancel_rental",
@@ -668,10 +765,6 @@
668
765
  }
669
766
  }
670
767
  },
671
- {
672
- "name": "rental_thread",
673
- "writable": true
674
- },
675
768
  {
676
769
  "name": "contract",
677
770
  "writable": true,
@@ -710,94 +803,11 @@
710
803
  "writable": true
711
804
  },
712
805
  {
713
- "name": "rental_token_account",
714
- "writable": true,
715
- "pda": {
716
- "seeds": [
717
- {
718
- "kind": "account",
719
- "path": "rental_state"
720
- },
721
- {
722
- "kind": "const",
723
- "value": [
724
- 6,
725
- 221,
726
- 246,
727
- 225,
728
- 215,
729
- 101,
730
- 161,
731
- 147,
732
- 217,
733
- 203,
734
- 225,
735
- 70,
736
- 206,
737
- 235,
738
- 121,
739
- 172,
740
- 28,
741
- 180,
742
- 133,
743
- 237,
744
- 95,
745
- 91,
746
- 55,
747
- 145,
748
- 58,
749
- 140,
750
- 245,
751
- 133,
752
- 126,
753
- 255,
754
- 0,
755
- 169
756
- ]
757
- },
758
- {
759
- "kind": "account",
760
- "path": "mint"
761
- }
762
- ],
763
- "program": {
764
- "kind": "const",
765
- "value": [
766
- 140,
767
- 151,
768
- 37,
769
- 143,
770
- 78,
771
- 36,
772
- 137,
773
- 241,
774
- 187,
775
- 61,
776
- 16,
777
- 41,
778
- 20,
779
- 142,
780
- 13,
781
- 131,
782
- 11,
783
- 90,
784
- 19,
785
- 153,
786
- 218,
787
- 255,
788
- 16,
789
- 132,
790
- 4,
791
- 142,
792
- 123,
793
- 216,
794
- 219,
795
- 233,
796
- 248,
797
- 89
798
- ]
799
- }
800
- }
806
+ "name": "contract_token_account",
807
+ "writable": true
808
+ },
809
+ {
810
+ "name": "fleet"
801
811
  },
802
812
  {
803
813
  "name": "rental_authority",
@@ -828,10 +838,6 @@
828
838
  ]
829
839
  }
830
840
  },
831
- {
832
- "name": "antegen_program",
833
- "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
834
- },
835
841
  {
836
842
  "name": "token_program",
837
843
  "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
@@ -849,10 +855,6 @@
849
855
  {
850
856
  "name": "cancel_delay",
851
857
  "type": "u64"
852
- },
853
- {
854
- "name": "rental_slot",
855
- "type": "u8"
856
858
  }
857
859
  ]
858
860
  },
@@ -876,9 +878,6 @@
876
878
  "accounts": [
877
879
  {
878
880
  "name": "payer",
879
- "docs": [
880
- "Payer/signer — must be borrower OR config.admin"
881
- ],
882
881
  "writable": true,
883
882
  "signer": true
884
883
  },
@@ -944,8 +943,7 @@
944
943
  {
945
944
  "name": "borrower_managed_token_account",
946
945
  "docs": [
947
- "Managed token account (ATA with borrower_state as authority)",
948
- "This is where ATLAS refunds accumulate when knocked off reservations"
946
+ "Managed token account (ATA with borrower_state as authority)."
949
947
  ],
950
948
  "writable": true,
951
949
  "pda": {
@@ -1037,9 +1035,6 @@
1037
1035
  },
1038
1036
  {
1039
1037
  "name": "destination_token_account",
1040
- "docs": [
1041
- "Destination: borrower's personal wallet ATA"
1042
- ],
1043
1038
  "writable": true,
1044
1039
  "pda": {
1045
1040
  "seeds": [
@@ -1149,27 +1144,29 @@
1149
1144
  ]
1150
1145
  },
1151
1146
  {
1152
- "name": "claim_owner",
1147
+ "name": "claim_contract",
1153
1148
  "docs": [
1154
- "Owner claims accumulated ATLAS from their managed token account.",
1155
- "Iterates remaining_accounts to protect reserved_atlas across all contracts.",
1156
- "Optionally closes OwnerState + ATA when no active contracts remain."
1149
+ "Claim accumulated ATLAS from a specific contract's token account.",
1150
+ "Transfers owner_claimable amount from contract_token_account to owner's wallet."
1157
1151
  ],
1158
1152
  "discriminator": [
1159
- 121,
1160
- 114,
1161
- 151,
1162
- 165,
1163
- 8,
1164
- 32,
1165
- 220,
1166
- 239
1153
+ 159,
1154
+ 37,
1155
+ 59,
1156
+ 144,
1157
+ 75,
1158
+ 50,
1159
+ 2,
1160
+ 170
1167
1161
  ],
1168
1162
  "accounts": [
1169
1163
  {
1170
- "name": "payer",
1164
+ "name": "owner",
1171
1165
  "writable": true,
1172
- "signer": true
1166
+ "signer": true,
1167
+ "relations": [
1168
+ "contract"
1169
+ ]
1173
1170
  },
1174
1171
  {
1175
1172
  "name": "config",
@@ -1193,44 +1190,50 @@
1193
1190
  "name": "mint"
1194
1191
  },
1195
1192
  {
1196
- "name": "owner_state",
1193
+ "name": "contract",
1197
1194
  "writable": true,
1198
1195
  "pda": {
1199
1196
  "seeds": [
1200
1197
  {
1201
1198
  "kind": "const",
1202
1199
  "value": [
1203
- 111,
1204
- 119,
1205
- 110,
1206
- 101,
1207
1200
  114,
1208
- 95,
1209
- 115,
1201
+ 101,
1202
+ 110,
1210
1203
  116,
1211
1204
  97,
1205
+ 108,
1206
+ 95,
1207
+ 99,
1208
+ 111,
1209
+ 110,
1212
1210
  116,
1213
- 101
1211
+ 114,
1212
+ 97,
1213
+ 99,
1214
+ 116
1214
1215
  ]
1215
1216
  },
1216
1217
  {
1217
1218
  "kind": "account",
1218
- "path": "owner"
1219
+ "path": "contract.fleet",
1220
+ "account": "ContractState"
1219
1221
  }
1220
1222
  ]
1221
1223
  }
1222
1224
  },
1223
1225
  {
1224
- "name": "owner"
1226
+ "name": "contract_token_account",
1227
+ "writable": true
1225
1228
  },
1226
1229
  {
1227
- "name": "owner_token_account",
1230
+ "name": "destination_token_account",
1228
1231
  "writable": true,
1229
1232
  "pda": {
1230
1233
  "seeds": [
1231
1234
  {
1232
1235
  "kind": "account",
1233
- "path": "owner_state"
1236
+ "path": "owner"
1234
1237
  },
1235
1238
  {
1236
1239
  "kind": "const",
@@ -1313,103 +1316,6 @@
1313
1316
  }
1314
1317
  }
1315
1318
  },
1316
- {
1317
- "name": "destination_token_account",
1318
- "writable": true,
1319
- "pda": {
1320
- "seeds": [
1321
- {
1322
- "kind": "account",
1323
- "path": "owner"
1324
- },
1325
- {
1326
- "kind": "const",
1327
- "value": [
1328
- 6,
1329
- 221,
1330
- 246,
1331
- 225,
1332
- 215,
1333
- 101,
1334
- 161,
1335
- 147,
1336
- 217,
1337
- 203,
1338
- 225,
1339
- 70,
1340
- 206,
1341
- 235,
1342
- 121,
1343
- 172,
1344
- 28,
1345
- 180,
1346
- 133,
1347
- 237,
1348
- 95,
1349
- 91,
1350
- 55,
1351
- 145,
1352
- 58,
1353
- 140,
1354
- 245,
1355
- 133,
1356
- 126,
1357
- 255,
1358
- 0,
1359
- 169
1360
- ]
1361
- },
1362
- {
1363
- "kind": "account",
1364
- "path": "mint"
1365
- }
1366
- ],
1367
- "program": {
1368
- "kind": "const",
1369
- "value": [
1370
- 140,
1371
- 151,
1372
- 37,
1373
- 143,
1374
- 78,
1375
- 36,
1376
- 137,
1377
- 241,
1378
- 187,
1379
- 61,
1380
- 16,
1381
- 41,
1382
- 20,
1383
- 142,
1384
- 13,
1385
- 131,
1386
- 11,
1387
- 90,
1388
- 19,
1389
- 153,
1390
- 218,
1391
- 255,
1392
- 16,
1393
- 132,
1394
- 4,
1395
- 142,
1396
- 123,
1397
- 216,
1398
- 219,
1399
- 233,
1400
- 248,
1401
- 89
1402
- ]
1403
- }
1404
- }
1405
- },
1406
- {
1407
- "name": "claim_thread",
1408
- "docs": [
1409
- "Optional: Thread for automated claims"
1410
- ],
1411
- "optional": true
1412
- },
1413
1319
  {
1414
1320
  "name": "token_program",
1415
1321
  "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
@@ -1423,39 +1329,33 @@
1423
1329
  "address": "11111111111111111111111111111111"
1424
1330
  }
1425
1331
  ],
1426
- "args": [
1427
- {
1428
- "name": "close",
1429
- "type": "bool"
1430
- }
1431
- ]
1332
+ "args": []
1432
1333
  },
1433
1334
  {
1434
- "name": "claim_rental",
1335
+ "name": "close_contract",
1435
1336
  "docs": [
1436
- "Claim a rental slot as the reservation holder (queue for next rental).",
1437
- "Only callable by the reservation holder during the claim window.",
1438
- "For initial rentals (no queue), use accept_rental instead."
1337
+ "Closes a rental contract. Contract must have no active rentals.",
1338
+ "Owner closes contract and claims all remaining payments",
1339
+ "Requires no active rental, reclaims all rent"
1439
1340
  ],
1440
1341
  "discriminator": [
1441
- 229,
1442
- 240,
1443
- 45,
1444
- 157,
1445
- 253,
1446
- 42,
1447
- 205,
1448
- 69
1342
+ 37,
1343
+ 244,
1344
+ 34,
1345
+ 168,
1346
+ 92,
1347
+ 202,
1348
+ 80,
1349
+ 106
1449
1350
  ],
1450
1351
  "accounts": [
1451
1352
  {
1452
- "name": "borrower",
1353
+ "name": "owner",
1453
1354
  "writable": true,
1454
1355
  "signer": true
1455
1356
  },
1456
1357
  {
1457
1358
  "name": "config",
1458
- "writable": true,
1459
1359
  "pda": {
1460
1360
  "seeds": [
1461
1361
  {
@@ -1476,128 +1376,86 @@
1476
1376
  "name": "mint"
1477
1377
  },
1478
1378
  {
1479
- "name": "borrower_state",
1379
+ "name": "contract",
1480
1380
  "writable": true,
1481
1381
  "pda": {
1482
1382
  "seeds": [
1483
1383
  {
1484
1384
  "kind": "const",
1485
1385
  "value": [
1486
- 98,
1487
- 111,
1488
- 114,
1489
1386
  114,
1490
- 111,
1491
- 119,
1492
1387
  101,
1493
- 114,
1494
- 95,
1495
- 115,
1388
+ 110,
1496
1389
  116,
1497
1390
  97,
1391
+ 108,
1392
+ 95,
1393
+ 99,
1394
+ 111,
1395
+ 110,
1498
1396
  116,
1499
- 101
1397
+ 114,
1398
+ 97,
1399
+ 99,
1400
+ 116
1500
1401
  ]
1501
1402
  },
1502
1403
  {
1503
1404
  "kind": "account",
1504
- "path": "borrower"
1405
+ "path": "fleet"
1505
1406
  }
1506
1407
  ]
1507
1408
  }
1508
1409
  },
1509
1410
  {
1510
- "name": "borrower_token_account",
1411
+ "name": "fleet",
1412
+ "docs": [
1413
+ "Fleet to close rental contract for"
1414
+ ],
1415
+ "writable": true
1416
+ },
1417
+ {
1418
+ "name": "active_rental",
1511
1419
  "writable": true,
1512
1420
  "pda": {
1513
1421
  "seeds": [
1514
- {
1515
- "kind": "account",
1516
- "path": "borrower"
1517
- },
1518
1422
  {
1519
1423
  "kind": "const",
1520
1424
  "value": [
1521
- 6,
1522
- 221,
1523
- 246,
1524
- 225,
1525
- 215,
1425
+ 114,
1526
1426
  101,
1527
- 161,
1528
- 147,
1529
- 217,
1530
- 203,
1531
- 225,
1532
- 70,
1533
- 206,
1534
- 235,
1535
- 121,
1536
- 172,
1537
- 28,
1538
- 180,
1539
- 133,
1540
- 237,
1427
+ 110,
1428
+ 116,
1429
+ 97,
1430
+ 108,
1541
1431
  95,
1542
- 91,
1543
- 55,
1544
- 145,
1545
- 58,
1546
- 140,
1547
- 245,
1548
- 133,
1549
- 126,
1550
- 255,
1551
- 0,
1552
- 169
1432
+ 115,
1433
+ 116,
1434
+ 97,
1435
+ 116,
1436
+ 101
1553
1437
  ]
1554
1438
  },
1555
1439
  {
1556
1440
  "kind": "account",
1557
- "path": "mint"
1441
+ "path": "contract"
1442
+ },
1443
+ {
1444
+ "kind": "const",
1445
+ "value": [
1446
+ 97,
1447
+ 99,
1448
+ 116,
1449
+ 105,
1450
+ 118,
1451
+ 101
1452
+ ]
1558
1453
  }
1559
- ],
1560
- "program": {
1561
- "kind": "const",
1562
- "value": [
1563
- 140,
1564
- 151,
1565
- 37,
1566
- 143,
1567
- 78,
1568
- 36,
1569
- 137,
1570
- 241,
1571
- 187,
1572
- 61,
1573
- 16,
1574
- 41,
1575
- 20,
1576
- 142,
1577
- 13,
1578
- 131,
1579
- 11,
1580
- 90,
1581
- 19,
1582
- 153,
1583
- 218,
1584
- 255,
1585
- 16,
1586
- 132,
1587
- 4,
1588
- 142,
1589
- 123,
1590
- 216,
1591
- 219,
1592
- 233,
1593
- 248,
1594
- 89
1595
- ]
1596
- }
1454
+ ]
1597
1455
  }
1598
1456
  },
1599
1457
  {
1600
- "name": "contract",
1458
+ "name": "queued_rental",
1601
1459
  "writable": true,
1602
1460
  "pda": {
1603
1461
  "seeds": [
@@ -1611,51 +1469,43 @@
1611
1469
  97,
1612
1470
  108,
1613
1471
  95,
1614
- 99,
1615
- 111,
1616
- 110,
1472
+ 115,
1617
1473
  116,
1618
- 114,
1619
1474
  97,
1620
- 99,
1621
- 116
1475
+ 116,
1476
+ 101
1622
1477
  ]
1623
1478
  },
1624
1479
  {
1625
1480
  "kind": "account",
1626
- "path": "contract.fleet",
1627
- "account": "ContractState"
1481
+ "path": "contract"
1482
+ },
1483
+ {
1484
+ "kind": "const",
1485
+ "value": [
1486
+ 113,
1487
+ 117,
1488
+ 101,
1489
+ 117,
1490
+ 101,
1491
+ 100
1492
+ ]
1628
1493
  }
1629
1494
  ]
1630
1495
  }
1631
1496
  },
1632
1497
  {
1633
- "name": "fleet",
1634
- "relations": [
1635
- "contract"
1636
- ]
1637
- },
1638
- {
1639
- "name": "starbase"
1640
- },
1641
- {
1642
- "name": "starbase_player"
1643
- },
1644
- {
1645
- "name": "borrower_profile"
1646
- },
1647
- {
1648
- "name": "rental_state",
1498
+ "name": "contract_token_account",
1649
1499
  "writable": true
1650
1500
  },
1651
1501
  {
1652
- "name": "rental_token_account",
1502
+ "name": "owner_destination",
1653
1503
  "writable": true,
1654
1504
  "pda": {
1655
1505
  "seeds": [
1656
1506
  {
1657
1507
  "kind": "account",
1658
- "path": "rental_state"
1508
+ "path": "owner"
1659
1509
  },
1660
1510
  {
1661
1511
  "kind": "const",
@@ -1739,25 +1589,53 @@
1739
1589
  }
1740
1590
  },
1741
1591
  {
1742
- "name": "vault",
1743
- "writable": true
1744
- },
1745
- {
1746
- "name": "vault_token_account",
1747
- "writable": true
1592
+ "name": "queued_borrower_state",
1593
+ "docs": [
1594
+ "Queued borrower's state PDA for removing active rental tracking.",
1595
+ "Required when queued rental exists (not Available)."
1596
+ ],
1597
+ "writable": true,
1598
+ "optional": true
1748
1599
  },
1749
1600
  {
1750
- "name": "referrer",
1601
+ "name": "queued_borrower_token_account",
1602
+ "docs": [
1603
+ "Queued borrower's token account for refunding escrow + deferred fee.",
1604
+ "Required when queued rental exists (not Available)."
1605
+ ],
1751
1606
  "writable": true,
1752
1607
  "optional": true
1753
1608
  },
1754
1609
  {
1755
- "name": "instructions_sysvar",
1756
- "address": "Sysvar1nstructions1111111111111111111111111"
1610
+ "name": "rental_authority",
1611
+ "pda": {
1612
+ "seeds": [
1613
+ {
1614
+ "kind": "const",
1615
+ "value": [
1616
+ 114,
1617
+ 101,
1618
+ 110,
1619
+ 116,
1620
+ 97,
1621
+ 108,
1622
+ 95,
1623
+ 97,
1624
+ 117,
1625
+ 116,
1626
+ 104,
1627
+ 111,
1628
+ 114,
1629
+ 105,
1630
+ 116,
1631
+ 121
1632
+ ]
1633
+ }
1634
+ ]
1635
+ }
1757
1636
  },
1758
1637
  {
1759
- "name": "slyvault_program",
1760
- "address": "VLTukwau1TDGhQUgBJfSSojSMv3BfnMHKrewnGN98M3"
1638
+ "name": "sage_program"
1761
1639
  },
1762
1640
  {
1763
1641
  "name": "token_program",
@@ -1772,47 +1650,126 @@
1772
1650
  "address": "11111111111111111111111111111111"
1773
1651
  }
1774
1652
  ],
1775
- "args": [
1653
+ "args": []
1654
+ },
1655
+ {
1656
+ "name": "close_contract_thread",
1657
+ "docs": [
1658
+ "Close a contract's automation thread independently.",
1659
+ "Closes thread + fibers, returns SOL to owner. Contract continues in manual mode."
1660
+ ],
1661
+ "discriminator": [
1662
+ 213,
1663
+ 35,
1664
+ 77,
1665
+ 150,
1666
+ 62,
1667
+ 109,
1668
+ 103,
1669
+ 248
1670
+ ],
1671
+ "accounts": [
1776
1672
  {
1777
- "name": "duration",
1778
- "type": "u64"
1673
+ "name": "owner",
1674
+ "writable": true,
1675
+ "signer": true
1779
1676
  },
1780
1677
  {
1781
- "name": "rental_slot",
1782
- "type": "u8"
1678
+ "name": "contract",
1679
+ "writable": true,
1680
+ "pda": {
1681
+ "seeds": [
1682
+ {
1683
+ "kind": "const",
1684
+ "value": [
1685
+ 114,
1686
+ 101,
1687
+ 110,
1688
+ 116,
1689
+ 97,
1690
+ 108,
1691
+ 95,
1692
+ 99,
1693
+ 111,
1694
+ 110,
1695
+ 116,
1696
+ 114,
1697
+ 97,
1698
+ 99,
1699
+ 116
1700
+ ]
1701
+ },
1702
+ {
1703
+ "kind": "account",
1704
+ "path": "contract.fleet",
1705
+ "account": "ContractState"
1706
+ }
1707
+ ]
1708
+ }
1783
1709
  },
1784
1710
  {
1785
- "name": "discount_auth",
1786
- "type": {
1787
- "option": {
1788
- "defined": {
1789
- "name": "DiscountAuthorization"
1711
+ "name": "rental_authority",
1712
+ "pda": {
1713
+ "seeds": [
1714
+ {
1715
+ "kind": "const",
1716
+ "value": [
1717
+ 114,
1718
+ 101,
1719
+ 110,
1720
+ 116,
1721
+ 97,
1722
+ 108,
1723
+ 95,
1724
+ 97,
1725
+ 117,
1726
+ 116,
1727
+ 104,
1728
+ 111,
1729
+ 114,
1730
+ 105,
1731
+ 116,
1732
+ 121
1733
+ ]
1790
1734
  }
1791
- }
1735
+ ]
1792
1736
  }
1737
+ },
1738
+ {
1739
+ "name": "thread",
1740
+ "writable": true
1741
+ },
1742
+ {
1743
+ "name": "antegen_program",
1744
+ "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
1745
+ },
1746
+ {
1747
+ "name": "system_program",
1748
+ "address": "11111111111111111111111111111111"
1793
1749
  }
1794
- ]
1750
+ ],
1751
+ "args": []
1795
1752
  },
1796
1753
  {
1797
- "name": "close_contract",
1754
+ "name": "close_rental",
1798
1755
  "docs": [
1799
- "Closes a rental contract. Contract must have no active rentals.",
1800
- "Owner closes contract and claims all remaining payments",
1801
- "Requires no active rental, reclaims all rent"
1756
+ "Close a completed or expired rental and clean up state.",
1757
+ "Serves both fiber 1 (automated) and manual fallback.",
1758
+ "Returns Signal for fiber dispatch (manual callers ignore return_data)."
1802
1759
  ],
1803
1760
  "discriminator": [
1804
- 37,
1805
- 244,
1806
- 34,
1807
- 168,
1808
- 92,
1809
- 202,
1810
- 80,
1811
- 106
1761
+ 179,
1762
+ 188,
1763
+ 113,
1764
+ 211,
1765
+ 41,
1766
+ 232,
1767
+ 51,
1768
+ 51
1812
1769
  ],
1813
1770
  "accounts": [
1814
1771
  {
1815
- "name": "owner",
1772
+ "name": "payer",
1816
1773
  "writable": true,
1817
1774
  "signer": true
1818
1775
  },
@@ -1835,53 +1792,62 @@
1835
1792
  }
1836
1793
  },
1837
1794
  {
1838
- "name": "mint"
1795
+ "name": "borrower",
1796
+ "writable": true,
1797
+ "relations": [
1798
+ "rental_state"
1799
+ ]
1839
1800
  },
1840
1801
  {
1841
- "name": "contract",
1802
+ "name": "borrower_state",
1842
1803
  "writable": true,
1843
1804
  "pda": {
1844
1805
  "seeds": [
1845
1806
  {
1846
1807
  "kind": "const",
1847
1808
  "value": [
1809
+ 98,
1810
+ 111,
1848
1811
  114,
1812
+ 114,
1813
+ 111,
1814
+ 119,
1849
1815
  101,
1850
- 110,
1851
- 116,
1852
- 97,
1853
- 108,
1816
+ 114,
1854
1817
  95,
1855
- 99,
1856
- 111,
1857
- 110,
1818
+ 115,
1858
1819
  116,
1859
- 114,
1860
1820
  97,
1861
- 99,
1862
- 116
1821
+ 116,
1822
+ 101
1863
1823
  ]
1864
1824
  },
1865
1825
  {
1866
1826
  "kind": "account",
1867
- "path": "fleet"
1827
+ "path": "rental_state.borrower",
1828
+ "account": "RentalState"
1868
1829
  }
1869
1830
  ]
1870
1831
  }
1871
1832
  },
1872
1833
  {
1873
- "name": "owner_state",
1834
+ "name": "contract",
1835
+ "writable": true
1836
+ },
1837
+ {
1838
+ "name": "rental_state",
1874
1839
  "writable": true,
1875
1840
  "pda": {
1876
1841
  "seeds": [
1877
1842
  {
1878
1843
  "kind": "const",
1879
1844
  "value": [
1880
- 111,
1881
- 119,
1882
- 110,
1883
- 101,
1884
1845
  114,
1846
+ 101,
1847
+ 110,
1848
+ 116,
1849
+ 97,
1850
+ 108,
1885
1851
  95,
1886
1852
  115,
1887
1853
  116,
@@ -1892,7 +1858,18 @@
1892
1858
  },
1893
1859
  {
1894
1860
  "kind": "account",
1895
- "path": "owner"
1861
+ "path": "contract"
1862
+ },
1863
+ {
1864
+ "kind": "const",
1865
+ "value": [
1866
+ 97,
1867
+ 99,
1868
+ 116,
1869
+ 105,
1870
+ 118,
1871
+ 101
1872
+ ]
1896
1873
  }
1897
1874
  ]
1898
1875
  }
@@ -1928,10 +1905,20 @@
1928
1905
  {
1929
1906
  "name": "fleet",
1930
1907
  "docs": [
1931
- "Fleet to close rental contract for"
1908
+ "Fleet validated by contract"
1932
1909
  ],
1933
1910
  "writable": true
1934
1911
  },
1912
+ {
1913
+ "name": "game_id"
1914
+ },
1915
+ {
1916
+ "name": "starbase"
1917
+ },
1918
+ {
1919
+ "name": "starbase_player",
1920
+ "writable": true
1921
+ },
1935
1922
  {
1936
1923
  "name": "sage_program"
1937
1924
  },
@@ -1940,26 +1927,32 @@
1940
1927
  "address": "11111111111111111111111111111111"
1941
1928
  }
1942
1929
  ],
1943
- "args": []
1930
+ "args": [],
1931
+ "returns": {
1932
+ "defined": {
1933
+ "name": "Signal"
1934
+ }
1935
+ }
1944
1936
  },
1945
1937
  {
1946
- "name": "close_rental",
1938
+ "name": "create_borrower",
1947
1939
  "docs": [
1948
- "Close a completed or expired rental and clean up state."
1940
+ "Create a new BorrowerState account.",
1941
+ "Must be called before any rental operations (rental_accept, rental_reserve)."
1949
1942
  ],
1950
1943
  "discriminator": [
1951
- 179,
1952
- 188,
1953
- 113,
1954
- 211,
1955
- 41,
1956
- 232,
1957
- 51,
1958
- 51
1944
+ 203,
1945
+ 62,
1946
+ 59,
1947
+ 250,
1948
+ 206,
1949
+ 172,
1950
+ 88,
1951
+ 214
1959
1952
  ],
1960
1953
  "accounts": [
1961
1954
  {
1962
- "name": "payer",
1955
+ "name": "borrower",
1963
1956
  "writable": true,
1964
1957
  "signer": true
1965
1958
  },
@@ -1984,13 +1977,6 @@
1984
1977
  {
1985
1978
  "name": "mint"
1986
1979
  },
1987
- {
1988
- "name": "borrower",
1989
- "writable": true,
1990
- "relations": [
1991
- "rental_state"
1992
- ]
1993
- },
1994
1980
  {
1995
1981
  "name": "borrower_state",
1996
1982
  "writable": true,
@@ -2017,124 +2003,19 @@
2017
2003
  },
2018
2004
  {
2019
2005
  "kind": "account",
2020
- "path": "rental_state.borrower",
2021
- "account": "RentalState"
2006
+ "path": "borrower"
2022
2007
  }
2023
2008
  ]
2024
2009
  }
2025
2010
  },
2026
2011
  {
2027
- "name": "owner_state"
2028
- },
2029
- {
2030
- "name": "owner_token_account",
2031
- "docs": [
2032
- "Owner's managed token account - receives remaining rental escrow"
2033
- ],
2034
- "writable": true,
2035
- "pda": {
2036
- "seeds": [
2037
- {
2038
- "kind": "account",
2039
- "path": "owner_state"
2040
- },
2041
- {
2042
- "kind": "const",
2043
- "value": [
2044
- 6,
2045
- 221,
2046
- 246,
2047
- 225,
2048
- 215,
2049
- 101,
2050
- 161,
2051
- 147,
2052
- 217,
2053
- 203,
2054
- 225,
2055
- 70,
2056
- 206,
2057
- 235,
2058
- 121,
2059
- 172,
2060
- 28,
2061
- 180,
2062
- 133,
2063
- 237,
2064
- 95,
2065
- 91,
2066
- 55,
2067
- 145,
2068
- 58,
2069
- 140,
2070
- 245,
2071
- 133,
2072
- 126,
2073
- 255,
2074
- 0,
2075
- 169
2076
- ]
2077
- },
2078
- {
2079
- "kind": "account",
2080
- "path": "mint"
2081
- }
2082
- ],
2083
- "program": {
2084
- "kind": "const",
2085
- "value": [
2086
- 140,
2087
- 151,
2088
- 37,
2089
- 143,
2090
- 78,
2091
- 36,
2092
- 137,
2093
- 241,
2094
- 187,
2095
- 61,
2096
- 16,
2097
- 41,
2098
- 20,
2099
- 142,
2100
- 13,
2101
- 131,
2102
- 11,
2103
- 90,
2104
- 19,
2105
- 153,
2106
- 218,
2107
- 255,
2108
- 16,
2109
- 132,
2110
- 4,
2111
- 142,
2112
- 123,
2113
- 216,
2114
- 219,
2115
- 233,
2116
- 248,
2117
- 89
2118
- ]
2119
- }
2120
- }
2121
- },
2122
- {
2123
- "name": "contract",
2124
- "writable": true
2125
- },
2126
- {
2127
- "name": "rental_state",
2128
- "writable": true
2129
- },
2130
- {
2131
- "name": "rental_token_account",
2012
+ "name": "managed_token_account",
2132
2013
  "writable": true,
2133
2014
  "pda": {
2134
2015
  "seeds": [
2135
2016
  {
2136
2017
  "kind": "account",
2137
- "path": "rental_state"
2018
+ "path": "borrower_state"
2138
2019
  },
2139
2020
  {
2140
2021
  "kind": "const",
@@ -2217,72 +2098,6 @@
2217
2098
  }
2218
2099
  }
2219
2100
  },
2220
- {
2221
- "name": "rental_authority",
2222
- "pda": {
2223
- "seeds": [
2224
- {
2225
- "kind": "const",
2226
- "value": [
2227
- 114,
2228
- 101,
2229
- 110,
2230
- 116,
2231
- 97,
2232
- 108,
2233
- 95,
2234
- 97,
2235
- 117,
2236
- 116,
2237
- 104,
2238
- 111,
2239
- 114,
2240
- 105,
2241
- 116,
2242
- 121
2243
- ]
2244
- }
2245
- ]
2246
- }
2247
- },
2248
- {
2249
- "name": "rental_thread",
2250
- "docs": [
2251
- "Client always passes derived address; we check data_is_empty() before use."
2252
- ],
2253
- "writable": true
2254
- },
2255
- {
2256
- "name": "fleet",
2257
- "docs": [
2258
- "Fleet validated by contract"
2259
- ],
2260
- "writable": true
2261
- },
2262
- {
2263
- "name": "game_id"
2264
- },
2265
- {
2266
- "name": "starbase"
2267
- },
2268
- {
2269
- "name": "starbase_player",
2270
- "writable": true
2271
- },
2272
- {
2273
- "name": "queued_thread",
2274
- "docs": [
2275
- "Client always passes derived address; we check data_is_empty() before use."
2276
- ],
2277
- "writable": true
2278
- },
2279
- {
2280
- "name": "sage_program"
2281
- },
2282
- {
2283
- "name": "antegen_program",
2284
- "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
2285
- },
2286
2101
  {
2287
2102
  "name": "token_program",
2288
2103
  "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
@@ -2298,8 +2113,20 @@
2298
2113
  ],
2299
2114
  "args": [
2300
2115
  {
2301
- "name": "rental_slot",
2302
- "type": "u8"
2116
+ "name": "borrower_profile",
2117
+ "type": "pubkey"
2118
+ },
2119
+ {
2120
+ "name": "borrower_profile_faction",
2121
+ "type": "pubkey"
2122
+ },
2123
+ {
2124
+ "name": "starbase",
2125
+ "type": "pubkey"
2126
+ },
2127
+ {
2128
+ "name": "starbase_player",
2129
+ "type": "pubkey"
2303
2130
  }
2304
2131
  ]
2305
2132
  },
@@ -2489,18 +2316,59 @@
2489
2316
  }
2490
2317
  },
2491
2318
  {
2492
- "name": "owner_state",
2319
+ "name": "active_rental",
2493
2320
  "writable": true,
2494
2321
  "pda": {
2495
2322
  "seeds": [
2496
2323
  {
2497
2324
  "kind": "const",
2498
2325
  "value": [
2499
- 111,
2500
- 119,
2501
- 110,
2326
+ 114,
2502
2327
  101,
2328
+ 110,
2329
+ 116,
2330
+ 97,
2331
+ 108,
2332
+ 95,
2333
+ 115,
2334
+ 116,
2335
+ 97,
2336
+ 116,
2337
+ 101
2338
+ ]
2339
+ },
2340
+ {
2341
+ "kind": "account",
2342
+ "path": "contract"
2343
+ },
2344
+ {
2345
+ "kind": "const",
2346
+ "value": [
2347
+ 97,
2348
+ 99,
2349
+ 116,
2350
+ 105,
2351
+ 118,
2352
+ 101
2353
+ ]
2354
+ }
2355
+ ]
2356
+ }
2357
+ },
2358
+ {
2359
+ "name": "queued_rental",
2360
+ "writable": true,
2361
+ "pda": {
2362
+ "seeds": [
2363
+ {
2364
+ "kind": "const",
2365
+ "value": [
2503
2366
  114,
2367
+ 101,
2368
+ 110,
2369
+ 116,
2370
+ 97,
2371
+ 108,
2504
2372
  95,
2505
2373
  115,
2506
2374
  116,
@@ -2511,19 +2379,30 @@
2511
2379
  },
2512
2380
  {
2513
2381
  "kind": "account",
2514
- "path": "owner"
2382
+ "path": "contract"
2383
+ },
2384
+ {
2385
+ "kind": "const",
2386
+ "value": [
2387
+ 113,
2388
+ 117,
2389
+ 101,
2390
+ 117,
2391
+ 101,
2392
+ 100
2393
+ ]
2515
2394
  }
2516
2395
  ]
2517
2396
  }
2518
2397
  },
2519
2398
  {
2520
- "name": "owner_token_account",
2399
+ "name": "contract_token_account",
2521
2400
  "writable": true,
2522
2401
  "pda": {
2523
2402
  "seeds": [
2524
2403
  {
2525
2404
  "kind": "account",
2526
- "path": "owner_state"
2405
+ "path": "contract"
2527
2406
  },
2528
2407
  {
2529
2408
  "kind": "const",
@@ -2663,10 +2542,6 @@
2663
2542
  "name": "duration_max",
2664
2543
  "type": "u64"
2665
2544
  },
2666
- {
2667
- "name": "payments_freq",
2668
- "type": "string"
2669
- },
2670
2545
  {
2671
2546
  "name": "owner_key_index",
2672
2547
  "type": "u16"
@@ -2678,104 +2553,32 @@
2678
2553
  {
2679
2554
  "name": "reservations_disabled",
2680
2555
  "type": "bool"
2681
- },
2682
- {
2683
- "name": "automation_required",
2684
- "type": "bool"
2685
2556
  }
2686
2557
  ]
2687
2558
  },
2688
2559
  {
2689
- "name": "delete_config",
2560
+ "name": "create_contract_thread",
2690
2561
  "docs": [
2691
- "Delete global program configuration. Only callable by AUTHORIZED_INITIALIZER.",
2692
- "WARNING: Destructive operation - prevents all program operations until re-initialized.",
2693
- "Use for devnet/testnet when ConfigState schema changes."
2562
+ "Create per-contract automation thread with fiber-based dispatch.",
2563
+ "Creates thread (fiber 0: controller) + fiber 1 (rental_close) + fiber 2 (rental_activate).",
2564
+ "Owner-managed thread lifecycle is independent of contract lifecycle."
2694
2565
  ],
2695
2566
  "discriminator": [
2696
- 219,
2697
- 237,
2698
- 110,
2699
- 222,
2700
- 219,
2701
- 239,
2702
- 70,
2703
- 237
2567
+ 233,
2568
+ 57,
2569
+ 214,
2570
+ 37,
2571
+ 246,
2572
+ 233,
2573
+ 143,
2574
+ 139
2704
2575
  ],
2705
2576
  "accounts": [
2706
2577
  {
2707
- "name": "authority",
2708
- "writable": true,
2709
- "signer": true,
2710
- "address": "5xoQptcACAAAwPunPAgNgoGfEqywR5VyZdUdzGpaTp2z"
2711
- },
2712
- {
2713
- "name": "config",
2714
- "writable": true,
2715
- "pda": {
2716
- "seeds": [
2717
- {
2718
- "kind": "const",
2719
- "value": [
2720
- 99,
2721
- 111,
2722
- 110,
2723
- 102,
2724
- 105,
2725
- 103
2726
- ]
2727
- }
2728
- ]
2729
- }
2730
- },
2731
- {
2732
- "name": "mint"
2733
- },
2734
- {
2735
- "name": "vault",
2736
- "writable": true
2737
- },
2738
- {
2739
- "name": "vault_token_account",
2740
- "writable": true
2741
- },
2742
- {
2743
- "name": "srsly_program",
2744
- "address": "SRSLYxcFnjd5jG2DpJw4as6UEyjwJQK1U4J1TD1hvZH"
2745
- },
2746
- {
2747
- "name": "slyvault_program",
2748
- "address": "VLTukwau1TDGhQUgBJfSSojSMv3BfnMHKrewnGN98M3"
2749
- },
2750
- {
2751
- "name": "token_program",
2752
- "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
2753
- },
2754
- {
2755
- "name": "system_program",
2756
- "address": "11111111111111111111111111111111"
2757
- }
2758
- ],
2759
- "args": []
2760
- },
2761
- {
2762
- "name": "delete_contract",
2763
- "docs": [
2764
- "Delete contract state (dev-only for schema migrations)"
2765
- ],
2766
- "discriminator": [
2767
- 189,
2768
- 115,
2769
- 12,
2770
- 22,
2771
- 241,
2772
- 49,
2773
- 35,
2774
- 6
2775
- ],
2776
- "accounts": [
2777
- {
2778
- "name": "admin",
2578
+ "name": "payer",
2579
+ "docs": [
2580
+ "Payer must be contract owner"
2581
+ ],
2779
2582
  "writable": true,
2780
2583
  "signer": true
2781
2584
  },
@@ -2798,113 +2601,11 @@
2798
2601
  }
2799
2602
  },
2800
2603
  {
2801
- "name": "owner",
2802
- "writable": true
2604
+ "name": "mint"
2803
2605
  },
2804
2606
  {
2805
2607
  "name": "contract",
2806
- "writable": true
2807
- }
2808
- ],
2809
- "args": []
2810
- },
2811
- {
2812
- "name": "delete_rental",
2813
- "docs": [
2814
- "Delete rental state (admin-only for schema migrations).",
2815
- "After deletion, use release_rental to clean up thread + SAGE fleet."
2816
- ],
2817
- "discriminator": [
2818
- 252,
2819
- 24,
2820
- 115,
2821
- 220,
2822
- 135,
2823
- 174,
2824
- 69,
2825
- 172
2826
- ],
2827
- "accounts": [
2828
- {
2829
- "name": "admin",
2830
- "writable": true,
2831
- "signer": true
2832
- },
2833
- {
2834
- "name": "config",
2835
- "pda": {
2836
- "seeds": [
2837
- {
2838
- "kind": "const",
2839
- "value": [
2840
- 99,
2841
- 111,
2842
- 110,
2843
- 102,
2844
- 105,
2845
- 103
2846
- ]
2847
- }
2848
- ]
2849
- }
2850
- },
2851
- {
2852
- "name": "borrower",
2853
- "writable": true
2854
- },
2855
- {
2856
- "name": "rental_state",
2857
- "writable": true
2858
- }
2859
- ],
2860
- "args": []
2861
- },
2862
- {
2863
- "name": "invalidate_rental",
2864
- "docs": [
2865
- "Invalidate a fleet's rental status in SAGE when contract doesn't exist.",
2866
- "Use when fleet is stuck but borrower is unknown and contract was never created."
2867
- ],
2868
- "discriminator": [
2869
- 180,
2870
- 183,
2871
- 106,
2872
- 153,
2873
- 255,
2874
- 8,
2875
- 232,
2876
- 178
2877
- ],
2878
- "accounts": [
2879
- {
2880
- "name": "signer",
2881
2608
  "writable": true,
2882
- "signer": true
2883
- },
2884
- {
2885
- "name": "fleet",
2886
- "docs": [
2887
- "Fleet to release from rental control",
2888
- "- Must be in rental mode (sub_profile != default)",
2889
- "- SRSLY must be the invalidator"
2890
- ],
2891
- "writable": true
2892
- },
2893
- {
2894
- "name": "game_id"
2895
- },
2896
- {
2897
- "name": "starbase"
2898
- },
2899
- {
2900
- "name": "starbase_player",
2901
- "writable": true
2902
- },
2903
- {
2904
- "name": "contract",
2905
- "docs": [
2906
- "If contract exists, use rental_release instead"
2907
- ],
2908
2609
  "pda": {
2909
2610
  "seeds": [
2910
2611
  {
@@ -2929,89 +2630,15 @@
2929
2630
  },
2930
2631
  {
2931
2632
  "kind": "account",
2932
- "path": "fleet"
2633
+ "path": "contract.fleet",
2634
+ "account": "ContractState"
2933
2635
  }
2934
2636
  ]
2935
2637
  }
2936
2638
  },
2937
2639
  {
2938
2640
  "name": "rental_authority",
2939
- "pda": {
2940
- "seeds": [
2941
- {
2942
- "kind": "const",
2943
- "value": [
2944
- 114,
2945
- 101,
2946
- 110,
2947
- 116,
2948
- 97,
2949
- 108,
2950
- 95,
2951
- 97,
2952
- 117,
2953
- 116,
2954
- 104,
2955
- 111,
2956
- 114,
2957
- 105,
2958
- 116,
2959
- 121
2960
- ]
2961
- }
2962
- ]
2963
- }
2964
- },
2965
- {
2966
- "name": "sage_program"
2967
- }
2968
- ],
2969
- "args": []
2970
- },
2971
- {
2972
- "name": "pay_rental",
2973
- "docs": [
2974
- "Handles recurring rental payments via an automated thread."
2975
- ],
2976
- "discriminator": [
2977
- 114,
2978
- 15,
2979
- 111,
2980
- 207,
2981
- 115,
2982
- 207,
2983
- 108,
2984
- 169
2985
- ],
2986
- "accounts": [
2987
- {
2988
- "name": "rental_thread",
2989
2641
  "writable": true,
2990
- "signer": true
2991
- },
2992
- {
2993
- "name": "config",
2994
- "pda": {
2995
- "seeds": [
2996
- {
2997
- "kind": "const",
2998
- "value": [
2999
- 99,
3000
- 111,
3001
- 110,
3002
- 102,
3003
- 105,
3004
- 103
3005
- ]
3006
- }
3007
- ]
3008
- }
3009
- },
3010
- {
3011
- "name": "mint"
3012
- },
3013
- {
3014
- "name": "rental_authority",
3015
2642
  "pda": {
3016
2643
  "seeds": [
3017
2644
  {
@@ -3039,147 +2666,34 @@
3039
2666
  }
3040
2667
  },
3041
2668
  {
3042
- "name": "contract",
3043
- "writable": true,
3044
- "pda": {
3045
- "seeds": [
3046
- {
3047
- "kind": "const",
3048
- "value": [
3049
- 114,
3050
- 101,
3051
- 110,
3052
- 116,
3053
- 97,
3054
- 108,
3055
- 95,
3056
- 99,
3057
- 111,
3058
- 110,
3059
- 116,
3060
- 114,
3061
- 97,
3062
- 99,
3063
- 116
3064
- ]
3065
- },
3066
- {
3067
- "kind": "account",
3068
- "path": "contract.fleet",
3069
- "account": "ContractState"
3070
- }
3071
- ]
3072
- }
3073
- },
3074
- {
3075
- "name": "owner_state"
2669
+ "name": "contract_thread",
2670
+ "writable": true
3076
2671
  },
3077
- {
3078
- "name": "owner_token_account",
3079
- "docs": [
3080
- "Owner's managed token account - receives all owner payments"
3081
- ],
3082
- "writable": true,
3083
- "pda": {
3084
- "seeds": [
3085
- {
3086
- "kind": "account",
3087
- "path": "owner_state"
3088
- },
3089
- {
3090
- "kind": "const",
3091
- "value": [
3092
- 6,
3093
- 221,
3094
- 246,
3095
- 225,
3096
- 215,
3097
- 101,
3098
- 161,
3099
- 147,
3100
- 217,
3101
- 203,
3102
- 225,
3103
- 70,
3104
- 206,
3105
- 235,
3106
- 121,
3107
- 172,
3108
- 28,
3109
- 180,
3110
- 133,
3111
- 237,
3112
- 95,
3113
- 91,
3114
- 55,
3115
- 145,
3116
- 58,
3117
- 140,
3118
- 245,
3119
- 133,
3120
- 126,
3121
- 255,
3122
- 0,
3123
- 169
3124
- ]
3125
- },
3126
- {
3127
- "kind": "account",
3128
- "path": "config.atlas_mint",
3129
- "account": "ConfigState"
3130
- }
3131
- ],
3132
- "program": {
3133
- "kind": "const",
3134
- "value": [
3135
- 140,
3136
- 151,
3137
- 37,
3138
- 143,
3139
- 78,
3140
- 36,
3141
- 137,
3142
- 241,
3143
- 187,
3144
- 61,
3145
- 16,
3146
- 41,
3147
- 20,
3148
- 142,
3149
- 13,
3150
- 131,
3151
- 11,
3152
- 90,
3153
- 19,
3154
- 153,
3155
- 218,
3156
- 255,
3157
- 16,
3158
- 132,
3159
- 4,
3160
- 142,
3161
- 123,
3162
- 216,
3163
- 219,
3164
- 233,
3165
- 248,
3166
- 89
3167
- ]
3168
- }
3169
- }
2672
+ {
2673
+ "name": "close_rental_fiber",
2674
+ "writable": true
3170
2675
  },
3171
2676
  {
3172
- "name": "rental_state",
2677
+ "name": "owner"
2678
+ },
2679
+ {
2680
+ "name": "contract_token_account",
2681
+ "docs": [
2682
+ "Contract's escrow token account (validated here, passed to contract_process)"
2683
+ ],
3173
2684
  "writable": true
3174
2685
  },
3175
2686
  {
3176
- "name": "rental_token_account",
2687
+ "name": "owner_token_account",
2688
+ "docs": [
2689
+ "Owner's ATLAS destination (created here, used by contract_process for auto-transfer)"
2690
+ ],
3177
2691
  "writable": true,
3178
2692
  "pda": {
3179
2693
  "seeds": [
3180
2694
  {
3181
2695
  "kind": "account",
3182
- "path": "rental_state"
2696
+ "path": "owner"
3183
2697
  },
3184
2698
  {
3185
2699
  "kind": "const",
@@ -3220,8 +2734,7 @@
3220
2734
  },
3221
2735
  {
3222
2736
  "kind": "account",
3223
- "path": "config.atlas_mint",
3224
- "account": "ConfigState"
2737
+ "path": "mint"
3225
2738
  }
3226
2739
  ],
3227
2740
  "program": {
@@ -3264,25 +2777,57 @@
3264
2777
  }
3265
2778
  },
3266
2779
  {
3267
- "name": "borrower",
3268
- "writable": true
2780
+ "name": "active_rental",
2781
+ "pda": {
2782
+ "seeds": [
2783
+ {
2784
+ "kind": "const",
2785
+ "value": [
2786
+ 114,
2787
+ 101,
2788
+ 110,
2789
+ 116,
2790
+ 97,
2791
+ 108,
2792
+ 95,
2793
+ 115,
2794
+ 116,
2795
+ 97,
2796
+ 116,
2797
+ 101
2798
+ ]
2799
+ },
2800
+ {
2801
+ "kind": "account",
2802
+ "path": "contract"
2803
+ },
2804
+ {
2805
+ "kind": "const",
2806
+ "value": [
2807
+ 97,
2808
+ 99,
2809
+ 116,
2810
+ 105,
2811
+ 118,
2812
+ 101
2813
+ ]
2814
+ }
2815
+ ]
2816
+ }
3269
2817
  },
3270
2818
  {
3271
- "name": "borrower_state",
3272
- "writable": true,
2819
+ "name": "queued_rental",
3273
2820
  "pda": {
3274
2821
  "seeds": [
3275
2822
  {
3276
2823
  "kind": "const",
3277
2824
  "value": [
3278
- 98,
3279
- 111,
3280
- 114,
3281
2825
  114,
3282
- 111,
3283
- 119,
3284
2826
  101,
3285
- 114,
2827
+ 110,
2828
+ 116,
2829
+ 97,
2830
+ 108,
3286
2831
  95,
3287
2832
  115,
3288
2833
  116,
@@ -3293,84 +2838,242 @@
3293
2838
  },
3294
2839
  {
3295
2840
  "kind": "account",
3296
- "path": "rental_state.borrower",
3297
- "account": "RentalState"
2841
+ "path": "contract"
2842
+ },
2843
+ {
2844
+ "kind": "const",
2845
+ "value": [
2846
+ 113,
2847
+ 117,
2848
+ 101,
2849
+ 117,
2850
+ 101,
2851
+ 100
2852
+ ]
3298
2853
  }
3299
2854
  ]
3300
2855
  }
3301
2856
  },
3302
2857
  {
3303
- "name": "fleet",
3304
- "docs": [
3305
- "Fleet address validated by contract"
3306
- ],
3307
- "writable": true
2858
+ "name": "sage_program"
3308
2859
  },
3309
2860
  {
3310
- "name": "game_id"
2861
+ "name": "antegen_program",
2862
+ "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
3311
2863
  },
3312
2864
  {
3313
- "name": "starbase"
2865
+ "name": "token_program",
2866
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
3314
2867
  },
3315
2868
  {
3316
- "name": "starbase_player",
3317
- "writable": true
2869
+ "name": "associated_token_program",
2870
+ "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
3318
2871
  },
3319
2872
  {
3320
- "name": "borrower_profile"
2873
+ "name": "system_program",
2874
+ "address": "11111111111111111111111111111111"
2875
+ }
2876
+ ],
2877
+ "args": [
2878
+ {
2879
+ "name": "lamports",
2880
+ "type": "u64"
3321
2881
  },
3322
2882
  {
3323
- "name": "borrower_profile_faction"
2883
+ "name": "payments_freq",
2884
+ "type": "string"
2885
+ }
2886
+ ]
2887
+ },
2888
+ {
2889
+ "name": "delete_config",
2890
+ "docs": [
2891
+ "Delete global program configuration. Only callable by AUTHORIZED_INITIALIZER.",
2892
+ "WARNING: Destructive operation - prevents all program operations until re-initialized.",
2893
+ "Use for devnet/testnet when ConfigState schema changes."
2894
+ ],
2895
+ "discriminator": [
2896
+ 219,
2897
+ 237,
2898
+ 110,
2899
+ 222,
2900
+ 219,
2901
+ 239,
2902
+ 70,
2903
+ 237
2904
+ ],
2905
+ "accounts": [
2906
+ {
2907
+ "name": "authority",
2908
+ "writable": true,
2909
+ "signer": true,
2910
+ "address": "5xoQptcACAAAwPunPAgNgoGfEqywR5VyZdUdzGpaTp2z"
3324
2911
  },
3325
2912
  {
3326
- "name": "queued_thread",
3327
- "docs": [
3328
- "Client always passes derived address; we check data_is_empty() before use."
3329
- ],
2913
+ "name": "config",
2914
+ "writable": true,
2915
+ "pda": {
2916
+ "seeds": [
2917
+ {
2918
+ "kind": "const",
2919
+ "value": [
2920
+ 99,
2921
+ 111,
2922
+ 110,
2923
+ 102,
2924
+ 105,
2925
+ 103
2926
+ ]
2927
+ }
2928
+ ]
2929
+ }
2930
+ },
2931
+ {
2932
+ "name": "mint"
2933
+ },
2934
+ {
2935
+ "name": "vault",
3330
2936
  "writable": true
3331
2937
  },
3332
2938
  {
3333
- "name": "sage_program"
2939
+ "name": "vault_token_account",
2940
+ "writable": true
3334
2941
  },
3335
2942
  {
3336
- "name": "antegen_program",
3337
- "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
2943
+ "name": "srsly_program",
2944
+ "address": "SRSLYxcFnjd5jG2DpJw4as6UEyjwJQK1U4J1TD1hvZH"
2945
+ },
2946
+ {
2947
+ "name": "slyvault_program",
2948
+ "address": "VLTukwau1TDGhQUgBJfSSojSMv3BfnMHKrewnGN98M3"
3338
2949
  },
3339
2950
  {
3340
2951
  "name": "token_program",
3341
2952
  "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
3342
2953
  },
3343
2954
  {
3344
- "name": "associated_token_program",
3345
- "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
2955
+ "name": "system_program",
2956
+ "address": "11111111111111111111111111111111"
2957
+ }
2958
+ ],
2959
+ "args": []
2960
+ },
2961
+ {
2962
+ "name": "delete_contract",
2963
+ "docs": [
2964
+ "Delete contract state (dev-only for schema migrations)"
2965
+ ],
2966
+ "discriminator": [
2967
+ 189,
2968
+ 115,
2969
+ 12,
2970
+ 22,
2971
+ 241,
2972
+ 49,
2973
+ 35,
2974
+ 6
2975
+ ],
2976
+ "accounts": [
2977
+ {
2978
+ "name": "admin",
2979
+ "writable": true,
2980
+ "signer": true
2981
+ },
2982
+ {
2983
+ "name": "config",
2984
+ "pda": {
2985
+ "seeds": [
2986
+ {
2987
+ "kind": "const",
2988
+ "value": [
2989
+ 99,
2990
+ 111,
2991
+ 110,
2992
+ 102,
2993
+ 105,
2994
+ 103
2995
+ ]
2996
+ }
2997
+ ]
2998
+ }
2999
+ },
3000
+ {
3001
+ "name": "owner",
3002
+ "writable": true
3003
+ },
3004
+ {
3005
+ "name": "contract",
3006
+ "writable": true
3007
+ }
3008
+ ],
3009
+ "args": []
3010
+ },
3011
+ {
3012
+ "name": "delete_rental",
3013
+ "docs": [
3014
+ "Delete rental state (admin-only for schema migrations).",
3015
+ "After deletion, use release_rental to clean up thread + SAGE fleet."
3016
+ ],
3017
+ "discriminator": [
3018
+ 252,
3019
+ 24,
3020
+ 115,
3021
+ 220,
3022
+ 135,
3023
+ 174,
3024
+ 69,
3025
+ 172
3026
+ ],
3027
+ "accounts": [
3028
+ {
3029
+ "name": "admin",
3030
+ "writable": true,
3031
+ "signer": true
3032
+ },
3033
+ {
3034
+ "name": "config",
3035
+ "pda": {
3036
+ "seeds": [
3037
+ {
3038
+ "kind": "const",
3039
+ "value": [
3040
+ 99,
3041
+ 111,
3042
+ 110,
3043
+ 102,
3044
+ 105,
3045
+ 103
3046
+ ]
3047
+ }
3048
+ ]
3049
+ }
3050
+ },
3051
+ {
3052
+ "name": "borrower",
3053
+ "writable": true
3346
3054
  },
3347
3055
  {
3348
- "name": "system_program",
3349
- "address": "11111111111111111111111111111111"
3056
+ "name": "rental_state",
3057
+ "writable": true
3350
3058
  }
3351
3059
  ],
3352
- "args": [],
3353
- "returns": {
3354
- "defined": {
3355
- "name": "Signal"
3356
- }
3357
- }
3060
+ "args": []
3358
3061
  },
3359
3062
  {
3360
- "name": "release_rental",
3063
+ "name": "invalidate_rental",
3361
3064
  "docs": [
3362
- "Release a fleet from rental control regardless of state.",
3363
- "Emergency function to free stuck fleets by invalidating rental in SAGE."
3065
+ "Invalidate a fleet's rental status in SAGE when contract doesn't exist.",
3066
+ "Use when fleet is stuck but borrower is unknown and contract was never created."
3364
3067
  ],
3365
3068
  "discriminator": [
3366
- 99,
3367
- 35,
3368
- 221,
3369
- 147,
3370
- 185,
3371
- 205,
3372
- 23,
3373
- 12
3069
+ 180,
3070
+ 183,
3071
+ 106,
3072
+ 153,
3073
+ 255,
3074
+ 8,
3075
+ 232,
3076
+ 178
3374
3077
  ],
3375
3078
  "accounts": [
3376
3079
  {
@@ -3400,8 +3103,7 @@
3400
3103
  {
3401
3104
  "name": "contract",
3402
3105
  "docs": [
3403
- "Contract must exist - if contract doesn't exist, use rental_invalidate instead",
3404
- "Constraint ensures no active rental (both slots empty)"
3106
+ "If contract exists, use rental_release instead"
3405
3107
  ],
3406
3108
  "pda": {
3407
3109
  "seeds": [
@@ -3467,38 +3169,29 @@
3467
3169
  "args": []
3468
3170
  },
3469
3171
  {
3470
- "name": "reserve_rental",
3172
+ "name": "pay_contract",
3471
3173
  "docs": [
3472
- "Reserve a rental using points OR ATLAS.",
3473
- "",
3474
- "Grants the winner an exclusive reservation window to accept a rental.",
3475
- "Does NOT transfer control of any active rental.",
3476
- "",
3477
- "# Arguments",
3478
- "* `amount` - Amount to bid (points or ATLAS lamports based on token account presence)",
3479
- "",
3480
- "If challenger_token_account is provided → ATLAS reservation",
3481
- "If challenger_token_account is None → Points reservation"
3174
+ "Controller fiber (fiber 0) checks state, settles escrow, dispatches.",
3175
+ "Called by antegen thread executor automatically."
3482
3176
  ],
3483
3177
  "discriminator": [
3484
- 5,
3485
- 180,
3486
- 4,
3487
- 150,
3488
- 64,
3489
- 120,
3490
- 189,
3491
- 128
3178
+ 60,
3179
+ 0,
3180
+ 40,
3181
+ 247,
3182
+ 62,
3183
+ 92,
3184
+ 76,
3185
+ 10
3492
3186
  ],
3493
3187
  "accounts": [
3494
3188
  {
3495
- "name": "challenger",
3189
+ "name": "contract_thread",
3496
3190
  "writable": true,
3497
3191
  "signer": true
3498
3192
  },
3499
3193
  {
3500
3194
  "name": "config",
3501
- "writable": true,
3502
3195
  "pda": {
3503
3196
  "seeds": [
3504
3197
  {
@@ -3515,9 +3208,6 @@
3515
3208
  ]
3516
3209
  }
3517
3210
  },
3518
- {
3519
- "name": "mint"
3520
- },
3521
3211
  {
3522
3212
  "name": "contract",
3523
3213
  "writable": true,
@@ -3552,21 +3242,19 @@
3552
3242
  }
3553
3243
  },
3554
3244
  {
3555
- "name": "challenger_state",
3245
+ "name": "active_rental",
3556
3246
  "writable": true,
3557
3247
  "pda": {
3558
3248
  "seeds": [
3559
3249
  {
3560
3250
  "kind": "const",
3561
3251
  "value": [
3562
- 98,
3563
- 111,
3564
3252
  114,
3565
- 114,
3566
- 111,
3567
- 119,
3568
3253
  101,
3569
- 114,
3254
+ 110,
3255
+ 116,
3256
+ 97,
3257
+ 108,
3570
3258
  95,
3571
3259
  115,
3572
3260
  116,
@@ -3577,324 +3265,281 @@
3577
3265
  },
3578
3266
  {
3579
3267
  "kind": "account",
3580
- "path": "challenger"
3268
+ "path": "contract"
3269
+ },
3270
+ {
3271
+ "kind": "const",
3272
+ "value": [
3273
+ 97,
3274
+ 99,
3275
+ 116,
3276
+ 105,
3277
+ 118,
3278
+ 101
3279
+ ]
3581
3280
  }
3582
3281
  ]
3583
3282
  }
3584
3283
  },
3585
3284
  {
3586
- "name": "challenger_token_account",
3587
- "docs": [
3588
- "Challenger's ATLAS token account (optional)",
3589
- "If provided → ATLAS reservation, amount interpreted as ATLAS lamports",
3590
- "If None → Points reservation, amount interpreted as points"
3591
- ],
3592
- "writable": true,
3593
- "optional": true
3594
- },
3595
- {
3596
- "name": "challenger_managed_token_account",
3285
+ "name": "queued_rental",
3597
3286
  "writable": true,
3598
3287
  "pda": {
3599
3288
  "seeds": [
3600
- {
3601
- "kind": "account",
3602
- "path": "challenger_state"
3603
- },
3604
3289
  {
3605
3290
  "kind": "const",
3606
3291
  "value": [
3607
- 6,
3608
- 221,
3609
- 246,
3610
- 225,
3611
- 215,
3292
+ 114,
3612
3293
  101,
3613
- 161,
3614
- 147,
3615
- 217,
3616
- 203,
3617
- 225,
3618
- 70,
3619
- 206,
3620
- 235,
3621
- 121,
3622
- 172,
3623
- 28,
3624
- 180,
3625
- 133,
3626
- 237,
3294
+ 110,
3295
+ 116,
3296
+ 97,
3297
+ 108,
3627
3298
  95,
3628
- 91,
3629
- 55,
3630
- 145,
3631
- 58,
3632
- 140,
3633
- 245,
3634
- 133,
3635
- 126,
3636
- 255,
3637
- 0,
3638
- 169
3299
+ 115,
3300
+ 116,
3301
+ 97,
3302
+ 116,
3303
+ 101
3639
3304
  ]
3640
3305
  },
3641
3306
  {
3642
3307
  "kind": "account",
3643
- "path": "mint"
3308
+ "path": "contract"
3309
+ },
3310
+ {
3311
+ "kind": "const",
3312
+ "value": [
3313
+ 113,
3314
+ 117,
3315
+ 101,
3316
+ 117,
3317
+ 101,
3318
+ 100
3319
+ ]
3644
3320
  }
3645
- ],
3646
- "program": {
3647
- "kind": "const",
3648
- "value": [
3649
- 140,
3650
- 151,
3651
- 37,
3652
- 143,
3653
- 78,
3654
- 36,
3655
- 137,
3656
- 241,
3657
- 187,
3658
- 61,
3659
- 16,
3660
- 41,
3661
- 20,
3662
- 142,
3663
- 13,
3664
- 131,
3665
- 11,
3666
- 90,
3667
- 19,
3668
- 153,
3669
- 218,
3670
- 255,
3671
- 16,
3672
- 132,
3673
- 4,
3674
- 142,
3675
- 123,
3676
- 216,
3677
- 219,
3678
- 233,
3679
- 248,
3680
- 89
3681
- ]
3682
- }
3321
+ ]
3683
3322
  }
3684
3323
  },
3685
3324
  {
3686
- "name": "defender_state",
3325
+ "name": "owner",
3326
+ "writable": true
3327
+ },
3328
+ {
3329
+ "name": "fleet",
3330
+ "docs": [
3331
+ "Fleet for SAGE invalidation on close"
3332
+ ],
3333
+ "writable": true
3334
+ },
3335
+ {
3336
+ "name": "contract_token_account",
3337
+ "docs": [
3338
+ "Contract's escrow token account (source of tokens)"
3339
+ ],
3340
+ "writable": true
3341
+ },
3342
+ {
3343
+ "name": "owner_token_account",
3344
+ "docs": [
3345
+ "Owner's destination token account (created by contract_thread)"
3346
+ ],
3347
+ "writable": true
3348
+ },
3349
+ {
3350
+ "name": "rental_authority",
3687
3351
  "writable": true,
3688
- "optional": true,
3689
3352
  "pda": {
3690
3353
  "seeds": [
3691
3354
  {
3692
3355
  "kind": "const",
3693
3356
  "value": [
3694
- 98,
3695
- 111,
3696
- 114,
3697
3357
  114,
3698
- 111,
3699
- 119,
3700
3358
  101,
3701
- 114,
3702
- 95,
3703
- 115,
3359
+ 110,
3704
3360
  116,
3705
3361
  97,
3362
+ 108,
3363
+ 95,
3364
+ 97,
3365
+ 117,
3706
3366
  116,
3707
- 101
3367
+ 104,
3368
+ 111,
3369
+ 114,
3370
+ 105,
3371
+ 116,
3372
+ 121
3708
3373
  ]
3709
- },
3710
- {
3711
- "kind": "account",
3712
- "path": "defender_state.borrower",
3713
- "account": "BorrowerState"
3714
3374
  }
3715
3375
  ]
3716
3376
  }
3717
3377
  },
3718
3378
  {
3719
- "name": "defender_managed_token_account",
3379
+ "name": "sage_program"
3380
+ },
3381
+ {
3382
+ "name": "antegen_program",
3383
+ "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
3384
+ },
3385
+ {
3386
+ "name": "token_program",
3387
+ "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
3388
+ },
3389
+ {
3390
+ "name": "system_program",
3391
+ "address": "11111111111111111111111111111111"
3392
+ }
3393
+ ],
3394
+ "args": [],
3395
+ "returns": {
3396
+ "defined": {
3397
+ "name": "Signal"
3398
+ }
3399
+ }
3400
+ },
3401
+ {
3402
+ "name": "release_rental",
3403
+ "docs": [
3404
+ "Release a fleet from rental control regardless of state.",
3405
+ "Emergency function to free stuck fleets by invalidating rental in SAGE."
3406
+ ],
3407
+ "discriminator": [
3408
+ 99,
3409
+ 35,
3410
+ 221,
3411
+ 147,
3412
+ 185,
3413
+ 205,
3414
+ 23,
3415
+ 12
3416
+ ],
3417
+ "accounts": [
3418
+ {
3419
+ "name": "signer",
3420
+ "writable": true,
3421
+ "signer": true
3422
+ },
3423
+ {
3424
+ "name": "fleet",
3720
3425
  "docs": [
3721
- "Defender's managed token account (created when they reserved)",
3722
- "Required to return their funds + bonus when knocked off",
3723
- "Validated against defender_state.managed_token_account in instruction logic"
3426
+ "Fleet to release from rental control",
3427
+ "- Must be in rental mode (sub_profile != default)",
3428
+ "- SRSLY must be the invalidator"
3724
3429
  ],
3725
- "writable": true,
3726
- "optional": true
3430
+ "writable": true
3727
3431
  },
3728
3432
  {
3729
- "name": "owner_state",
3730
- "writable": true,
3433
+ "name": "game_id"
3434
+ },
3435
+ {
3436
+ "name": "starbase"
3437
+ },
3438
+ {
3439
+ "name": "starbase_player",
3440
+ "writable": true
3441
+ },
3442
+ {
3443
+ "name": "contract",
3444
+ "docs": [
3445
+ "Contract must exist - if contract doesn't exist, use rental_invalidate instead",
3446
+ "Constraint ensures no active rental (both slots empty)"
3447
+ ],
3731
3448
  "pda": {
3732
3449
  "seeds": [
3733
3450
  {
3734
3451
  "kind": "const",
3735
3452
  "value": [
3736
- 111,
3737
- 119,
3738
- 110,
3739
- 101,
3740
3453
  114,
3741
- 95,
3742
- 115,
3454
+ 101,
3455
+ 110,
3743
3456
  116,
3744
3457
  97,
3458
+ 108,
3459
+ 95,
3460
+ 99,
3461
+ 111,
3462
+ 110,
3745
3463
  116,
3746
- 101
3464
+ 114,
3465
+ 97,
3466
+ 99,
3467
+ 116
3747
3468
  ]
3748
3469
  },
3749
3470
  {
3750
3471
  "kind": "account",
3751
- "path": "contract.owner",
3752
- "account": "ContractState"
3472
+ "path": "fleet"
3753
3473
  }
3754
3474
  ]
3755
3475
  }
3756
3476
  },
3757
3477
  {
3758
- "name": "owner_token_account",
3759
- "docs": [
3760
- "Owner's managed token account for ATLAS reservations"
3761
- ],
3762
- "writable": true,
3478
+ "name": "rental_authority",
3763
3479
  "pda": {
3764
3480
  "seeds": [
3765
- {
3766
- "kind": "account",
3767
- "path": "owner_state"
3768
- },
3769
3481
  {
3770
3482
  "kind": "const",
3771
3483
  "value": [
3772
- 6,
3773
- 221,
3774
- 246,
3775
- 225,
3776
- 215,
3484
+ 114,
3777
3485
  101,
3778
- 161,
3779
- 147,
3780
- 217,
3781
- 203,
3782
- 225,
3783
- 70,
3784
- 206,
3785
- 235,
3786
- 121,
3787
- 172,
3788
- 28,
3789
- 180,
3790
- 133,
3791
- 237,
3486
+ 110,
3487
+ 116,
3488
+ 97,
3489
+ 108,
3792
3490
  95,
3793
- 91,
3794
- 55,
3795
- 145,
3796
- 58,
3797
- 140,
3798
- 245,
3799
- 133,
3800
- 126,
3801
- 255,
3802
- 0,
3803
- 169
3491
+ 97,
3492
+ 117,
3493
+ 116,
3494
+ 104,
3495
+ 111,
3496
+ 114,
3497
+ 105,
3498
+ 116,
3499
+ 121
3804
3500
  ]
3805
- },
3806
- {
3807
- "kind": "account",
3808
- "path": "mint"
3809
3501
  }
3810
- ],
3811
- "program": {
3812
- "kind": "const",
3813
- "value": [
3814
- 140,
3815
- 151,
3816
- 37,
3817
- 143,
3818
- 78,
3819
- 36,
3820
- 137,
3821
- 241,
3822
- 187,
3823
- 61,
3824
- 16,
3825
- 41,
3826
- 20,
3827
- 142,
3828
- 13,
3829
- 131,
3830
- 11,
3831
- 90,
3832
- 19,
3833
- 153,
3834
- 218,
3835
- 255,
3836
- 16,
3837
- 132,
3838
- 4,
3839
- 142,
3840
- 123,
3841
- 216,
3842
- 219,
3843
- 233,
3844
- 248,
3845
- 89
3846
- ]
3847
- }
3502
+ ]
3848
3503
  }
3849
3504
  },
3850
3505
  {
3851
- "name": "token_program",
3852
- "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
3853
- },
3854
- {
3855
- "name": "associated_token_program",
3856
- "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
3857
- },
3858
- {
3859
- "name": "system_program",
3860
- "address": "11111111111111111111111111111111"
3506
+ "name": "sage_program"
3861
3507
  }
3862
3508
  ],
3863
- "args": [
3864
- {
3865
- "name": "amount",
3866
- "type": "u64"
3867
- }
3868
- ]
3509
+ "args": []
3869
3510
  },
3870
3511
  {
3871
- "name": "schedule_rental",
3512
+ "name": "reserve_rental",
3872
3513
  "docs": [
3873
- "Schedule automated payments for an existing rental.",
3874
- "Creates a thread that will execute rental_pay at the specified frequency.",
3875
- "Optional - rentals can operate manually without scheduling."
3514
+ "Reserve a rental and queue it for activation when the current rental ends.",
3515
+ "",
3516
+ "Combines the old reserve + claim flow: the reservation IS the queued rental.",
3517
+ "Escrow is transferred immediately and the rental is queued for activation.",
3518
+ "",
3519
+ "# Arguments",
3520
+ "* `amount` - Points to bid for knockoff comparison (0 for ATLAS-only bid)",
3521
+ "* `duration` - Rental duration in seconds",
3522
+ "* `discount_auth` - Optional discount authorization for deferred fee"
3876
3523
  ],
3877
3524
  "discriminator": [
3878
- 172,
3879
- 101,
3880
- 32,
3881
- 165,
3882
- 141,
3883
- 40,
3884
- 8,
3885
- 35
3525
+ 5,
3526
+ 180,
3527
+ 4,
3528
+ 150,
3529
+ 64,
3530
+ 120,
3531
+ 189,
3532
+ 128
3886
3533
  ],
3887
3534
  "accounts": [
3888
3535
  {
3889
- "name": "payer",
3890
- "docs": [
3891
- "Payer must be borrower OR owner"
3892
- ],
3536
+ "name": "challenger",
3893
3537
  "writable": true,
3894
3538
  "signer": true
3895
3539
  },
3896
3540
  {
3897
3541
  "name": "config",
3542
+ "writable": true,
3898
3543
  "pda": {
3899
3544
  "seeds": [
3900
3545
  {
@@ -3911,11 +3556,9 @@
3911
3556
  ]
3912
3557
  }
3913
3558
  },
3914
- {
3915
- "name": "mint"
3916
- },
3917
3559
  {
3918
3560
  "name": "contract",
3561
+ "writable": true,
3919
3562
  "pda": {
3920
3563
  "seeds": [
3921
3564
  {
@@ -3947,25 +3590,79 @@
3947
3590
  }
3948
3591
  },
3949
3592
  {
3950
- "name": "fleet",
3951
- "relations": [
3952
- "contract"
3953
- ]
3593
+ "name": "contract_thread",
3594
+ "writable": true
3954
3595
  },
3955
3596
  {
3956
- "name": "rental_state",
3597
+ "name": "activate_rental_fiber",
3957
3598
  "writable": true
3958
3599
  },
3959
3600
  {
3960
- "name": "borrower_profile_faction"
3601
+ "name": "contract_token_account",
3602
+ "docs": [
3603
+ "Contract's token account for ATLAS escrow"
3604
+ ],
3605
+ "writable": true
3606
+ },
3607
+ {
3608
+ "name": "defender_state",
3609
+ "docs": [
3610
+ "Defender's borrower state (required when knocking off a defender)"
3611
+ ],
3612
+ "writable": true,
3613
+ "optional": true
3614
+ },
3615
+ {
3616
+ "name": "defender_managed_token_account",
3617
+ "docs": [
3618
+ "Defender's managed token account (ATA of defender's BorrowerState PDA)",
3619
+ "Used to refund ATLAS when knocking off defender"
3620
+ ],
3621
+ "writable": true,
3622
+ "optional": true
3623
+ },
3624
+ {
3625
+ "name": "challenger_state",
3626
+ "writable": true,
3627
+ "pda": {
3628
+ "seeds": [
3629
+ {
3630
+ "kind": "const",
3631
+ "value": [
3632
+ 98,
3633
+ 111,
3634
+ 114,
3635
+ 114,
3636
+ 111,
3637
+ 119,
3638
+ 101,
3639
+ 114,
3640
+ 95,
3641
+ 115,
3642
+ 116,
3643
+ 97,
3644
+ 116,
3645
+ 101
3646
+ ]
3647
+ },
3648
+ {
3649
+ "kind": "account",
3650
+ "path": "challenger"
3651
+ }
3652
+ ]
3653
+ }
3961
3654
  },
3962
3655
  {
3963
- "name": "rental_token_account",
3656
+ "name": "challenger_token_account",
3657
+ "docs": [
3658
+ "Challenger's ATLAS token account (funding source -- required for escrow transfer)"
3659
+ ],
3660
+ "writable": true,
3964
3661
  "pda": {
3965
3662
  "seeds": [
3966
3663
  {
3967
3664
  "kind": "account",
3968
- "path": "rental_state"
3665
+ "path": "challenger"
3969
3666
  },
3970
3667
  {
3971
3668
  "kind": "const",
@@ -4006,7 +3703,8 @@
4006
3703
  },
4007
3704
  {
4008
3705
  "kind": "account",
4009
- "path": "mint"
3706
+ "path": "config.atlas_mint",
3707
+ "account": "ConfigState"
4010
3708
  }
4011
3709
  ],
4012
3710
  "program": {
@@ -4048,6 +3746,18 @@
4048
3746
  }
4049
3747
  }
4050
3748
  },
3749
+ {
3750
+ "name": "rental_state",
3751
+ "docs": [
3752
+ "Queued rental state PDA — must be Available OR occupied by defender being knocked off"
3753
+ ],
3754
+ "writable": true
3755
+ },
3756
+ {
3757
+ "name": "referrer",
3758
+ "writable": true,
3759
+ "optional": true
3760
+ },
4051
3761
  {
4052
3762
  "name": "rental_authority",
4053
3763
  "pda": {
@@ -4076,16 +3786,6 @@
4076
3786
  ]
4077
3787
  }
4078
3788
  },
4079
- {
4080
- "name": "rental_thread",
4081
- "writable": true
4082
- },
4083
- {
4084
- "name": "queued_thread",
4085
- "docs": [
4086
- "May be empty if no queued rental exists - we check data_is_empty() in rental_pay."
4087
- ]
4088
- },
4089
3789
  {
4090
3790
  "name": "sage_program"
4091
3791
  },
@@ -4108,8 +3808,22 @@
4108
3808
  ],
4109
3809
  "args": [
4110
3810
  {
4111
- "name": "rental_slot",
4112
- "type": "u8"
3811
+ "name": "amount",
3812
+ "type": "u64"
3813
+ },
3814
+ {
3815
+ "name": "duration",
3816
+ "type": "u64"
3817
+ },
3818
+ {
3819
+ "name": "discount_auth",
3820
+ "type": {
3821
+ "option": {
3822
+ "defined": {
3823
+ "name": "DiscountAuthorization"
3824
+ }
3825
+ }
3826
+ }
4113
3827
  }
4114
3828
  ]
4115
3829
  },
@@ -4176,24 +3890,6 @@
4176
3890
  "borrower_state"
4177
3891
  ]
4178
3892
  },
4179
- {
4180
- "name": "config",
4181
- "pda": {
4182
- "seeds": [
4183
- {
4184
- "kind": "const",
4185
- "value": [
4186
- 99,
4187
- 111,
4188
- 110,
4189
- 102,
4190
- 105,
4191
- 103
4192
- ]
4193
- }
4194
- ]
4195
- }
4196
- },
4197
3893
  {
4198
3894
  "name": "borrower_state",
4199
3895
  "writable": true
@@ -4325,62 +4021,129 @@
4325
4021
  ]
4326
4022
  },
4327
4023
  {
4328
- "name": "update_owner",
4024
+ "name": "update_contract_thread",
4329
4025
  "docs": [
4330
- "Update OwnerState authority (owner/operator transfer)."
4026
+ "Fund a contract thread with SOL and/or update settlement frequency."
4331
4027
  ],
4332
4028
  "discriminator": [
4333
- 164,
4334
- 188,
4335
- 124,
4336
- 254,
4337
- 132,
4338
- 26,
4339
- 198,
4340
- 178
4029
+ 183,
4030
+ 75,
4031
+ 119,
4032
+ 98,
4033
+ 134,
4034
+ 24,
4035
+ 187,
4036
+ 91
4341
4037
  ],
4342
4038
  "accounts": [
4343
4039
  {
4344
- "name": "authority",
4345
- "signer": true,
4346
- "relations": [
4347
- "owner_state"
4348
- ]
4040
+ "name": "payer",
4041
+ "writable": true,
4042
+ "signer": true
4349
4043
  },
4350
4044
  {
4351
- "name": "owner_state",
4352
- "writable": true,
4045
+ "name": "config",
4353
4046
  "pda": {
4354
4047
  "seeds": [
4355
4048
  {
4356
4049
  "kind": "const",
4357
4050
  "value": [
4051
+ 99,
4358
4052
  111,
4359
- 119,
4360
4053
  110,
4361
- 101,
4054
+ 102,
4055
+ 105,
4056
+ 103
4057
+ ]
4058
+ }
4059
+ ]
4060
+ }
4061
+ },
4062
+ {
4063
+ "name": "contract",
4064
+ "writable": true,
4065
+ "pda": {
4066
+ "seeds": [
4067
+ {
4068
+ "kind": "const",
4069
+ "value": [
4362
4070
  114,
4363
- 95,
4364
- 115,
4071
+ 101,
4072
+ 110,
4365
4073
  116,
4366
4074
  97,
4075
+ 108,
4076
+ 95,
4077
+ 99,
4078
+ 111,
4079
+ 110,
4367
4080
  116,
4368
- 101
4081
+ 114,
4082
+ 97,
4083
+ 99,
4084
+ 116
4369
4085
  ]
4370
4086
  },
4371
4087
  {
4372
4088
  "kind": "account",
4373
- "path": "owner_state.owner",
4374
- "account": "OwnerState"
4089
+ "path": "contract.fleet",
4090
+ "account": "ContractState"
4091
+ }
4092
+ ]
4093
+ }
4094
+ },
4095
+ {
4096
+ "name": "rental_authority",
4097
+ "writable": true,
4098
+ "pda": {
4099
+ "seeds": [
4100
+ {
4101
+ "kind": "const",
4102
+ "value": [
4103
+ 114,
4104
+ 101,
4105
+ 110,
4106
+ 116,
4107
+ 97,
4108
+ 108,
4109
+ 95,
4110
+ 97,
4111
+ 117,
4112
+ 116,
4113
+ 104,
4114
+ 111,
4115
+ 114,
4116
+ 105,
4117
+ 116,
4118
+ 121
4119
+ ]
4375
4120
  }
4376
4121
  ]
4377
4122
  }
4123
+ },
4124
+ {
4125
+ "name": "contract_thread",
4126
+ "writable": true
4127
+ },
4128
+ {
4129
+ "name": "antegen_program",
4130
+ "address": "AgV3xRAdyTe1wW4gTW2oAnzHiAGofsxC7jBVGGkzUQbY"
4131
+ },
4132
+ {
4133
+ "name": "system_program",
4134
+ "address": "11111111111111111111111111111111"
4378
4135
  }
4379
4136
  ],
4380
4137
  "args": [
4381
4138
  {
4382
- "name": "new_authority",
4383
- "type": "pubkey"
4139
+ "name": "lamports",
4140
+ "type": "u64"
4141
+ },
4142
+ {
4143
+ "name": "payments_freq",
4144
+ "type": {
4145
+ "option": "string"
4146
+ }
4384
4147
  }
4385
4148
  ]
4386
4149
  }
@@ -4438,19 +4201,6 @@
4438
4201
  163
4439
4202
  ]
4440
4203
  },
4441
- {
4442
- "name": "OwnerState",
4443
- "discriminator": [
4444
- 234,
4445
- 56,
4446
- 107,
4447
- 216,
4448
- 144,
4449
- 52,
4450
- 54,
4451
- 244
4452
- ]
4453
- },
4454
4204
  {
4455
4205
  "name": "RentalState",
4456
4206
  "discriminator": [
@@ -4557,6 +4307,45 @@
4557
4307
  221
4558
4308
  ]
4559
4309
  },
4310
+ {
4311
+ "name": "ContractThreadClosed",
4312
+ "discriminator": [
4313
+ 155,
4314
+ 127,
4315
+ 210,
4316
+ 250,
4317
+ 251,
4318
+ 65,
4319
+ 156,
4320
+ 252
4321
+ ]
4322
+ },
4323
+ {
4324
+ "name": "ContractThreadCreated",
4325
+ "discriminator": [
4326
+ 179,
4327
+ 177,
4328
+ 118,
4329
+ 47,
4330
+ 203,
4331
+ 105,
4332
+ 157,
4333
+ 186
4334
+ ]
4335
+ },
4336
+ {
4337
+ "name": "ContractThreadUpdated",
4338
+ "discriminator": [
4339
+ 250,
4340
+ 74,
4341
+ 242,
4342
+ 8,
4343
+ 238,
4344
+ 204,
4345
+ 170,
4346
+ 215
4347
+ ]
4348
+ },
4560
4349
  {
4561
4350
  "name": "ContractUpdated",
4562
4351
  "discriminator": [
@@ -4570,6 +4359,19 @@
4570
4359
  115
4571
4360
  ]
4572
4361
  },
4362
+ {
4363
+ "name": "QueuedRentalRefunded",
4364
+ "discriminator": [
4365
+ 132,
4366
+ 161,
4367
+ 177,
4368
+ 63,
4369
+ 109,
4370
+ 181,
4371
+ 169,
4372
+ 160
4373
+ ]
4374
+ },
4573
4375
  {
4574
4376
  "name": "RentalAccepted",
4575
4377
  "discriminator": [
@@ -4609,19 +4411,6 @@
4609
4411
  238
4610
4412
  ]
4611
4413
  },
4612
- {
4613
- "name": "RentalClaimed",
4614
- "discriminator": [
4615
- 195,
4616
- 93,
4617
- 46,
4618
- 207,
4619
- 154,
4620
- 252,
4621
- 146,
4622
- 49
4623
- ]
4624
- },
4625
4414
  {
4626
4415
  "name": "RentalClosed",
4627
4416
  "discriminator": [
@@ -4635,6 +4424,19 @@
4635
4424
  40
4636
4425
  ]
4637
4426
  },
4427
+ {
4428
+ "name": "RentalExpiredInline",
4429
+ "discriminator": [
4430
+ 190,
4431
+ 202,
4432
+ 53,
4433
+ 162,
4434
+ 122,
4435
+ 196,
4436
+ 225,
4437
+ 214
4438
+ ]
4439
+ },
4638
4440
  {
4639
4441
  "name": "RentalPaymentProcessed",
4640
4442
  "discriminator": [
@@ -4648,19 +4450,6 @@
4648
4450
  164
4649
4451
  ]
4650
4452
  },
4651
- {
4652
- "name": "RentalScheduled",
4653
- "discriminator": [
4654
- 88,
4655
- 10,
4656
- 29,
4657
- 158,
4658
- 204,
4659
- 129,
4660
- 204,
4661
- 69
4662
- ]
4663
- },
4664
4453
  {
4665
4454
  "name": "ReservationCreated",
4666
4455
  "discriminator": [
@@ -4936,178 +4725,178 @@
4936
4725
  },
4937
4726
  {
4938
4727
  "code": 6049,
4939
- "name": "ReservationWindowActive",
4940
- "msg": "Reservation window is still active. Cannot reserve during exclusive period."
4941
- },
4942
- {
4943
- "code": 6050,
4944
4728
  "name": "InsufficientPointsToReserve",
4945
4729
  "msg": "Insufficient points to take over the reservation"
4946
4730
  },
4947
4731
  {
4948
- "code": 6051,
4732
+ "code": 6050,
4949
4733
  "name": "InvalidReservationRateMultiplier",
4950
4734
  "msg": "Invalid reservation rate multiplier. Must be at least 10000 basis points (100%)."
4951
4735
  },
4952
4736
  {
4953
- "code": 6052,
4737
+ "code": 6051,
4954
4738
  "name": "ExcessiveReservationRateMultiplier",
4955
4739
  "msg": "Excessive reservation rate multiplier. Cannot exceed 20000 basis points (200%)."
4956
4740
  },
4957
4741
  {
4958
- "code": 6053,
4742
+ "code": 6052,
4959
4743
  "name": "ReservationsDisabled",
4960
4744
  "msg": "Reservation system is disabled"
4961
4745
  },
4962
4746
  {
4963
- "code": 6054,
4747
+ "code": 6053,
4964
4748
  "name": "MissingRequiredAccount",
4965
4749
  "msg": "Missing required account for operation"
4966
4750
  },
4967
4751
  {
4968
- "code": 6055,
4752
+ "code": 6054,
4969
4753
  "name": "InvalidConfig",
4970
4754
  "msg": "Invalid configuration parameter"
4971
4755
  },
4972
4756
  {
4973
- "code": 6056,
4757
+ "code": 6055,
4974
4758
  "name": "InvalidDefender",
4975
4759
  "msg": "Invalid defender - does not match current reservation holder"
4976
4760
  },
4977
4761
  {
4978
- "code": 6057,
4762
+ "code": 6056,
4979
4763
  "name": "InvalidSplit",
4980
4764
  "msg": "Invalid split - split authority not found in payment splits"
4981
4765
  },
4982
4766
  {
4983
- "code": 6058,
4767
+ "code": 6057,
4984
4768
  "name": "InvalidReferralRate",
4985
4769
  "msg": "Invalid referral rate configuration"
4986
4770
  },
4987
4771
  {
4988
- "code": 6059,
4772
+ "code": 6058,
4989
4773
  "name": "ReferralNotEnabled",
4990
4774
  "msg": "Referrals are not enabled for this split"
4991
4775
  },
4992
4776
  {
4993
- "code": 6060,
4777
+ "code": 6059,
4994
4778
  "name": "NoFeesToClaim",
4995
4779
  "msg": "No fees available to claim"
4996
4780
  },
4997
4781
  {
4998
- "code": 6061,
4782
+ "code": 6060,
4999
4783
  "name": "ActiveRentalExist",
5000
4784
  "msg": "Cannot close account while active rental(s) exist"
5001
4785
  },
5002
4786
  {
5003
- "code": 6062,
4787
+ "code": 6061,
5004
4788
  "name": "CannotReleaseActiveRental",
5005
4789
  "msg": "Cannot release an active rental. Either rental state must be closed or contract must show no active rental."
5006
4790
  },
5007
4791
  {
5008
- "code": 6063,
4792
+ "code": 6062,
5009
4793
  "name": "CloseRentalBeforeContract",
5010
4794
  "msg": "Cannot close contract while rental is active. Close the rental first using rental_close."
5011
4795
  },
5012
4796
  {
5013
- "code": 6064,
4797
+ "code": 6063,
5014
4798
  "name": "InstantCancelNotAllowed",
5015
4799
  "msg": "Instant cancellation not allowed for this contract. Owner must enable allow_instant_cancel."
5016
4800
  },
5017
4801
  {
5018
- "code": 6065,
4802
+ "code": 6064,
5019
4803
  "name": "ContractReservationsDisabled",
5020
4804
  "msg": "Reservations disabled for this contract. Owner has opted out of reservation system."
5021
4805
  },
5022
4806
  {
5023
- "code": 6066,
4807
+ "code": 6065,
5024
4808
  "name": "AtlasReservationRequiresTokenAccounts",
5025
4809
  "msg": "ATLAS reservation requires token accounts"
5026
4810
  },
5027
4811
  {
5028
- "code": 6067,
4812
+ "code": 6066,
5029
4813
  "name": "InvalidAtlasAmount",
5030
4814
  "msg": "Invalid ATLAS amount for reservation (must be > 0)"
5031
4815
  },
5032
4816
  {
5033
- "code": 6068,
4817
+ "code": 6067,
5034
4818
  "name": "ContractExists",
5035
4819
  "msg": "Contract exists for this fleet. Use rental_release instead of rental_invalidate."
5036
4820
  },
5037
4821
  {
5038
- "code": 6069,
4822
+ "code": 6068,
5039
4823
  "name": "FleetNotRented",
5040
4824
  "msg": "Fleet is not currently rented (sub_profile is empty)."
5041
4825
  },
5042
4826
  {
5043
- "code": 6070,
4827
+ "code": 6069,
5044
4828
  "name": "NotCrownedWinner",
5045
4829
  "msg": "Not the crowned winner. Only the winner from reservation can claim during the claim window."
5046
4830
  },
5047
4831
  {
5048
- "code": 6071,
4832
+ "code": 6070,
5049
4833
  "name": "ClaimWindowExpired",
5050
4834
  "msg": "Claim window has expired. Fleet is now available for anyone via rental_accept."
5051
4835
  },
5052
4836
  {
5053
- "code": 6072,
4837
+ "code": 6071,
5054
4838
  "name": "QueueFull",
5055
4839
  "msg": "Queue is full. Both rental slots are occupied. Wait for current rental to close."
5056
4840
  },
5057
4841
  {
5058
- "code": 6073,
4842
+ "code": 6072,
5059
4843
  "name": "AlreadyScheduled",
5060
4844
  "msg": "Thread already scheduled for this rental. Cannot schedule again."
5061
4845
  },
5062
4846
  {
5063
- "code": 6074,
4847
+ "code": 6073,
5064
4848
  "name": "NoActiveRental",
5065
4849
  "msg": "No active rental exists. Use rental_accept instead of rental_claim."
5066
4850
  },
5067
4851
  {
5068
- "code": 6075,
4852
+ "code": 6074,
5069
4853
  "name": "ThreadNotScheduled",
5070
4854
  "msg": "Thread not scheduled. Call rental_schedule first or use manual payment mode."
5071
4855
  },
5072
4856
  {
5073
- "code": 6076,
4857
+ "code": 6075,
5074
4858
  "name": "InvalidRentalState",
5075
4859
  "msg": "Invalid rental state. The provided rental is not tracked by this contract."
5076
4860
  },
5077
4861
  {
5078
- "code": 6077,
4862
+ "code": 6076,
5079
4863
  "name": "InvalidRentalSlot",
5080
4864
  "msg": "Invalid rental slot. Passed slot does not match expected free slot."
5081
4865
  },
5082
4866
  {
5083
- "code": 6078,
5084
- "name": "ScheduleRequired",
5085
- "msg": "Contract requires automation. Include rental_schedule in the same transaction."
5086
- },
5087
- {
5088
- "code": 6079,
5089
- "name": "RentalNotPending",
5090
- "msg": "Rental is not in Pending status. Only Pending rentals can be activated."
4867
+ "code": 6077,
4868
+ "name": "RentalNotQueued",
4869
+ "msg": "Rental is not in Queued status. Only Queued rentals can be activated."
5091
4870
  },
5092
4871
  {
5093
- "code": 6080,
4872
+ "code": 6078,
5094
4873
  "name": "PreviousRentalActive",
5095
4874
  "msg": "Previous rental slot is still active. Wait for it to be closed first."
5096
4875
  },
5097
4876
  {
5098
- "code": 6081,
4877
+ "code": 6079,
5099
4878
  "name": "InvalidVault",
5100
4879
  "msg": "Invalid vault address. Does not match config.slyvault."
5101
4880
  },
5102
4881
  {
5103
- "code": 6082,
4882
+ "code": 6080,
5104
4883
  "name": "InsufficientAtlasForRefund",
5105
4884
  "msg": "Insufficient ATLAS in contract to refund reservation. Owner must fund contract first."
5106
4885
  },
5107
4886
  {
5108
- "code": 6083,
4887
+ "code": 6081,
5109
4888
  "name": "ContractPendingClose",
5110
4889
  "msg": "Contract is pending close. No new rentals or reservations allowed."
4890
+ },
4891
+ {
4892
+ "code": 6082,
4893
+ "name": "InvalidReferrer",
4894
+ "msg": "Referrer account does not match stored referrer on rental state."
4895
+ },
4896
+ {
4897
+ "code": 6083,
4898
+ "name": "ThreadStillExists",
4899
+ "msg": "Thread still exists. Close thread first using close_contract_thread."
5111
4900
  }
5112
4901
  ],
5113
4902
  "types": [
@@ -5135,6 +4924,23 @@
5135
4924
  ]
5136
4925
  }
5137
4926
  },
4927
+ {
4928
+ "name": "BidType",
4929
+ "docs": [
4930
+ "Bid currency type for rental reservations"
4931
+ ],
4932
+ "type": {
4933
+ "kind": "enum",
4934
+ "variants": [
4935
+ {
4936
+ "name": "Points"
4937
+ },
4938
+ {
4939
+ "name": "Atlas"
4940
+ }
4941
+ ]
4942
+ }
4943
+ },
5138
4944
  {
5139
4945
  "name": "BorrowerInitialized",
5140
4946
  "type": {
@@ -5186,9 +4992,28 @@
5186
4992
  "docs": [
5187
4993
  "Star Atlas borrower profile"
5188
4994
  ],
5189
- "type": {
5190
- "option": "pubkey"
5191
- }
4995
+ "type": "pubkey"
4996
+ },
4997
+ {
4998
+ "name": "borrower_profile_faction",
4999
+ "docs": [
5000
+ "Star Atlas borrower profile faction"
5001
+ ],
5002
+ "type": "pubkey"
5003
+ },
5004
+ {
5005
+ "name": "starbase",
5006
+ "docs": [
5007
+ "SAGE starbase for fleet operations"
5008
+ ],
5009
+ "type": "pubkey"
5010
+ },
5011
+ {
5012
+ "name": "starbase_player",
5013
+ "docs": [
5014
+ "SAGE starbase player for fleet tracking"
5015
+ ],
5016
+ "type": "pubkey"
5192
5017
  },
5193
5018
  {
5194
5019
  "name": "active_rentals",
@@ -5256,6 +5081,33 @@
5256
5081
  "type": {
5257
5082
  "option": "pubkey"
5258
5083
  }
5084
+ },
5085
+ {
5086
+ "name": "borrower_profile_faction",
5087
+ "docs": [
5088
+ "SAGE profile faction (optional update)"
5089
+ ],
5090
+ "type": {
5091
+ "option": "pubkey"
5092
+ }
5093
+ },
5094
+ {
5095
+ "name": "starbase",
5096
+ "docs": [
5097
+ "SAGE starbase (optional update)"
5098
+ ],
5099
+ "type": {
5100
+ "option": "pubkey"
5101
+ }
5102
+ },
5103
+ {
5104
+ "name": "starbase_player",
5105
+ "docs": [
5106
+ "SAGE starbase player (optional update)"
5107
+ ],
5108
+ "type": {
5109
+ "option": "pubkey"
5110
+ }
5259
5111
  }
5260
5112
  ]
5261
5113
  }
@@ -5433,13 +5285,6 @@
5433
5285
  ],
5434
5286
  "type": "u32"
5435
5287
  },
5436
- {
5437
- "name": "reservation_window_hours",
5438
- "docs": [
5439
- "Hours for exclusive reservation window"
5440
- ],
5441
- "type": "u64"
5442
- },
5443
5288
  {
5444
5289
  "name": "min_capture_threshold",
5445
5290
  "docs": [
@@ -5634,15 +5479,6 @@
5634
5479
  "option": "u32"
5635
5480
  }
5636
5481
  },
5637
- {
5638
- "name": "reservation_window_hours",
5639
- "docs": [
5640
- "Hours a reserver has exclusive access after reserving"
5641
- ],
5642
- "type": {
5643
- "option": "u64"
5644
- }
5645
- },
5646
5482
  {
5647
5483
  "name": "min_capture_threshold",
5648
5484
  "docs": [
@@ -5821,7 +5657,7 @@
5821
5657
  {
5822
5658
  "name": "rate",
5823
5659
  "docs": [
5824
- "Rental rate per payment period in Stardust (100M Stardust = 1 ATLAS)"
5660
+ "Rental rate per day in Stardust (100M Stardust = 1 ATLAS)"
5825
5661
  ],
5826
5662
  "type": "u64"
5827
5663
  },
@@ -5840,25 +5676,27 @@
5840
5676
  "type": "u64"
5841
5677
  },
5842
5678
  {
5843
- "name": "payments_freq",
5679
+ "name": "cancel_delay_min",
5844
5680
  "docs": [
5845
- "Payment frequency string (@hourly, @daily, etc.)"
5681
+ "Minimum cancellation delay in seconds (0 = instant cancel allowed)",
5682
+ "Default: 0 (instant cancels allowed by default)"
5846
5683
  ],
5847
- "type": "string"
5684
+ "type": "u64"
5848
5685
  },
5849
5686
  {
5850
- "name": "fleet",
5687
+ "name": "weight",
5851
5688
  "docs": [
5852
- "Fleet associated with this contract"
5689
+ "Fleet demand weight (1-5, based on reservation activity)"
5853
5690
  ],
5854
- "type": "pubkey"
5691
+ "type": "u8"
5855
5692
  },
5856
5693
  {
5857
- "name": "game_id",
5694
+ "name": "reservations_disabled",
5858
5695
  "docs": [
5859
- "Game ID for SAGE integration"
5696
+ "Whether reservations are disabled for this contract (owner opt-out)",
5697
+ "Default: false (reservations allowed)"
5860
5698
  ],
5861
- "type": "pubkey"
5699
+ "type": "bool"
5862
5700
  },
5863
5701
  {
5864
5702
  "name": "owner",
@@ -5868,132 +5706,160 @@
5868
5706
  "type": "pubkey"
5869
5707
  },
5870
5708
  {
5871
- "name": "owner_state",
5709
+ "name": "fleet",
5872
5710
  "docs": [
5873
- "OwnerState PDA for this owner (cached for hot-path lookups)"
5711
+ "Fleet associated with this contract"
5874
5712
  ],
5875
5713
  "type": "pubkey"
5876
5714
  },
5877
5715
  {
5878
- "name": "owner_profile",
5716
+ "name": "game_id",
5879
5717
  "docs": [
5880
- "Owner's Star Atlas game profile"
5718
+ "Game ID for SAGE integration"
5881
5719
  ],
5882
5720
  "type": "pubkey"
5883
5721
  },
5884
5722
  {
5885
- "name": "total_earned",
5723
+ "name": "owner_profile",
5886
5724
  "docs": [
5887
- "Per-contract ATLAS earned (consolidated to OwnerState on close)"
5725
+ "Owner's Star Atlas game profile"
5888
5726
  ],
5889
- "type": "u64"
5727
+ "type": "pubkey"
5890
5728
  },
5891
5729
  {
5892
- "name": "reservation_holder",
5730
+ "name": "active_rental",
5893
5731
  "docs": [
5894
- "BorrowerState currently holding the reservation (program-controlled)"
5732
+ "Active rental PDA address (system_program::ID = empty)"
5895
5733
  ],
5896
- "type": {
5897
- "option": "pubkey"
5898
- }
5734
+ "type": "pubkey"
5899
5735
  },
5900
5736
  {
5901
- "name": "reserved_points",
5737
+ "name": "queued_rental",
5902
5738
  "docs": [
5903
- "Points locked by the current reservation holder (0 if using ATLAS)"
5739
+ "Queued rental PDA address (system_program::ID = empty)"
5904
5740
  ],
5905
- "type": "u32"
5741
+ "type": "pubkey"
5906
5742
  },
5907
5743
  {
5908
- "name": "reserved_atlas",
5744
+ "name": "delegate",
5909
5745
  "docs": [
5910
- "ATLAS lamports locked by the current reservation holder (0 if using points)"
5746
+ "Delegated address that can update rate on behalf of owner",
5747
+ "Default: None (only owner can update rate)"
5911
5748
  ],
5912
- "type": "u64"
5749
+ "type": {
5750
+ "option": "pubkey"
5751
+ }
5913
5752
  },
5914
5753
  {
5915
- "name": "reservation_expires_at",
5754
+ "name": "thread",
5916
5755
  "docs": [
5917
- "When exclusive reservation window expires (0 = open competition)"
5756
+ "Per-contract automation thread (system_program::ID = no thread)"
5918
5757
  ],
5919
- "type": "i64"
5758
+ "type": "pubkey"
5920
5759
  },
5921
5760
  {
5922
- "name": "weight",
5761
+ "name": "trigger",
5923
5762
  "docs": [
5924
- "Fleet demand weight (1-5, based on reservation activity)"
5763
+ "Default trigger for thread settlement"
5925
5764
  ],
5926
- "type": "u8"
5765
+ "type": {
5766
+ "defined": {
5767
+ "name": "Trigger"
5768
+ }
5769
+ }
5927
5770
  },
5928
5771
  {
5929
- "name": "cancel_delay_min",
5772
+ "name": "managed_token_account",
5930
5773
  "docs": [
5931
- "Minimum cancellation delay in seconds (0 = instant cancel allowed)",
5932
- "Default: 0 (instant cancels allowed by default)"
5774
+ "Contract's managed token account (ATA of contract PDA)"
5933
5775
  ],
5934
- "type": "u64"
5776
+ "type": "pubkey"
5935
5777
  },
5936
5778
  {
5937
- "name": "reservations_disabled",
5779
+ "name": "total_earned",
5938
5780
  "docs": [
5939
- "Whether reservations are disabled for this contract (owner opt-out)",
5940
- "Default: false (reservations allowed)"
5781
+ "Per-contract ATLAS earned (lifetime total)"
5941
5782
  ],
5942
- "type": "bool"
5783
+ "type": "u64"
5943
5784
  },
5944
5785
  {
5945
- "name": "delegate",
5786
+ "name": "owner_claimable",
5946
5787
  "docs": [
5947
- "Delegated address that can update rate on behalf of owner",
5948
- "Default: None (only owner can update rate)"
5788
+ "Accumulated ATLAS earned by owner, not yet claimed"
5949
5789
  ],
5950
- "type": {
5951
- "option": "pubkey"
5952
- }
5790
+ "type": "u64"
5953
5791
  },
5954
5792
  {
5955
- "name": "automation_required",
5793
+ "name": "created_at",
5956
5794
  "docs": [
5957
- "Whether automation (rental_schedule) is required for this contract",
5958
- "If true, rental_accept/claim will fail unless rental_schedule is in same tx",
5959
- "Default: false (manual rentals allowed)"
5795
+ "Timestamp when contract was created"
5960
5796
  ],
5961
- "type": "bool"
5797
+ "type": "i64"
5962
5798
  },
5963
5799
  {
5964
- "name": "rental_slot_0",
5800
+ "name": "updated_at",
5965
5801
  "docs": [
5966
- "RentalState address in slot 0 (system_program::ID = empty)"
5802
+ "Timestamp when contract was last updated"
5967
5803
  ],
5804
+ "type": "i64"
5805
+ }
5806
+ ]
5807
+ }
5808
+ },
5809
+ {
5810
+ "name": "ContractThreadClosed",
5811
+ "type": {
5812
+ "kind": "struct",
5813
+ "fields": [
5814
+ {
5815
+ "name": "contract",
5968
5816
  "type": "pubkey"
5969
5817
  },
5970
5818
  {
5971
- "name": "rental_slot_1",
5972
- "docs": [
5973
- "RentalState address in slot 1 (system_program::ID = empty)"
5974
- ],
5819
+ "name": "thread",
5820
+ "type": "pubkey"
5821
+ }
5822
+ ]
5823
+ }
5824
+ },
5825
+ {
5826
+ "name": "ContractThreadCreated",
5827
+ "type": {
5828
+ "kind": "struct",
5829
+ "fields": [
5830
+ {
5831
+ "name": "contract",
5975
5832
  "type": "pubkey"
5976
5833
  },
5977
5834
  {
5978
- "name": "active_slot",
5979
- "docs": [
5980
- "Which slot is currently active (0 or 1), 255 = no active rental"
5981
- ],
5982
- "type": "u8"
5835
+ "name": "thread",
5836
+ "type": "pubkey"
5837
+ }
5838
+ ]
5839
+ }
5840
+ },
5841
+ {
5842
+ "name": "ContractThreadUpdated",
5843
+ "type": {
5844
+ "kind": "struct",
5845
+ "fields": [
5846
+ {
5847
+ "name": "contract",
5848
+ "type": "pubkey"
5983
5849
  },
5984
5850
  {
5985
- "name": "created_at",
5986
- "docs": [
5987
- "Timestamp when contract was created"
5988
- ],
5989
- "type": "i64"
5851
+ "name": "thread",
5852
+ "type": "pubkey"
5990
5853
  },
5991
5854
  {
5992
- "name": "updated_at",
5993
- "docs": [
5994
- "Timestamp when contract was last updated"
5995
- ],
5996
- "type": "i64"
5855
+ "name": "lamports",
5856
+ "type": "u64"
5857
+ },
5858
+ {
5859
+ "name": "payments_freq",
5860
+ "type": {
5861
+ "option": "string"
5862
+ }
5997
5863
  }
5998
5864
  ]
5999
5865
  }
@@ -6009,7 +5875,7 @@
6009
5875
  {
6010
5876
  "name": "rate",
6011
5877
  "docs": [
6012
- "Rental rate per payment period in Stardust"
5878
+ "Rental rate per day in Stardust"
6013
5879
  ],
6014
5880
  "type": {
6015
5881
  "option": "u64"
@@ -6033,15 +5899,6 @@
6033
5899
  "option": "u64"
6034
5900
  }
6035
5901
  },
6036
- {
6037
- "name": "payments_freq",
6038
- "docs": [
6039
- "Payment frequency string (@hourly, @daily, etc.)"
6040
- ],
6041
- "type": {
6042
- "option": "string"
6043
- }
6044
- },
6045
5902
  {
6046
5903
  "name": "cancel_delay_min",
6047
5904
  "docs": [
@@ -6059,15 +5916,6 @@
6059
5916
  "type": {
6060
5917
  "option": "bool"
6061
5918
  }
6062
- },
6063
- {
6064
- "name": "automation_required",
6065
- "docs": [
6066
- "Whether automation (rental_schedule) is required for this contract"
6067
- ],
6068
- "type": {
6069
- "option": "bool"
6070
- }
6071
5919
  }
6072
5920
  ]
6073
5921
  }
@@ -6381,113 +6229,60 @@
6381
6229
  }
6382
6230
  },
6383
6231
  {
6384
- "name": "OwnerState",
6232
+ "name": "PaymentFrequency",
6385
6233
  "docs": [
6386
- "Owner state tracking lifetime stats across all contracts.",
6387
- "",
6388
- "PDA: [OWNER_STATE_SEED, owner.key()]",
6389
- "ATA: standard Associated Token Account with OwnerState PDA as authority, ATLAS mint"
6234
+ "Payment frequencies for rental payments."
6390
6235
  ],
6391
6236
  "type": {
6392
- "kind": "struct",
6393
- "fields": [
6394
- {
6395
- "name": "version",
6396
- "docs": [
6397
- "Account version for future migrations"
6398
- ],
6399
- "type": "u32"
6400
- },
6237
+ "kind": "enum",
6238
+ "variants": [
6401
6239
  {
6402
- "name": "bump",
6403
- "docs": [
6404
- "PDA bump seed"
6405
- ],
6406
- "type": "u8"
6240
+ "name": "Hourly"
6407
6241
  },
6408
6242
  {
6409
- "name": "owner",
6410
- "docs": [
6411
- "Immutable owner wallet (in PDA seeds)"
6412
- ],
6413
- "type": "pubkey"
6243
+ "name": "Daily"
6414
6244
  },
6415
6245
  {
6416
- "name": "authority",
6417
- "docs": [
6418
- "Updatable authority — who can claim/update (defaults to owner)"
6419
- ],
6420
- "type": "pubkey"
6246
+ "name": "DailyOld"
6421
6247
  },
6422
6248
  {
6423
- "name": "total_atlas_earned",
6424
- "docs": [
6425
- "Lifetime ATLAS earned from all rentals"
6426
- ],
6427
- "type": "u64"
6249
+ "name": "Weekly"
6428
6250
  },
6429
6251
  {
6430
- "name": "total_rentals_completed",
6431
- "docs": [
6432
- "Lifetime rental completions"
6433
- ],
6434
- "type": "u32"
6252
+ "name": "Monthly"
6435
6253
  },
6436
6254
  {
6437
- "name": "active_contracts",
6438
- "docs": [
6439
- "Current active contract count"
6440
- ],
6441
- "type": "u16"
6255
+ "name": "Decasecond"
6442
6256
  },
6443
6257
  {
6444
- "name": "created_at",
6445
- "docs": [
6446
- "Timestamp when owner state was created"
6447
- ],
6448
- "type": "i64"
6258
+ "name": "Minute"
6449
6259
  },
6450
6260
  {
6451
- "name": "updated_at",
6452
- "docs": [
6453
- "Timestamp when owner state was last updated"
6454
- ],
6455
- "type": "i64"
6261
+ "name": "Custom"
6456
6262
  }
6457
6263
  ]
6458
6264
  }
6459
6265
  },
6460
6266
  {
6461
- "name": "PaymentFrequency",
6462
- "docs": [
6463
- "Payment frequencies for rental payments."
6464
- ],
6267
+ "name": "QueuedRentalRefunded",
6465
6268
  "type": {
6466
- "kind": "enum",
6467
- "variants": [
6468
- {
6469
- "name": "Hourly"
6470
- },
6471
- {
6472
- "name": "Daily"
6473
- },
6474
- {
6475
- "name": "DailyOld"
6476
- },
6477
- {
6478
- "name": "Weekly"
6479
- },
6269
+ "kind": "struct",
6270
+ "fields": [
6480
6271
  {
6481
- "name": "Monthly"
6272
+ "name": "rental_state",
6273
+ "type": "pubkey"
6482
6274
  },
6483
6275
  {
6484
- "name": "Decasecond"
6276
+ "name": "contract",
6277
+ "type": "pubkey"
6485
6278
  },
6486
6279
  {
6487
- "name": "Minute"
6280
+ "name": "borrower",
6281
+ "type": "pubkey"
6488
6282
  },
6489
6283
  {
6490
- "name": "Custom"
6284
+ "name": "refund_amount",
6285
+ "type": "u64"
6491
6286
  }
6492
6287
  ]
6493
6288
  }
@@ -6552,6 +6347,10 @@
6552
6347
  {
6553
6348
  "name": "borrower",
6554
6349
  "type": "pubkey"
6350
+ },
6351
+ {
6352
+ "name": "service_fee",
6353
+ "type": "u64"
6555
6354
  }
6556
6355
  ]
6557
6356
  }
@@ -6585,7 +6384,7 @@
6585
6384
  }
6586
6385
  },
6587
6386
  {
6588
- "name": "RentalClaimed",
6387
+ "name": "RentalClosed",
6589
6388
  "type": {
6590
6389
  "kind": "struct",
6591
6390
  "fields": [
@@ -6602,48 +6401,28 @@
6602
6401
  "type": "pubkey"
6603
6402
  },
6604
6403
  {
6605
- "name": "fleet",
6606
- "type": "pubkey"
6607
- },
6608
- {
6609
- "name": "duration_seconds",
6610
- "type": "u64"
6611
- },
6612
- {
6613
- "name": "escrow_amount",
6614
- "type": "u64"
6615
- },
6616
- {
6617
- "name": "service_fee",
6618
- "type": "u64"
6619
- },
6620
- {
6621
- "name": "rental_slot",
6622
- "type": "u8"
6404
+ "name": "points_awarded",
6405
+ "type": "u32"
6623
6406
  }
6624
6407
  ]
6625
6408
  }
6626
6409
  },
6627
6410
  {
6628
- "name": "RentalClosed",
6411
+ "name": "RentalExpiredInline",
6629
6412
  "type": {
6630
6413
  "kind": "struct",
6631
6414
  "fields": [
6632
- {
6633
- "name": "rental_state",
6634
- "type": "pubkey"
6635
- },
6636
6415
  {
6637
6416
  "name": "contract",
6638
6417
  "type": "pubkey"
6639
6418
  },
6640
6419
  {
6641
- "name": "borrower",
6420
+ "name": "expired_borrower",
6642
6421
  "type": "pubkey"
6643
6422
  },
6644
6423
  {
6645
- "name": "points_awarded",
6646
- "type": "u32"
6424
+ "name": "new_borrower",
6425
+ "type": "pubkey"
6647
6426
  }
6648
6427
  ]
6649
6428
  }
@@ -6672,41 +6451,13 @@
6672
6451
  ]
6673
6452
  }
6674
6453
  },
6675
- {
6676
- "name": "RentalScheduled",
6677
- "type": {
6678
- "kind": "struct",
6679
- "fields": [
6680
- {
6681
- "name": "rental_state",
6682
- "type": "pubkey"
6683
- },
6684
- {
6685
- "name": "contract",
6686
- "type": "pubkey"
6687
- },
6688
- {
6689
- "name": "thread",
6690
- "type": "pubkey"
6691
- },
6692
- {
6693
- "name": "rental_slot",
6694
- "type": "u8"
6695
- },
6696
- {
6697
- "name": "paused",
6698
- "type": "bool"
6699
- }
6700
- ]
6701
- }
6702
- },
6703
6454
  {
6704
6455
  "name": "RentalState",
6705
6456
  "docs": [
6706
6457
  "Active rental session between a fleet owner and borrower.",
6707
6458
  "",
6708
6459
  "Handles automated payments via Clockwork threads and tracks rental lifecycle.",
6709
- "PDA derived from contract address and borrower public key."
6460
+ "PDA derived from contract address and role seed (active or queued)."
6710
6461
  ],
6711
6462
  "type": {
6712
6463
  "kind": "struct",
@@ -6733,9 +6484,16 @@
6733
6484
  "type": "pubkey"
6734
6485
  },
6735
6486
  {
6736
- "name": "thread",
6487
+ "name": "borrower_state",
6488
+ "docs": [
6489
+ "BorrowerState PDA for this rental (single source of borrower info)"
6490
+ ],
6491
+ "type": "pubkey"
6492
+ },
6493
+ {
6494
+ "name": "borrower_profile",
6737
6495
  "docs": [
6738
- "Antegen thread for automated payments"
6496
+ "Borrower's SAGE profile (stored for change_rental CPI when activating)"
6739
6497
  ],
6740
6498
  "type": "pubkey"
6741
6499
  },
@@ -6749,37 +6507,44 @@
6749
6507
  {
6750
6508
  "name": "rate",
6751
6509
  "docs": [
6752
- "Effective rental rate per payment cycle in Stardust (after fees)"
6510
+ "Effective rental rate per day in Stardust (after fees)"
6753
6511
  ],
6754
6512
  "type": "u64"
6755
6513
  },
6756
6514
  {
6757
- "name": "start_time",
6515
+ "name": "last_payment",
6758
6516
  "docs": [
6759
- "Rental start timestamp"
6517
+ "Timestamp of last pro-rata payment settlement (base for next calculation)"
6760
6518
  ],
6761
6519
  "type": "i64"
6762
6520
  },
6763
6521
  {
6764
- "name": "end_time",
6522
+ "name": "service_fee",
6765
6523
  "docs": [
6766
- "Rental end timestamp"
6524
+ "Deferred service fee (paid to slyvault at activation, not at claim)"
6767
6525
  ],
6768
- "type": "i64"
6526
+ "type": "u64"
6769
6527
  },
6770
6528
  {
6771
- "name": "cancelled",
6529
+ "name": "escrow",
6772
6530
  "docs": [
6773
- "Whether rental was cancelled early"
6531
+ "ATLAS deposited as escrow for this rental (in stardust)"
6774
6532
  ],
6775
- "type": "bool"
6533
+ "type": "u64"
6776
6534
  },
6777
6535
  {
6778
- "name": "borrower_state",
6536
+ "name": "start_time",
6779
6537
  "docs": [
6780
- "BorrowerState PDA for this rental (single source of borrower info)"
6538
+ "Rental start timestamp"
6781
6539
  ],
6782
- "type": "pubkey"
6540
+ "type": "i64"
6541
+ },
6542
+ {
6543
+ "name": "end_time",
6544
+ "docs": [
6545
+ "Rental end timestamp"
6546
+ ],
6547
+ "type": "i64"
6783
6548
  },
6784
6549
  {
6785
6550
  "name": "starbase",
@@ -6796,52 +6561,67 @@
6796
6561
  "type": "pubkey"
6797
6562
  },
6798
6563
  {
6799
- "name": "borrower_profile",
6564
+ "name": "status",
6800
6565
  "docs": [
6801
- "Borrower's SAGE profile (stored for change_rental CPI when activating)"
6566
+ "Rental lifecycle status (Available, Queued, Active)"
6802
6567
  ],
6803
- "type": "pubkey"
6568
+ "type": {
6569
+ "defined": {
6570
+ "name": "RentalStatus"
6571
+ }
6572
+ }
6804
6573
  },
6805
6574
  {
6806
- "name": "payment_trigger",
6575
+ "name": "referrer",
6807
6576
  "docs": [
6808
- "Payment trigger locked in at rental creation (Cron or Timestamp based on duration)"
6577
+ "Referrer affiliate member for deferred fee tracking"
6809
6578
  ],
6810
6579
  "type": {
6811
- "defined": {
6812
- "name": "Trigger"
6813
- }
6580
+ "option": "pubkey"
6814
6581
  }
6815
6582
  },
6816
6583
  {
6817
- "name": "status",
6584
+ "name": "discount_auth",
6818
6585
  "docs": [
6819
- "Rental lifecycle status (Pending, Active, Completed)"
6586
+ "Discount authorization for deferred fee payment"
6820
6587
  ],
6821
6588
  "type": {
6822
- "defined": {
6823
- "name": "RentalStatus"
6589
+ "option": {
6590
+ "defined": {
6591
+ "name": "DiscountAuthorization"
6592
+ }
6824
6593
  }
6825
6594
  }
6826
6595
  },
6827
6596
  {
6828
- "name": "rental_slot",
6597
+ "name": "bid_points",
6829
6598
  "docs": [
6830
- "Thread slot assignment (0 or 1), determines thread PDA"
6599
+ "Points bid for reservation knockoff comparison (0 if ATLAS bid)"
6831
6600
  ],
6832
- "type": "u8"
6601
+ "type": "u32"
6833
6602
  },
6834
6603
  {
6835
- "name": "created_at",
6604
+ "name": "bid_type",
6836
6605
  "docs": [
6837
- "Timestamp when rental was created"
6606
+ "Bid currency type (Points or Atlas)"
6838
6607
  ],
6839
- "type": "i64"
6608
+ "type": {
6609
+ "defined": {
6610
+ "name": "BidType"
6611
+ }
6612
+ }
6840
6613
  },
6841
6614
  {
6842
6615
  "name": "updated_at",
6843
6616
  "docs": [
6844
- "Timestamp when rental was last updated"
6617
+ "Timestamp when rental was last updated (used as base for next pro-rata payment)"
6618
+ ],
6619
+ "type": "i64"
6620
+ },
6621
+ {
6622
+ "name": "created_at",
6623
+ "docs": [
6624
+ "Timestamp when rental was created"
6845
6625
  ],
6846
6626
  "type": "i64"
6847
6627
  }
@@ -6857,13 +6637,16 @@
6857
6637
  "kind": "enum",
6858
6638
  "variants": [
6859
6639
  {
6860
- "name": "Pending"
6640
+ "name": "Available"
6641
+ },
6642
+ {
6643
+ "name": "Queued"
6861
6644
  },
6862
6645
  {
6863
6646
  "name": "Active"
6864
6647
  },
6865
6648
  {
6866
- "name": "Completed"
6649
+ "name": "Cancelled"
6867
6650
  }
6868
6651
  ]
6869
6652
  }
@@ -6887,11 +6670,23 @@
6887
6670
  },
6888
6671
  {
6889
6672
  "name": "bid_type",
6890
- "type": "u8"
6673
+ "type": {
6674
+ "defined": {
6675
+ "name": "BidType"
6676
+ }
6677
+ }
6891
6678
  },
6892
6679
  {
6893
- "name": "expires_at",
6894
- "type": "i64"
6680
+ "name": "escrow_amount",
6681
+ "type": "u64"
6682
+ },
6683
+ {
6684
+ "name": "service_fee",
6685
+ "type": "u64"
6686
+ },
6687
+ {
6688
+ "name": "duration_seconds",
6689
+ "type": "u64"
6895
6690
  }
6896
6691
  ]
6897
6692
  }