@@ -6,6 +6,55 @@ abstract class BitcoinNetworkAddress<T extends BasedUtxoNetwork> {
66 {required this .address,
77 required this .network,
88 required this .baseAddress});
9+
10+ static ADDRESS fromBaseAddress <ADDRESS extends BitcoinNetworkAddress >(
11+ {required BitcoinBaseAddress address,
12+ required BasedUtxoNetwork network}) {
13+ BitcoinNetworkAddress baseAddress;
14+ switch (network) {
15+ case BitcoinSVNetwork .mainnet:
16+ case BitcoinSVNetwork .testnet:
17+ baseAddress = BitcoinSVAddress .fromBaseAddress (address,
18+ network: network as BitcoinSVNetwork );
19+ case BitcoinNetwork .mainnet:
20+ case BitcoinNetwork .testnet:
21+ case BitcoinNetwork .testnet4:
22+ baseAddress = BitcoinAddress .fromBaseAddress (address,
23+ network: network as BitcoinNetwork );
24+ case LitecoinNetwork .mainnet:
25+ case LitecoinNetwork .testnet:
26+ baseAddress = LitecoinAddress .fromBaseAddress (address,
27+ network: network as LitecoinNetwork );
28+ case DashNetwork .mainnet:
29+ case DashNetwork .testnet:
30+ baseAddress = DashAddress .fromBaseAddress (address,
31+ network: network as DashNetwork );
32+ case DogecoinNetwork .mainnet:
33+ case DogecoinNetwork .testnet:
34+ baseAddress = DogeAddress .fromBaseAddress (address,
35+ network: network as DogecoinNetwork );
36+ case BitcoinCashNetwork .mainnet:
37+ case BitcoinCashNetwork .testnet:
38+ baseAddress = BitcoinCashAddress .fromBaseAddress (address,
39+ network: network as BitcoinCashNetwork );
40+ case PepeNetwork .mainnet:
41+ baseAddress = PepeAddress .fromBaseAddress (address,
42+ network: network as PepeNetwork );
43+ case ElectraProtocolNetwork .mainnet:
44+ case ElectraProtocolNetwork .testnet:
45+ baseAddress = ElectraProtocolAddress .fromBaseAddress (address,
46+ network: network as ElectraProtocolNetwork );
47+ default :
48+ throw DartBitcoinPluginException ("Unknown network. ${network .value }" );
49+ }
50+ if (baseAddress is ! ADDRESS ) {
51+ throw DartBitcoinPluginException (
52+ "Invalid cast: expected ${ADDRESS .runtimeType }, but found ${baseAddress .runtimeType }." ,
53+ );
54+ }
55+ return baseAddress;
56+ }
57+
958 static ADDRESS parse <ADDRESS extends BitcoinNetworkAddress >(
1059 {required String address, required BasedUtxoNetwork network}) {
1160 BitcoinNetworkAddress baseAddress;
0 commit comments