export type RewardsState =
  | "non_connected"
  | "loading_rewards"
  | "error"
  | "activated"
  | "not_active"
export type ActivationState =
  | "not_started"
  | "create_automation_acc"
  | "run_automation"

export type FlowState =
  | "idle"
  | "disabled"
  | "initiating_automation_account_creation"
  | "waiting_for_signature"
  | "waiting_for_automation_account_creation_tx_sign"
  | "can_create_automation_account"
  | "automation_account_created_and_running"

export type RewardsAmount = {
  total: string
  unclaimed: string
  decimals: number
  symbol: string
}

export interface SwellSubscriptionMetadata {
  every: string
  rewardToken: string
  userAddress: string
}

export interface SwellSubscription {
  id: string
  registryId: string
  chainId: number
  duration: number
  tokenInputs: Record<string, string>
  tokenLimits: Record<string, string>
  status: number
  commitHash: string
  subAccountAddress: string
  feeToken: string
  feeAmount: string
  metadata: SwellSubscriptionMetadata
  createdAt: string
}

export interface SwellSubscriptionResponse {
  data: SwellSubscription[]
}

export interface MerklRewardToken {
  accumulated: string
  unclaimed: string
  pending: string
  decimals: number
  symbol: string
  proof: string[]
}

export interface MerklChainData {
  campaignData: Record<
    string,
    Record<
      string,
      {
        accumulated: string
        unclaimed: string
        pending: string
        auxiliaryData1: string
        auxiliaryData2: string
        decimals: number
        mainParameter: string
        symbol: string
        token: string
      }
    >
  >
  tokenData: Record<string, MerklRewardToken>
}

export interface MerklRewardsResponse {
  [chainId: string]: MerklChainData
}
