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: "DOMAIN_SEPARATOR";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "app";
     type: "address";
   }, {
     internalType: "uint256";
     name: "expiry";
     type: "uint256";
  }];
  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: "expiry";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "nonce";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "authorSignature";
     type: "bytes";
  }];
  name: "addApprovalWithSig";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     components: readonly [{
        internalType: "enum Comments.BatchOperationType";
        name: "operationType";
        type: "uint8";
      }, {
        internalType: "uint256";
        name: "value";
        type: "uint256";
      }, {
        internalType: "bytes";
        name: "data";
        type: "bytes";
      }, {
        internalType: "bytes[]";
        name: "signatures";
        type: "bytes[]";
     }];
     internalType: "struct Comments.BatchOperation[]";
     name: "operations";
     type: "tuple[]";
  }];
  name: "batchOperations";
  outputs: readonly [{
     internalType: "bytes[]";
     name: "results";
     type: "bytes[]";
  }];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [];
  name: "cancelOwnershipHandover";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [];
  name: "channelManager";
  outputs: readonly [{
     internalType: "contract IChannelManager";
     name: "";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  name: "commentHookMetadata";
  outputs: readonly [{
     internalType: "bytes";
     name: "";
     type: "bytes";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
   }, {
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  name: "commentHookMetadataKeys";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  name: "commentMetadata";
  outputs: readonly [{
     internalType: "bytes";
     name: "";
     type: "bytes";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
   }, {
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  name: "commentMetadataKeys";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "pendingOwner";
     type: "address";
  }];
  name: "completeOwnershipHandover";
  outputs: readonly [];
  stateMutability: "payable";
  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";
      }, {
        components: readonly [{
           internalType: ...;
           name: ...;
           type: ...;
         }, {
           internalType: ...;
           name: ...;
           type: ...;
        }];
        internalType: "struct Metadata.MetadataEntry[]";
        name: "metadata";
        type: "tuple[]";
     }];
     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";
      }, {
        components: readonly [{
           internalType: ...;
           name: ...;
           type: ...;
         }, {
           internalType: ...;
           name: ...;
           type: ...;
        }];
        internalType: "struct Metadata.MetadataEntry[]";
        name: "metadata";
        type: "tuple[]";
     }];
     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: "expiry";
     type: "uint256";
   }, {
     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: "address";
     name: "author";
     type: "address";
   }, {
     internalType: "address";
     name: "app";
     type: "address";
  }];
  name: "getApprovalExpiry";
  outputs: readonly [{
     internalType: "uint256";
     name: "";
     type: "uint256";
  }];
  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: "uint88";
        name: "createdAt";
        type: "uint88";
      }, {
        internalType: "enum Comments.AuthorAuthMethod";
        name: "authMethod";
        type: "uint8";
      }, {
        internalType: "address";
        name: "app";
        type: "address";
      }, {
        internalType: "uint88";
        name: "updatedAt";
        type: "uint88";
      }, {
        internalType: "uint8";
        name: "commentType";
        type: "uint8";
      }, {
        internalType: "uint256";
        name: "channelId";
        type: "uint256";
      }, {
        internalType: "bytes32";
        name: "parentId";
        type: "bytes32";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        internalType: "string";
        name: "targetUri";
        type: "string";
     }];
     internalType: "struct Comments.Comment";
     name: "";
     type: "tuple";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
  }];
  name: "getCommentHookMetadata";
  outputs: readonly [{
     components: readonly [{
        internalType: "bytes32";
        name: "key";
        type: "bytes32";
      }, {
        internalType: "bytes";
        name: "value";
        type: "bytes";
     }];
     internalType: "struct Metadata.MetadataEntry[]";
     name: "";
     type: "tuple[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
  }];
  name: "getCommentHookMetadataKeys";
  outputs: readonly [{
     internalType: "bytes32[]";
     name: "";
     type: "bytes32[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "key";
     type: "bytes32";
  }];
  name: "getCommentHookMetadataValue";
  outputs: readonly [{
     internalType: "bytes";
     name: "";
     type: "bytes";
  }];
  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: "uint8";
        name: "commentType";
        type: "uint8";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        components: readonly [{
           internalType: ...;
           name: ...;
           type: ...;
         }, {
           internalType: ...;
           name: ...;
           type: ...;
        }];
        internalType: "struct Metadata.MetadataEntry[]";
        name: "metadata";
        type: "tuple[]";
      }, {
        internalType: "string";
        name: "targetUri";
        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";
  }];
  name: "getCommentMetadata";
  outputs: readonly [{
     components: readonly [{
        internalType: "bytes32";
        name: "key";
        type: "bytes32";
      }, {
        internalType: "bytes";
        name: "value";
        type: "bytes";
     }];
     internalType: "struct Metadata.MetadataEntry[]";
     name: "";
     type: "tuple[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
  }];
  name: "getCommentMetadataKeys";
  outputs: readonly [{
     internalType: "bytes32[]";
     name: "";
     type: "bytes32[]";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     internalType: "bytes32";
     name: "key";
     type: "bytes32";
  }];
  name: "getCommentMetadataValue";
  outputs: readonly [{
     internalType: "bytes";
     name: "";
     type: "bytes";
  }];
  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";
      }, {
        components: readonly [{
           internalType: ...;
           name: ...;
           type: ...;
         }, {
           internalType: ...;
           name: ...;
           type: ...;
        }];
        internalType: "struct Metadata.MetadataEntry[]";
        name: "metadata";
        type: "tuple[]";
     }];
     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: "result";
     type: "address";
  }];
  stateMutability: "view";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "pendingOwner";
     type: "address";
  }];
  name: "ownershipHandoverExpiresAt";
  outputs: readonly [{
     internalType: "uint256";
     name: "result";
     type: "uint256";
  }];
  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: "uint8";
        name: "commentType";
        type: "uint8";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        components: readonly [{
           internalType: ...;
           name: ...;
           type: ...;
         }, {
           internalType: ...;
           name: ...;
           type: ...;
        }];
        internalType: "struct Metadata.MetadataEntry[]";
        name: "metadata";
        type: "tuple[]";
      }, {
        internalType: "string";
        name: "targetUri";
        type: "string";
     }];
     internalType: "struct Comments.CreateComment";
     name: "commentData";
     type: "tuple";
   }, {
     internalType: "bytes";
     name: "appSignature";
     type: "bytes";
  }];
  name: "postComment";
  outputs: readonly [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  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: "uint8";
        name: "commentType";
        type: "uint8";
      }, {
        internalType: "string";
        name: "content";
        type: "string";
      }, {
        components: readonly [{
           internalType: ...;
           name: ...;
           type: ...;
         }, {
           internalType: ...;
           name: ...;
           type: ...;
        }];
        internalType: "struct Metadata.MetadataEntry[]";
        name: "metadata";
        type: "tuple[]";
      }, {
        internalType: "string";
        name: "targetUri";
        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 [{
     internalType: "bytes32";
     name: "";
     type: "bytes32";
  }];
  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: "authorSignature";
     type: "bytes";
  }];
  name: "removeApprovalWithSig";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [];
  name: "renounceOwnership";
  outputs: readonly [];
  stateMutability: "payable";
  type: "function";
}, {
  inputs: readonly [];
  name: "requestOwnershipHandover";
  outputs: readonly [];
  stateMutability: "payable";
  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: "payable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "_channelContract";
     type: "address";
  }];
  name: "updateChannelContract";
  outputs: readonly [];
  stateMutability: "nonpayable";
  type: "function";
}, {
  inputs: readonly [{
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
  }];
  name: "updateCommentHookData";
  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";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "expiry";
     type: "uint256";
  }];
  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: "address";
     name: "sender";
     type: "address";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "operationsCount";
     type: "uint256";
   }, {
     indexed: false;
     internalType: "uint256";
     name: "totalValue";
     type: "uint256";
  }];
  name: "BatchOperationExecuted";
  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: "targetUri";
     type: "string";
   }, {
     indexed: false;
     internalType: "uint8";
     name: "commentType";
     type: "uint8";
   }, {
     indexed: false;
     internalType: "uint8";
     name: "authMethod";
     type: "uint8";
   }, {
     components: readonly [{
        internalType: "bytes32";
        name: "key";
        type: "bytes32";
      }, {
        internalType: "bytes";
        name: "value";
        type: "bytes";
     }];
     indexed: false;
     internalType: "struct Metadata.MetadataEntry[]";
     name: "metadata";
     type: "tuple[]";
  }];
  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: "author";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "editedByApp";
     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: "targetUri";
     type: "string";
   }, {
     indexed: false;
     internalType: "uint8";
     name: "commentType";
     type: "uint8";
   }, {
     indexed: false;
     internalType: "uint8";
     name: "authMethod";
     type: "uint8";
   }, {
     components: readonly [{
        internalType: "bytes32";
        name: "key";
        type: "bytes32";
      }, {
        internalType: "bytes";
        name: "value";
        type: "bytes";
     }];
     indexed: false;
     internalType: "struct Metadata.MetadataEntry[]";
     name: "metadata";
     type: "tuple[]";
  }];
  name: "CommentEdited";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     components: readonly [{
        internalType: "enum Metadata.MetadataOperation";
        name: "operation";
        type: "uint8";
      }, {
        internalType: "bytes32";
        name: "key";
        type: "bytes32";
      }, {
        internalType: "bytes";
        name: "value";
        type: "bytes";
     }];
     indexed: false;
     internalType: "struct Metadata.MetadataEntryOp[]";
     name: "operations";
     type: "tuple[]";
  }];
  name: "CommentHookDataUpdate";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     indexed: true;
     internalType: "bytes32";
     name: "key";
     type: "bytes32";
   }, {
     indexed: false;
     internalType: "bytes";
     name: "value";
     type: "bytes";
  }];
  name: "CommentHookMetadataSet";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "bytes32";
     name: "commentId";
     type: "bytes32";
   }, {
     indexed: true;
     internalType: "bytes32";
     name: "key";
     type: "bytes32";
   }, {
     indexed: false;
     internalType: "bytes";
     name: "value";
     type: "bytes";
  }];
  name: "CommentMetadataSet";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "pendingOwner";
     type: "address";
  }];
  name: "OwnershipHandoverCanceled";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "pendingOwner";
     type: "address";
  }];
  name: "OwnershipHandoverRequested";
  type: "event";
}, {
  anonymous: false;
  inputs: readonly [{
     indexed: true;
     internalType: "address";
     name: "oldOwner";
     type: "address";
   }, {
     indexed: true;
     internalType: "address";
     name: "newOwner";
     type: "address";
  }];
  name: "OwnershipTransferred";
  type: "event";
}, {
  inputs: readonly [];
  name: "AlreadyInitialized";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "operationIndex";
     type: "uint256";
   }, {
     internalType: "bytes";
     name: "reason";
     type: "bytes";
  }];
  name: "BatchOperationFailed";
  type: "error";
}, {
  inputs: readonly [];
  name: "ChannelDoesNotExist";
  type: "error";
}, {
  inputs: readonly [];
  name: "CommentAlreadyDeleted";
  type: "error";
}, {
  inputs: readonly [];
  name: "CommentAlreadyExists";
  type: "error";
}, {
  inputs: readonly [];
  name: "CommentDoesNotExist";
  type: "error";
}, {
  inputs: readonly [];
  name: "HookMetadataTooLong";
  type: "error";
}, {
  inputs: readonly [];
  name: "HookNotEnabled";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providedValue";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "requiredValue";
     type: "uint256";
  }];
  name: "InsufficientValue";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidAppSignature";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidApprovalExpiry";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidAuthorSignature";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "operationIndex";
     type: "uint256";
   }, {
     internalType: "string";
     name: "reason";
     type: "string";
  }];
  name: "InvalidBatchOperation";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "string";
     name: "message";
     type: "string";
  }];
  name: "InvalidCommentReference";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidKey";
  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 [{
     internalType: "string";
     name: "reason";
     type: "string";
  }];
  name: "InvalidReactionReference";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidSignatureLength";
  type: "error";
}, {
  inputs: readonly [];
  name: "InvalidSignatureS";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "providedValue";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "requiredValue";
     type: "uint256";
  }];
  name: "InvalidValueDistribution";
  type: "error";
}, {
  inputs: readonly [];
  name: "MetadataTooLong";
  type: "error";
}, {
  inputs: readonly [];
  name: "NewOwnerIsZeroAddress";
  type: "error";
}, {
  inputs: readonly [];
  name: "NoHandoverRequest";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "address";
     name: "caller";
     type: "address";
   }, {
     internalType: "address";
     name: "requiredCaller";
     type: "address";
  }];
  name: "NotAuthorized";
  type: "error";
}, {
  inputs: readonly [];
  name: "ParentCommentHasNeverExisted";
  type: "error";
}, {
  inputs: readonly [];
  name: "ParentCommentNotInSameChannel";
  type: "error";
}, {
  inputs: readonly [];
  name: "ReactionCannotBeEdited";
  type: "error";
}, {
  inputs: readonly [];
  name: "Reentrancy";
  type: "error";
}, {
  inputs: readonly [{
     internalType: "uint256";
     name: "deadline";
     type: "uint256";
   }, {
     internalType: "uint256";
     name: "currentTime";
     type: "uint256";
  }];
  name: "SignatureDeadlineReached";
  type: "error";
}, {
  inputs: readonly [];
  name: "Unauthorized";
  type: "error";
}, {
  inputs: readonly [];
  name: "ZeroAddress";
  type: "error";
}], "CommentAdded">>;

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

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: "DOMAIN_SEPARATOR"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint256"; name: "expiry"; type: "uint256"; }]; 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: "expiry"; type: "uint256"; }, { internalType: "uint256"; name: "nonce"; type: "uint256"; }, { internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "bytes"; name: "authorSignature"; type: "bytes"; }]; name: "addApprovalWithSig"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly [{ components: readonly [{ internalType: "enum Comments.BatchOperationType"; name: "operationType"; type: "uint8"; }, { internalType: "uint256"; name: "value"; type: "uint256"; }, { internalType: "bytes"; name: "data"; type: "bytes"; }, { internalType: "bytes[]"; name: "signatures"; type: "bytes[]"; }]; internalType: "struct Comments.BatchOperation[]"; name: "operations"; type: "tuple[]"; }]; name: "batchOperations"; outputs: readonly [{ internalType: "bytes[]"; name: "results"; type: "bytes[]"; }]; stateMutability: "payable"; type: "function"; }, { inputs: readonly []; name: "cancelOwnershipHandover"; outputs: readonly []; stateMutability: "payable"; type: "function"; }, { inputs: readonly []; name: "channelManager"; outputs: readonly [{ internalType: "contract IChannelManager"; name: ""; type: "address"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }, { internalType: "bytes32"; name: ""; type: "bytes32"; }]; name: "commentHookMetadata"; outputs: readonly [{ internalType: "bytes"; name: ""; type: "bytes"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }, { internalType: "uint256"; name: ""; type: "uint256"; }]; name: "commentHookMetadataKeys"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }, { internalType: "bytes32"; name: ""; type: "bytes32"; }]; name: "commentMetadata"; outputs: readonly [{ internalType: "bytes"; name: ""; type: "bytes"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }, { internalType: "uint256"; name: ""; type: "uint256"; }]; name: "commentMetadataKeys"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "pendingOwner"; type: "address"; }]; name: "completeOwnershipHandover"; outputs: readonly []; stateMutability: "payable"; 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"; }, { components: readonly [{ internalType: ...; name: ...; type: ...; }, { internalType: ...; name: ...; type: ...; }]; internalType: "struct Metadata.MetadataEntry[]"; name: "metadata"; type: "tuple[]"; }]; 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"; }, { components: readonly [{ internalType: ...; name: ...; type: ...; }, { internalType: ...; name: ...; type: ...; }]; internalType: "struct Metadata.MetadataEntry[]"; name: "metadata"; type: "tuple[]"; }]; 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: "expiry"; type: "uint256"; }, { 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: "address"; name: "author"; type: "address"; }, { internalType: "address"; name: "app"; type: "address"; }]; name: "getApprovalExpiry"; outputs: readonly [{ internalType: "uint256"; name: ""; type: "uint256"; }]; 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: "uint88"; name: "createdAt"; type: "uint88"; }, { internalType: "enum Comments.AuthorAuthMethod"; name: "authMethod"; type: "uint8"; }, { internalType: "address"; name: "app"; type: "address"; }, { internalType: "uint88"; name: "updatedAt"; type: "uint88"; }, { internalType: "uint8"; name: "commentType"; type: "uint8"; }, { internalType: "uint256"; name: "channelId"; type: "uint256"; }, { internalType: "bytes32"; name: "parentId"; type: "bytes32"; }, { internalType: "string"; name: "content"; type: "string"; }, { internalType: "string"; name: "targetUri"; type: "string"; }]; internalType: "struct Comments.Comment"; name: ""; type: "tuple"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }]; name: "getCommentHookMetadata"; outputs: readonly [{ components: readonly [{ internalType: "bytes32"; name: "key"; type: "bytes32"; }, { internalType: "bytes"; name: "value"; type: "bytes"; }]; internalType: "struct Metadata.MetadataEntry[]"; name: ""; type: "tuple[]"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }]; name: "getCommentHookMetadataKeys"; outputs: readonly [{ internalType: "bytes32[]"; name: ""; type: "bytes32[]"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { internalType: "bytes32"; name: "key"; type: "bytes32"; }]; name: "getCommentHookMetadataValue"; outputs: readonly [{ internalType: "bytes"; name: ""; type: "bytes"; }]; 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: "uint8"; name: "commentType"; type: "uint8"; }, { internalType: "string"; name: "content"; type: "string"; }, { components: readonly [{ internalType: ...; name: ...; type: ...; }, { internalType: ...; name: ...; type: ...; }]; internalType: "struct Metadata.MetadataEntry[]"; name: "metadata"; type: "tuple[]"; }, { internalType: "string"; name: "targetUri"; 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"; }]; name: "getCommentMetadata"; outputs: readonly [{ components: readonly [{ internalType: "bytes32"; name: "key"; type: "bytes32"; }, { internalType: "bytes"; name: "value"; type: "bytes"; }]; internalType: "struct Metadata.MetadataEntry[]"; name: ""; type: "tuple[]"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }]; name: "getCommentMetadataKeys"; outputs: readonly [{ internalType: "bytes32[]"; name: ""; type: "bytes32[]"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { internalType: "bytes32"; name: "key"; type: "bytes32"; }]; name: "getCommentMetadataValue"; outputs: readonly [{ internalType: "bytes"; name: ""; type: "bytes"; }]; 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"; }, { components: readonly [{ internalType: ...; name: ...; type: ...; }, { internalType: ...; name: ...; type: ...; }]; internalType: "struct Metadata.MetadataEntry[]"; name: "metadata"; type: "tuple[]"; }]; 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: "result"; type: "address"; }]; stateMutability: "view"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "pendingOwner"; type: "address"; }]; name: "ownershipHandoverExpiresAt"; outputs: readonly [{ internalType: "uint256"; name: "result"; type: "uint256"; }]; 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: "uint8"; name: "commentType"; type: "uint8"; }, { internalType: "string"; name: "content"; type: "string"; }, { components: readonly [{ internalType: ...; name: ...; type: ...; }, { internalType: ...; name: ...; type: ...; }]; internalType: "struct Metadata.MetadataEntry[]"; name: "metadata"; type: "tuple[]"; }, { internalType: "string"; name: "targetUri"; type: "string"; }]; internalType: "struct Comments.CreateComment"; name: "commentData"; type: "tuple"; }, { internalType: "bytes"; name: "appSignature"; type: "bytes"; }]; name: "postComment"; outputs: readonly [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; 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: "uint8"; name: "commentType"; type: "uint8"; }, { internalType: "string"; name: "content"; type: "string"; }, { components: readonly [{ internalType: ...; name: ...; type: ...; }, { internalType: ...; name: ...; type: ...; }]; internalType: "struct Metadata.MetadataEntry[]"; name: "metadata"; type: "tuple[]"; }, { internalType: "string"; name: "targetUri"; 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 [{ internalType: "bytes32"; name: ""; type: "bytes32"; }]; 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: "authorSignature"; type: "bytes"; }]; name: "removeApprovalWithSig"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly []; name: "renounceOwnership"; outputs: readonly []; stateMutability: "payable"; type: "function"; }, { inputs: readonly []; name: "requestOwnershipHandover"; outputs: readonly []; stateMutability: "payable"; 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: "payable"; type: "function"; }, { inputs: readonly [{ internalType: "address"; name: "_channelContract"; type: "address"; }]; name: "updateChannelContract"; outputs: readonly []; stateMutability: "nonpayable"; type: "function"; }, { inputs: readonly [{ internalType: "bytes32"; name: "commentId"; type: "bytes32"; }]; name: "updateCommentHookData"; 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"; }, { indexed: false; internalType: "uint256"; name: "expiry"; type: "uint256"; }]; 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: "address"; name: "sender"; type: "address"; }, { indexed: false; internalType: "uint256"; name: "operationsCount"; type: "uint256"; }, { indexed: false; internalType: "uint256"; name: "totalValue"; type: "uint256"; }]; name: "BatchOperationExecuted"; 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: "targetUri"; type: "string"; }, { indexed: false; internalType: "uint8"; name: "commentType"; type: "uint8"; }, { indexed: false; internalType: "uint8"; name: "authMethod"; type: "uint8"; }, { components: readonly [{ internalType: "bytes32"; name: "key"; type: "bytes32"; }, { internalType: "bytes"; name: "value"; type: "bytes"; }]; indexed: false; internalType: "struct Metadata.MetadataEntry[]"; name: "metadata"; type: "tuple[]"; }]; 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: "author"; type: "address"; }, { indexed: true; internalType: "address"; name: "editedByApp"; 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: "targetUri"; type: "string"; }, { indexed: false; internalType: "uint8"; name: "commentType"; type: "uint8"; }, { indexed: false; internalType: "uint8"; name: "authMethod"; type: "uint8"; }, { components: readonly [{ internalType: "bytes32"; name: "key"; type: "bytes32"; }, { internalType: "bytes"; name: "value"; type: "bytes"; }]; indexed: false; internalType: "struct Metadata.MetadataEntry[]"; name: "metadata"; type: "tuple[]"; }]; name: "CommentEdited"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { components: readonly [{ internalType: "enum Metadata.MetadataOperation"; name: "operation"; type: "uint8"; }, { internalType: "bytes32"; name: "key"; type: "bytes32"; }, { internalType: "bytes"; name: "value"; type: "bytes"; }]; indexed: false; internalType: "struct Metadata.MetadataEntryOp[]"; name: "operations"; type: "tuple[]"; }]; name: "CommentHookDataUpdate"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { indexed: true; internalType: "bytes32"; name: "key"; type: "bytes32"; }, { indexed: false; internalType: "bytes"; name: "value"; type: "bytes"; }]; name: "CommentHookMetadataSet"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "bytes32"; name: "commentId"; type: "bytes32"; }, { indexed: true; internalType: "bytes32"; name: "key"; type: "bytes32"; }, { indexed: false; internalType: "bytes"; name: "value"; type: "bytes"; }]; name: "CommentMetadataSet"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "address"; name: "pendingOwner"; type: "address"; }]; name: "OwnershipHandoverCanceled"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "address"; name: "pendingOwner"; type: "address"; }]; name: "OwnershipHandoverRequested"; type: "event"; }, { anonymous: false; inputs: readonly [{ indexed: true; internalType: "address"; name: "oldOwner"; type: "address"; }, { indexed: true; internalType: "address"; name: "newOwner"; type: "address"; }]; name: "OwnershipTransferred"; type: "event"; }, { inputs: readonly []; name: "AlreadyInitialized"; type: "error"; }, { inputs: readonly [{ internalType: "uint256"; name: "operationIndex"; type: "uint256"; }, { internalType: "bytes"; name: "reason"; type: "bytes"; }]; name: "BatchOperationFailed"; type: "error"; }, { inputs: readonly []; name: "ChannelDoesNotExist"; type: "error"; }, { inputs: readonly []; name: "CommentAlreadyDeleted"; type: "error"; }, { inputs: readonly []; name: "CommentAlreadyExists"; type: "error"; }, { inputs: readonly []; name: "CommentDoesNotExist"; type: "error"; }, { inputs: readonly []; name: "HookMetadataTooLong"; type: "error"; }, { inputs: readonly []; name: "HookNotEnabled"; type: "error"; }, { inputs: readonly [{ internalType: "uint256"; name: "providedValue"; type: "uint256"; }, { internalType: "uint256"; name: "requiredValue"; type: "uint256"; }]; name: "InsufficientValue"; type: "error"; }, { inputs: readonly []; name: "InvalidAppSignature"; type: "error"; }, { inputs: readonly []; name: "InvalidApprovalExpiry"; type: "error"; }, { inputs: readonly []; name: "InvalidAuthorSignature"; type: "error"; }, { inputs: readonly [{ internalType: "uint256"; name: "operationIndex"; type: "uint256"; }, { internalType: "string"; name: "reason"; type: "string"; }]; name: "InvalidBatchOperation"; type: "error"; }, { inputs: readonly [{ internalType: "string"; name: "message"; type: "string"; }]; name: "InvalidCommentReference"; type: "error"; }, { inputs: readonly []; name: "InvalidKey"; 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 [{ internalType: "string"; name: "reason"; type: "string"; }]; name: "InvalidReactionReference"; type: "error"; }, { inputs: readonly []; name: "InvalidSignatureLength"; type: "error"; }, { inputs: readonly []; name: "InvalidSignatureS"; type: "error"; }, { inputs: readonly [{ internalType: "uint256"; name: "providedValue"; type: "uint256"; }, { internalType: "uint256"; name: "requiredValue"; type: "uint256"; }]; name: "InvalidValueDistribution"; type: "error"; }, { inputs: readonly []; name: "MetadataTooLong"; type: "error"; }, { inputs: readonly []; name: "NewOwnerIsZeroAddress"; type: "error"; }, { inputs: readonly []; name: "NoHandoverRequest"; type: "error"; }, { inputs: readonly [{ internalType: "address"; name: "caller"; type: "address"; }, { internalType: "address"; name: "requiredCaller"; type: "address"; }]; name: "NotAuthorized"; type: "error"; }, { inputs: readonly []; name: "ParentCommentHasNeverExisted"; type: "error"; }, { inputs: readonly []; name: "ParentCommentNotInSameChannel"; type: "error"; }, { inputs: readonly []; name: "ReactionCannotBeEdited"; type: "error"; }, { inputs: readonly []; name: "Reentrancy"; type: "error"; }, { inputs: readonly [{ internalType: "uint256"; name: "deadline"; type: "uint256"; }, { internalType: "uint256"; name: "currentTime"; type: "uint256"; }]; name: "SignatureDeadlineReached"; type: "error"; }, { inputs: readonly []; name: "Unauthorized"; type: "error"; }, { inputs: readonly []; name: "ZeroAddress"; type: "error"; }], "CommentAdded">>

The transaction hash