export interface GenexConfig {
  rpcUrl: string;
  chainId?: number;
  wsUrl?: string;
}

export interface CouponDetail {
  tokenId: string;
  faceValue: string;
  couponType: 'utility' | 'security';
  expiryDate: string;
  resaleCount: number;
  maxResaleCount: number;
  transferable: boolean;
  issuer: string;
  redeemed: boolean;
}

export interface CouponHolding {
  tokenId: string;
  batchId: string;
  detail: CouponDetail;
}

export interface BlockInfo {
  height: number;
  hash: string;
  timestamp: number;
  txCount: number;
  proposer: string;
}

export interface TransactionInfo {
  hash: string;
  blockHeight: number;
  from: string;
  to: string;
  value: string;
  gasUsed: string;
  status: 'success' | 'failed';
  timestamp: number;
}

export interface ChainStats {
  blockHeight: number;
  tps: number;
  activeAddresses: number;
  totalCoupons: number;
  totalVolume: string;
}

export interface ChainEvent {
  type: string;
  blockHeight: number;
  txHash: string;
  data: Record<string, any>;
}

export interface EventFilter {
  contractAddress?: string;
  eventName?: string;
  fromBlock?: number;
  toBlock?: number;
}

export interface SwapParams {
  tokenId: string;
  buyer: string;
  seller: string;
  price: string;
  stablecoin: string;
}
