@@ -732,6 +732,29 @@ function _encodeLocalDecimals() internal view virtual returns (bytes memory);
732732| ------- | --------------------------------------------- |
733733| ` bytes ` | ABI-encoded decimal places of the local token |
734734
735+ ### \_ lockOrBurn
736+
737+ Abstract internal function designed to be overridden with the specific token lock or burn logic.
738+
739+ ``` solidity
740+ function _lockOrBurn(uint256 amount) internal virtual;
741+ ```
742+
743+ <Aside >
744+
745+ This function is a virtual placeholder within the main ` lockOrBurn ` workflow:
746+
747+ - It is called by the public ` lockOrBurn ` function after all validations are complete.
748+ - Concrete child contracts (e.g., ` LockReleaseTokenPool ` , ` BurnMintTokenPool ` ) must provide a specific implementation (either locking or burning tokens).
749+
750+ </Aside >
751+
752+ ** Parameters**
753+
754+ | Name | Type | Description |
755+ | -------- | --------- | ------------------------------------ |
756+ | ` amount ` | ` uint256 ` | The amount of tokens to lock or burn |
757+
735758### \_ onlyOffRamp
736759
737760Checks whether remote chain selector is configured on this contract, and if the msg.sender
@@ -825,6 +848,30 @@ Reverts with [`InvalidRemoteChainDecimals`](#invalidremotechaindecimals) if:
825848| ------- | ----------------------------------------------- |
826849| ` uint8 ` | The number of decimals used on the remote chain |
827850
851+ ### \_ releaseOrMint
852+
853+ Abstract internal function designed to be overridden with the specific token release or mint logic.
854+
855+ ``` solidity
856+ function _releaseOrMint(address receiver, uint256 amount) internal virtual;
857+ ```
858+
859+ <Aside >
860+
861+ This function is a virtual placeholder within the main ` releaseOrMint ` workflow:
862+
863+ - It is called by the public ` releaseOrMint ` function after validation and amount calculations.
864+ - Concrete child contracts must implement the logic to either release (transfer) existing tokens or mint new ones to the receiver.
865+
866+ </Aside >
867+
868+ ** Parameters**
869+
870+ | Name | Type | Description |
871+ | ---------- | --------- | --------------------------------------- |
872+ | ` receiver ` | ` address ` | The address receiving the tokens |
873+ | ` amount ` | ` uint256 ` | The amount of tokens to release or mint |
874+
828875### \_ setRateLimitConfig
829876
830877Internal function to update rate limit configuration for a chain.
@@ -1251,6 +1298,71 @@ function isSupportedToken(address token) public view virtual returns (bool);
12511298| ------ | ------------------------------------------- |
12521299| ` bool ` | True if the token is supported by this pool |
12531300
1301+ ### lockOrBurn
1302+
1303+ Locks tokens in the pool for cross-chain transfer.
1304+
1305+ ``` solidity
1306+ function lockOrBurn(
1307+ Pool.LockOrBurnInV1 calldata lockOrBurnIn
1308+ ) external virtual override returns (Pool.LockOrBurnOutV1 memory);
1309+ ```
1310+
1311+ <Aside >
1312+
1313+ Processes token locking with security validation:
1314+
1315+ - Performs essential security checks through ` _validateLockOrBurn `
1316+ - Emits a [ ` LockedOrBurned ` ] ( #lockedorburned ) event upon successful locking
1317+ - Returns destination token information
1318+
1319+ </Aside >
1320+
1321+ ** Parameters**
1322+
1323+ | Name | Type | Description |
1324+ | -------------- | --------------------------------------------------------------------------- | --------------------------------------- |
1325+ | ` lockOrBurnIn ` | [ ` Pool.LockOrBurnInV1 ` ] ( /ccip/api-reference/evm/v1.6.0/pool#lockorburninv1 ) | Input parameters for the lock operation |
1326+
1327+ ** Returns**
1328+
1329+ | Type | Description |
1330+ | ----------------------------------------------------------------------------- | ------------------------------------------------ |
1331+ | [ ` Pool.LockOrBurnOutV1 ` ] ( /ccip/api-reference/evm/v1.6.0/pool#lockorburnoutv1 ) | Contains destination token address and pool data |
1332+
1333+ ### releaseOrMint
1334+
1335+ Releases tokens from the pool to a recipient.
1336+
1337+ ``` solidity
1338+ function releaseOrMint(
1339+ Pool.ReleaseOrMintInV1 calldata releaseOrMintIn
1340+ ) external virtual override returns (Pool.ReleaseOrMintOutV1 memory);
1341+ ```
1342+
1343+ <Aside >
1344+
1345+ Processes token release with security validation:
1346+
1347+ - Performs essential security checks through ` _validateReleaseOrMint `
1348+ - Calculates correct local token amounts using decimal adjustments
1349+ - Transfers tokens to the specified receiver
1350+ - Emits a [ ` ReleasedOrMinted ` ] ( #releasedorminted ) event
1351+
1352+ </Aside >
1353+
1354+ ** Parameters**
1355+
1356+ | Name | Type | Description |
1357+ | ----------------- | --------------------------------------------------------------------------------- | ------------------------------------------ |
1358+ | ` releaseOrMintIn ` | [ ` Pool.ReleaseOrMintInV1 ` ] ( /ccip/api-reference/evm/v1.6.0/pool#releaseormintinv1 ) | Input parameters for the release operation |
1359+
1360+ ** Returns**
1361+
1362+ | Type | Description |
1363+ | ----------------------------------------------------------------------------------- | -------------------------------------------------- |
1364+ | [ ` Pool.ReleaseOrMintOutV1 ` ] ( /ccip/api-reference/evm/v1.6.0/pool#releaseormintoutv1 ) | Contains the final amount released in local tokens |
1365+
12541366### removeRemotePool
12551367
12561368Removes a pool address from a remote chain's configuration.
0 commit comments