Skip to main content

TypeScript Types

Complete reference for all TypeScript types used in the CeloRefer SDK.

User Types

UserInfo

interface UserInfo {
  referralCode: string;
  referralCount: number;
  badgeTier: number;
  registeredAt: number; // Unix timestamp
  referrer: Address | null;
}

UserStats

interface UserStats {
  totalReferrals: number;
  totalEarnings: bigint; // In wei
  currentTier: number;
  nextTierProgress: number; // Percentage to next tier
}

Badge Types

BadgeInfo

interface BadgeInfo {
  name: string;
  minReferrals: number;
  level1Rate: number; // In basis points
  level2Rate: number; // In basis points
  color: string;
}

RewardRates

interface RewardRates {
  level1Bps: bigint; // Basis points for direct referrer
  level2Bps: bigint; // Basis points for parent referrer
}

NFT Types

ReputationNFTData

interface ReputationNFTData {
  tier: number;
  referrals: number;
  earnings: bigint; // In wei
  mintedAt: number; // Unix timestamp
  tokenId: bigint;
}

Quest Types

Quest

interface Quest {
  id: number;
  name: string;
  description: string;
  targetReferrals: number;
  rewardAmount: bigint; // In wei
  startTime: number; // Unix timestamp
  endTime: number; // Unix timestamp
  isActive: boolean;
}

UserQuestProgress

interface UserQuestProgress {
  questId: number;
  user: Address;
  progress: number; // Current referral count
  target: number; // Target referral count
  completed: boolean;
  claimed: boolean;
}

Season Types

Season

interface Season {
  id: number;
  name: string;
  description: string;
  startTime: number; // Unix timestamp
  endTime: number; // Unix timestamp
  totalPrizePool: bigint; // In wei
  winnersCount: number;
  isActive: boolean;
}

SeasonUserStats

interface SeasonUserStats {
  seasonId: number;
  user: Address;
  referrals: number;
  earnings: bigint; // In wei
  rank: number;
}

Partner Types

PartnerSubscription

interface PartnerSubscription {
  partner: Address;
  tier: number; // 0=Free, 1=Basic, 2=Pro, 3=Enterprise
  expiryTime: number; // Unix timestamp
  isActive: boolean;
}

Leaderboard Types

LeaderboardUser

interface LeaderboardUser {
  rank: number;
  address: Address;
  referralCount: number;
  totalEarnings: bigint; // In wei
}

LeaderboardStats

interface LeaderboardStats {
  totalUsers: number;
  totalReferrals: number;
  lastUpdated: number; // Unix timestamp
}

Utility Types

ContractStats

interface ContractStats {
  totalUsers: number;
  totalReferrals: number;
  totalQuests: number;
  totalSeasons: number;
  platformFeeBps: number;
}

Address Type

type Address = \`0x\${string}\`;

Hex Type

type Hex = \`0x\${string}\`;