{
    "contractName": "IBasicMetaTransaction",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "userAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address payable",
                    "name": "relayerAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "payload",
                    "type": "bytes"
                }
            ],
            "name": "MetaTransactionExecuted",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "userAddress",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "payload",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes32",
                    "name": "sigR",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "sigS",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint8",
                    "name": "sigV",
                    "type": "uint8"
                }
            ],
            "name": "executeMetaTransaction",
            "outputs": [
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "userAddress",
                    "type": "address"
                }
            ],
            "name": "getMetatransactionNonce",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "nonce",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "devdoc": {
        "kind": "dev",
        "methods": {
            "executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)": {
                "params": {
                    "payload": "The transaction data that will be executed if signature valid",
                    "sigR": "The 'r' part of the signature",
                    "sigS": "The 's' part of the signature",
                    "sigV": "The 'v' part of the signature",
                    "userAddress": "The address of the user that signed the metatransaction"
                }
            },
            "getMetatransactionNonce(address)": {
                "params": {
                    "userAddress": "The address of the user that will sign the metatransaction"
                }
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {
            "executeMetaTransaction(address,bytes,bytes32,bytes32,uint8)": {
                "notice": "Executes a metatransaction targeting this contract"
            },
            "getMetatransactionNonce(address)": {
                "notice": "Gets the next metatransaction nonce for user that should be used targeting this contract"
            }
        },
        "version": 1
    }
}