UNPKG

near-protocol-rewards

Version:

A transparent, metric-based rewards system for NEAR projects

52 lines (51 loc) 1.55 kB
import { Logger } from "../utils/logger"; import { BaseError } from "../types/errors"; import { ProcessedMetrics, Score } from "./metrics"; export interface StorageConfig { type: "postgres"; config: { host: string; port: number; database: string; user: string; password: string; }; } export interface SDKConfig { githubToken: string; githubRepo: string; timeframe?: "day" | "week" | "month"; logger?: Logger; maxRequestsPerSecond?: number; storage?: StorageConfig; isTestMode?: boolean; } export type RequiredSDKConfig = Required<Omit<SDKConfig, 'logger' | 'storage' | 'isTestMode'>>; export interface RewardCalculation { score: Score; breakdown: { commits: number; pullRequests: number; reviews: number; issues: number; }; metadata: { timestamp: number; periodStart: number; periodEnd: number; }; } export interface SDKEvents { "metrics:collected": (metrics: ProcessedMetrics) => void; "reward:calculated": (reward: RewardCalculation) => void; error: (error: BaseError) => void; "tracking:started": () => void; "tracking:stopped": () => void; } export interface GitHubRewardsSDK { startTracking(): Promise<void>; stopTracking(): Promise<void>; getMetrics(): Promise<ProcessedMetrics | null>; on<E extends keyof SDKEvents>(event: E, listener: SDKEvents[E]): this; emit<E extends keyof SDKEvents>(event: E, ...args: Parameters<SDKEvents[E]>): boolean; }