Skip to content

@ecp.eth/sdk


@ecp.eth/sdk / comments / postCommentWithSig

Variable: postCommentWithSig()

const postCommentWithSig: (...args) => Promise<WaitableWriteContractHelperResult<readonly [{
  inputs: readonly [{
     internalType: "address";
     name: "initialOwner";
     type: "address";
  }];
  stateMutability: "nonpayable";
  type: "constructor";
}, {
  inputs: readonly [];
  name: "ADD_APPROVAL_TYPEHASH";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "ADD_COMMENT_TYPEHASH";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "DELETE_COMMENT_TYPEHASH";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "DOMAIN_SEPARATOR";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "EDIT_COMMENT_TYPEHASH";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "REMOVE_APPROVAL_TYPEHASH";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "app";
     type: "address";
  }];
  name: "addApproval";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     internalType: "uint256";
     name: "nonce";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "signature";
     type: "bytes";
  }];
  name: "addApprovalWithSig";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "channelManager";
  outputs: readonly [{
     internalType: "contract IChannelManager";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
  }];
  name: "deleteComment";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "authorSignature";
     type: "bytes";
   }, {
     internalType: "bytes";
     name: "appSignature";
     type: "bytes";
  }];
  name: "deleteCommentWithSig";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     components: readonly [{
        internalType: "address";
        name: "app";
        type: "address";
      }, {
        internalType: "uint256";
        name: "nonce";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "deadline";
        type: "uint256";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        internalType: "string";
        name: "metadata";
        type: "string";
     }];
     internalType: "struct Comments.EditComment";
     name: "editData";
     type: "tuple";
   }, {
     internalType: "bytes";
     name: "appSignature";
     type: "bytes";
  }];
  name: "editComment";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     components: readonly [{
        internalType: "address";
        name: "app";
        type: "address";
      }, {
        internalType: "uint256";
        name: "nonce";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "deadline";
        type: "uint256";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        internalType: "string";
        name: "metadata";
        type: "string";
     }];
     internalType: "struct Comments.EditComment";
     name: "editData";
     type: "tuple";
   }, {
     internalType: "bytes";
     name: "authorSignature";
     type: "bytes";
   }, {
     internalType: "bytes";
     name: "appSignature";
     type: "bytes";
  }];
  name: "editCommentWithSig";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     internalType: "uint256";
     name: "nonce";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
  }];
  name: "getAddApprovalHash";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
  }];
  name: "getComment";
  outputs: readonly [{
     components: readonly [{
        internalType: "address";
        name: "author";
        type: "address";
      }, {
        internalType: "uint96";
        name: "createdAt";
        type: "uint96";
      }, {
        internalType: "address";
        name: "app";
        type: "address";
      }, {
        internalType: "uint96";
        name: "updatedAt";
        type: "uint96";
      }, {
        internalType: "uint256";
        name: "channelId";
        type: "uint256";
      }, {
        internalType: "bytes32";
        name: "parentId";
        type: "bytes32";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        internalType: "string";
        name: "metadata";
        type: "string";
      }, {
        internalType: "string";
        name: "targetUri";
        type: "string";
      }, {
        internalType: "string";
        name: "commentType";
        type: "string";
      }, {
        internalType: "string";
        name: "hookData";
        type: "string";
     }];
     internalType: "struct Comments.Comment";
     name: "";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     components: readonly [{
        internalType: "address";
        name: "author";
        type: "address";
      }, {
        internalType: "address";
        name: "app";
        type: "address";
      }, {
        internalType: "uint256";
        name: "channelId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "deadline";
        type: "uint256";
      }, {
        internalType: "bytes32";
        name: "parentId";
        type: "bytes32";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        internalType: "string";
        name: "metadata";
        type: "string";
      }, {
        internalType: "string";
        name: "targetUri";
        type: "string";
      }, {
        internalType: "string";
        name: "commentType";
        type: "string";
     }];
     internalType: "struct Comments.CreateComment";
     name: "commentData";
     type: "tuple";
  }];
  name: "getCommentId";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
  }];
  name: "getDeleteCommentHash";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     components: readonly [{
        internalType: "address";
        name: "app";
        type: "address";
      }, {
        internalType: "uint256";
        name: "nonce";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "deadline";
        type: "uint256";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        internalType: "string";
        name: "metadata";
        type: "string";
     }];
     internalType: "struct Comments.EditComment";
     name: "editData";
     type: "tuple";
  }];
  name: "getEditCommentHash";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
  }];
  name: "getNonce";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     internalType: "uint256";
     name: "nonce";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
  }];
  name: "getRemoveApprovalHash";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
  }];
  name: "isApproved";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
  }];
  name: "isDeleted";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "name";
  outputs: readonly [{
     internalType: "string";
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "owner";
  outputs: readonly [{
     internalType: "address";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [];
  name: "paused";
  outputs: readonly [{
     internalType: "bool";
     name: "";
     type: "bool";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     components: readonly [{
        internalType: "address";
        name: "author";
        type: "address";
      }, {
        internalType: "address";
        name: "app";
        type: "address";
      }, {
        internalType: "uint256";
        name: "channelId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "deadline";
        type: "uint256";
      }, {
        internalType: "bytes32";
        name: "parentId";
        type: "bytes32";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        internalType: "string";
        name: "metadata";
        type: "string";
      }, {
        internalType: "string";
        name: "targetUri";
        type: "string";
      }, {
        internalType: "string";
        name: "commentType";
        type: "string";
     }];
     internalType: "struct Comments.CreateComment";
     name: "commentData";
     type: "tuple";
   }, {
     internalType: "bytes";
     name: "appSignature";
     type: "bytes";
  }];
  name: "postComment";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     components: readonly [{
        internalType: "address";
        name: "author";
        type: "address";
      }, {
        internalType: "address";
        name: "app";
        type: "address";
      }, {
        internalType: "uint256";
        name: "channelId";
        type: "uint256";
      }, {
        internalType: "uint256";
        name: "deadline";
        type: "uint256";
      }, {
        internalType: "bytes32";
        name: "parentId";
        type: "bytes32";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        internalType: "string";
        name: "metadata";
        type: "string";
      }, {
        internalType: "string";
        name: "targetUri";
        type: "string";
      }, {
        internalType: "string";
        name: "commentType";
        type: "string";
     }];
     internalType: "struct Comments.CreateComment";
     name: "commentData";
     type: "tuple";
   }, {
     internalType: "bytes";
     name: "authorSignature";
     type: "bytes";
   }, {
     internalType: "bytes";
     name: "appSignature";
     type: "bytes";
  }];
  name: "postCommentWithSig";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     internalType: "uint256";
     name: "nonce";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "signature";
     type: "bytes";
  }];
  name: "removeApprovalWithSig";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "renounceOwnership";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "app";
     type: "address";
  }];
  name: "revokeApproval";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "transferOwnership";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "_channelContract";
     type: "address";
  }];
  name: "updateChannelContract";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "version";
  outputs: readonly [{
     internalType: "string";
     name: "";
     type: "string";
  }];
  stateMutability: "view";
  type: "function";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "app";
     type: "address";
  }];
  name: "ApprovalAdded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "app";
     type: "address";
  }];
  name: "ApprovalRemoved";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     indexed: true;
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "channelId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "bytes32";
     name: "parentId";
     type: "bytes32";
   }, {
     indexed: false;
     internalType: "uint96";
     name: "createdAt";
     type: "uint96";
   }, {
     indexed: false;
     internalType: "string";
     name: "content";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "metadata";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "targetUri";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "commentType";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "hookData";
     type: "string";
  }];
  name: "CommentAdded";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     indexed: true;
     internalType: "address";
     name: "author";
     type: "address";
  }];
  name: "CommentDeleted";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     indexed: true;
     internalType: "address";
     name: "editedByApp";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     indexed: false;
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "channelId";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "bytes32";
     name: "parentId";
     type: "bytes32";
   }, {
     indexed: false;
     internalType: "uint96";
     name: "createdAt";
     type: "uint96";
   }, {
     indexed: false;
     internalType: "uint96";
     name: "updatedAt";
     type: "uint96";
   }, {
     indexed: false;
     internalType: "string";
     name: "content";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "metadata";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "targetUri";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "commentType";
     type: "string";
   }, {
     indexed: false;
     internalType: "string";
     name: "hookData";
     type: "string";
  }];
  name: "CommentEdited";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     indexed: false;
     internalType: "string";
     name: "hookData";
     type: "string";
  }];
  name: "CommentHookDataUpdated";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "previousOwner";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "OwnershipTransferred";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "address";
     name: "account";
     type: "address";
  }];
  name: "Paused";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: false;
     internalType: "address";
     name: "account";
     type: "address";
  }];
  name: "Unpaused";
  type: "event";
}, {
  inputs: readonly [];
  name: "ChannelDoesNotExist";
  type: "error";
}, {
  inputs: readonly [];
  name: "CommentDoesNotExist";
  type: "error";
}, {
  inputs: readonly [];
  name: "EnforcedPause";
  type: "error";
}, {
  inputs: readonly [];
  name: "ExpectedPause";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidAppSignature";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidAuthorSignature";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "string";
     name: "message";
     type: "string";
  }];
  name: "InvalidCommentReference";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     internalType: "uint256";
     name: "expected";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "provided";
     type: "uint256";
  }];
  name: "InvalidNonce";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidSignatureLength";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidSignatureS";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "caller";
     type: "address";
   }, {
     internalType: "address";
     name: "requiredCaller";
     type: "address";
  }];
  name: "NotAuthorized";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "owner";
     type: "address";
  }];
  name: "OwnableInvalidOwner";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "account";
     type: "address";
  }];
  name: "OwnableUnauthorizedAccount";
  type: "error";
}, {
  inputs: readonly [];
  name: "ParentCommentHasNeverExisted";
  type: "error";
}, {
  inputs: readonly [];
  name: "ReentrancyGuardReentrantCall";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "currentTime";
     type: "uint256";
  }];
  name: "SignatureDeadlineReached";
  type: "error";
}, {
  inputs: readonly [];
  name: "ZeroAddress";
  type: "error";
}], "CommentAdded">>;

