import { Address , BigNumber , HexString , BigNumberJson } from "../basic" ; import { tidy } from "../utils" ; type TimeLockedPassthroughAppState = { challengeRegistryAddress : Address ; targetAppIdentityHash : HexString ; switchesOutcomeAt : HexString ; defaultOutcome : HexString | any ; } ; export type MultiAssetMultiPartyCoinTransferInterpreterParams = { limit : BigNumber [ ] ; tokenAddresses : Address [ ] ; } ; export type MultiAssetMultiPartyCoinTransferInterpreterParamsJson = Omit < MultiAssetMultiPartyCoinTransferInterpreterParams , "limit" > & { limit : BigNumberJson [ ] ; } ; export const multiAssetMultiPartyCoinTransferInterpreterParamsEncoding = tidy ( `tuple(
  uint256[] limit,
  address[] tokenAddresses
)` ) ; export type SingleAssetTwoPartyCoinTransferInterpreterParams = { limit : BigNumber ; tokenAddress : Address ; } ; export type SingleAssetTwoPartyCoinTransferInterpreterParamsJson = Omit < SingleAssetTwoPartyCoinTransferInterpreterParams , "limit" > & { limit : BigNumberJson ; } ; export const singleAssetTwoPartyCoinTransferInterpreterParamsEncoding = tidy ( `tuple(
  uint256 limit,
  address tokenAddress
)` ) ; export type TwoPartyFixedOutcomeInterpreterParams = { playerAddrs : [ Address , Address ] ; amount : BigNumber ; tokenAddress : Address ; } ; export type TwoPartyFixedOutcomeInterpreterParamsJson = Omit < TwoPartyFixedOutcomeInterpreterParams , "amount" > & { amount : BigNumberJson ; } ; export const twoPartyFixedOutcomeInterpreterParamsEncoding = tidy ( `tuple(
  address[2] playerAddrs,
  uint256 amount,
  address tokenAddress
)` ) ; export type CoinTransfer = { amount : BigNumber ; to : Address ; } ; export enum TwoPartyFixedOutcome { SEND_TO_ADDR_ONE = 0 , SEND_TO_ADDR_TWO = 1 , SPLIT_AND_SEND_TO_BOTH_ADDRS = 2 } export enum MultisigOperation { Call = 0 , DelegateCall = 1 } type FreeBalanceAppState = { tokenAddresses : Address [ ] ; balances : CoinTransfer [ ] [ ] ; activeApps : HexString [ ] ; } ;