import { Address, Hex } from 'viem'; import { Channel, State } from '../client/types'; export declare enum Role { UNDEFINED = -1, HOST = 0, GUEST = 1 } export declare namespace AppDataTypes { interface NumericState { value: bigint; } interface SequentialState { sequence: bigint; value: bigint; } interface TurnBasedState { data: any; turn: number; status: number; isComplete: boolean; } } export interface Metadata { channel: Channel; challengeExpire?: bigint; lastValidState?: State; } export interface AppLogic { encode: (data: T) => Hex; decode: (encoded: Hex) => T; validateTransition?: (channel: Channel, prevState: T, nextState: T) => boolean; provideProofs?: (channel: Channel, state: T, previousStates: State[]) => State[]; isFinal?: (state: T) => boolean; getAdjudicatorAddress: () => Address; getAdjudicatorType?: () => string; } export interface AppConfig { appLogic: AppLogic; initialState?: T; }