// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; /// @dev ERC-165 identifier for this interface is 0x35e5c0ab interface IERC6551Registry { /** * @dev Creates an ERC-6551 account * @param implementation The address of the account implementation to use * @param chainId The EIP-155 ID of the chain where the token exists * @param tokenContract The address of the token contract * @param tokenId The ID of the token * @param salt A random value that allows for the creation of multiple accounts for the same NFT * @param initData The initialization data for the account */ function createAccount( address implementation, uint256 chainId, address tokenContract, uint256 tokenId, uint256 salt, bytes calldata initData ) external returns (address); /** * @dev Returns the account address associated with a specific token * @param implementation The address of the account implementation to use * @param chainId The EIP-155 ID of the chain where the token exists * @param tokenContract The address of the token contract * @param tokenId The ID of the token * @param salt A random value that allows for the creation of multiple accounts for the same NFT */ function account( address implementation, uint256 chainId, address tokenContract, uint256 tokenId, uint256 salt ) external view returns (address); /** * @dev Emitted when a new account is created */ event AccountCreated( address account, address implementation, uint256 chainId, address tokenContract, uint256 tokenId, uint256 salt ); }