readOnlyBuild method

Result<ReadOnlyWallet, String> readOnlyBuild()

Create a read-only wallet matching the supplied properties. Resets the builder.

Implementation

Result<ReadOnlyWallet, String> readOnlyBuild() {
  if (_stakeAddress == null) {
    return Err("Read-only wallet creation requires a staking address");
  }
  _walletName ??= "Wallet #${_walletNameIndex++}";
  if (_blockchainAdapter != null) {
    if (_blockchainAdapter! is BlockfrostBlockchainAdapter) {
      _networkId =
          (_blockchainAdapter as BlockfrostBlockchainAdapter).networkId;
    }
  } else {
    _networkId ??= NetworkId.mainnet;
    final adapterResult = _lookupOrCreateBlockchainAdapter(
      networkId: _networkId!,
      key: _networkId! == NetworkId.mainnet
          ? _mainnetAdapterKey
          : _testnetAdapterKey,
    );
    if (adapterResult.isErr()) return Err(adapterResult.unwrapErr());
    _blockchainAdapter = adapterResult.unwrap();
  }

  final wallet = ReadOnlyWalletImpl(
    blockchainAdapter: _blockchainAdapter!,
    stakeAddress: _stakeAddress!,
    walletName: _walletName!,
  );
  reset();
  return Ok(wallet);
}