createSolanaWalletWithNonCustodialSigner method

CrossmintSolanaWallet createSolanaWalletWithNonCustodialSigner({
  1. required String signerType,
  2. required String signerLocator,
  3. String? address,
  4. HiddenSignerBridge? bridge,
  5. CrossmintOtpDeliveryChannel? channel,
  6. CrossmintSignerConfig? recoverySigner,
})

Builds a runtime Solana wallet backed by a non-custodial email/phone signer. Requires a mounted wallet host.

Pass channel to request a non-default OTP delivery channel when signerType is phone; it is ignored for email signers.

Implementation

CrossmintSolanaWallet createSolanaWalletWithNonCustodialSigner({
  required String signerType,
  required String signerLocator,
  String? address,
  HiddenSignerBridge? bridge,
  CrossmintOtpDeliveryChannel? channel,
  CrossmintSignerConfig? recoverySigner,
}) {
  final CrossmintWallet wallet = requireCurrentWallet;
  final HiddenSignerBridge resolvedBridge =
      bridge ?? client.hiddenSignerBridgeController;
  crossmintAssertBridgeHosted(resolvedBridge);
  final CrossmintWalletApprovalSigner signer = client
      .createSolanaNonCustodialSigner(
        bridge: resolvedBridge,
        signerType: signerType,
        signerLocator: signerLocator,
        address: address ?? wallet.address,
        onAuthRequired: onAuthRequired,
        channel: channel,
      );
  return client.createSolanaWallet(
    wallet: wallet,
    signer: signer,
    recoverySigner: _recoveryMethodOr(recoverySigner),
    deviceSignerKeyStorage: config.deviceSignerKeyStorage,
    onAuthRequired: onAuthRequired,
  );
}