chore: rm decompressInterface. house keeping#2297
chore: rm decompressInterface. house keeping#2297SwenSchaeferjohann wants to merge 13 commits intomainfrom
Conversation
SwenSchaeferjohann
commented
Feb 18, 2026
- rm decompressInterface
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (59)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
791e89a to
541d059
Compare
test cov: offcurve, zero-amounts test cov: dupe hash failure, v1 reject at ixn boundary more test cov load, add freeze thaw, extend test cov add tests lint frozen handling more tests mark internals rm _tryfetchctokencoldbyaddress cleanups fmt
541d059 to
1b34488
Compare
| * For load: use this owner for getAtaInterface; only sources the delegate | ||
| * can use are included. For transfer: see TransferOptions.owner. | ||
| */ | ||
| owner?: PublicKey; |
There was a problem hiding this comment.
The comment and naming are not completely clear.
I think in the spl program this field would be called authority (either owner or delegate).
Do you need the owner to derive the ata pubkey?
| /** | ||
| * ATA owner when the signer is the delegate (not the owner). | ||
| * Required when transferring as delegate: pass the owner so the SDK | ||
| * can derive the source ATA and validate the signer is the account delegate. | ||
| */ | ||
| owner?: PublicKey; |
|
BUG:
const size = SIZES[disc] ?? 0; // replaces undefined with 0
if (size === undefined) return null; // DEAD CODE: size is never undefined after ?? 0
offset += size; // offset += 0, never advancesAny TLV discriminator not in Fix: Remove |
|
BUG:
assertNotFrozen(senderInterface, 'transfer'); // checks ALL sources
// ...
senderInterface = filterInterfaceForAuthority(senderInterface, sender); // filters to delegate's sources
Fix: For the delegate path, move |
|
BUG:
The empty-case spreads Fix: Reset derived fields in the empty return: |
|
BUG:
Every account gets Fix: Document the single-compression invariant with a comment. Use the loop index if multi-compression is ever needed. |
|
BUG: Silent signer fallback when authority not in packed accounts
When a delegate authority is not found in Fix: Throw an explicit error when authority is not owner and not found in packed accounts. |
|
BUG: Inconsistent null-guards for
const unwrapAmount = amount != null ? BigInt(amount.toString()) : totalBalance; // != null catches null+undefined
// ...
amount !== undefined ? unwrapAmount : undefined, // !== undefined does NOT catch nullThe two guards diverge for the Fix: Unify guards to |
|
CONCERN:
The old behavior allowed partial unwrap from unfrozen sources when some sources were frozen. The new If intentional, consider updating the error message to provide recovery guidance (e.g., "Thaw all frozen accounts before unwrapping"). |
|
CONCERN: Approve-style cold source check runs after RPC work
The |
|
CONCERN:
Consider using |