// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; /** * @title TokenInfo * @dev Extended TVM token info */ struct TokenInfo { string name; string symbol; uint8 decimals; string tvmAddress; } /** * @title NFTInfo * @dev Extended NFT collection info */ struct NFTInfo { string name; string symbol; string baseURI; string tvmAddress; } /** * @title TokenAmount * @dev Token address with amount */ struct TokenAmount { address evmAddress; uint256 amount; } /** * @title NFTAmount * @dev NFT address with token id and amount * compatible with ERC721 and ERC1155 both * For ERC721, amount ignored */ struct NFTAmount { address evmAddress; uint256 tokenId; uint256 amount; } /** * @title InMessage v1 * @dev TVM->EVM message */ struct InMessageV1 { uint64 shardsKey; uint64 gasLimit; bytes32 operationId; uint256 timestamp; address target; string methodName; bytes arguments; string caller; TokenAmount evmExecutorFee; address[] evmValidExecutors; TokenAmount[] mint; TokenAmount[] unlock; TokenInfo[] meta; NFTAmount[] mintNFT; NFTAmount[] unlockNFT; NFTInfo[] metaNFT; } /** * @title TVMFeeInfo * @dev Fee info */ struct TVMFeeInfo { uint256 protocolFee; uint256 executorFee; } /** * @title OutMessage v1 * @dev EVM->TVM message v1 */ struct OutMessageV1 { uint64 shardsKey; string tvmTarget; string tvmPayload; uint256 tvmProtocolFee; uint256 tvmExecutorFee; string[] tvmValidExecutors; TokenAmount[] toBridge; NFTAmount[] toBridgeNFT; } /** * @title EpochInfo * @dev Consensus epoch info */ struct EpochInfo { bytes32 merkleRoot; uint64 prevMessageCollectEndTime; uint64 messageCollectEndTime; uint64 prevEpochStartTime; uint64 currEpochStartTime; uint64 nextVotingTime; } /** * @title TacHeaderV1 */ struct TacHeaderV1 { uint64 shardsKey; uint256 timestamp; bytes32 operationId; string tvmCaller; bytes extraData; } /** * @title SimulationParams */ struct SimulationParams { uint256 messageVersion; bytes encodedMessage; bytes extraData; bytes32 merkleRoot; bytes32[] merkleProof; bool withMessages; } /** * @title IStructsInterface * @dev Unusable interface for structs typechain generation */ interface IStructsInterface { function __InMessageV1(InMessageV1 calldata message) external pure returns(InMessageV1 calldata); function __OutMessageV1(OutMessageV1 calldata message) external pure returns(OutMessageV1 calldata); function __TacHeaderV1(TacHeaderV1 calldata tacHeader) external pure returns(TacHeaderV1 calldata); function __TokenInfo(TokenInfo calldata tokenInfo) external pure returns(TokenInfo calldata); function __NFTInfo(NFTInfo calldata nftInfo) external pure returns(NFTInfo calldata); function __TokenAmount(TokenAmount calldata tokenAmount) external pure returns(TokenAmount calldata); function __NFTAmount(NFTAmount calldata nftAmount) external pure returns(NFTAmount calldata); function __EpochInfo(EpochInfo calldata epochInfo) external pure returns(EpochInfo calldata); function __TVMFeeInfo(TVMFeeInfo calldata tvmFeeInfo) external pure returns(TVMFeeInfo calldata); function __SimulationParams(SimulationParams calldata simulationParams) external pure returns(SimulationParams calldata); }