Repository navigation
feat: bump solana/kit@8.3.0 - #303
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning MetaMask internal reviewing guidelines:
|
22c4298 to
aae9bfe
Compare
| ); | ||
|
|
||
| expect(amount).toBe(995847000n); | ||
| expect(amount).toBe(995847001n); |
There was a problem hiding this comment.
Why was this change necessary?
There was a problem hiding this comment.
TokenHelper.test.ts:167 — expected interest-bearing conversion 995847000n → 995847001n. Upstream token-2022 0.17 changed the final rounding (rounds up instead of flooring). Note this is still a behavioral change users could see: interest-bearing balances can now differ by 1 raw unit after conversion.
|
@metamaskbot publish-preview |
|
Preview builds have been published. Learn how to use preview builds in other projects. Expand for full list of packages and versions. |
Co-authored-by: Battambang <frederic.heng@consensys.net>
Co-authored-by: Battambang <frederic.heng@consensys.net>
|
<!--
Please submit this PR as a draft initially.
Do not mark it as "Ready for review" until this PR meets the canonical
Definition of Ready For Review in `docs/readme/ready-for-review.md`.
In short: the template must be materially complete (not just section
titles
present), all status checks must be currently passing, and the only
expected
follow-up commits must be reviewer-driven.
-->
<!--
mms-check directive vocabulary — read by
.github/scripts/shared/pr-template-checks.ts
at module load to build the validation plan. Directives are invisible in
rendered
markdown and must NOT be removed or edited without updating the
validator registry.
type=text Section must contain non-placeholder prose.
type=changelog Section must have a valid CHANGELOG entry: line.
type=issue-link Section must have a Fixes:/Closes:/Refs: line with a
value.
type=manual-testing Section must have real testing steps or an explicit
N/A.
type=screenshot Section must have evidence (image/URL) or an explicit
N/A.
type=checklist Section must have all checkboxes consciously checked.
required=true|false Whether a missing/invalid section runs the validator
at all.
blocking=true|false Whether a failure of this check fails the CI
workflow.
Default: false — failures are shown as warnings in the sticky
comment but do not block the PR.
Sections without a directive are checked for structural presence only.
-->
## **Description**
<!-- mms-check: type=text required=true -->
<details>
<summary>Tron release changelog v4.0.0</summary>
### Added
- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#265](MetaMask/internal-snaps#265))
- Emit `Transaction Added`, `Transaction Approved`, and `Transaction
Rejected` for `signTransaction` confirmations
([MetaMask#333](MetaMask/internal-snaps#333))
- Only dApp-initiated transaction confirmations were affected; the
unified send flow already emitted these events.
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#374](MetaMask/internal-snaps#374))
### Changed
- **BREAKING** Bump `@metamask/keyring-api` from `^23.7.0` to `^24.1.0`
([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/keyring-snap-sdk` from `^9.2.1` to
`^10.0.0` ([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/snaps-sdk` from `^11.2.0` to `^12.0.1`
([MetaMask#214](MetaMask/internal-snaps#214))
### Removed
- **BREAKING** Remove the deprecated `asset` cluster of handlers:
`onAssetHistoricalPrice`, `onAssetsConversion`, `onAssetsLookup` and
`onAssetsMarketData`
([MetaMask#263](MetaMask/internal-snaps#263))
### Fixed
- Emit `Transaction Submitted` from the Wallet Standard
`signAndSendTransaction` path so its transactions no longer reach
`Transaction Finalized` without a matching submit event
([MetaMask#343](MetaMask/internal-snaps#343))
- Tolerate unknown fields in the Token API metadata response so that new
fields added by the API no longer fail validation and fall back to
default token metadata
([MetaMask#320](MetaMask/internal-snaps#320))
</details>
<details>
<summary>Solana release changelog v7.0.0</summary>
### Added
- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#256](MetaMask/internal-snaps#256))
- Add back the `endowment:assets` permission for the Solana scopes to
the snap manifest, with no-op `onAssetsLookup`, `onAssetsConversion`,
`onAssetHistoricalPrice`, and `onAssetsMarketData` entry points required
to keep the permission
([MetaMask#274](MetaMask/internal-snaps#274))
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#376](MetaMask/internal-snaps#376))
### Changed
- **BREAKING:** Bump `@solana/kit` from `^6.9.0` to `^8.3.0` and the
`@solana-program/*` clients (`compute-budget` `^0.18.1`, `system`
`^0.14.1`, `token` `^0.16.1`, `token-2022` `^0.17.0`) to their Kit
8-compatible versions.
([MetaMask#303](MetaMask/internal-snaps#303))
- **BREAKING:** Update the Solana Name Service integration to SNS SDK v1
and the Kit 6.9-compatible Solana program clients
([MetaMask#271](MetaMask/internal-snaps#271))
- **BREAKING** Bump `@metamask/keyring-api` from `^23.7.0` to `^24.1.0`
([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/keyring-snap-sdk` from `^9.2.1` to
`^10.0.0` ([MetaMask#214](MetaMask/internal-snaps#214))
- **BREAKING** Bump `@metamask/snaps-sdk` from `^11.2.0` to `^12.0.1`
([MetaMask#214](MetaMask/internal-snaps#214))
- Reduce `snap_getBip32Entropy` calls in `createAccounts` from two to
one for `bip44:discover` by deriving the activity-check address locally
from the already-fetched coin-type node, and parallelize the entropy
fetch with the existing-accounts state read for all creation paths
([MetaMask#304](MetaMask/internal-snaps#304))
- Coalesce concurrent `AccountsSynchronizer.synchronize` calls for the
same account set so duplicate in-flight syncs (e.g. simultaneous
connection-recovery events across mainnet and devnet) share one run
instead of fanning out redundant asset and transaction fetches
([MetaMask#304](MetaMask/internal-snaps#304))
- Migrate `trackError` and `withCatchAndThrowSnapError` to
`@metamask/snap-networks-utils` `createSnapErrorHandling`, and add
`getSnapProvider` for Snap RPC access
- Extract Snap-owned assets domain logic into `SnapAssetsAdapter`;
`AssetsService` is a thin facade that delegates metadata, market data,
fetch, persist, and account asset reads through the adapter (no Core
routing yet).
([MetaMask#121](MetaMask/internal-snaps#121))
- Align `AssetsService` read API with `snap-networks-utils` /
AssetsController shapes by adding `getAccountAssetByID`,
`getAccountAssetsByIDs`, `getAccountAssetsByScope`, and
`getAccountAssets`, and routing Keyring and Send through them (still
Snap-owned storage).
([MetaMask#120](MetaMask/internal-snaps#120))
- Bump `@metamask/utils` from `^11.9.0` to `^11.11.9`
([MetaMask#161](MetaMask/internal-snaps#161))
### Removed
- **BREAKING** Remove the `onAssetsLookup`, `onAssetsConversion`,
`onAssetHistoricalPrice`, and `onAssetsMarketData` asset handler entry
points, along with the now-unused handler modules and the
`endowment:assets` permission
([MetaMask#261](MetaMask/internal-snaps#261))
- **BREAKING** Remove `AssetsService.fetchAssetsMarketData` and
`SnapAssetsAdapter.fetchAssetsMarketData`, the `TokenPricesService`
class, and `PriceApiClient.getHistoricalPrices`, all of which were only
used by the removed asset handlers
([MetaMask#261](MetaMask/internal-snaps#261))
- Remove the now-unused `PriceApiClient.getFiatExchangeRates` method and
related `ExchangeRate` type, the unused `tokenPrices` unencrypted state
field, the unused `fiatExchangeRates` and `historicalPrices` price API
cache TTL options, and unused price API test mocks
([MetaMask#261](MetaMask/internal-snaps#261))
### Fixed
- **BREAKING:** Preserve dapp-origin `signTransaction` and
`signAndSendTransaction` payloads by signing the decoded transaction
directly ([MetaMask#156](MetaMask/internal-snaps#156))
- Prevent signing dapp transactions with expired blockhashes, and
refresh the blockhash for MetaMask-originated transactions before
signing. ([MetaMask#183](MetaMask/internal-snaps#183))
- Tolerate unknown fields in the Price API spot price and Token API
metadata responses so that new fields
added by the API no longer fail validation
([MetaMask#321](MetaMask/internal-snaps#321))
- Emit an `AccountTransactionsUpdated` keyring event with a pending
`unconfirmed` transaction immediately after broadcasting.
</details>
<details>
<summary>Bitcoin release changelog v3.1.0</summary>
### Added
- Add `signProofOfOwnershipBatch` for signing multiple
proof-of-ownership messages in one request.
([MetaMask#266](MetaMask/internal-snaps#266))
- Emit `Transaction Added`, `Transaction Approved`, and `Transaction
Rejected` tracking events from Bitcoin transaction confirmations
([MetaMask#328](MetaMask/internal-snaps#328),
[MetaMask#329](MetaMask/internal-snaps#329))
- Report account synchronization failures to Sentry with the failing
account IDs and their failure reasons
([MetaMask#375](MetaMask/internal-snaps#375))
### Fixed
- Populate the `from` address of receive transactions by resolving the
addresses that funded them through the chain indexer. Bitcoin inputs
only reference a previous outpoint, so the sender was previously left
empty. ([MetaMask#372](MetaMask/internal-snaps#372))
</details>
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->
<!--
Write a short description of the changes included in this pull request,
also include relevant motivation and context. Have in mind the following
questions:
1. What is the reason for the change?
2. What is the improvement/solution?
-->
## **Changelog**
<!-- mms-check: type=changelog required=true blocking=true -->
<!--
If this PR is not End-User-Facing and should not show up in the
CHANGELOG, you can choose to either:
1. Write `CHANGELOG entry: null`
2. Label with `no-changelog`
If this PR is End-User-Facing, please write a short User-Facing
description in the past tense like:
`CHANGELOG entry: Added a new tab for users to see their NFTs`
`CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker`
(This helps the Release Engineer do their job more quickly and
accurately)
-->
CHANGELOG entry: null
## **Related issues**
<!-- mms-check: type=issue-link required=true -->
n/a
## **Manual testing steps**
<!-- mms-check: type=manual-testing required=true -->
n/a
## **Screenshots/Recordings**
<!-- mms-check: type=screenshot required=true -->
<!-- If applicable, add screenshots and/or recordings to visualize the
before and after of your change. -->
### **Before**
n/a
<!-- [screenshots/recordings] -->
### **After**
n/a
<!-- [screenshots/recordings] -->
## **Pre-merge author checklist**
<!-- mms-check: type=checklist required=true -->
<!--
Every checklist item must be consciously assessed before marking this PR
as
"Ready for review". A checked box means you deliberately considered that
responsibility, not that you literally performed every action listed.
Unchecked boxes are ambiguous: they are not an implicit "N/A" and they
are not
a silent "skip". See `docs/readme/ready-for-review.md` for the full
checklist
semantics.
-->
- [ ] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [ ] I've completed the PR template to the best of my ability
- [ ] I've included tests if applicable
- [ ] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
#### Performance checks (if applicable)
- [ ] I've tested on Android
- Ideally on a mid-range device; emulator is acceptable
- [ ] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [ ] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example
For performance guidelines and tooling, see the [Performance
Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers).
## **Pre-merge reviewer checklist**
<!--
Reviewer checklist items follow the same semantics as the author
checklist: an
unchecked box is ambiguous, a checked box means the reviewer consciously
assessed that responsibility. See `docs/readme/ready-for-review.md`.
-->
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** <details> <summary>Tron release changelog v4.0.0</summary> ### Added - Add `signProofOfOwnershipBatch` for signing multiple proof-of-ownership messages in one request. ([MetaMask#265](MetaMask/internal-snaps#265)) - Emit `Transaction Added`, `Transaction Approved`, and `Transaction Rejected` for `signTransaction` confirmations ([MetaMask#333](MetaMask/internal-snaps#333)) - Only dApp-initiated transaction confirmations were affected; the unified send flow already emitted these events. - Report account synchronization failures to Sentry with the failing account IDs and their failure reasons ([MetaMask#374](MetaMask/internal-snaps#374)) ### Changed - **BREAKING** Bump `@metamask/keyring-api` from `^23.7.0` to `^24.1.0` ([MetaMask#214](MetaMask/internal-snaps#214)) - **BREAKING** Bump `@metamask/keyring-snap-sdk` from `^9.2.1` to `^10.0.0` ([MetaMask#214](MetaMask/internal-snaps#214)) - **BREAKING** Bump `@metamask/snaps-sdk` from `^11.2.0` to `^12.0.1` ([MetaMask#214](MetaMask/internal-snaps#214)) ### Removed - **BREAKING** Remove the deprecated `asset` cluster of handlers: `onAssetHistoricalPrice`, `onAssetsConversion`, `onAssetsLookup` and `onAssetsMarketData` ([MetaMask#263](MetaMask/internal-snaps#263)) ### Fixed - Emit `Transaction Submitted` from the Wallet Standard `signAndSendTransaction` path so its transactions no longer reach `Transaction Finalized` without a matching submit event ([MetaMask#343](MetaMask/internal-snaps#343)) - Tolerate unknown fields in the Token API metadata response so that new fields added by the API no longer fail validation and fall back to default token metadata ([MetaMask#320](MetaMask/internal-snaps#320)) </details> <details> <summary>Solana release changelog v7.0.0</summary> ### Added - Add `signProofOfOwnershipBatch` for signing multiple proof-of-ownership messages in one request. ([MetaMask#256](MetaMask/internal-snaps#256)) - Add back the `endowment:assets` permission for the Solana scopes to the snap manifest, with no-op `onAssetsLookup`, `onAssetsConversion`, `onAssetHistoricalPrice`, and `onAssetsMarketData` entry points required to keep the permission ([MetaMask#274](MetaMask/internal-snaps#274)) - Report account synchronization failures to Sentry with the failing account IDs and their failure reasons ([MetaMask#376](MetaMask/internal-snaps#376)) ### Changed - **BREAKING:** Bump `@solana/kit` from `^6.9.0` to `^8.3.0` and the `@solana-program/*` clients (`compute-budget` `^0.18.1`, `system` `^0.14.1`, `token` `^0.16.1`, `token-2022` `^0.17.0`) to their Kit 8-compatible versions. ([MetaMask#303](MetaMask/internal-snaps#303)) - **BREAKING:** Update the Solana Name Service integration to SNS SDK v1 and the Kit 6.9-compatible Solana program clients ([MetaMask#271](MetaMask/internal-snaps#271)) - **BREAKING** Bump `@metamask/keyring-api` from `^23.7.0` to `^24.1.0` ([MetaMask#214](MetaMask/internal-snaps#214)) - **BREAKING** Bump `@metamask/keyring-snap-sdk` from `^9.2.1` to `^10.0.0` ([MetaMask#214](MetaMask/internal-snaps#214)) - **BREAKING** Bump `@metamask/snaps-sdk` from `^11.2.0` to `^12.0.1` ([MetaMask#214](MetaMask/internal-snaps#214)) - Reduce `snap_getBip32Entropy` calls in `createAccounts` from two to one for `bip44:discover` by deriving the activity-check address locally from the already-fetched coin-type node, and parallelize the entropy fetch with the existing-accounts state read for all creation paths ([MetaMask#304](MetaMask/internal-snaps#304)) - Coalesce concurrent `AccountsSynchronizer.synchronize` calls for the same account set so duplicate in-flight syncs (e.g. simultaneous connection-recovery events across mainnet and devnet) share one run instead of fanning out redundant asset and transaction fetches ([MetaMask#304](MetaMask/internal-snaps#304)) - Migrate `trackError` and `withCatchAndThrowSnapError` to `@metamask/snap-networks-utils` `createSnapErrorHandling`, and add `getSnapProvider` for Snap RPC access - Extract Snap-owned assets domain logic into `SnapAssetsAdapter`; `AssetsService` is a thin facade that delegates metadata, market data, fetch, persist, and account asset reads through the adapter (no Core routing yet). ([MetaMask#121](MetaMask/internal-snaps#121)) - Align `AssetsService` read API with `snap-networks-utils` / AssetsController shapes by adding `getAccountAssetByID`, `getAccountAssetsByIDs`, `getAccountAssetsByScope`, and `getAccountAssets`, and routing Keyring and Send through them (still Snap-owned storage). ([MetaMask#120](MetaMask/internal-snaps#120)) - Bump `@metamask/utils` from `^11.9.0` to `^11.11.9` ([MetaMask#161](MetaMask/internal-snaps#161)) ### Removed - **BREAKING** Remove the `onAssetsLookup`, `onAssetsConversion`, `onAssetHistoricalPrice`, and `onAssetsMarketData` asset handler entry points, along with the now-unused handler modules and the `endowment:assets` permission ([MetaMask#261](MetaMask/internal-snaps#261)) - **BREAKING** Remove `AssetsService.fetchAssetsMarketData` and `SnapAssetsAdapter.fetchAssetsMarketData`, the `TokenPricesService` class, and `PriceApiClient.getHistoricalPrices`, all of which were only used by the removed asset handlers ([MetaMask#261](MetaMask/internal-snaps#261)) - Remove the now-unused `PriceApiClient.getFiatExchangeRates` method and related `ExchangeRate` type, the unused `tokenPrices` unencrypted state field, the unused `fiatExchangeRates` and `historicalPrices` price API cache TTL options, and unused price API test mocks ([MetaMask#261](MetaMask/internal-snaps#261)) ### Fixed - **BREAKING:** Preserve dapp-origin `signTransaction` and `signAndSendTransaction` payloads by signing the decoded transaction directly ([MetaMask#156](MetaMask/internal-snaps#156)) - Prevent signing dapp transactions with expired blockhashes, and refresh the blockhash for MetaMask-originated transactions before signing. ([MetaMask#183](MetaMask/internal-snaps#183)) - Tolerate unknown fields in the Price API spot price and Token API metadata responses so that new fields added by the API no longer fail validation ([MetaMask#321](MetaMask/internal-snaps#321)) - Emit an `AccountTransactionsUpdated` keyring event with a pending `unconfirmed` transaction immediately after broadcasting. </details> <details> <summary>Bitcoin release changelog v3.1.0</summary> ### Added - Add `signProofOfOwnershipBatch` for signing multiple proof-of-ownership messages in one request. ([MetaMask#266](MetaMask/internal-snaps#266)) - Emit `Transaction Added`, `Transaction Approved`, and `Transaction Rejected` tracking events from Bitcoin transaction confirmations ([MetaMask#328](MetaMask/internal-snaps#328), [MetaMask#329](MetaMask/internal-snaps#329)) - Report account synchronization failures to Sentry with the failing account IDs and their failure reasons ([MetaMask#375](MetaMask/internal-snaps#375)) ### Fixed - Populate the `from` address of receive transactions by resolving the addresses that funded them through the chain indexer. Bitcoin inputs only reference a previous outpoint, so the sender was previously left empty. ([MetaMask#372](MetaMask/internal-snaps#372)) </details> <!-- Write a short description of the changes included in this pull request, also include relevant motivation and context. Have in mind the following questions: 1. What is the reason for the change? 2. What is the improvement/solution? --> ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: null ## **Related issues** n/a ## **Manual testing steps** n/a ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> n/a ### **After** <!-- [screenshots/recordings] --> n/a ## **Pre-merge author checklist** - [ ] I've followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Extension Coding Standards](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [ ] I've completed the PR template to the best of my ability - [ ] I’ve included tests if applicable - [ ] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [ ] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-extension/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Major Solana and Tron snap upgrades can change signing, sync, and keyring behavior in production multichain flows; extension code changes are limited to dependency versions and e2e mocks. > > **Overview** > Bumps bundled multichain wallet Snaps: **Solana** `5.0.1` → `7.0.0`, **Tron** `3.2.0` → `4.0.0`, and **Bitcoin** `3.0.0` → `3.1.0`, with matching `yarn.lock` updates. > > E2E tests are adjusted for the new Solana snap behavior: the multichain `wallet_invokeMethod` **signAndSendTransaction** assertion uses an updated expected transaction **signature**, and the SPL token send success mocks swap **`mockGetTokenAccountBalance`** for **`mockGetSuccessSignaturesForAddress`** after broadcast so activity/history RPC expectations align with v7. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit c3efb9d. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->



Explanation
Bumps the Solana snap to @solana/kit@^8.3.0 (from ^6.9.0) and the @solana-program/* clients to their Kit 8-compatible versions, enabling full v1 transaction support.
Changes
@solana/kit → ^8.3.0; compute-budget → ^0.18.1, system → ^0.14.1, token → ^0.16.1, token-2022 → ^0.17.0
Add @solana/sysvars and @solana/zk-sdk (new peer dependencies of token-2022@0.17.0)
Add scoped resolution sns-sdk-kit/@solana-program/token: ^0.16.1 — sns-sdk-kit@1.0.1 pins token ^0.14.0, which imports getMinimumBalanceForRentExemption (removed in kit v7) and breaks the bundle build. Mirrors SolanaNameService/sns-sdk#2; drop once sns-sdk-kit@1.1.0 releases
Update one TokenHelper test expectation: token-2022 0.17 rounds the interest-bearing conversion up instead of flooring (995847000n → 995847001n); verified stable regardless of wall-clock time
References
Checklist