Defined in: packages/sdk/src/comments/comment.ts:161

Posts a comment with author signature verification

Parameters

args

...[PostCommentWithSigParams]

Returns

Promise<WaitableWriteContractHelperResult<readonly [{ inputs: readonly [{ internalType: "address"; name: "initialOwner"; type: "address"; }]; stateMutability: "nonpayable"; type: "constructor"; }, { inputs: readonly []; name: "ADD_APPROVAL_TYPEHASH"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly []; name: "ADD_COMMENT_TYPEHASH"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly []; name: "DELETE_COMMENT_TYPEHASH"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly []; name: "DOMAIN_SEPARATOR"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly []; name: "EDIT_COMMENT_TYPEHASH"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly []; name: "REMOVE_APPROVAL_TYPEHASH"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "app"; type: "address"; }]; name: "addApproval"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "nonce"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "bytes"; name: "signature"; type: "bytes"; }]; name: "addApprovalWithSig"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly []; name: "channelManager"; outputs: readonly [{ internalType: "contract IChannelManager"; name: ""; type: "address"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }]; name: "deleteComment"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "bytes"; name: "authorSignature"; type: "bytes"; }, { internalType: "bytes"; name: "appSignature"; type: "bytes"; }]; name: "deleteCommentWithSig"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { components: readonly [{ internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "nonce"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "string"; name: "content"; type: "string"; }, { internalType: "string"; name: "metadata"; type: "string"; }]; internalType: "struct Comments.EditComment"; name: "editData"; type: "tuple"; }, { internalType: "bytes"; name: "appSignature"; type: "bytes"; }]; name: "editComment"; outputs: readonly []; stateMutability: "payable"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { components: readonly [{ internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "nonce"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "string"; name: "content"; type: "string"; }, { internalType: "string"; name: "metadata"; type: "string"; }]; internalType: "struct Comments.EditComment"; name: "editData"; type: "tuple"; }, { internalType: "bytes"; name: "authorSignature"; type: "bytes"; }, { internalType: "bytes"; name: "appSignature"; type: "bytes"; }]; name: "editCommentWithSig"; outputs: readonly []; stateMutability: "payable"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "nonce"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }]; name: "getAddApprovalHash"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }]; name: "getComment"; outputs: readonly [{ components: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "uint96"; name: "createdAt"; type: "uint96"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint96"; name: "updatedAt"; type: "uint96"; }, { internalType: "uint256"; name: "channelId"; type: "uint256"; }, { internalType: "bytes32"; name: "parentId"; type: "bytes32"; }, { internalType: "string"; name: "content"; type: "string"; }, { internalType: "string"; name: "metadata"; type: "string"; }, { internalType: "string"; name: "targetUri"; type: "string"; }, { internalType: "string"; name: "commentType"; type: "string"; }, { internalType: "string"; name: "hookData"; type: "string"; }]; internalType: "struct Comments.Comment"; name: ""; type: "tuple"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ components: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "channelId"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "bytes32"; name: "parentId"; type: "bytes32"; }, { internalType: "string"; name: "content"; type: "string"; }, { internalType: "string"; name: "metadata"; type: "string"; }, { internalType: "string"; name: "targetUri"; type: "string"; }, { internalType: "string"; name: "commentType"; type: "string"; }]; internalType: "struct Comments.CreateComment"; name: "commentData"; type: "tuple"; }]; name: "getCommentId"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }]; name: "getDeleteCommentHash"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { internalType: "address"; name: "author"; type: "address"; }, { components: readonly [{ internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "nonce"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "string"; name: "content"; type: "string"; }, { internalType: "string"; name: "metadata"; type: "string"; }]; internalType: "struct Comments.EditComment"; name: "editData"; type: "tuple"; }]; name: "getEditCommentHash"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }]; name: "getNonce"; outputs: readonly [{ internalType: "uint256"; name: ""; type: "uint256"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "nonce"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }]; name: "getRemoveApprovalHash"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }]; name: "isApproved"; outputs: readonly [{ internalType: "bool"; name: ""; type: "bool"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }]; name: "isDeleted"; outputs: readonly [{ internalType: "bool"; name: ""; type: "bool"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly []; name: "name"; outputs: readonly [{ internalType: "string"; name: ""; type: "string"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly []; name: "owner"; outputs: readonly [{ internalType: "address"; name: ""; type: "address"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly []; name: "paused"; outputs: readonly [{ internalType: "bool"; name: ""; type: "bool"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ components: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "channelId"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "bytes32"; name: "parentId"; type: "bytes32"; }, { internalType: "string"; name: "content"; type: "string"; }, { internalType: "string"; name: "metadata"; type: "string"; }, { internalType: "string"; name: "targetUri"; type: "string"; }, { internalType: "string"; name: "commentType"; type: "string"; }]; internalType: "struct Comments.CreateComment"; name: "commentData"; type: "tuple"; }, { internalType: "bytes"; name: "appSignature"; type: "bytes"; }]; name: "postComment"; outputs: readonly []; stateMutability: "payable"; type: "function"; }, { inputs: readonly [{ components: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "channelId"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "bytes32"; name: "parentId"; type: "bytes32"; }, { internalType: "string"; name: "content"; type: "string"; }, { internalType: "string"; name: "metadata"; type: "string"; }, { internalType: "string"; name: "targetUri"; type: "string"; }, { internalType: "string"; name: "commentType"; type: "string"; }]; internalType: "struct Comments.CreateComment"; name: "commentData"; type: "tuple"; }, { internalType: "bytes"; name: "authorSignature"; type: "bytes"; }, { internalType: "bytes"; name: "appSignature"; type: "bytes"; }]; name: "postCommentWithSig"; outputs: readonly []; stateMutability: "payable"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "nonce"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "bytes"; name: "signature"; type: "bytes"; }]; name: "removeApprovalWithSig"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly []; name: "renounceOwnership"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "app"; type: "address"; }]; name: "revokeApproval"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "newOwner"; type: "address"; }]; name: "transferOwnership"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "_channelContract"; type: "address"; }]; name: "updateChannelContract"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly []; name: "version"; outputs: readonly [{ internalType: "string"; name: ""; type: "string"; }]; stateMutability: "view"; type: "function"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "address"; name: "author"; type: "address"; }, { indexed: true; internalType: "address"; name: "app"; type: "address"; }]; name: "ApprovalAdded"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "address"; name: "author"; type: "address"; }, { indexed: true; internalType: "address"; name: "app"; type: "address"; }]; name: "ApprovalRemoved"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { indexed: true; internalType: "address"; name: "author"; type: "address"; }, { indexed: true; internalType: "address"; name: "app"; type: "address"; }, { indexed: false; internalType: "uint256"; name: "channelId"; type: "uint256"; }, { indexed: false; internalType: "bytes32"; name: "parentId"; type: "bytes32"; }, { indexed: false; internalType: "uint96"; name: "createdAt"; type: "uint96"; }, { indexed: false; internalType: "string"; name: "content"; type: "string"; }, { indexed: false; internalType: "string"; name: "metadata"; type: "string"; }, { indexed: false; internalType: "string"; name: "targetUri"; type: "string"; }, { indexed: false; internalType: "string"; name: "commentType"; type: "string"; }, { indexed: false; internalType: "string"; name: "hookData"; type: "string"; }]; name: "CommentAdded"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { indexed: true; internalType: "address"; name: "author"; type: "address"; }]; name: "CommentDeleted"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { indexed: true; internalType: "address"; name: "editedByApp"; type: "address"; }, { indexed: true; internalType: "address"; name: "author"; type: "address"; }, { indexed: false; internalType: "address"; name: "app"; type: "address"; }, { indexed: false; internalType: "uint256"; name: "channelId"; type: "uint256"; }, { indexed: false; internalType: "bytes32"; name: "parentId"; type: "bytes32"; }, { indexed: false; internalType: "uint96"; name: "createdAt"; type: "uint96"; }, { indexed: false; internalType: "uint96"; name: "updatedAt"; type: "uint96"; }, { indexed: false; internalType: "string"; name: "content"; type: "string"; }, { indexed: false; internalType: "string"; name: "metadata"; type: "string"; }, { indexed: false; internalType: "string"; name: "targetUri"; type: "string"; }, { indexed: false; internalType: "string"; name: "commentType"; type: "string"; }, { indexed: false; internalType: "string"; name: "hookData"; type: "string"; }]; name: "CommentEdited"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { indexed: false; internalType: "string"; name: "hookData"; type: "string"; }]; name: "CommentHookDataUpdated"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "address"; name: "previousOwner"; type: "address"; }, { indexed: true; internalType: "address"; name: "newOwner"; type: "address"; }]; name: "OwnershipTransferred"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: false; internalType: "address"; name: "account"; type: "address"; }]; name: "Paused"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: false; internalType: "address"; name: "account"; type: "address"; }]; name: "Unpaused"; type: "event"; }, { inputs: readonly []; name: "ChannelDoesNotExist"; type: "error"; }, { inputs: readonly []; name: "CommentDoesNotExist"; type: "error"; }, { inputs: readonly []; name: "EnforcedPause"; type: "error"; }, { inputs: readonly []; name: "ExpectedPause"; type: "error"; }, { inputs: readonly []; name: "InvalidAppSignature"; type: "error"; }, { inputs: readonly []; name: "InvalidAuthorSignature"; type: "error"; }, { inputs: readonly [{ internalType: "string"; name: "message"; type: "string"; }]; name: "InvalidCommentReference"; type: "error"; }, { inputs: readonly [{ internalType: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "expected"; type: "uint256"; }, { internalType: "uint256"; name: "provided"; type: "uint256"; }]; name: "InvalidNonce"; type: "error"; }, { inputs: readonly []; name: "InvalidSignatureLength"; type: "error"; }, { inputs: readonly []; name: "InvalidSignatureS"; type: "error"; }, { inputs: readonly [{ internalType: "address"; name: "caller"; type: "address"; }, { internalType: "address"; name: "requiredCaller"; type: "address"; }]; name: "NotAuthorized"; type: "error"; }, { inputs: readonly [{ internalType: "address"; name: "owner"; type: "address"; }]; name: "OwnableInvalidOwner"; type: "error"; }, { inputs: readonly [{ internalType: "address"; name: "account"; type: "address"; }]; name: "OwnableUnauthorizedAccount"; type: "error"; }, { inputs: readonly []; name: "ParentCommentHasNeverExisted"; type: "error"; }, { inputs: readonly []; name: "ReentrancyGuardReentrantCall"; type: "error"; }, { inputs: readonly [{ internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "uint256"; name: "currentTime"; type: "uint256"; }]; name: "SignatureDeadlineReached"; type: "error"; }, { inputs: readonly []; name: "ZeroAddress"; type: "error"; }], "CommentAdded">>

The transaction hash