Skip to content

feat(cct-sdk): CCT SDK integration branch - #304

Draft
apedrob wants to merge 90 commits into
mainfrom
cct-sdk
Draft

feat(cct-sdk): CCT SDK integration branch#304
apedrob wants to merge 90 commits into
mainfrom
cct-sdk

Conversation

@apedrob

@apedrob apedrob commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

-- Integration branch for CCT-SDK --

apedrob and others added 30 commits June 12, 2026 17:25
mervin-link and others added 28 commits July 23, 2026 18:54
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* fix: address comments

* fix: export resolveTokenMint
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* feat: add create token multisig op solana

* fix: refactor validators

* fix: refactor validators

* fix: export pool programs and type

* fix: use current module's PublicKey

* fix: address comments

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* fix: change to TransactionResult

* fix: address comments

* fix: export resolveTokenMint

* fix: merge conflicts
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* fix: address comments
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* Address comments and linting
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* feat(cct-sdk): Add EVM authorizeLockboxCallers operation (DAPP-10788)

Add AuthorizeLockboxCallers op (wraps ERC20LockBox applyAuthorizedCallerUpdates) + tests, and wire generateUnsignedAuthorizeLockboxCallers/authorizeLockboxCallers into EVMTokenManager to complete the LockRelease flow.

* Update doc
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* fix: get pool state tests

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* fix: address comments

* fix: refactor solana ops

* fix: package-lock file

* fix: package script

* fix: remove cct exports and add script to pack package including cct

* fix: address comments

* fix: address comments

* fix: add comment
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* feat(cct-sdk): Add EVM authorizeLockboxCallers operation (DAPP-10788)

Add AuthorizeLockboxCallers op (wraps ERC20LockBox applyAuthorizedCallerUpdates) + tests, and wire generateUnsignedAuthorizeLockboxCallers/authorizeLockboxCallers into EVMTokenManager to complete the LockRelease flow.

* refactor(cct-sdk): add validateNonZeroAddress + guard single-tx submit

* feat(cct-sdk): EVM deploy verification + unify deploy ops

* Address PR comments

* Review pass
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments

* fix: add validateOptionalPublicKey and refactor test files

* fix: update solana lifecycle

* fix: remove dev build

* fix: address comments

* fix: params.additionalAddresses.length with eslint rule

* fix: add TODO and validation test
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments

* fix: add validateOptionalPublicKey and refactor test files

* fix: update solana lifecycle

* fix: remove dev build

* feat: add configure allowlist op solana

* fix: assert configure allowlist functions

* fix: address comments

* fix: params.additionalAddresses.length with eslint rule

* fix: address comments
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments

* fix: add validateOptionalPublicKey and refactor test files

* fix: update solana lifecycle

* fix: remove dev build

* feat: add configure allowlist op solana

* fix: assert configure allowlist functions

* fix: address comments

* fix: params.additionalAddresses.length with eslint rule

* fix: address comments

* feat: add remove from allowlist op solana

* fix: add validations and test coverage

* fix: add additional tsdoc
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* feat(cct-sdk): Add EVM authorizeLockboxCallers operation (DAPP-10788)

Add AuthorizeLockboxCallers op (wraps ERC20LockBox applyAuthorizedCallerUpdates) + tests, and wire generateUnsignedAuthorizeLockboxCallers/authorizeLockboxCallers into EVMTokenManager to complete the LockRelease flow.

* refactor(cct-sdk): add validateNonZeroAddress + guard single-tx submit

* feat(cct-sdk): EVM deploy verification + unify deploy ops

* Address PR comments

* Review pass

* feat(cct-sdk): add cross-family Query read base (DAPP-10823)

Query wires validate -> read so params are rejected before any RPC, mirroring how
Operation.generate gates buildUnsigned on the write side. EVMQuery binds it to an
EVMChain and owns getTypedContract, the single ethers -> ethers-abitype bridge that
CCT read ops decode through.

* feat(cct-sdk): add pool family type guards (DAPP-10823)

BurnMintTokenPoolType / LockReleaseTokenPoolType split TOKEN_POOL_TYPES by ABI family,
and isLockReleaseTokenPoolType narrows to the lock/release set per getTokenPoolFamily.

* feat(cct-sdk): add EVM getTokenPoolState read op (DAPP-10823)

Reads a pool's admin state across v1.5.0-v2.0.0 through the getters each version has:
one reader per generation, dispatched explicitly rather than floor-matched, so adding a
pool version fails to compile instead of silently inheriting a reader. The result is a
union discriminated by version, then by type for a lock/release pool's lockBox. v1.5.0
has no getTokenDecimals, so legacy decimals come from the token.

* feat(cct-sdk): expose getTokenPoolState on EVMTokenManager (DAPP-10823)

Also groups the operation fields by area (token / token admin registry / token pool /
lockbox), matching SolanaTokenManager.

* refactor(cct-sdk): move SolanaQuery onto the shared Query base (DAPP-10823)

GetTokenPoolState gains name + validate and drops its params-conditional result: read
now resolves to the union, which removes a query override that only re-typed the base's
two steps, along with the two casts that conditional return required. Caller narrowing
moves to SolanaTokenManager.getTokenPoolState overloads, so call sites and inferred
types are unchanged.

* Address PR comments

* Address PR comments
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments

* fix: add validateOptionalPublicKey and refactor test files

* fix: update solana lifecycle

* fix: remove dev build

* feat: add configure allowlist op solana

* fix: assert configure allowlist functions

* fix: address comments

* fix: params.additionalAddresses.length with eslint rule

* fix: address comments

* feat: add remove from allowlist op solana

* fix: add validations and test coverage

* fix: add additional tsdoc

* feat: add init chain remote config op solana

* fix: throw empty buffer

* fix: update tsdoc

* fix: address comments
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments

* fix: add validateOptionalPublicKey and refactor test files

* fix: update solana lifecycle

* fix: remove dev build

* feat: add configure allowlist op solana

* fix: assert configure allowlist functions

* fix: address comments

* fix: params.additionalAddresses.length with eslint rule

* fix: address comments

* feat: add remove from allowlist op solana

* fix: add validations and test coverage

* fix: add additional tsdoc

* feat: add init chain remote config op solana

* fix: throw empty buffer

* fix: update tsdoc

* feat: add edit chain remote config op solana

* fix: refactor wallet params

