// for external wallets only, use IEmbeddedWalletSolanaSigner for Solana embedded wallets
import { ISolana } from '@dynamic-labs/solana';

const { primaryWallet } = useDynamicContext();

import { Connection } from '@solana/web3.js';

const connection = await (
    primaryWallet as any
).connector.getPublicClient<Connection | undefined>();

if (!connection) return;

const fromKey = new PublicKey(primaryWallet.address);
const toKey = new PublicKey(address);

const amountInLamports = Number(amount) * 1000000000;
const transferTransaction = new Transaction().add(
  SystemProgram.transfer({
    fromPubkey: fromKey,
    lamports: amountInLamports,
    toPubkey: toKey,
  }),
);
const blockhash = await connection.getLatestBlockhash();
transferTransaction.recentBlockhash = blockhash.blockhash;
transferTransaction.feePayer = fromKey;

const signer = await (primaryWallet as any).connector.getSigner<ISolana>();

await signer
  .signAndSendTransaction(transferTransaction)
  .then((res: any) => {
    console.log(
      `Transaction successful: https://solscan.io/tx/${res.signature}?cluster=devnet`,
    );
  })
  .catch((reason: any) => {
    console.error(reason);
  });