export enum MessageLibType {
    Send = 0,
    Receive = 1,
    SendAndReceive = 2,
}

// Configuration type constants
export const CONFIG_TYPE = {
    EXECUTOR: 1,
    SEND_ULN: 2,
    RECEIVE_ULN: 3,
} as const

// Type definitions for ULN configurations
export interface ExecutorConfig {
    maxMessageSize: number
    executor: string
}

export interface UlnConfig {
    confirmations: bigint
    requiredDvns: string[]
    optionalDvns: string[]
    optionalDvnThreshold: number
}

export interface OAppUlnConfig {
    useDefaultConfirmations: boolean
    useDefaultRequiredDvns: boolean
    useDefaultOptionalDvns: boolean
    ulnConfig: UlnConfig
}

export interface VersionInfo {
    major: bigint
    minor: number
    endpointVersion: number
}