* fix: address comments

* fix: address comments
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments

* fix: add validateOptionalPublicKey and refactor test files

* fix: update solana lifecycle

* fix: remove dev build

* feat: add configure allowlist op solana

* fix: assert configure allowlist functions

* fix: address comments

* fix: params.additionalAddresses.length with eslint rule

* fix: address comments

* feat: add remove from allowlist op solana

* fix: add validations and test coverage

* fix: add additional tsdoc

* feat: add init chain remote config op solana

* fix: throw empty buffer

* fix: update tsdoc

* feat: add edit chain remote config op solana

* fix: refactor wallet params

* feat: add delete chain remote config op solana

* fix: address comments

* fix: address comments

* fix: address comments
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* feat(cct-sdk): Add EVM authorizeLockboxCallers operation (DAPP-10788)

Add AuthorizeLockboxCallers op (wraps ERC20LockBox applyAuthorizedCallerUpdates) + tests, and wire generateUnsignedAuthorizeLockboxCallers/authorizeLockboxCallers into EVMTokenManager to complete the LockRelease flow.

* refactor(cct-sdk): add validateNonZeroAddress + guard single-tx submit

* feat(cct-sdk): EVM deploy verification + unify deploy ops

* Address PR comments

* Review pass

* feat(cct-sdk): add cross-family Query read base (DAPP-10823)

Query wires validate -> read so params are rejected before any RPC, mirroring how
Operation.generate gates buildUnsigned on the write side. EVMQuery binds it to an
EVMChain and owns getTypedContract, the single ethers -> ethers-abitype bridge that
CCT read ops decode through.

* feat(cct-sdk): add pool family type guards (DAPP-10823)

BurnMintTokenPoolType / LockReleaseTokenPoolType split TOKEN_POOL_TYPES by ABI family,
and isLockReleaseTokenPoolType narrows to the lock/release set per getTokenPoolFamily.

* feat(cct-sdk): add EVM getTokenPoolState read op (DAPP-10823)

Reads a pool's admin state across v1.5.0-v2.0.0 through the getters each version has:
one reader per generation, dispatched explicitly rather than floor-matched, so adding a
pool version fails to compile instead of silently inheriting a reader. The result is a
union discriminated by version, then by type for a lock/release pool's lockBox. v1.5.0
has no getTokenDecimals, so legacy decimals come from the token.

* feat(cct-sdk): expose getTokenPoolState on EVMTokenManager (DAPP-10823)

Also groups the operation fields by area (token / token admin registry / token pool /
lockbox), matching SolanaTokenManager.

* refactor(cct-sdk): move SolanaQuery onto the shared Query base (DAPP-10823)

GetTokenPoolState gains name + validate and drops its params-conditional result: read
now resolves to the union, which removes a query override that only re-typed the base's
two steps, along with the two casts that conditional return required. Caller narrowing
moves to SolanaTokenManager.getTokenPoolState overloads, so call sites and inferred
types are unchanged.

* Address PR comments

* feat(cct-sdk): Add register token evm op

---------

Co-authored-by: mervin-link <tvc-mervin.villaceran@smartcontract.com>
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments

* fix: add validateOptionalPublicKey and refactor test files

* fix: update solana lifecycle

* fix: remove dev build

* feat: add configure allowlist op solana

* fix: assert configure allowlist functions

* fix: address comments

* fix: params.additionalAddresses.length with eslint rule

* fix: address comments

* feat: add remove from allowlist op solana

* fix: add validations and test coverage

* fix: add additional tsdoc

* feat: add init chain remote config op solana

* fix: throw empty buffer

* fix: update tsdoc

* feat: add edit chain remote config op solana

* fix: refactor wallet params

* feat: add delete chain remote config op solana

* fix: migrate solana ops to use parse

* fix: update tsdoc
* Better separation of concerns and abstractions

* CCT: Add version dispatch + Transfer Ownership

* Adjust with base

* Address generic error types and doc examples

* Fix linting

* feat(cct-sdk): Add deploy evm token

* Address PR comments

* Address PR comments by fixing chain-specific types

