[ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "signer", "type": "address" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "indexed": false, "internalType": "struct EIP712Demo.Person", "name": "from", "type": "tuple" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "indexed": false, "internalType": "struct EIP712Demo.Person", "name": "to", "type": "tuple" }, { "indexed": false, "internalType": "string", "name": "contents", "type": "string" } ], "name": "MailSent", "type": "event" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "internalType": "struct EIP712Demo.Person", "name": "from", "type": "tuple" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "wallet", "type": "address" } ], "internalType": "struct EIP712Demo.Person", "name": "to", "type": "tuple" }, { "internalType": "string", "name": "contents", "type": "string" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "mail", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]