vialabs-stellar-common 0.1.2

Common interfaces, types, and utilities for Stellar contracts in the VIA cross-chain messaging system
Documentation
use soroban_sdk::{contracttype, symbol_short, Address, Symbol};

pub const CHAIN_DETAILS_KEY: Symbol = symbol_short!("chain");
pub const SYSTEM_ENABLED_KEY: &[u8] = b"system_enabled\0";

pub const DEPLOYER_ADDRESS_KEY: Symbol = symbol_short!("deployer");
pub const GATEWAY_CONTRACT_ADDRESS: Symbol = symbol_short!("gateway");
pub const ZERO_BYTES: [u8; 32] = [0u8; 32];
pub const TX_ID_FACTOR: u128 = 10u128.pow(23);

#[contracttype]
#[derive(Clone, Debug, PartialEq)]
pub struct ChainDetails {
  pub next_tx_id: u128,
  pub chain_id: u64,
}

#[contracttype]
#[derive(Clone, Debug, PartialEq)]
pub enum DataKey {
  ChainSigners,
  ChainSignersMap(Address),
  ChainSignersRequired,

  ViaSigners,
  ViaSignersMap(Address),
  ViaSignersRequired,

  ProjectSigners(Address),
  ProjectSignersMap(Address, Address),
  ProjectSignersRequired(Address),

  Relayers,
  RelayersMap(Address),
  RelayersRequired,

  ContractRelayers(Address),
  ContractRelayersMap(Address, Address),
  ContractRelayersEnabled(Address),

  ProcessedTransfers(u128),

  FeeHandler,
  ProcessFeeCalledFor(Address),
  FeesOffline,
  CustomSourceFee(Address),
  MaxFeeAmount(Address),
  FeeTokenContract(Address),

  GasHandler,
  MaxGasAmount(Address),
  ProcessGasRefundCalledFor(Address, Address),
  GasTokenContract(Address),
  UnwrapToken(Address),

  PosHandler,
  MessageValidateResult,

  GatewayContractAddress,
  ChainsEndpoints(u64),

  BlockNumberWithEvent,
}