encodeAddress static method

String encodeAddress({
  1. required List<int> bytes,
  2. required ZcashAddressType type,
  3. required ZcashNetwork network,
  4. List<ZUnifiedReceiver>? receivers,
})

Implementation

static String encodeAddress({
  required List<int> bytes,
  required ZcashAddressType type,
  required ZcashNetwork network,
  List<ZUnifiedReceiver>? receivers,
}) {
  final config = ZcashConf().fromNetwork(network);
  try {
    switch (type) {
      case ZcashAddressType.p2sh:
        return encodeBase58Addresses(
          bytes: bytes,
          prefix: config.b58ScriptAddressPrefix,
          type: type,
        );
      case ZcashAddressType.p2pkh:
        return encodeBase58Addresses(
          bytes: bytes,
          prefix: config.b58PubkeyAddressPrefix,
          type: type,
        );
      case ZcashAddressType.sprout:
        return encodeBase58Addresses(
          bytes: bytes,
          prefix: config.b58SproutAddressPrefix,
          type: type,
        );
      case ZcashAddressType.tex:
        return encodeBech32Address(
          bytes: bytes,
          hrp: config.hrpTexAddress,
          type: type,
        );
      case ZcashAddressType.sapling:
        return encodeBech32Address(
          bytes: bytes,
          hrp: config.hrpSaplingPaymentAddress,
          type: type,
        );
      case ZcashAddressType.unified:
        return ZcashEncodingUtils.encodeUnifiedObject(
          addressBytes: bytes,
          hrp: config.hrpUnifiedAddress,
          receivers: receivers,
          mode: UnifiedReceiverMode.address,
        );
    }
  } on AddressConverterException {
    rethrow;
  } on ZcashKeyEncodingError catch (e) {
    throw AddressConverterException.addressValidationFailed(
      details: e.details,
    );
  } catch (e) {
    throw AddressConverterException.addressValidationFailed(
      reason: e.toString(),
    );
  }
}