pkg update
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user