Thanks for the reply @johnversus,
Below is from the original ABI JSON which I pasted into Contract ABI field on Edit Stream page.
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"components": [
{
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "bool",
"name": "customMarkerEnabled",
"type": "bool"
}
],
"indexed": false,
"internalType": "struct PinyWorldLibrary.EventUpdateParams",
"name": "eventUpdateData",
"type": "tuple"
}
],
"name": "UpdatePinyWorldEvent",
"type": "event"
}
When I submit this, what is sent to the backend in the payload is
{
"type": "event",
"name": "UpdatePinyWorldEvent",
"anonymous": false,
"inputs": [
{
"type": "address",
"name": "owner",
"indexed": true
},
{
"type": "tuple",
"name": "eventUpdateData",
"indexed": false
}
]
}
So, it seems like there is an issue on the front-end which is converting tuple values incorrectly, and sending invalid ABI to the back end.
Iām pasting the whole ABI here for reference as well.
[
{
"inputs": [
{
"internalType": "contract PinyWorldNFT",
"name": "_pinyWorldNFT",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "markerImageURI",
"type": "string"
}
],
"name": "AddEventMarker",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "creator",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "description",
"type": "string"
},
{
"internalType": "uint256",
"name": "maxMintCount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "customMarkerEnabled",
"type": "bool"
},
{
"internalType": "bool",
"name": "onlyOncePerAddress",
"type": "bool"
},
{
"internalType": "string",
"name": "mapCenterLatitude",
"type": "string"
},
{
"internalType": "string",
"name": "mapCenterLongitude",
"type": "string"
},
{
"internalType": "uint256",
"name": "mapZoom",
"type": "uint256"
}
],
"indexed": false,
"internalType": "struct PinyWorldLibrary.EventCreateParams",
"name": "eventData",
"type": "tuple"
},
{
"components": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "transferToAddress",
"type": "address"
}
],
"indexed": false,
"internalType": "struct PinyWorldLibrary.PaymentData",
"name": "paymentData",
"type": "tuple"
}
],
"name": "CreatePinyWorldEvent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "eventTokenId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "markerImageURI",
"type": "string"
},
{
"components": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "transferToAddress",
"type": "address"
}
],
"indexed": false,
"internalType": "struct PinyWorldLibrary.PaymentData",
"name": "eventPaymentData",
"type": "tuple"
},
{
"indexed": false,
"internalType": "uint256",
"name": "serviceFee",
"type": "uint256"
}
],
"name": "MintEventMarker",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "markerImageURI",
"type": "string"
}
],
"name": "RemoveEventMarker",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"components": [
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "transferAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "transferAddress",
"type": "address"
}
],
"indexed": false,
"internalType": "struct PinyWorldLibrary.PaymentSetting",
"name": "paymentSetting",
"type": "tuple"
}
],
"name": "SaveEventPaymentSetting",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "_listener",
"type": "address"
}
],
"name": "SetEventListener",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "noMintFee",
"type": "bool"
}
],
"name": "SetEventNoMintFee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bool",
"name": "noServiceFee",
"type": "bool"
}
],
"name": "SetEventNoServiceFee",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
}
],
"name": "StopPinyWorldEvent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "TransferPinyWorldEvent",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"components": [
{
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "bool",
"name": "customMarkerEnabled",
"type": "bool"
}
],
"indexed": false,
"internalType": "struct PinyWorldLibrary.EventUpdateParams",
"name": "eventUpdateData",
"type": "tuple"
}
],
"name": "UpdatePinyWorldEvent",
"type": "event"
},
{
"inputs": [],
"name": "eventListener",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "eventMap",
"outputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "bool",
"name": "stopped",
"type": "bool"
},
{
"internalType": "uint256",
"name": "maxMintCount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "currentMintCount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "customMarkerEnabled",
"type": "bool"
},
{
"internalType": "bool",
"name": "onlyOncePerAddress",
"type": "bool"
},
{
"internalType": "bool",
"name": "noServiceFee",
"type": "bool"
},
{
"internalType": "bool",
"name": "noMintFee",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pinyWorldNFT",
"outputs": [
{
"internalType": "contract PinyWorldNFT",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
},
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "message",
"type": "string"
},
{
"internalType": "string",
"name": "latitude",
"type": "string"
},
{
"internalType": "string",
"name": "longitude",
"type": "string"
},
{
"internalType": "uint256",
"name": "mapZoom",
"type": "uint256"
},
{
"internalType": "string",
"name": "imageURI",
"type": "string"
}
],
"internalType": "struct PinyWorldLibrary.MarkerProps",
"name": "_markerProps",
"type": "tuple"
},
{
"internalType": "string",
"name": "_tokenURI",
"type": "string"
},
{
"internalType": "address",
"name": "_mintPaymentToken",
"type": "address"
},
{
"internalType": "address",
"name": "_eventPaymentToken",
"type": "address"
}
],
"name": "mintMarker",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "description",
"type": "string"
},
{
"internalType": "uint256",
"name": "maxMintCount",
"type": "uint256"
},
{
"internalType": "bool",
"name": "customMarkerEnabled",
"type": "bool"
},
{
"internalType": "bool",
"name": "onlyOncePerAddress",
"type": "bool"
},
{
"internalType": "string",
"name": "mapCenterLatitude",
"type": "string"
},
{
"internalType": "string",
"name": "mapCenterLongitude",
"type": "string"
},
{
"internalType": "uint256",
"name": "mapZoom",
"type": "uint256"
}
],
"internalType": "struct PinyWorldLibrary.EventCreateParams",
"name": "_eventParams",
"type": "tuple"
},
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "createEvent",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
},
{
"internalType": "address",
"name": "_tokenAddress",
"type": "address"
},
{
"components": [
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "transferAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "transferAddress",
"type": "address"
}
],
"internalType": "struct PinyWorldLibrary.PaymentSetting",
"name": "_paymentSetting",
"type": "tuple"
}
],
"name": "saveEventPaymentSetting",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_markerImageURI",
"type": "string"
},
{
"internalType": "address",
"name": "_token",
"type": "address"
}
],
"name": "addMarker",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
},
{
"internalType": "string",
"name": "_markerImageURI",
"type": "string"
}
],
"name": "removeMarker",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "eventId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "bool",
"name": "customMarkerEnabled",
"type": "bool"
}
],
"internalType": "struct PinyWorldLibrary.EventUpdateParams",
"name": "_eventUpdateParams",
"type": "tuple"
}
],
"name": "updateEvent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "stopEvent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
},
{
"internalType": "address",
"name": "_to",
"type": "address"
}
],
"name": "transferEvent",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_noServiceFee",
"type": "bool"
}
],
"name": "setEventNoServiceFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_noMintFee",
"type": "bool"
}
],
"name": "setEventNoMintFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_eventListener",
"type": "address"
}
],
"name": "setEventListener",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "getEventOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "isEventEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "isEventStopped",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "getEventMaxMintCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "getEventCurrentMintCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "isEventOnlyOncePerAddress",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_address",
"type": "address"
},
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "hasAddressAttendedToEvent",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "isEventCustomMarkerEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "isEventNoServiceFee",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "isEventNoMintFee",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "getEventMarkerImageURIList",
"outputs": [
{
"internalType": "string[]",
"name": "",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "getEventMarkerImageURIListLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
},
{
"internalType": "address",
"name": "_tokenAddress",
"type": "address"
}
],
"name": "getEventPaymentSetting",
"outputs": [
{
"components": [
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "transferAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "transferAddress",
"type": "address"
}
],
"internalType": "struct PinyWorldLibrary.PaymentSetting",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "getEventPaymentSettingList",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"components": [
{
"internalType": "bool",
"name": "enabled",
"type": "bool"
},
{
"internalType": "uint256",
"name": "transferAmount",
"type": "uint256"
},
{
"internalType": "address",
"name": "transferAddress",
"type": "address"
}
],
"internalType": "struct PinyWorldLibrary.PaymentSetting",
"name": "paymentSetting",
"type": "tuple"
}
],
"internalType": "struct PinyWorldLibrary.TokenPaymentSetting[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_eventId",
"type": "uint256"
}
],
"name": "getEventEnabledPaymentSettings",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
}
]
Please let me know, if there is something wrong with the original ABI.
Thanks!