pkg update

This commit is contained in:
Stephan D
2026-01-30 16:07:28 +01:00
parent 51f5b0804a
commit 809370bda8
13 changed files with 389 additions and 30 deletions

View File

@@ -1,11 +1,93 @@
package model
import "strings"
// ChainNetwork identifies a blockchain network for routing and discovery.
type ChainNetwork string
const (
ChainNetworkARB ChainNetwork = "arbitrum_one"
ChainNetworkEthMain ChainNetwork = "ethereum_mainnet"
ChainNetworkTronMain ChainNetwork = "tron_mainnet"
ChainNetworkTronNile ChainNetwork = "tron_nile"
ChainNetworkUnspecified ChainNetwork = "unspecified"
ChainNetworkArbitrumOne ChainNetwork = "arbitrum_one"
ChainNetworkArbitrumSepolia ChainNetwork = "arbitrum_sepolia"
ChainNetworkEthereumMainnet ChainNetwork = "ethereum_mainnet"
ChainNetworkTronMainnet ChainNetwork = "tron_mainnet"
ChainNetworkTronNile ChainNetwork = "tron_nile"
ChainNetworkUnspecified ChainNetwork = ""
)
// AllChainNetworks returns all valid chain networks.
func AllChainNetworks() []ChainNetwork {
return []ChainNetwork{
ChainNetworkArbitrumOne,
ChainNetworkEthereumMainnet,
ChainNetworkTronMainnet,
ChainNetworkTronNile,
}
}
// ParseChainNetwork parses a string into a ChainNetwork.
// Returns the network and true if valid, or empty and false if invalid.
func ParseChainNetwork(value string) (ChainNetwork, bool) {
v := strings.ToLower(strings.TrimSpace(value))
switch v {
case "arbitrum_one", "arbitrum", "arb":
return ChainNetworkArbitrumOne, true
case "ethereum_mainnet", "ethereum", "eth":
return ChainNetworkEthereumMainnet, true
case "tron_mainnet", "tron":
return ChainNetworkTronMainnet, true
case "tron_nile", "nile":
return ChainNetworkTronNile, true
case "unspecified", "":
return ChainNetworkUnspecified, true
default:
return ChainNetworkUnspecified, false
}
}
// String returns the string representation of the network.
func (n ChainNetwork) String() string {
return string(n)
}
// IsValid returns true if the network is a known valid network.
func (n ChainNetwork) IsValid() bool {
switch n {
case ChainNetworkArbitrumOne,
ChainNetworkEthereumMainnet,
ChainNetworkTronMainnet,
ChainNetworkTronNile:
return true
default:
return false
}
}
// IsTron returns true if the network is a TRON network.
func (n ChainNetwork) IsTron() bool {
switch n {
case ChainNetworkTronMainnet, ChainNetworkTronNile:
return true
default:
return false
}
}
// IsEVM returns true if the network is an EVM-compatible network.
func (n ChainNetwork) IsEVM() bool {
switch n {
case ChainNetworkArbitrumOne, ChainNetworkEthereumMainnet:
return true
default:
return false
}
}
// IsTestnet returns true if the network is a testnet.
func (n ChainNetwork) IsTestnet() bool {
switch n {
case ChainNetworkTronNile:
return true
default:
return false
}
}