import type { Address } from 'viem'; export declare const SubscriptionStatus: { readonly ACTIVE: 0; readonly EXPIRED: 1; }; export type SubscriptionStatus = (typeof SubscriptionStatus)[keyof typeof SubscriptionStatus]; export interface SubscriptionPlan { tier: number; monthlyPrice: bigint; yearlyPrice: bigint; features: string[]; } export interface UserSubscription { user: Address; referrer: Address; tier: number; period: number; startTime: bigint; endTime: bigint; paidAmount: bigint; rewardEarned: bigint; } export interface SubscriptionInfo { subscription: UserSubscription | null; status: SubscriptionStatus; plans: SubscriptionPlan[]; canUpgrade: boolean; canDowngrade: boolean; canRenew: boolean; daysRemaining: number; } export interface SubscriptionActions { subscribe: (tier: number, period: number, referrer?: Address) => Promise; renew: (period: number) => Promise; upgrade: (period: number) => Promise; downgrade: (period: number) => Promise; } export interface SubscriptionContractMethods { hasActiveSubscription: (user: Address) => Promise; getUserSubscription: (user: Address) => Promise; getPlan: (tier: number) => Promise; getAllPlans: () => Promise; subscribe: (tier: number, period: number, referrer: Address, value: bigint) => Promise; renew: (period: number, value: bigint) => Promise; upgrade: (newTier: number, value: bigint) => Promise; downgrade: (newTier: number, period: number, value: bigint) => Promise; }