@sly-rentals/core 5.5.0 → 5.5.2

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 (34) hide show
  1. package/dist/api.json +1656 -1656
  2. package/dist/cjs/instructions/closeContract.js +4 -22
  3. package/dist/cjs/instructions/closeContract.js.map +1 -1
  4. package/dist/cjs/instructions/closeContractThread.js +5 -5
  5. package/dist/cjs/instructions/closeContractThread.js.map +1 -1
  6. package/dist/cjs/instructions/deleteContractThread.js +5 -5
  7. package/dist/cjs/instructions/deleteContractThread.js.map +1 -1
  8. package/dist/cjs/package.json +1 -1
  9. package/dist/cjs/utils/fibers.js +38 -0
  10. package/dist/cjs/utils/fibers.js.map +1 -0
  11. package/dist/cjs/utils/fibers.test.js +51 -0
  12. package/dist/cjs/utils/fibers.test.js.map +1 -0
  13. package/dist/cjs/version.js +1 -1
  14. package/dist/esm/instructions/closeContract.js +6 -24
  15. package/dist/esm/instructions/closeContract.js.map +1 -1
  16. package/dist/esm/instructions/closeContractThread.js +8 -8
  17. package/dist/esm/instructions/closeContractThread.js.map +1 -1
  18. package/dist/esm/instructions/deleteContractThread.js +8 -8
  19. package/dist/esm/instructions/deleteContractThread.js.map +1 -1
  20. package/dist/esm/package.json +1 -1
  21. package/dist/esm/utils/fibers.js +35 -0
  22. package/dist/esm/utils/fibers.js.map +1 -0
  23. package/dist/esm/utils/fibers.test.js +49 -0
  24. package/dist/esm/utils/fibers.test.js.map +1 -0
  25. package/dist/esm/version.js +1 -1
  26. package/dist/types/instructions/closeContract.d.ts.map +1 -1
  27. package/dist/types/instructions/closeContractThread.d.ts.map +1 -1
  28. package/dist/types/instructions/deleteContractThread.d.ts.map +1 -1
  29. package/dist/types/utils/fibers.d.ts +27 -0
  30. package/dist/types/utils/fibers.d.ts.map +1 -0
  31. package/dist/types/utils/fibers.test.d.ts +2 -0
  32. package/dist/types/utils/fibers.test.d.ts.map +1 -0
  33. package/dist/types/version.d.ts +1 -1
  34. package/package.json +2 -2
@@ -10,7 +10,7 @@ exports.closeContract = closeContract;
10
10
  const kit_1 = require("@solana/kit");
11
11
  const instructions_1 = require("../generated/codama/instructions");
12
12
  const config_1 = require("../utils/config");
13
- const rpc_1 = require("../utils/rpc");
13
+ const fibers_1 = require("../utils/fibers");
14
14
  const signer_1 = require("../utils/signer");
15
15
  const thread_1 = require("../accounts/thread");
16
16
  const contractSnapshot_1 = require("../utils/contractSnapshot");