* feat(cct-sdk): Source chainlink/contracts-ccip artifacts (#303)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* Remove outdated bytecodes

* feat(cct-sdk): Add CrossChainToken deployment + token versioning (#305)

* feat(cct-sdk): Source token + pool abi/bytecode from contracts-ccip

* feat(cct-sdk): Add versioned Deploy Token (CCT + ERC20)

* Remove outdated bytecodes

* Deploy only CrossChainToken

* Recover previous type changes

* Address preMint specs

* feat(cct-sdk): Add deploy evm token pool + type/version resolution

* add remarks ts doc comment

* Address PR comments

* add lockfile to fix ci issue

* Add comments

* feat(cct-sdk): Add EVM deployLockbox operation (DAPP-10738)

Vendor ERC20LockBox v2.0.0 artifacts; add the cached lockbox Interface + DeployLockbox op, wire generateUnsignedDeployLockbox/deployLockbox into EVMTokenManager, and document the LockRelease deploy sequence.

* feat(cct-sdk): Add EVM authorizeLockboxCallers operation (DAPP-10788)

Add AuthorizeLockboxCallers op (wraps ERC20LockBox applyAuthorizedCallerUpdates) + tests, and wire generateUnsignedAuthorizeLockboxCallers/authorizeLockboxCallers into EVMTokenManager to complete the LockRelease flow.

* refactor(cct-sdk): add validateNonZeroAddress + guard single-tx submit

* feat(cct-sdk): EVM deploy verification + unify deploy ops

* Address PR comments

* Review pass

* feat(cct-sdk): add cross-family Query read base (DAPP-10823)

Query wires validate -> read so params are rejected before any RPC, mirroring how
Operation.generate gates buildUnsigned on the write side. EVMQuery binds it to an
EVMChain and owns getTypedContract, the single ethers -> ethers-abitype bridge that
CCT read ops decode through.

* feat(cct-sdk): add pool family type guards (DAPP-10823)

BurnMintTokenPoolType / LockReleaseTokenPoolType split TOKEN_POOL_TYPES by ABI family,
and isLockReleaseTokenPoolType narrows to the lock/release set per getTokenPoolFamily.

* feat(cct-sdk): add EVM getTokenPoolState read op (DAPP-10823)

Reads a pool's admin state across v1.5.0-v2.0.0 through the getters each version has:
one reader per generation, dispatched explicitly rather than floor-matched, so adding a
pool version fails to compile instead of silently inheriting a reader. The result is a
union discriminated by version, then by type for a lock/release pool's lockBox. v1.5.0
has no getTokenDecimals, so legacy decimals come from the token.

* feat(cct-sdk): expose getTokenPoolState on EVMTokenManager (DAPP-10823)

Also groups the operation fields by area (token / token admin registry / token pool /
lockbox), matching SolanaTokenManager.

* refactor(cct-sdk): move SolanaQuery onto the shared Query base (DAPP-10823)

GetTokenPoolState gains name + validate and drops its params-conditional result: read
now resolves to the union, which removes a query override that only re-typed the base's
two steps, along with the two casts that conditional return required. Caller narrowing
moves to SolanaTokenManager.getTokenPoolState overloads, so call sites and inferred
types are unchanged.

* Address PR comments

* feat(cct-sdk): Add register token evm op

* feat(cct-sdk): Add transfer admin evm op

* docs(cct-sdk): document ZeroAddress cancellation behavior and add role distinction warning to transferAdmin execute method

* feat(cct-sdk): Add accept admin evm op (#328)

* feat(cct-sdk): Add accept admin evm op

* feat(cct-sdk): Add get token admin registry config evm query (#335)

* feat(cct-sdk): Add get token admin registry config evm op

* docs(cct-sdk): add ZeroAddress caveat to GetTokenAdminRegistryResult type alias

Clarify that administrator may be ZeroAddress for pending-acceptance state;
guide callers to test with === ZeroAddress instead of truthiness to avoid
silently missing the pending-registration case.

* feat(cct-sdk): Add get supported tokens evm query (#336)

* feat(cct-sdk): Add get supported tokens evm query

* docs+types(cct-sdk): add default page size and explicit result type to getSupportedTokens

- Document that page parameter defaults to 1000 tokens per call
- Add explicit GetSupportedTokensResult type export for surface parity with
  sibling ops and Solana variant
- Makes the intent clearer and provides consistency across CCT query operations

* fix: use GetSupportedTokensResult

---------

Co-authored-by: aelmanaa <aelmanaa@users.noreply.github.com>
Co-authored-by: mervin-link <tvc-mervin.villaceran@smartcontract.com>

---------

Co-authored-by: aelmanaa <aelmanaa@users.noreply.github.com>
Co-authored-by: mervin-link <tvc-mervin.villaceran@smartcontract.com>

---------

Co-authored-by: aelmanaa <aelmanaa@users.noreply.github.com>
Co-authored-by: mervin-link <tvc-mervin.villaceran@smartcontract.com>

---------

Co-authored-by: aelmanaa <aelmanaa@users.noreply.github.com>
Co-authored-by: mervin-link <tvc-mervin.villaceran@smartcontract.com>
* feat: add deploy token op solana

* feat: add deploy token pool op solana

* fix: add wallet and authority assertion

* fix: add tsdoc

* fix: add tsdoc

* feat: add create token account op solana

* fix: group ops in SolanaTokenManager

* fix: address comments

* fix: remove helper function and override execute

* fix: address comments

* fix: address comments

* fix: refactor validators

* fix: export pool programs and type

* fix: add validateAuthorityMatchesWallet

* fix: use validateAuthorityMatchesWallet

* fix: add @remarks to deploy token pool

* feat: add get token pool state op solana

* fix: address comments

* fix: let decodeTokenPoolState catch errors

* fix: add parsePublicKey helper

* fix: move getTokenPoolState declaration

* fix: address comments

* fix: export resolveTokenMint

* feat: add register token op solana

* fix: update register token tests

* feat: add propose admin op solana

* fix: get pool state tests

* feat: add accept admin op solana

* fix: address comments

* fix: update tsdoc for register admin

* fix: update tsdoc for register admin

* fix: address comments

* fix: address comments

* fix: address comments

* fix: update err.context.reason test

* feat: add get token admin registry config op solana

* fix: group tests

* fix: merge conflicts

* fix: remove console logs

* fix: refactor test

* fix: add tsdoc for decodeTokenAdminRegistryConfig

* feat: add get supported tokens op solana

* fix: address followup comments

* fix: address comments

* fix: add validateOptionalPublicKey and refactor test files

* fix: update solana lifecycle

* fix: remove dev build

* feat: add configure allowlist op solana

* fix: assert configure allowlist functions

* fix: address comments

* fix: params.additionalAddresses.length with eslint rule

* fix: address comments

* feat: add remove from allowlist op solana

* fix: add validations and test coverage

* fix: add additional tsdoc

* feat: add init chain remote config op solana

* fix: throw empty buffer

* fix: update tsdoc

* feat: add edit chain remote config op solana

* fix: refactor wallet params

* feat: add delete chain remote config op solana

* fix: migrate solana ops to use parse

* feat: add set rate limit op solana

* fix: defaults to zeroes if enabled is false

* fix: update tsdoc

* feat(cct-sdk): Add set chain rate limit admin op solana (#347)

feat: add set rate limit admin op solana
* fix: refactor solana parse with validations

* fix: remove TODO

* fix: address comments
* feat: add apply chian updates op solana

* fix: add explicitly types

* fix: address comments

* fix: update tsdoc

* fix: address comments

* feat(cct-sdk): Add append remote pool addresses op solana (#352)

* feat: add append remote pool addresses op solana

* fix: address comments
@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown

Coverage Report

ℹ tests 1621
ℹ suites 451
ℹ pass 1621
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 390087.33313

> @chainlink/ccip-cli@1.11.1 test
> node --test

✔ src/commands/e2e-helpers.test.ts (117.315921ms)
Verbose mode enabled
▶ getCtx
  ▶ output — always stdout
    ✔ output.write goes to stdout (1.556449ms)
    ✔ output.table goes to stdout (0.741345ms)
  ✔ output — always stdout (3.280871ms)
  ▶ logger — always stderr
    ✔ logger.info goes to stderr (0.410768ms)
    ✔ logger.warn goes to stderr (0.297266ms)
    ✔ logger.error goes to stderr (0.284672ms)
  ✔ logger — always stderr (1.229658ms)
  ▶ verbose mode
    ✔ logger.debug is a no-op when verbose is false (0.847603ms)
    ✔ logger.debug goes to stderr when verbose is true (1.31058ms)
  ✔ verbose mode (2.364448ms)
  ▶ destroy signal
    ✔ returns a working destroy function (10.693683ms)
    ✔ calling destroy twice does not throw (0.459559ms)
  ✔ destroy signal (11.403651ms)
✔ getCtx (19.009153ms)
▶ lane-latency command
  ✔ should output JSON format correctly (19.064807ms)
  ✔ should resolve chain IDs to chain selectors (4.006777ms)
  ✔ should use custom API URL when provided (5.277042ms)
  ✔ should output log format correctly (3.394393ms)
  ✔ should handle chain IDs as input (2.260664ms)
  ✔ should handle chain selectors as input (1.980642ms)
  ✔ should throw CCIPApiClientNotAvailableError when --no-api flag is set (1.148897ms)
  ✔ should work normally when --no-api flag is false (1.552611ms)
  ✔ should forward blockConfirmations to API URL (1.532143ms)
  ✔ should not include numOfBlocks when blockConfirmations is not provided (3.648648ms)
  ▶ CCIP_API environment variable integration
    ✔ should respect CCIP_API=false environment variable (0.557853ms)
  ✔ CCIP_API environment variable integration (1.371903ms)
✔ lane-latency command (47.654043ms)
▶ e2e command lane EVM v1.5
  ✔ should show lane config Sepolia -> Fuji (v1.5) in JSON (4891.287857ms)
  ✔ should show lane config Sepolia -> Fuji (v1.5) in pretty format (3775.118539ms)
✔ e2e command lane EVM v1.5 (8668.305244ms)
▶ e2e command lane EVM v2.0
  ✔ should show lane config Sepolia -> Fuji (v2.0) in JSON (2802.196676ms)
✔ e2e command lane EVM v2.0 (2802.475889ms)
▶ e2e command lane EVM <-> Aptos (v1.6)
  ✔ should show lane config Sepolia -> Aptos (v1.6) (3204.867633ms)
  ✔ should show lane config Aptos -> Sepolia (v1.6) (4197.832498ms)
✔ e2e command lane EVM <-> Aptos (v1.6) (7403.22283ms)
▶ e2e command lane EVM <-> Solana (v1.6)
  ✔ should show lane config Sepolia -> Solana (v1.6) (3938.016895ms)
  ✔ should show lane config Solana -> Sepolia (v1.6) (3003.730787ms)
✔ e2e command lane EVM <-> Solana (v1.6) (6942.341523ms)
▶ e2e command lane EVM <-> TON (v1.6)
  ✔ should show lane config TON -> Sepolia (v1.6) (37184.698133ms)
  ✔ should show lane config Sepolia -> TON (v1.6) (21230.64413ms)
✔ e2e command lane EVM <-> TON (v1.6) (58415.69867ms)
▶ selectRequest non-interactive behavior
  ✔ returns the single request without prompting (1.380469ms)
  ✔ returns the request matching logIndex (0.219039ms)
  ✔ throws CCIPInteractiveRequiredError for multiple requests without logIndex (1.891384ms)
✔ selectRequest non-interactive behavior (4.856295ms)
▶ CCIPInteractiveRequiredError
  ✔ has correct code and is not transient (0.297496ms)
  ✔ uses default recovery when none provided (0.286776ms)
  ✔ preserves context fields (0.223557ms)
✔ CCIPInteractiveRequiredError (0.99525ms)
▶ preprocessArgv TTY auto-detection
  ✔ --interactive flag is defined in globalOpts (0.195876ms)
✔ preprocessArgv TTY auto-detection (0.325248ms)
▶ search messages command
  ✔ should throw CCIPApiClientNotAvailableError when --no-api flag is set (2.785725ms)
  ✔ should output JSON format correctly (14.223981ms)
  ✔ should pass sender filter to API (2.853563ms)
  ✔ should pass receiver filter to API (3.043893ms)
  ✔ should resolve source chain to selector (2.863341ms)
  ✔ should resolve dest chain to selector (2.869382ms)
  ✔ should pass manual-exec-only filter to API (2.830079ms)
  ✔ should treat limit 0 as unlimited (5.333718ms)
  ✔ should respect limit parameter (5.836347ms)
  ✔ should warn when no results found (0.999047ms)
  ✔ should use custom API URL when provided (2.447353ms)
  ✔ should warn on negative limit and fall back to default (2.421906ms)
  ✔ should output log format (2.22606ms)
✔ search messages command (52.56226ms)
▶ e2e command show EVM
  ▶ pretty format (default)
    ✔ should show complete CCIP transaction details EVM to EVM (5675.600437ms)
  ✔ pretty format (default) (5677.039386ms)
  ▶ json format
    ✔ should output a single valid JSON envelope with all expected fields (4717.686118ms)
  ✔ json format (4717.993963ms)
  ▶ log format
    ✔ should output in log format with object assignments (4676.9928ms)
  ✔ log format (4677.35551ms)
  ▶ verbose flag
    ✔ should work with verbose flag enabled (5612.191215ms)
  ✔ verbose flag (5612.735773ms)
  ▶ error handling
    ✔ should handle invalid transaction hash gracefully (7576.002851ms)
    ✔ should require transaction hash argument (1681.803447ms)
  ✔ error handling (9258.185788ms)
  ✔ should show complete CCIP transaction details EVM to Aptos (13264.254962ms)
  ✔ should show complete CCIP transaction details EVM to Solana (5900.107486ms)
  ✔ should show EVM to Solana v2 OffRamp execution without verifications (2862.354144ms)
✔ e2e command show EVM (51971.773237ms)
▶ e2e command show Solana
  ✔ should show complete CCIP transaction details Solana to EVM (8498.798548ms)
✔ e2e command show Solana (8499.011807ms)
▶ e2e command show Aptos
  ✔ should show complete CCIP transaction details Aptos to EVM (6091.91688ms)
✔ e2e command show Aptos (6092.129327ms)
﹣ e2e command show TON (0.115206ms) # SKIP
▶ formatCCIPError
  ✔ should return null for non-CCIPError instances (1.425304ms)
  ✔ should format CCIPError with code and message (0.472623ms)
  ✔ should include help section with recovery hint (0.30484ms)
  ✔ should include note section for transient errors (0.344383ms)
  ✔ should include retry timing for transient errors with retryAfterMs (1.637631ms)
  ✔ should not include note section for permanent errors (0.236773ms)
  ✔ should format error with structured output (0.257371ms)
  ✔ should include stack trace when verbose is true (0.481479ms)
  ✔ should not include stack trace when verbose is false (0.22507ms)
✔ formatCCIPError (7.106881ms)
▶ yieldResolved
  ✔ throws if a promise rejects while the generator is paused after a yield (11.028289ms)
✔ yieldResolved (11.360119ms)
▶ canton/signer
  ▶ Ed25519TransactionSigner constructor
    ✔ constructs with a valid 64-char hex seed (4.329511ms)
    ✔ constructs with a 0x-prefixed seed (0.410917ms)
    ✔ throws when seed is too short (0.727299ms)
    ✔ throws when seed is too long (0.240309ms)
    ✔ throws when seed contains non-hex characters (0.216525ms)
    ✔ computes the correct Canton fingerprint (0.957128ms)
    ✔ produces different fingerprints for different seeds (1.46068ms)
  ✔ Ed25519TransactionSigner constructor (9.949493ms)
  ▶ Ed25519TransactionSigner.sign()
    ✔ returns a PartySignatures structure (1.053289ms)
    ✔ includes the correct party ID (0.576938ms)
    ✔ produces a signature with correct properties (0.974121ms)
    ✔ produces a valid Ed25519 signature (64 bytes) (0.419173ms)
    ✔ produces a cryptographically valid signature (4.625374ms)
    ✔ produces different signatures for different hashes (0.513419ms)
    ✔ produces different signatures for different signers (same hash) (0.643512ms)
    ✔ handles empty hash (edge case) (0.60001ms)
  ✔ Ed25519TransactionSigner.sign() (9.883769ms)
  ▶ Ed25519TransactionSigner.getFingerprint()
    ✔ returns the fingerprint computed during construction (0.367276ms)
    ✔ returns a 68-character hex string (0.379509ms)
  ✔ Ed25519TransactionSigner.getFingerprint() (0.858664ms)
  ▶ Integration: multiple signers with same party
    ✔ allows multiple signers for the same party with different keys (0.742136ms)
  ✔ Integration: multiple signers with same party (0.827266ms)
✔ canton/signer (22.334767ms)
▶ fetchChainsFromRpcs
  ✔ lets duplicate tx-hash race endpoints query before aborting losers (15.670584ms)
  ✔ chainGetter: returns chain from first winning endpoint and destroys late arrivals (51.974808ms)
  ✔ chainGetter: resolves a pending request once the endpoint connects (Branch 2) (21.813985ms)
  ✔ chainGetter: rejects with CCIPRpcNotFoundError when all endpoints fail to connect (1.678938ms)
  ✔ chainGetter: rejects immediately with CCIPRpcNotFoundError once family is already exhausted (0.66893ms)
  ✔ txHash: rejects with CCIPTransactionNotFoundError when tx not on any chain (0.90401ms)
  ✔ txHash: Branch-4 (txOnlyRacer) is destroyed via catch when it loses the tx race (11.223614ms)
  ✔ txHash: chain connecting after txFoundIn is set is immediately destroyed without calling getTransaction (23.905773ms)
  ✔ txHash: Branch-2 chain given to a pending chainGetter is NOT destroyed when it cannot find the tx (13.069083ms)
  ✔ txFoundIn shared across families: SVM txOnlyRacer is destroyed after EVM wins (34.961094ms)
✔ fetchChainsFromRpcs (178.402099ms)
▶ isCantonLedgerUrl
  ✔ matches Canton JSON Ledger API paths (0.215262ms)
  ✔ does not match EVM JSON-RPC URLs (0.127949ms)
✔ isCantonLedgerUrl (0.530681ms)
▶ filterEndpointsForFamily
  ✔ gives Canton only ledger URLs (0.196227ms)
  ✔ gives EVM only non-ledger URLs (0.147436ms)
✔ filterEndpointsForFamily (0.478064ms)
▶ resolveRouter
  ✔ returns explicit CLI -r for any source family (0.291955ms)
  ✔ returns undefined for EVM source without -r (0.111739ms)
✔ resolveRouter (0.527486ms)
▶ resolveCliIndexer
  ✔ prefers explicit CLI --indexer values (0.237854ms)
  ✔ falls back to canton-config indexerUrl when the lane involves Canton (0.13337ms)
  ✔ does not fall back to canton-config indexerUrl for EVM-only lanes (0.108874ms)
  ✔ returns undefined when neither CLI nor config provides an indexer (0.127378ms)
✔ resolveCliIndexer (0.841512ms)
▶ resolveCliRouter
  ✔ prefers explicit CLI -r on Canton source (0.162925ms)
  ✔ prefers explicit CLI -r on EVM source even when canton-config has senderInstanceId (0.082925ms)
  ✔ falls back to canton-config senderInstanceId for Canton source (0.078246ms)
  ✔ does not fall back to senderInstanceId for EVM source (0.072205ms)
✔ resolveCliRouter (0.537996ms)
ℹ tests 113
ℹ suites 38
ℹ pass 113
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 84534.629847
---------------------------------------|---------|----------|---------|---------|-------------------
File                                   | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
---------------------------------------|---------|----------|---------|---------|-------------------
All files                              |   81.27 |     81.3 |   71.82 |   81.27 |                   
 ccip-cli/src                          |   90.42 |    59.25 |      75 |   90.42 |                   
  index.ts                             |   90.42 |    59.25 |      75 |   90.42 | ...73-174,180-185 
 ccip-cli/src/commands                 |      51 |    72.88 |   61.66 |      51 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
  lane-latency.ts                      |   70.49 |    84.61 |   33.33 |   70.49 | ...,70-77,113-120 
  lane.ts                              |   85.89 |    68.42 |     100 |   85.89 | ...34-137,141-143 
  manual-exec.ts                       |   20.34 |      100 |       0 |   20.34 | ...39-149,151-347 
  parse.ts                             |   57.14 |      100 |       0 |   57.14 | 46-50,57-64,66-91 
  search.ts                            |   81.25 |      100 |       0 |   81.25 | 24-29             
  send.ts                              |   13.18 |      100 |       0 |   13.18 | ...03-231,233-546 
  show.ts                              |   75.62 |    63.75 |     100 |   75.62 | ...15-318,398-400 
  supported-tokens.ts                  |      17 |      100 |       0 |      17 | ...59-332,334-347 
  token.ts                             |    22.9 |      100 |       0 |    22.9 | ...3,60-67,69-131 
  types.ts                             |     100 |      100 |     100 |     100 |                   
  utils.ts                             |   87.39 |     75.6 |   96.42 |   87.39 | ...99-609,617-625 
 ccip-cli/src/commands/search          |   52.61 |    76.19 |    12.5 |   52.61 |                   
  messages.ts                          |   52.61 |    76.19 |    12.5 |   52.61 | ...28-250,252-287 
 ccip-cli/src/providers                |   61.41 |    87.82 |      45 |   61.41 |                   
  aptos.ts                             |   51.47 |      100 |       0 |   51.47 | ...,95-96,105-136 
  canton.ts                            |   85.71 |    96.29 |      90 |   85.71 | 185-203,254-273   
  evm.ts                               |    36.3 |      100 |       0 |    36.3 | ...69-104,116-168 
  index.ts                             |   84.86 |    84.33 |      90 |   84.86 | 130-131,289-337   
  solana.ts                            |   47.44 |      100 |       0 |   47.44 | ...02-103,112-137 
  sui.ts                               |   64.28 |      100 |       0 |   64.28 | 10-14             
  ton.ts                               |   15.03 |      100 |       0 |   15.03 | 24-153            
 ccip-sdk/src                          |   94.81 |    86.28 |   92.24 |   94.81 |                   
  chain.ts                             |   96.12 |     78.8 |   84.37 |   96.12 | ...2293,2326-2327 
  commits.ts                           |    90.9 |    74.19 |     100 |    90.9 | ...06,115-118,120 
  execution.ts                         |   86.46 |    78.94 |     100 |   86.46 | ...47-248,250-251 
  explorer.ts                          |     100 |      100 |     100 |     100 |                   
  extra-args.ts                        |     100 |    89.47 |     100 |     100 | 225,260,297,312   
  fetch.ts                             |   98.23 |    94.05 |   97.14 |   98.23 | ...09-610,686-687 
  gas.ts                               |   85.17 |    86.04 |      75 |   85.17 | ...83-294,403-452 
  http-status.ts                       |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
  messages.ts                          |    79.2 |    46.15 |      40 |    79.2 | ...99-310,314-327 
  networks.ts                          |     100 |      100 |     100 |     100 |                   
  offchain.ts                          |   84.64 |    76.92 |     100 |   84.64 | ...18-227,236-237 
  requests.ts                          |   95.28 |    91.01 |     100 |   95.28 | ...39-640,665-670 
  supported-chains.ts                  |     100 |      100 |     100 |     100 |                   
  types.ts                             |     100 |      100 |     100 |     100 |                   
  utils.ts                             |   98.34 |    93.93 |     100 |   98.34 | ...98,203-204,206 
 ccip-sdk/src/api                      |   93.22 |    83.44 |   94.73 |   93.22 |                   
  index.ts                             |   93.22 |    83.44 |   94.73 |   93.22 | ...92-895,898-901 
 ccip-sdk/src/aptos                    |   62.62 |    69.94 |   62.71 |   62.62 |                   
  exec.ts                              |   29.31 |      100 |       0 |   29.31 | 18-58             
  hasher.ts                            |   75.89 |       80 |   66.66 |   75.89 | 17-36,50-56       
  index.ts                             |   66.82 |    77.57 |   66.66 |   66.82 | ...1012,1016-1027 
  logs.ts                              |   86.86 |    51.85 |   85.71 |   86.86 | ...08-214,216-227 
  send.ts                              |    25.6 |      100 |       0 |    25.6 | ...2,63-80,93-125 
  token.ts                             |   23.75 |       75 |     100 |   23.75 | 35-156            
  types.ts                             |   65.97 |      100 |       0 |   65.97 | 26-33,65-89       
 ccip-sdk/src/canton                   |   44.72 |    76.56 |   31.66 |   44.72 |                   
  amount.ts                            |   92.59 |       70 |     100 |   92.59 | 22-23             
  ccv-addresses.ts                     |     100 |    91.07 |     100 |     100 | 13,30,64,67       
  defaults.ts                          |   99.28 |    90.24 |     100 |   99.28 | 93                
  events.ts                            |   45.74 |     52.5 |   23.52 |   45.74 | ...13-525,531-540 
  index.ts                             |    33.5 |     60.6 |   12.82 |    33.5 | ...2517,2520-2522 
  types.ts                             |   95.34 |      100 |      50 |   95.34 | 55-62             
  update-id.ts                         |   98.11 |    88.88 |     100 |   98.11 | 52                
 ccip-sdk/src/canton/client            |   56.53 |     61.9 |   20.58 |   56.53 |                   
  client.ts                            |   54.67 |       60 |   20.58 |   54.67 | ...16-735,750-770 
  index.ts                             |     100 |      100 |     100 |     100 |                   
 ...dk/src/canton/explicit-disclosures |   75.11 |    69.35 |    55.1 |   75.11 |                   
  acs.ts                               |   87.36 |     69.1 |      90 |   87.36 | ...20,568,606-607 
  eds.ts                               |   54.79 |      100 |       0 |   54.79 | ...79-386,390-395 
 ccip-sdk/src/canton/token-metadata    |   62.64 |      100 |       0 |   62.64 |                   
  client.ts                            |   62.64 |      100 |       0 |   62.64 | 104-163,170-174   
 ...dk/src/canton/transfer-instruction |    53.4 |      100 |       0 |    53.4 |                   
  client.ts                            |    53.4 |      100 |       0 |    53.4 | 97-180,187-191    
 ccip-sdk/src/cct                      |     100 |    92.59 |     100 |     100 |                   
  errors.ts                            |     100 |     91.3 |     100 |     100 | 142,203           
  operation.ts                         |     100 |      100 |     100 |     100 |                   
  query.ts                             |     100 |      100 |     100 |     100 |                   
  token-manager.ts                     |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/cct/evm                  |   97.21 |    94.44 |    73.8 |   97.21 |                   
  index.ts                             |   95.42 |      100 |   59.25 |   95.42 | ...36-539,558-561 
  operation.ts                         |     100 |      100 |     100 |     100 |                   
  query.ts                             |     100 |      100 |     100 |     100 |                   
  submit.ts                            |     100 |    79.16 |     100 |     100 | 28,52,68-69,87    
  validate.ts                          |     100 |      100 |     100 |     100 |                   
 .../cct/evm/artifacts/bytecode/V2_0_0 |     100 |      100 |     100 |     100 |                   
  burn-from-mint-token-pool.ts         |     100 |      100 |     100 |     100 |                   
  burn-mint-token-pool.ts              |     100 |      100 |     100 |     100 |                   
  burn-with-from-mint-token-pool.ts    |     100 |      100 |     100 |     100 |                   
  cross-chain-token.ts                 |     100 |      100 |     100 |     100 |                   
  erc20-lockbox.ts                     |     100 |      100 |     100 |     100 |                   
  lock-release-token-pool.ts           |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/cct/evm/lockbox          |     100 |      100 |     100 |     100 |                   
  contracts.ts                         |     100 |      100 |     100 |     100 |                   
 ...sdk/src/cct/evm/lockbox/operations |     100 |      100 |     100 |     100 |                   
  authorize-callers.ts                 |     100 |      100 |     100 |     100 |                   
  deploy-lockbox.ts                    |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/cct/evm/token            |    97.1 |    66.66 |      50 |    97.1 |                   
  contracts.ts                         |    97.1 |    66.66 |      50 |    97.1 | 45-46             
 ...k/src/cct/evm/token-admin-registry |     100 |      100 |     100 |     100 |                   
  contracts.ts                         |     100 |      100 |     100 |     100 |                   
 ...vm/token-admin-registry/operations |     100 |      100 |     100 |     100 |                   
  accept-admin.ts                      |     100 |      100 |     100 |     100 |                   
  get-supported-tokens.ts              |     100 |      100 |     100 |     100 |                   
  get-token-admin-registry.ts          |     100 |      100 |     100 |     100 |                   
  register-admin.ts                    |     100 |      100 |     100 |     100 |                   
  set-pool.ts                          |     100 |      100 |     100 |     100 |                   
  transfer-admin.ts                    |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/cct/evm/token-pool       |     100 |      100 |     100 |     100 |                   
  contracts.ts                         |     100 |      100 |     100 |     100 |                   
 .../src/cct/evm/token-pool/operations |   99.15 |     92.5 |     100 |   99.15 |                   
  deploy-token-pool.ts                 |     100 |    85.71 |     100 |     100 | 83-86             
  get-token-pool-state.ts              |    98.6 |       95 |     100 |    98.6 | 280-283           
  transfer-ownership.ts                |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/cct/evm/token/operations |     100 |      100 |     100 |     100 |                   
  deploy-token.ts                      |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/cct/solana               |   99.31 |    95.59 |      96 |   99.31 |                   
  index.ts                             |   99.35 |      100 |   93.87 |   99.35 | ...1515,1532-1537 
  operation.ts                         |     100 |      100 |     100 |     100 |                   
  query.ts                             |     100 |      100 |     100 |     100 |                   
  serialize.ts                         |     100 |     92.3 |     100 |     100 | 27                
  submit.ts                            |     100 |    81.81 |     100 |     100 | 31,48,53,72       
  validate.ts                          |   98.38 |    96.96 |     100 |   98.38 | 158-161           
 ccip-sdk/src/cct/solana/programs      |     100 |      100 |     100 |     100 |                   
  alt.ts                               |     100 |      100 |     100 |     100 |                   
  fee-quoter.ts                        |     100 |      100 |     100 |     100 |                   
  router.ts                            |     100 |      100 |     100 |     100 |                   
  token-pool.ts                        |     100 |      100 |     100 |     100 |                   
 ...na/token-admin-registry/operations |   97.36 |    89.39 |     100 |   97.36 |                   
  accept-admin.ts                      |   98.55 |    84.61 |     100 |   98.55 | 135-136           
  append-to-lookup-table.ts            |   96.15 |    89.18 |     100 |   96.15 | 145-150,230-232   
  create-lookup-table.ts               |   97.94 |    94.44 |     100 |   97.94 | 190-193           
  get-supported-tokens.ts              |     100 |      100 |     100 |     100 |                   
  get-token-admin-registry.ts          |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
  register-admin.ts                    |   94.42 |    84.84 |     100 |   94.42 | ...18-222,247-249 
  set-pool.ts                          |     100 |      100 |     100 |     100 |                   
  transfer-admin.ts                    |   98.48 |    81.81 |     100 |   98.48 | 129-130           
 ...c/cct/solana/token-pool/operations |   97.72 |    93.16 |   95.23 |   97.72 |                   
  append-remote-pool-addresses.ts      |     100 |      100 |     100 |     100 |                   
  apply-chain-updates.ts               |   94.55 |    98.24 |      75 |   94.55 | ...16-320,340-344 
  configure-allowlist.ts               |     100 |    94.11 |     100 |     100 | 129               
  create-token-multisig.ts             |    91.8 |    69.69 |     100 |    91.8 | ...50-151,241-242 
  delete-chain-remote-config.ts        |     100 |      100 |     100 |     100 |                   
  deploy-token-pool.ts                 |   94.44 |    85.71 |     100 |   94.44 | 87-88,171-178     
  edit-chain-remote-config.ts          |     100 |      100 |     100 |     100 |                   
  get-token-pool-remotes.ts            |     100 |      100 |     100 |     100 |                   
  get-token-pool-state.ts              |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
  init-chain-remote-config.ts          |     100 |      100 |     100 |     100 |                   
  remove-from-allowlist.ts             |     100 |    93.75 |     100 |     100 | 126               
  set-chain-rate-limit.ts              |   99.11 |       96 |     100 |   99.11 | 64-65             
  set-rate-limit-admin.ts              |     100 |      100 |     100 |     100 |                   
 ...dk/src/cct/solana/token/operations |   93.15 |    73.77 |     100 |   93.15 |                   
  create-token-account.ts              |   97.05 |    85.71 |     100 |   97.05 | 98-100            
  deploy-token.ts                      |   92.06 |    71.69 |     100 |   92.06 | ...92-293,369-374 
  index.ts                             |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/errors                   |   89.73 |    76.55 |   55.97 |   89.73 |                   
  CCIPError.ts                         |     100 |      100 |     100 |     100 |                   
  codes.ts                             |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
  pure.ts                              |     100 |       75 |     100 |     100 | 32                
  recovery.ts                          |     100 |      100 |     100 |     100 |                   
  specialized.ts                       |    87.4 |    72.89 |   53.54 |    87.4 | ...3588,3611-3620 
  utils.ts                             |   94.44 |    81.48 |     100 |   94.44 | 15,17,22,24       
 ccip-sdk/src/evm                      |   92.04 |    81.88 |   93.63 |   92.04 |                   
  const.ts                             |     100 |      100 |     100 |     100 |                   
  errors.ts                            |   91.98 |    81.57 |     100 |   91.98 | ...85,239-242,247 
  extra-args.ts                        |   94.47 |    61.01 |     100 |   94.47 | ...11-212,328-340 
  fork.test.data.ts                    |     100 |      100 |     100 |     100 |                   
  gas.ts                               |   98.19 |    63.15 |     100 |   98.19 | 90-91,93          
  hasher.ts                            |     100 |     92.3 |     100 |     100 | 135               
  index.ts                             |   86.89 |    80.31 |   90.54 |   86.89 | ...2607,2762-2793 
  logs.ts                              |   98.84 |    91.75 |     100 |   98.84 | 65-66,71-72       
  messageCodec.ts                      |     100 |      100 |     100 |     100 |                   
  messages.ts                          |     100 |      100 |     100 |     100 |                   
  offchain.ts                          |    87.5 |    71.42 |     100 |    87.5 | 13-14             
  simulate.ts                          |     100 |    94.91 |     100 |     100 | 109-111,425       
  types.ts                             |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/evm/viem                 |   79.76 |    90.62 |   69.23 |   79.76 |                   
  client-adapter.ts                    |     100 |       90 |     100 |     100 | 48,74             
  index.ts                             |     100 |      100 |     100 |     100 |                   
  wallet-adapter.ts                    |   63.09 |     90.9 |   55.55 |   63.09 | ...91-124,131-157 
 ccip-sdk/src/hasher                   |   94.29 |    78.94 |     100 |   94.29 |                   
  common.ts                            |     100 |      100 |     100 |     100 |                   
  hasher.ts                            |     100 |    66.66 |     100 |     100 | 19                
  index.ts                             |     100 |      100 |     100 |     100 |                   
  merklemulti.ts                       |   93.43 |       78 |     100 |   93.43 | ...06-307,315-316 
 ccip-sdk/src/shared                   |   83.11 |    86.84 |   70.58 |   83.11 |                   
  bcs-codecs.ts                        |   75.45 |    66.66 |   44.44 |   75.45 | ...55-264,273-277 
  codec.ts                             |   94.17 |    92.98 |     100 |   94.17 | 135-136,174-182   
  constants.ts                         |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/solana                   |   77.28 |     72.9 |   83.18 |   77.28 |                   
  cleanup.ts                           |   26.95 |    66.66 |   33.33 |   26.95 | ...59-101,114-227 
  exec.ts                              |   69.11 |    62.96 |   66.66 |   69.11 | ...69-473,513-514 
  extra-args.ts                        |   58.07 |       75 |      60 |   58.07 | 84-120,130-188    
  fork.test.data.ts                    |     100 |      100 |     100 |     100 |                   
  gas.ts                               |   92.02 |    68.57 |     100 |   92.02 | ...,80-89,169-170 
  hasher.ts                            |   96.49 |    81.81 |     100 |   96.49 | 64-67             
  index.ts                             |   80.09 |    74.82 |   84.61 |   80.09 | ...2022,2026-2059 
  logs.ts                              |   69.59 |    62.16 |     100 |   69.59 | ...28-129,139-140 
  offchain.ts                          |     100 |      100 |     100 |     100 |                   
  patchBorsh.ts                        |   78.31 |       50 |     100 |   78.31 | ...47,65-66,72-78 
  send.ts                              |    77.6 |    33.33 |      80 |    77.6 | ...52-360,403-442 
  signatures-cache.ts                  |   79.78 |    69.23 |    87.5 |   79.78 | ...51-260,274-275 
  token-admin-registry.ts              |     100 |    96.29 |     100 |     100 | 27                
  types.ts                             |     100 |      100 |     100 |     100 |                   
  utils.ts                             |   81.56 |     77.1 |   83.33 |   81.56 | ...87-588,625-640 
 ccip-sdk/src/sui                      |   65.71 |    69.54 |   59.42 |   65.71 |                   
  discovery.ts                         |   60.85 |    55.26 |   66.66 |   60.85 | ...90-312,316-350 
  events.ts                            |   92.85 |    61.81 |      90 |   92.85 | ...32-236,285-296 
  exec.ts                              |   32.19 |      100 |       0 |   32.19 | 37-89,101-146     
  hasher.ts                            |   98.18 |    66.66 |     100 |   98.18 | 34,50             
  index.ts                             |   65.21 |    75.58 |    47.5 |   65.21 | ...80-881,885-886 
  objects.ts                           |    43.1 |    82.14 |   71.42 |    43.1 | ...43-194,205-348 
  types.ts                             |     100 |      100 |     100 |     100 |                   
 ccip-sdk/src/sui/manuallyExec         |   54.12 |       75 |      50 |   54.12 |                   
  encoder.ts                           |    83.9 |    66.66 |     100 |    83.9 | 51-58,73-77,82    
  index.ts                             |   34.35 |      100 |       0 |   34.35 | 46-131            
 ccip-sdk/src/ton                      |   81.33 |    79.14 |   81.11 |   81.33 |                   
  exec.ts                              |     100 |      100 |     100 |     100 |                   
  extra-args.ts                        |   98.66 |    72.72 |     100 |   98.66 | 156-157,222       
  hasher.ts                            |   78.07 |    77.77 |      75 |   78.07 | 100-108,156-187   
  index.ts                             |   80.27 |       77 |   71.15 |   80.27 | ...1608,1615-1616 
  logs.ts                              |     100 |    94.54 |     100 |     100 | 74-79,111         
  send.ts                              |   95.52 |    66.66 |     100 |   95.52 | 37-44,188         
  types.ts                             |   91.24 |    81.25 |     100 |   91.24 | ...61-63,71-74,92 
  utils.ts                             |    63.1 |    78.57 |    90.9 |    63.1 | ...37-395,397-400 
---------------------------------------|---------|----------|---------|---------|-------------------

* feat: add apply chian updates op solana

* feat: add append remote pool addresses op solana

* feat: add get token pool remote op solana

* fix: add tsdoc

* fix: address comments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants