import { bcs } from '@mysten/sui/bcs'

// Bytes32 struct (from utils::bytes32)
export const Bytes32Bcs = bcs.struct('Bytes32', {
    bytes: bcs.vector(bcs.u8()),
})

// ULN-302 ExecutorConfig (from uln_302::executor_config)
export const ExecutorConfigBcs = bcs.struct('ExecutorConfig', {
    max_message_size: bcs.U64,
    executor: bcs.Address,
})

// Executor Worker DstConfig (from executor::executor_type)
export const DstConfigBcs = bcs.struct('DstConfig', {
    lz_receive_base_gas: bcs.U64,
    lz_compose_base_gas: bcs.U64,
    multiplier_bps: bcs.U16,
    floor_margin_usd: bcs.U128,
    native_cap: bcs.U128,
})

// Executor Worker NativeDropParams (from executor::executor_type)
export const NativeDropParamsBcs = bcs.struct('NativeDropParams', {
    receiver: bcs.Address,
    amount: bcs.U64,
})