@@ -148,27 +148,9 @@ async function closeContract(params, config) {
148
148
  const contractThread = await (0, thread_2.deriveContractThread)(contractAddress, rentalAuthority);
149
149
  const threadAccount = await (0, thread_1.fetchThreadByAddress)(contractThread, finalConfig.rpcUrl);
150
150
  const fiberIds = Array.from(threadAccount.data.fiberIds);
151
- // Only pass fibers that still exist. `fiber_ids` records what the thread
152
- // *tracks*, and nothing on chain keeps that in agreement with the accounts
153
- // it names a fiber account can be closed out from under it, which is
154
- // exactly what the 2026-08-26 rent sweep did to hundreds of them. Passing
155
- // an id whose account is gone makes the fiber program deserialize an empty
156
- // buffer and fail with `InvalidFiberData`, so a contract that tracks a
157
- // destroyed fiber could never be closed at all.
158
- //
159
- // A tracked-but-absent fiber needs nothing closed; dropping it from the
160
- // list is the whole remedy.
161
- const fiberAddresses = await Promise.all(fiberIds.map(id => (0, thread_2.deriveFiber)(contractThread, id)));
162
- const rpc = (0, rpc_1.createRpc)(finalConfig.rpcUrl || (0, config_1.getRpcUrl)(config));
163
- const probed = fiberAddresses.length
164
- ? (await rpc.getMultipleAccounts(fiberAddresses, { encoding: 'base64' }).send()).value
165
- : [];
166
- const fiberAccounts = fiberAddresses
167
- .filter((_, i) => probed[i] !== null)
168
- .map(fiberAddress => ({
169
- address: fiberAddress,
170
- role: kit_1.AccountRole.WRITABLE,
171
- }));
151
+ // `fiber_ids` is what the thread tracks, not what exists — see
152
+ // `existingFiberAccounts`.
153
+ const fiberAccounts = await (0, fibers_1.existingFiberAccounts)(contractThread, fiberIds, finalConfig.rpcUrl || (0, config_1.getRpcUrl)(config));
172
154
  const ix = await (0, instructions_1.getCloseContractThreadInstructionAsync)({ owner: ownerSigner, contract: contractAddress, thread: contractThread }, { programAddress });
173
155
  ix.accounts.push(...fiberAccounts);
174
156
  return ix;
@@ -1 +1 @@
1
- {"version":3,"file":"closeContract.js","sourceRoot":"","sources":["../../../src/instructions/closeContract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"closeContract.js","sourceRoot":"","sources":["../../../src/instructions/closeContract.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ const signer_1 = require("../utils/signer");
14
14
  const instructions_2 = require("../utils/instructions");
15
15
  const thread_1 = require("../accounts/thread");
16
16
  const thread_2 = require("../pda/thread");
17
+ const fibers_1 = require("../utils/fibers");
17
18
  const srsly_1 = require("../pda/srsly");
18
19
  /**
19
20
  * Close a contract's automation thread and all of its fibers, reclaiming
@@ -41,11 +42,10 @@ async function closeContractThread(params, config) {
41
42
  // Fetch thread account to read actual fiber_ids
42
43
  const threadAccount = await (0, thread_1.fetchThreadByAddress)(contractThread, finalConfig.rpcUrl);
43
44
  const fiberIds = Array.from(threadAccount.data.fiberIds);
44
- // Derive fiber PDAs only for fibers that actually exist on the thread
45
- const fiberAccounts = await Promise.all(fiberIds.map(async (id) => ({
46
- address: await (0, thread_2.deriveFiber)(contractThread, id),
47
- role: kit_1.AccountRole.WRITABLE,
48
- })));
45
+ // Only the fibers that still exist `fiber_ids` tracks indices, not
46
+ // accounts, and a tracked-but-destroyed fiber makes the close unsendable.
47
+ // See `existingFiberAccounts`.
48
+ const fiberAccounts = await (0, fibers_1.existingFiberAccounts)(contractThread, fiberIds, finalConfig.rpcUrl || (0, config_1.getRpcUrl)(config));
49
49
  const kitInstruction = await (0, instructions_1.getCloseContractThreadInstructionAsync)({
50
50
  owner: ownerSigner,
51
51
  contract: contractAddress,
@@ -1 +1 @@
1
- {"version":3,"file":"closeContractThread.js","sourceRoot":"","sources":["../../../src/instructions/closeContractThread.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAuCH,kDAkDC;AAvFD,qCAAiE;AACjE,mEAA0F;AAC1F,4CAA4E;AAC5E,4CAA4E;AAC5E,wDAA4D;AAC5D,+CAA0D;AAC1D,0CAAkE;AAClE,wCAAqD;AAsBrD;;;;;;;GAOG;AACI,KAAK,UAAU,mBAAmB,CACvC,MAAiC,EACjC,MAA2B;IAE3B,MAAM,WAAW,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAA,qBAAY,EAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,IAAA,aAAO,EAAC,SAAS,CAAC,KAAgB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,IAAA,aAAO,EAAC,MAAM,CAAC,QAAmB,CAAC,CAAC;IAE5D,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,IAAA,6BAAqB,GAAE,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,IAAA,6BAAoB,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpF,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAoB,EAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;IAErE,sEAAsE;IACtE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;QACxB,OAAO,EAAE,MAAM,IAAA,oBAAW,EAAC,cAAc,EAAE,EAAE,CAAC;QAC9C,IAAI,EAAE,iBAAW,CAAC,QAAiB;KACpC,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,IAAA,qDAAsC,EACjE;QACE,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,cAAc,EAAE,CACnB,CAAC;IAEF,8DAA8D;IAC9D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/C,OAAO,IAAA,kCAAmB,EAAC,cAAc,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"closeContractThread.js","sourceRoot":"","sources":["../../../src/instructions/closeContractThread.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAwCH,kDAmDC;AAzFD,qCAAiE;AACjE,mEAA0F;AAC1F,4CAAuF;AACvF,4CAA4E;AAC5E,wDAA4D;AAC5D,+CAA0D;AAC1D,0CAAqD;AACrD,4CAAwD;AACxD,wCAAqD;AAsBrD;;;;;;;GAOG;AACI,KAAK,UAAU,mBAAmB,CACvC,MAAiC,EACjC,MAA2B;IAE3B,MAAM,WAAW,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAA,qBAAY,EAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,IAAA,aAAO,EAAC,SAAS,CAAC,KAAgB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,IAAA,aAAO,EAAC,MAAM,CAAC,QAAmB,CAAC,CAAC;IAE5D,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,IAAA,6BAAqB,GAAE,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,IAAA,6BAAoB,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpF,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAoB,EAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;IAErE,qEAAqE;IACrE,0EAA0E;IAC1E,+BAA+B;IAC/B,MAAM,aAAa,GAAG,MAAM,IAAA,8BAAqB,EAC/C,cAAc,EACd,QAAQ,EACR,WAAW,CAAC,MAAM,IAAI,IAAA,kBAAS,EAAC,MAAM,CAAC,CACxC,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,IAAA,qDAAsC,EACjE;QACE,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,cAAc,EAAE,CACnB,CAAC;IAEF,8DAA8D;IAC9D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/C,OAAO,IAAA,kCAAmB,EAAC,cAAc,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -15,6 +15,7 @@ const signer_1 = require("../utils/signer");
15
15
  const instructions_2 = require("../utils/instructions");
16
16
  const thread_1 = require("../accounts/thread");
17
17
  const thread_2 = require("../pda/thread");
18
+ const fibers_1 = require("../utils/fibers");
18
19
  const srsly_1 = require("../pda/srsly");
19
20
  /**
20
21
  * Admin variant of `closeContractThread` that doesn't require the
@@ -43,11 +44,10 @@ async function deleteContractThread(params, config) {
43
44
  // Fetch thread account to read actual fiber_ids
44
45
  const threadAccount = await (0, thread_1.fetchThreadByAddress)(contractThread, finalConfig.rpcUrl);
45
46
  const fiberIds = Array.from(threadAccount.data.fiberIds);
46
- // Derive fiber PDAs only for fibers that actually exist on the thread
47
- const fiberAccounts = await Promise.all(fiberIds.map(async (id) => ({
48
- address: await (0, thread_2.deriveFiber)(contractThread, id),
49
- role: kit_1.AccountRole.WRITABLE,
50
- })));
47
+ // Only the fibers that still exist `fiber_ids` tracks indices, not
48
+ // accounts, and a tracked-but-destroyed fiber makes the close unsendable.
49
+ // See `existingFiberAccounts`.
50
+ const fiberAccounts = await (0, fibers_1.existingFiberAccounts)(contractThread, fiberIds, finalConfig.rpcUrl || (0, config_1.getRpcUrl)(config));
51
51
  const kitInstruction = await (0, instructions_1.getDeleteContractThreadInstructionAsync)({
52
52
  admin: adminSigner,
53
53
  thread: contractThread,
@@ -1 +1 @@
1
- {"version":3,"file":"deleteContractThread.js","sourceRoot":"","sources":["../../../src/instructions/deleteContractThread.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAwCH,oDAiDC;AAvFD,qCAAiE;AACjE,mEAA2F;AAC3F,4CAA4E;AAC5E,4CAA4E;AAC5E,wDAA4D;AAC5D,+CAA0D;AAC1D,0CAAkE;AAClE,wCAAqD;AAsBrD;;;;;;;;GAQG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAkC,EAClC,MAA2B;IAE3B,MAAM,WAAW,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAA,qBAAY,EAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,IAAA,aAAO,EAAC,SAAS,CAAC,KAAgB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,IAAA,aAAO,EAAC,MAAM,CAAC,QAAmB,CAAC,CAAC;IAE5D,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,IAAA,6BAAqB,GAAE,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,IAAA,6BAAoB,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpF,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAoB,EAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;IAErE,sEAAsE;IACtE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;QACxB,OAAO,EAAE,MAAM,IAAA,oBAAW,EAAC,cAAc,EAAE,EAAE,CAAC;QAC9C,IAAI,EAAE,iBAAW,CAAC,QAAiB;KACpC,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,IAAA,sDAAuC,EAClE;QACE,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,cAAc,EAAE,CACnB,CAAC;IAEF,8DAA8D;IAC9D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/C,OAAO,IAAA,kCAAmB,EAAC,cAAc,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"deleteContractThread.js","sourceRoot":"","sources":["../../../src/instructions/deleteContractThread.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAyCH,oDAkDC;AAzFD,qCAAiE;AACjE,mEAA2F;AAC3F,4CAAuF;AACvF,4CAA4E;AAC5E,wDAA4D;AAC5D,+CAA0D;AAC1D,0CAAqD;AACrD,4CAAwD;AACxD,wCAAqD;AAsBrD;;;;;;;;GAQG;AACI,KAAK,UAAU,oBAAoB,CACxC,MAAkC,EAClC,MAA2B;IAE3B,MAAM,WAAW,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,4BAAmB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,IAAA,qBAAY,EAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,IAAA,aAAO,EAAC,SAAS,CAAC,KAAgB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,IAAA,aAAO,EAAC,MAAM,CAAC,QAAmB,CAAC,CAAC;IAE5D,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,IAAA,6BAAqB,GAAE,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,IAAA,6BAAoB,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpF,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAoB,EAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;IAErE,qEAAqE;IACrE,0EAA0E;IAC1E,+BAA+B;IAC/B,MAAM,aAAa,GAAG,MAAM,IAAA,8BAAqB,EAC/C,cAAc,EACd,QAAQ,EACR,WAAW,CAAC,MAAM,IAAI,IAAA,kBAAS,EAAC,MAAM,CAAC,CACxC,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,IAAA,sDAAuC,EAClE;QACE,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,cAAc,EAAE,CACnB,CAAC;IAEF,8DAA8D;IAC9D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/C,OAAO,IAAA,kCAAmB,EAAC,cAAc,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sly-rentals/core",
3
- "version": "5.5.0",
3
+ "version": "5.5.2",
4
4
  "description": "TypeScript SDK for SRSLY",
5
5
  "sideEffects": false,
6
6
  "publishConfig": {
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Resolving a thread's fiber accounts for instructions that close them.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.existingFiberAccounts = existingFiberAccounts;
7
+ const kit_1 = require("@solana/kit");
8
+ const thread_1 = require("../pda/thread");
9
+ const rpc_1 = require("./rpc");
10
+ /**
11
+ * The fiber accounts a close instruction should carry, given what a thread
12
+ * tracks.
13
+ *
14
+ * `fiber_ids` records the indices a thread *tracks*, and nothing on chain
15
+ * keeps that list in agreement with the accounts it names — a fiber account
16
+ * can be closed out from under a thread that still lists it, which is what
17
+ * the 2026-08-26 rent sweep did to 623 of them.
18
+ *
19
+ * Passing an index whose account is gone makes the fiber program deserialize
20
+ * an empty buffer and fail with `InvalidFiberData`, from the `buf.len() < 8`
21
+ * branch rather than the discriminator one. It reads like a schema problem
22
+ * and is not one, and no caller can work around it, so a contract tracking a
23
+ * destroyed fiber becomes impossible to close by anyone.
24
+ *
25
+ * A tracked-but-absent fiber has nothing to close, so dropping it is the
26
+ * whole remedy. One `getMultipleAccounts` for the batch.
27
+ */
28
+ async function existingFiberAccounts(thread, fiberIds, rpcUrl) {
29
+ if (!fiberIds.length)
30
+ return [];
31
+ const addresses = await Promise.all(fiberIds.map(id => (0, thread_1.deriveFiber)(thread, id)));
32
+ const rpc = (0, rpc_1.createRpc)(rpcUrl);
33
+ const { value } = await rpc.getMultipleAccounts(addresses, { encoding: 'base64' }).send();
34
+ return addresses
35
+ .filter((_, i) => value[i] !== null)
36
+ .map(address => ({ address, role: kit_1.AccountRole.WRITABLE }));
37
+ }
38
+ //# sourceMappingURL=fibers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fibers.js","sourceRoot":"","sources":["../../../src/utils/fibers.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAwBH,sDAcC;AApCD,qCAAwD;AACxD,0CAA4C;AAC5C,+BAAkC;AAElC;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,qBAAqB,CACzC,MAAe,EACf,QAAkB,EAClB,MAAc;IAEd,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,oBAAW,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,IAAA,eAAS,EAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1F,OAAO,SAAS;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;SACnC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAW,CAAC,QAAiB,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const kit_1 = require("@solana/kit");
5
+ vitest_1.vi.mock('./rpc', () => ({ createRpc: vitest_1.vi.fn() }));
6
+ vitest_1.vi.mock('../pda/thread', () => ({ deriveFiber: vitest_1.vi.fn() }));
7
+ const rpc_1 = require("./rpc");
8
+ const thread_1 = require("../pda/thread");
9
+ const fibers_1 = require("./fibers");
10
+ const THREAD = 'Sysvar1nstructions1111111111111111111111111';
11
+ const FIBER_0 = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
12
+ const FIBER_1 = 'So11111111111111111111111111111111111111112';
13
+ /** `getMultipleAccounts` returns `null` in the slot of an account that does not exist. */
14
+ function mockAccounts(value) {
15
+ const send = vitest_1.vi.fn().mockResolvedValue({ value });
16
+ vitest_1.vi.mocked(rpc_1.createRpc).mockReturnValue({
17
+ getMultipleAccounts: vitest_1.vi.fn().mockReturnValue({ send }),
18
+ });
19
+ return send;
20
+ }
21
+ (0, vitest_1.beforeEach)(() => {
22
+ vitest_1.vi.clearAllMocks();
23
+ vitest_1.vi.mocked(thread_1.deriveFiber).mockImplementation(async (_thread, index) => index === 0 ? FIBER_0 : FIBER_1);
24
+ });
25
+ (0, vitest_1.describe)('existingFiberAccounts', () => {
26
+ (0, vitest_1.it)('drops a tracked fiber whose account is gone', async () => {
27
+ // The state the 2026-08-26 rent sweep left behind: the thread still tracks
28
+ // both indices, but fiber 1's account was closed. Passing it makes the
29
+ // fiber program deserialize an empty buffer and fail with
30
+ // `InvalidFiberData`, which no caller can work around.
31
+ mockAccounts([{ lamports: 9416880n }, null]);
32
+ const accounts = await (0, fibers_1.existingFiberAccounts)(THREAD, [0, 1], 'https://rpc.example');
33
+ (0, vitest_1.expect)(accounts).toEqual([{ address: FIBER_0, role: kit_1.AccountRole.WRITABLE }]);
34
+ });
35
+ (0, vitest_1.it)('keeps every fiber when all of them exist', async () => {
36
+ mockAccounts([{ lamports: 1n }, { lamports: 1n }]);
37
+ const accounts = await (0, fibers_1.existingFiberAccounts)(THREAD, [0, 1], 'https://rpc.example');
38
+ (0, vitest_1.expect)(accounts.map(a => a.address)).toEqual([FIBER_0, FIBER_1]);
39
+ });
40
+ (0, vitest_1.it)('returns nothing when the thread tracks nothing, without an RPC call', async () => {
41
+ const send = mockAccounts([]);
42
+ const accounts = await (0, fibers_1.existingFiberAccounts)(THREAD, [], 'https://rpc.example');
43
+ (0, vitest_1.expect)(accounts).toEqual([]);
44
+ (0, vitest_1.expect)(send).not.toHaveBeenCalled();
45
+ });
46
+ (0, vitest_1.it)('drops every fiber when none survive', async () => {
47
+ mockAccounts([null, null]);
48
+ (0, vitest_1.expect)(await (0, fibers_1.existingFiberAccounts)(THREAD, [0, 1], 'https://rpc.example')).toEqual([]);
49
+ });
50
+ });
51
+ //# sourceMappingURL=fibers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fibers.test.js","sourceRoot":"","sources":["../../../src/utils/fibers.test.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Auto-generated from package.json - DO NOT EDIT
5
5
  // Run "pnpm run generate:version" to update
6
- exports.VERSION = '5.5.0';
6
+ exports.VERSION = '5.5.2';
7
7
  //# sourceMappingURL=version.js.map
@@ -4,16 +4,16 @@
4
4
  * Thin convenience wrapper around Codama-generated closeContract instruction.
5
5
  * Closes a contract with no active rentals and claims remaining payments.
6
6
  */
7
- import { AccountRole, address } from '@solana/kit';
7
+ import { address } from '@solana/kit';
8
8
  import { getCloseContractInstructionAsync, getCloseContractThreadInstructionAsync, } from '../generated/codama/instructions';
9
9
  import { mergeConfig, getAddresses, getRpcUrl } from '../utils/config';
10
- import { createRpc } from '../utils/rpc';
10
+ import { existingFiberAccounts } from '../utils/fibers';
11
11
  import { toTransactionSigner } from '../utils/signer';
12
12
  import { fetchThreadByAddress } from '../accounts/thread';
13
13
  import { resolveContractSnapshot } from '../utils/contractSnapshot';
14
14
  import { deriveAssociatedTokenAccount } from '../pda/token';
15
15
  import { deriveContract, deriveBorrowerState, deriveRentalAuthority } from '../pda/srsly';
16
- import { deriveContractThread, deriveFiber } from '../pda/thread';
16
+ import { deriveContractThread } from '../pda/thread';
17
17
  import { prepareInstructions } from '../utils/instructions';
18
18
  import { closeRental } from './closeRental';
19
19
  /**
@@ -145,27 +145,9 @@ export async function closeContract(params, config) {
145
145
  const contractThread = await deriveContractThread(contractAddress, rentalAuthority);
146
146
  const threadAccount = await fetchThreadByAddress(contractThread, finalConfig.rpcUrl);
147
147
  const fiberIds = Array.from(threadAccount.data.fiberIds);
148
- // Only pass fibers that still exist. `fiber_ids` records what the thread
149
- // *tracks*, and nothing on chain keeps that in agreement with the accounts
150
- // it names a fiber account can be closed out from under it, which is
151
- // exactly what the 2026-08-26 rent sweep did to hundreds of them. Passing
152
- // an id whose account is gone makes the fiber program deserialize an empty
153
- // buffer and fail with `InvalidFiberData`, so a contract that tracks a
154
- // destroyed fiber could never be closed at all.
155
- //
156
- // A tracked-but-absent fiber needs nothing closed; dropping it from the
157
- // list is the whole remedy.
158
- const fiberAddresses = await Promise.all(fiberIds.map(id => deriveFiber(contractThread, id)));
159
- const rpc = createRpc(finalConfig.rpcUrl || getRpcUrl(config));
160
- const probed = fiberAddresses.length
161
- ? (await rpc.getMultipleAccounts(fiberAddresses, { encoding: 'base64' }).send()).value
162
- : [];
163
- const fiberAccounts = fiberAddresses
164
- .filter((_, i) => probed[i] !== null)
165
- .map(fiberAddress => ({
166
- address: fiberAddress,
167
- role: AccountRole.WRITABLE,
168
- }));
148
+ // `fiber_ids` is what the thread tracks, not what exists — see
149
+ // `existingFiberAccounts`.
150
+ const fiberAccounts = await existingFiberAccounts(contractThread, fiberIds, finalConfig.rpcUrl || getRpcUrl(config));
169
151
  const ix = await getCloseContractThreadInstructionAsync({ owner: ownerSigner, contract: contractAddress, thread: contractThread }, { programAddress });
170
152
  ix.accounts.push(...fiberAccounts);
171
153
  return ix;
@@ -1 +1 @@
1
- {"version":3,"file":"closeContract.js","sourceRoot":"","sources":["../../../src/instructions/closeContract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"closeContract.js","sourceRoot":"","sources":["../../../src/instructions/closeContract.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,14 @@
4
4
  * Thin convenience wrapper around Codama-generated closeContractThread instruction.
5
5
  * Closes a per-contract automation thread and reclaims rent.
6
6
  */
7
- import { AccountRole, address } from '@solana/kit';
7
+ import { address } from '@solana/kit';
8
8
  import { getCloseContractThreadInstructionAsync } from '../generated/codama/instructions';
9
- import { mergeConfig, getAddresses } from '../utils/config';
9
+ import { mergeConfig, getAddresses, getRpcUrl } from '../utils/config';
10
10
  import { toTransactionSigner } from '../utils/signer';
11
11
  import { prepareInstructions } from '../utils/instructions';
12
12
  import { fetchThreadByAddress } from '../accounts/thread';
13
- import { deriveContractThread, deriveFiber } from '../pda/thread';
13
+ import { deriveContractThread } from '../pda/thread';
14
+ import { existingFiberAccounts } from '../utils/fibers';
14
15
  import { deriveRentalAuthority } from '../pda/srsly';
15
16
  /**
16
17
  * Close a contract's automation thread and all of its fibers, reclaiming
@@ -38,11 +39,10 @@ export async function closeContractThread(params, config) {
38
39
  // Fetch thread account to read actual fiber_ids
39
40
  const threadAccount = await fetchThreadByAddress(contractThread, finalConfig.rpcUrl);
40
41
  const fiberIds = Array.from(threadAccount.data.fiberIds);
41
- // Derive fiber PDAs only for fibers that actually exist on the thread
42
- const fiberAccounts = await Promise.all(fiberIds.map(async (id) => ({
43
- address: await deriveFiber(contractThread, id),
44
- role: AccountRole.WRITABLE,
45
- })));
42
+ // Only the fibers that still exist `fiber_ids` tracks indices, not
43
+ // accounts, and a tracked-but-destroyed fiber makes the close unsendable.
44
+ // See `existingFiberAccounts`.
45
+ const fiberAccounts = await existingFiberAccounts(contractThread, fiberIds, finalConfig.rpcUrl || getRpcUrl(config));
46
46
  const kitInstruction = await getCloseContractThreadInstructionAsync({
47
47
  owner: ownerSigner,
48
48
  contract: contractAddress,
@@ -1 +1 @@
1
- {"version":3,"file":"closeContractThread.js","sourceRoot":"","sources":["../../../src/instructions/closeContractThread.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAwB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAsBrD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiC,EACjC,MAA2B;IAE3B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,KAAgB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAmB,CAAC,CAAC;IAE5D,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpF,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;IAErE,sEAAsE;IACtE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;QACxB,OAAO,EAAE,MAAM,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;QAC9C,IAAI,EAAE,WAAW,CAAC,QAAiB;KACpC,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,sCAAsC,CACjE;QACE,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,cAAc,EAAE,CACnB,CAAC;IAEF,8DAA8D;IAC9D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/C,OAAO,mBAAmB,CAAC,cAAc,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"closeContractThread.js","sourceRoot":"","sources":["../../../src/instructions/closeContractThread.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAe,OAAO,EAAgB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAkB,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAwB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAsBrD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiC,EACjC,MAA2B;IAE3B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,KAAgB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAmB,CAAC,CAAC;IAE5D,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpF,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;IAErE,qEAAqE;IACrE,0EAA0E;IAC1E,+BAA+B;IAC/B,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAC/C,cAAc,EACd,QAAQ,EACR,WAAW,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CACxC,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,sCAAsC,CACjE;QACE,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,cAAc,EAAE,CACnB,CAAC;IAEF,8DAA8D;IAC9D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/C,OAAO,mBAAmB,CAAC,cAAc,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -5,13 +5,14 @@
5
5
  * Admin-only instruction to delete a contract's thread for schema migrations.
6
6
  * Unlike closeContractThread, does not require the contract account.
7
7
  */
8
- import { AccountRole, address } from '@solana/kit';
8
+ import { address } from '@solana/kit';
9
9
  import { getDeleteContractThreadInstructionAsync } from '../generated/codama/instructions';
10
- import { mergeConfig, getAddresses } from '../utils/config';
10
+ import { mergeConfig, getAddresses, getRpcUrl } from '../utils/config';
11
11
  import { toTransactionSigner } from '../utils/signer';
12
12
  import { prepareInstructions } from '../utils/instructions';
13
13
  import { fetchThreadByAddress } from '../accounts/thread';
14
- import { deriveContractThread, deriveFiber } from '../pda/thread';
14
+ import { deriveContractThread } from '../pda/thread';
15
+ import { existingFiberAccounts } from '../utils/fibers';
15
16
  import { deriveRentalAuthority } from '../pda/srsly';
16
17
  /**
17
18
  * Admin variant of `closeContractThread` that doesn't require the
@@ -40,11 +41,10 @@ export async function deleteContractThread(params, config) {
40
41
  // Fetch thread account to read actual fiber_ids
41
42
  const threadAccount = await fetchThreadByAddress(contractThread, finalConfig.rpcUrl);
42
43
  const fiberIds = Array.from(threadAccount.data.fiberIds);
43
- // Derive fiber PDAs only for fibers that actually exist on the thread
44
- const fiberAccounts = await Promise.all(fiberIds.map(async (id) => ({
45
- address: await deriveFiber(contractThread, id),
46
- role: AccountRole.WRITABLE,
47
- })));
44
+ // Only the fibers that still exist `fiber_ids` tracks indices, not
45
+ // accounts, and a tracked-but-destroyed fiber makes the close unsendable.
46
+ // See `existingFiberAccounts`.
47
+ const fiberAccounts = await existingFiberAccounts(contractThread, fiberIds, finalConfig.rpcUrl || getRpcUrl(config));
48
48
  const kitInstruction = await getDeleteContractThreadInstructionAsync({
49
49
  admin: adminSigner,
50
50
  thread: contractThread,
@@ -1 +1 @@
1
- {"version":3,"file":"deleteContractThread.js","sourceRoot":"","sources":["../../../src/instructions/deleteContractThread.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,OAAO,EAAgB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,uCAAuC,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAwB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAsBrD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAkC,EAClC,MAA2B;IAE3B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,KAAgB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAmB,CAAC,CAAC;IAE5D,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpF,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;IAErE,sEAAsE;IACtE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CACrC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,EAAE,EAAC,EAAE,CAAC,CAAC;QACxB,OAAO,EAAE,MAAM,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;QAC9C,IAAI,EAAE,WAAW,CAAC,QAAiB;KACpC,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,uCAAuC,CAClE;QACE,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,cAAc,EAAE,CACnB,CAAC;IAEF,8DAA8D;IAC9D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/C,OAAO,mBAAmB,CAAC,cAAc,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"deleteContractThread.js","sourceRoot":"","sources":["../../../src/instructions/deleteContractThread.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAe,OAAO,EAAgB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,uCAAuC,EAAE,MAAM,kCAAkC,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAkB,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAwB,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAsBrD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAkC,EAClC,MAA2B;IAE3B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,KAAgB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAmB,CAAC,CAAC;IAE5D,oBAAoB;IACpB,MAAM,eAAe,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,oBAAoB,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAEpF,gDAAgD;IAChD,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAa,CAAC;IAErE,qEAAqE;IACrE,0EAA0E;IAC1E,+BAA+B;IAC/B,MAAM,aAAa,GAAG,MAAM,qBAAqB,CAC/C,cAAc,EACd,QAAQ,EACR,WAAW,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CACxC,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,uCAAuC,CAClE;QACE,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,cAAc;KACvB,EACD,EAAE,cAAc,EAAE,CACnB,CAAC;IAEF,8DAA8D;IAC9D,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAE/C,OAAO,mBAAmB,CAAC,cAAc,EAAE;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sly-rentals/core",
3
- "version": "5.5.0",
3
+ "version": "5.5.2",
4
4
  "description": "TypeScript SDK for SRSLY",
5
5
  "sideEffects": false,
6
6
  "publishConfig": {
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Resolving a thread's fiber accounts for instructions that close them.
3
+ */
4
+ import { AccountRole } from '@solana/kit';
5
+ import { deriveFiber } from '../pda/thread';
6
+ import { createRpc } from './rpc';
7
+ /**
8
+ * The fiber accounts a close instruction should carry, given what a thread
9
+ * tracks.
10
+ *
11
+ * `fiber_ids` records the indices a thread *tracks*, and nothing on chain
12
+ * keeps that list in agreement with the accounts it names — a fiber account
13
+ * can be closed out from under a thread that still lists it, which is what
14
+ * the 2026-08-26 rent sweep did to 623 of them.
15
+ *
16
+ * Passing an index whose account is gone makes the fiber program deserialize
17
+ * an empty buffer and fail with `InvalidFiberData`, from the `buf.len() < 8`
18
+ * branch rather than the discriminator one. It reads like a schema problem
19
+ * and is not one, and no caller can work around it, so a contract tracking a
20
+ * destroyed fiber becomes impossible to close by anyone.
21
+ *
22
+ * A tracked-but-absent fiber has nothing to close, so dropping it is the
23
+ * whole remedy. One `getMultipleAccounts` for the batch.
24
+ */
25
+ export async function existingFiberAccounts(thread, fiberIds, rpcUrl) {
26
+ if (!fiberIds.length)
27
+ return [];
28
+ const addresses = await Promise.all(fiberIds.map(id => deriveFiber(thread, id)));
29
+ const rpc = createRpc(rpcUrl);
30
+ const { value } = await rpc.getMultipleAccounts(addresses, { encoding: 'base64' }).send();
31
+ return addresses
32
+ .filter((_, i) => value[i] !== null)
33
+ .map(address => ({ address, role: AccountRole.WRITABLE }));
34
+ }
35
+ //# sourceMappingURL=fibers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fibers.js","sourceRoot":"","sources":["../../../src/utils/fibers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAe,EACf,QAAkB,EAClB,MAAc;IAEd,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1F,OAAO,SAAS;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;SACnC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,QAAiB,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { describe, expect, it, vi, beforeEach } from 'vitest';
2
+ import { AccountRole } from '@solana/kit';
3
+ vi.mock('./rpc', () => ({ createRpc: vi.fn() }));
4
+ vi.mock('../pda/thread', () => ({ deriveFiber: vi.fn() }));
5
+ import { createRpc } from './rpc';
6
+ import { deriveFiber } from '../pda/thread';
7
+ import { existingFiberAccounts } from './fibers';
8
+ const THREAD = 'Sysvar1nstructions1111111111111111111111111';
9
+ const FIBER_0 = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
10
+ const FIBER_1 = 'So11111111111111111111111111111111111111112';
11
+ /** `getMultipleAccounts` returns `null` in the slot of an account that does not exist. */
12
+ function mockAccounts(value) {
13
+ const send = vi.fn().mockResolvedValue({ value });
14
+ vi.mocked(createRpc).mockReturnValue({
15
+ getMultipleAccounts: vi.fn().mockReturnValue({ send }),
16
+ });
17
+ return send;
18
+ }
19
+ beforeEach(() => {
20
+ vi.clearAllMocks();
21
+ vi.mocked(deriveFiber).mockImplementation(async (_thread, index) => index === 0 ? FIBER_0 : FIBER_1);
22
+ });
23
+ describe('existingFiberAccounts', () => {
24
+ it('drops a tracked fiber whose account is gone', async () => {
25
+ // The state the 2026-08-26 rent sweep left behind: the thread still tracks
26
+ // both indices, but fiber 1's account was closed. Passing it makes the
27
+ // fiber program deserialize an empty buffer and fail with
28
+ // `InvalidFiberData`, which no caller can work around.
29
+ mockAccounts([{ lamports: 9416880n }, null]);
30
+ const accounts = await existingFiberAccounts(THREAD, [0, 1], 'https://rpc.example');
31
+ expect(accounts).toEqual([{ address: FIBER_0, role: AccountRole.WRITABLE }]);
32
+ });
33
+ it('keeps every fiber when all of them exist', async () => {
34
+ mockAccounts([{ lamports: 1n }, { lamports: 1n }]);
35
+ const accounts = await existingFiberAccounts(THREAD, [0, 1], 'https://rpc.example');
36
+ expect(accounts.map(a => a.address)).toEqual([FIBER_0, FIBER_1]);
37
+ });
38
+ it('returns nothing when the thread tracks nothing, without an RPC call', async () => {
39
+ const send = mockAccounts([]);
40
+ const accounts = await existingFiberAccounts(THREAD, [], 'https://rpc.example');
41
+ expect(accounts).toEqual([]);
42
+ expect(send).not.toHaveBeenCalled();
43
+ });
44
+ it('drops every fiber when none survive', async () => {
45
+ mockAccounts([null, null]);
46
+ expect(await existingFiberAccounts(THREAD, [0, 1], 'https://rpc.example')).toEqual([]);
47
+ });
48
+ });
49
+ //# sourceMappingURL=fibers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fibers.test.js","sourceRoot":"","sources":["../../../src/utils/fibers.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // Auto-generated from package.json - DO NOT EDIT
2
2
  // Run "pnpm run generate:version" to update
3
- export const VERSION = '5.5.0';
3
+ export const VERSION = '5.5.2';
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"closeContract.d.ts","sourceRoot":"","sources":["../../../src/instructions/closeContract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAwB,KAAK,OAAO,EAAoB,MAAM,aAAa,CAAC;AAKnF,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvF,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE/B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAElC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAoNjD"}
1
+ {"version":3,"file":"closeContract.d.ts","sourceRoot":"","sources":["../../../src/instructions/closeContract.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAwB,KAAK,OAAO,EAAoB,MAAM,aAAa,CAAC;AAKnF,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvF,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE/B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAElC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAsMjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"closeContractThread.d.ts","sourceRoot":"","sources":["../../../src/instructions/closeContractThread.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,yBAAyB,EACjC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CA+CjD"}
1
+ {"version":3,"file":"closeContractThread.d.ts","sourceRoot":"","sources":["../../../src/instructions/closeContractThread.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,yBAAyB,EACjC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAgDjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"deleteContractThread.d.ts","sourceRoot":"","sources":["../../../src/instructions/deleteContractThread.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,EAClC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CA8CjD"}
1
+ {"version":3,"file":"deleteContractThread.d.ts","sourceRoot":"","sources":["../../../src/instructions/deleteContractThread.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAwB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;OAGG;IACH,KAAK,EAAE,eAAe,CAAC;IAEvB,0EAA0E;IAC1E,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,0BAA0B,EAClC,MAAM,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CA+CjD"}