import { SuiClient } from '@mysten/sui/client'

// TypeScript interfaces matching the Move structs in move_call.move
export interface MoveCall {
    // eslint-disable-next-line @typescript-eslint/ban-types
    function: Function
    arguments: Argument[]
    type_arguments: string[] // TypeName as string
    result_ids: Uint8Array[]
    is_builder_call: boolean
}

export interface Function {
    package: string
    module_name: string
    name: string
}

export type Argument =
    | { ID: Uint8Array }
    | { Object: string }
    | { Pure: Uint8Array }
    | { NestedResult: [number, number] } // [call_index, result_index]

export const MAX_BATCH_SIZE = 50
export const DEFAULT_SIMULATION_TIMES = 5

export interface BuilderPlaceholderInfo {
    index: number
    moveCallCount: number
}
