Skip to main content

Module bridge::chain_ids

use std::vector;

Struct BridgeRoute

public struct BridgeRoute has copy, drop, store
Click to open
Fields
source: u8
destination: u8

Constants

const SUI_MAINNET: u8 = 0;

const SUI_TESTNET: u8 = 1;

const SUI_CUSTOM: u8 = 2;

const ETH_MAINNET: u8 = 10;

const ETH_SEPOLIA: u8 = 11;

const ETH_CUSTOM: u8 = 12;

const EInvalidBridgeRoute: u64 = 0;

Function sui_mainnet

public fun sui_mainnet(): u8
Click to open
Implementation
public fun sui_mainnet(): u8 { SUI_MAINNET }

Function sui_testnet

public fun sui_testnet(): u8
Click to open
Implementation
public fun sui_testnet(): u8 { SUI_TESTNET }

Function sui_custom

public fun sui_custom(): u8
Click to open
Implementation
public fun sui_custom(): u8 { SUI_CUSTOM }

Function eth_mainnet

public fun eth_mainnet(): u8
Click to open
Implementation
public fun eth_mainnet(): u8 { ETH_MAINNET }

Function eth_sepolia

public fun eth_sepolia(): u8
Click to open
Implementation
public fun eth_sepolia(): u8 { ETH_SEPOLIA }

Function eth_custom

public fun eth_custom(): u8
Click to open
Implementation
public fun eth_custom(): u8 { ETH_CUSTOM }

Function route_source

public fun route_source(route: &bridge::chain_ids::BridgeRoute): &u8
Click to open
Implementation
public fun route_source(route: &BridgeRoute): &u8 {
    &route.source
}

Function route_destination

public fun route_destination(route: &bridge::chain_ids::BridgeRoute): &u8
Click to open
Implementation
public fun route_destination(route: &BridgeRoute): &u8 {
    &route.destination
}

Function assert_valid_chain_id

public fun assert_valid_chain_id(id: u8)
Click to open
Implementation
public fun assert_valid_chain_id(id: u8) {
    assert!(
        id == SUI_MAINNET ||
        id == SUI_TESTNET ||
        id == SUI_CUSTOM ||
        id == ETH_MAINNET ||
        id == ETH_SEPOLIA ||
        id == ETH_CUSTOM,
        EInvalidBridgeRoute,
    )
}

Function valid_routes

public fun valid_routes(): vector<bridge::chain_ids::BridgeRoute>
Click to open
Implementation
public fun valid_routes(): vector<BridgeRoute> {
    vector[
        BridgeRoute { source: SUI_MAINNET, destination: ETH_MAINNET },
        BridgeRoute { source: ETH_MAINNET, destination: SUI_MAINNET },
        BridgeRoute { source: SUI_TESTNET, destination: ETH_SEPOLIA },
        BridgeRoute { source: SUI_TESTNET, destination: ETH_CUSTOM },
        BridgeRoute { source: SUI_CUSTOM, destination: ETH_CUSTOM },
        BridgeRoute { source: SUI_CUSTOM, destination: ETH_SEPOLIA },
        BridgeRoute { source: ETH_SEPOLIA, destination: SUI_TESTNET },
        BridgeRoute { source: ETH_SEPOLIA, destination: SUI_CUSTOM },
        BridgeRoute { source: ETH_CUSTOM, destination: SUI_TESTNET },
        BridgeRoute { source: ETH_CUSTOM, destination: SUI_CUSTOM },
    ]
}

Function is_valid_route

public fun is_valid_route(source: u8, destination: u8): bool
Click to open
Implementation
public fun is_valid_route(source: u8, destination: u8): bool {
    let route = BridgeRoute { source, destination };
    valid_routes().contains(&route)
}

Function get_route

public fun get_route(source: u8, destination: u8): bridge::chain_ids::BridgeRoute
Click to open
Implementation
public fun get_route(source: u8, destination: u8): BridgeRoute {
    let route = BridgeRoute { source, destination };
    assert!(valid_routes().contains(&route), EInvalidBridgeRoute);
    route
}