UNPKG

near-protocol-rewards

Version:

A transparent, metric-based rewards system for NEAR projects

155 lines (154 loc) 4.53 kB
/** * Core Type Definitions * * Contains all shared types used throughout the SDK. * Maintains type safety and consistency across components. * * Key type hierarchies: * - Metrics (GitHub) * - Validation (Results, Errors) * - Configuration (Settings, Options) * * @important * Update these types carefully as they affect the entire SDK */ import { z } from "zod"; import { Logger } from "../utils/logger"; export type MetricsSource = "github"; export type ValidationType = "data" | "security" | "config"; export interface StorageConfig { type: "postgres"; config: { host: string; port: number; database: string; user: string; password: string; }; } export interface ValidationConfig { github: { minCommits?: number; maxCommitsPerDay?: number; minAuthors?: number; }; maxTimeDrift?: number; maxDataAge?: number; } export declare const SDKConfigSchema: z.ZodObject<{ githubRepo: z.ZodString; githubToken: z.ZodString; timeframe: z.ZodOptional<z.ZodEnum<["day", "week", "month"]>>; logLevel: z.ZodOptional<z.ZodEnum<["debug", "info", "warn", "error"]>>; maxRequestsPerSecond: z.ZodOptional<z.ZodNumber>; validation: z.ZodOptional<z.ZodObject<{ github: z.ZodOptional<z.ZodObject<{ minCommits: z.ZodNumber; maxCommitsPerDay: z.ZodNumber; minAuthors: z.ZodNumber; }, "strip", z.ZodTypeAny, { minCommits: number; maxCommitsPerDay: number; minAuthors: number; }, { minCommits: number; maxCommitsPerDay: number; minAuthors: number; }>>; }, "strip", z.ZodTypeAny, { github?: { minCommits: number; maxCommitsPerDay: number; minAuthors: number; } | undefined; }, { github?: { minCommits: number; maxCommitsPerDay: number; minAuthors: number; } | undefined; }>>; weights: z.ZodOptional<z.ZodObject<{ commits: z.ZodNumber; pullRequests: z.ZodNumber; reviews: z.ZodNumber; issues: z.ZodNumber; }, "strip", z.ZodTypeAny, { commits: number; pullRequests: number; reviews: number; issues: number; }, { commits: number; pullRequests: number; reviews: number; issues: number; }>>; }, "strip", z.ZodTypeAny, { githubToken: string; githubRepo: string; timeframe?: "day" | "week" | "month" | undefined; maxRequestsPerSecond?: number | undefined; logLevel?: "debug" | "info" | "warn" | "error" | undefined; validation?: { github?: { minCommits: number; maxCommitsPerDay: number; minAuthors: number; } | undefined; } | undefined; weights?: { commits: number; pullRequests: number; reviews: number; issues: number; } | undefined; }, { githubToken: string; githubRepo: string; timeframe?: "day" | "week" | "month" | undefined; maxRequestsPerSecond?: number | undefined; logLevel?: "debug" | "info" | "warn" | "error" | undefined; validation?: { github?: { minCommits: number; maxCommitsPerDay: number; minAuthors: number; } | undefined; } | undefined; weights?: { commits: number; pullRequests: number; reviews: number; issues: number; } | undefined; }>; export type SDKConfig = z.infer<typeof SDKConfigSchema>; export interface BaseCollectorConfig { logger: Logger; maxRequestsPerSecond?: number; } export interface GitHubCollectorConfig extends BaseCollectorConfig { repo: string; token: string; } export { JSONValue, ErrorDetail } from "./json"; export { ValidationError, ValidationWarning, ValidationResult, ValidationMetadata, } from "./validation"; export { GitHubMetrics, ProcessedMetrics, MetricsMetadata, Score, RewardCalculation, } from "./metrics"; export { ErrorCode } from "./errors"; export { LogContext, ErrorLogContext } from "./logger"; export * from "./json"; export * from "./errors"; export * from "./logger"; export * from "./sdk"; export interface ValidationThresholds { github: { minCommits: number; maxCommitsPerDay: number; minAuthors: number; }; } export interface ValidationContext { thresholds: ValidationThresholds; logger: Logger; }