import { ethers } from "ethers";

export interface StakeInfo {
  rewardDebt: bigint;
  cooldownEnd: bigint;
  cooldownAmount: bigint;
}

export interface StakingContractConfig {
  contractAddress?: string;
  privateKey?: string;
  rpcUrl?: string;
}

export interface StakingOperationResult {
  success: boolean;
  transactionHash?: string;
  error?: string;
}

export interface StakingViewResult<T> {
  success: boolean;
  data?: T;
  error?: string;
}

export interface StakingStats {
  totalStaked: bigint;
  emissionRate: bigint;
  cooldownDuration: bigint;
  venicePercentage: bigint;
  accRewardPerShare: bigint;
  lastRewardTimestamp: bigint;
}

export interface UserStakeInfo {
  stakeAmount: bigint;
  pendingRewards: bigint;
  stakeInfo: StakeInfo;
} 