# useSignMessage

## Description

This hook provides functionality to sign an arbitrary message.

## Returns

* **data** (`Hex`): The signature generated.
* **error** (`Error | null`): An error object if the transaction failed, otherwise `null`.
* **isPending** (`boolean`): A boolean indicating whether the transaction is currently pending.
* **isSuccess** (`boolean`): A boolean indicating whether the transaction was successfully sent.
* **isError** (`boolean`): A boolean indicating whether an error occurred during the transaction process.
* **signMessage** : A function that signs a message and returns the signature.&#x20;
* **signMessageAsync** : A function that  signs a message and returns a promise that resolves to the signature.

## Example

```typescript
import { useSignMessage } from "@cometh/connect-react-hooks";

function MessageSigner() {
  const { signMessageAsync, isPending, isError, error, data } = useSignMessage();
 
  const handleSign = async () => {
    try {
      const signature = await signMessageAsync({ message: "Hello, World!" });
      console.log("Message signed:", signature);
    } catch (err) {
      console.error("Error signing message:", err);
    }
  };

  return (
    <div>
      <button onClick={handleSign} disabled={isPending}>
        Sign Message
      </button>
      {isPending && <p>Signing message...</p>}
      {isError && <p>Error: {error?.message}</p>}
      {data && <p>Signature: {data}</p>}
    </div>
  );
}
```
