{
    "_format": "hh-sol-artifact-1",
    "contractName": "IStructsInterface",
    "sourceName": "contracts/core/Structs.sol",
    "abi": [
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "bytes32",
                            "name": "merkleRoot",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint64",
                            "name": "prevMessageCollectEndTime",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "messageCollectEndTime",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "prevEpochStartTime",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "currEpochStartTime",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "nextVotingTime",
                            "type": "uint64"
                        }
                    ],
                    "internalType": "struct EpochInfo",
                    "name": "epochInfo",
                    "type": "tuple"
                }
            ],
            "name": "__EpochInfo",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "bytes32",
                            "name": "merkleRoot",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint64",
                            "name": "prevMessageCollectEndTime",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "messageCollectEndTime",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "prevEpochStartTime",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "currEpochStartTime",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "nextVotingTime",
                            "type": "uint64"
                        }
                    ],
                    "internalType": "struct EpochInfo",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "uint64",
                            "name": "shardsKey",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "gasLimit",
                            "type": "uint64"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "operationId",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        },
                        {
                            "internalType": "string",
                            "name": "methodName",
                            "type": "string"
                        },
                        {
                            "internalType": "bytes",
                            "name": "arguments",
                            "type": "bytes"
                        },
                        {
                            "internalType": "string",
                            "name": "caller",
                            "type": "string"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct TokenAmount",
                            "name": "evmExecutorFee",
                            "type": "tuple"
                        },
                        {
                            "internalType": "address[]",
                            "name": "evmValidExecutors",
                            "type": "address[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct TokenAmount[]",
                            "name": "mint",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct TokenAmount[]",
                            "name": "unlock",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "string",
                                    "name": "name",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "symbol",
                                    "type": "string"
                                },
                                {
                                    "internalType": "uint8",
                                    "name": "decimals",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "string",
                                    "name": "tvmAddress",
                                    "type": "string"
                                }
                            ],
                            "internalType": "struct TokenInfo[]",
                            "name": "meta",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "tokenId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct NFTAmount[]",
                            "name": "mintNFT",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "tokenId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct NFTAmount[]",
                            "name": "unlockNFT",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "string",
                                    "name": "name",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "symbol",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "baseURI",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "tvmAddress",
                                    "type": "string"
                                }
                            ],
                            "internalType": "struct NFTInfo[]",
                            "name": "metaNFT",
                            "type": "tuple[]"
                        }
                    ],
                    "internalType": "struct InMessageV1",
                    "name": "message",
                    "type": "tuple"
                }
            ],
            "name": "__InMessageV1",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint64",
                            "name": "shardsKey",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "gasLimit",
                            "type": "uint64"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "operationId",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        },
                        {
                            "internalType": "string",
                            "name": "methodName",
                            "type": "string"
                        },
                        {
                            "internalType": "bytes",
                            "name": "arguments",
                            "type": "bytes"
                        },
                        {
                            "internalType": "string",
                            "name": "caller",
                            "type": "string"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct TokenAmount",
                            "name": "evmExecutorFee",
                            "type": "tuple"
                        },
                        {
                            "internalType": "address[]",
                            "name": "evmValidExecutors",
                            "type": "address[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct TokenAmount[]",
                            "name": "mint",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct TokenAmount[]",
                            "name": "unlock",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "string",
                                    "name": "name",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "symbol",
                                    "type": "string"
                                },
                                {
                                    "internalType": "uint8",
                                    "name": "decimals",
                                    "type": "uint8"
                                },
                                {
                                    "internalType": "string",
                                    "name": "tvmAddress",
                                    "type": "string"
                                }
                            ],
                            "internalType": "struct TokenInfo[]",
                            "name": "meta",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "tokenId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct NFTAmount[]",
                            "name": "mintNFT",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "tokenId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct NFTAmount[]",
                            "name": "unlockNFT",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "string",
                                    "name": "name",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "symbol",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "baseURI",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "tvmAddress",
                                    "type": "string"
                                }
                            ],
                            "internalType": "struct NFTInfo[]",
                            "name": "metaNFT",
                            "type": "tuple[]"
                        }
                    ],
                    "internalType": "struct InMessageV1",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "evmAddress",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "tokenId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct NFTAmount",
                    "name": "nftAmount",
                    "type": "tuple"
                }
            ],
            "name": "__NFTAmount",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "evmAddress",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "tokenId",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct NFTAmount",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "string",
                            "name": "name",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "symbol",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "baseURI",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmAddress",
                            "type": "string"
                        }
                    ],
                    "internalType": "struct NFTInfo",
                    "name": "nftInfo",
                    "type": "tuple"
                }
            ],
            "name": "__NFTInfo",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "string",
                            "name": "name",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "symbol",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "baseURI",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmAddress",
                            "type": "string"
                        }
                    ],
                    "internalType": "struct NFTInfo",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "uint64",
                            "name": "shardsKey",
                            "type": "uint64"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmTarget",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmPayload",
                            "type": "string"
                        },
                        {
                            "internalType": "uint256",
                            "name": "tvmProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "tvmExecutorFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "string[]",
                            "name": "tvmValidExecutors",
                            "type": "string[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct TokenAmount[]",
                            "name": "toBridge",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "tokenId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct NFTAmount[]",
                            "name": "toBridgeNFT",
                            "type": "tuple[]"
                        }
                    ],
                    "internalType": "struct OutMessageV1",
                    "name": "message",
                    "type": "tuple"
                }
            ],
            "name": "__OutMessageV1",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint64",
                            "name": "shardsKey",
                            "type": "uint64"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmTarget",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmPayload",
                            "type": "string"
                        },
                        {
                            "internalType": "uint256",
                            "name": "tvmProtocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "tvmExecutorFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "string[]",
                            "name": "tvmValidExecutors",
                            "type": "string[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct TokenAmount[]",
                            "name": "toBridge",
                            "type": "tuple[]"
                        },
                        {
                            "components": [
                                {
                                    "internalType": "address",
                                    "name": "evmAddress",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "tokenId",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "internalType": "struct NFTAmount[]",
                            "name": "toBridgeNFT",
                            "type": "tuple[]"
                        }
                    ],
                    "internalType": "struct OutMessageV1",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "messageVersion",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bytes",
                            "name": "encodedMessage",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes",
                            "name": "extraData",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "merkleRoot",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32[]",
                            "name": "merkleProof",
                            "type": "bytes32[]"
                        },
                        {
                            "internalType": "bool",
                            "name": "withMessages",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct SimulationParams",
                    "name": "simulationParams",
                    "type": "tuple"
                }
            ],
            "name": "__SimulationParams",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "messageVersion",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bytes",
                            "name": "encodedMessage",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes",
                            "name": "extraData",
                            "type": "bytes"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "merkleRoot",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "bytes32[]",
                            "name": "merkleProof",
                            "type": "bytes32[]"
                        },
                        {
                            "internalType": "bool",
                            "name": "withMessages",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct SimulationParams",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "protocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "executorFee",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct TVMFeeInfo",
                    "name": "tvmFeeInfo",
                    "type": "tuple"
                }
            ],
            "name": "__TVMFeeInfo",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "protocolFee",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "executorFee",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct TVMFeeInfo",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "uint64",
                            "name": "shardsKey",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "operationId",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmCaller",
                            "type": "string"
                        },
                        {
                            "internalType": "bytes",
                            "name": "extraData",
                            "type": "bytes"
                        }
                    ],
                    "internalType": "struct TacHeaderV1",
                    "name": "tacHeader",
                    "type": "tuple"
                }
            ],
            "name": "__TacHeaderV1",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint64",
                            "name": "shardsKey",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "operationId",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmCaller",
                            "type": "string"
                        },
                        {
                            "internalType": "bytes",
                            "name": "extraData",
                            "type": "bytes"
                        }
                    ],
                    "internalType": "struct TacHeaderV1",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "evmAddress",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct TokenAmount",
                    "name": "tokenAmount",
                    "type": "tuple"
                }
            ],
            "name": "__TokenAmount",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "evmAddress",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256"
                        }
                    ],
                    "internalType": "struct TokenAmount",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "string",
                            "name": "name",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "symbol",
                            "type": "string"
                        },
                        {
                            "internalType": "uint8",
                            "name": "decimals",
                            "type": "uint8"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmAddress",
                            "type": "string"
                        }
                    ],
                    "internalType": "struct TokenInfo",
                    "name": "tokenInfo",
                    "type": "tuple"
                }
            ],
            "name": "__TokenInfo",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "string",
                            "name": "name",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "symbol",
                            "type": "string"
                        },
                        {
                            "internalType": "uint8",
                            "name": "decimals",
                            "type": "uint8"
                        },
                        {
                            "internalType": "string",
                            "name": "tvmAddress",
                            "type": "string"
                        }
                    ],
                    "internalType": "struct TokenInfo",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        }
    ],
    "bytecode": "0x",
    "deployedBytecode": "0x",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
