The useSolanaSigner hook provides a Solana signer for a Para wallet.

Import

import { useSolanaSigner } from "@getpara/react-sdk";
import { createSolanaRpc } from "@solana/kit";

Usage

const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");

function SolanaSigner() {
  const { solanaSigner, isLoading } = useSolanaSigner({ rpc });

  const handleSign = async () => {
    if (!solanaSigner) {
      return;
    }

    // Convert message to bytes
    const messageBytes = new Uint8Array(
      getUtf8Encoder().encode("Test Message")
    );

    // Sign the message
    const signatureResult = await solanaSigner.signMessages([
      { content: messageBytes, signatures: {} },
    ]);

    // Get the signature
    const signatureBytes = signatureResult[0][solanaSigner.address];
    const signatureBase58 = bs58.encode(signatureBytes);

    console.log("Signature:", signatureBase58);
  };

  if (isLoading) return <div>Loading Solana signer...</div>;

  return (
    <div>
      <p>Address: {solanaSigner?.address}</p>
      <button onClick={handleSign}>Sign Message</button>
    </div>
  );
}

Return Type

The hook returns a UseSolanaSignerReturn object with the following properties: