forked from MergeFi/frontend
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
89 lines (80 loc) · 1.77 KB
/
Copy pathindex.ts
File metadata and controls
89 lines (80 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
export type UserRole = "contributor" | "maintainer" | "sponsor";
// Mirrors mergefi-backend's BountyStatus enum (src/common/enums/index.ts)
export type BountyStatus =
| "open"
| "funded"
| "claimed"
| "in_review"
| "merged"
| "paid"
| "refunded"
| "expired";
// Mirrors mergefi-backend's BountyDifficulty enum
export type Difficulty = "beginner" | "intermediate" | "advanced" | "expert";
export interface TeamSplit {
role: string;
percentage: number;
contributor?: string;
}
export interface Bounty {
id: string;
repo: string;
org: string;
issueNumber: number;
title: string;
description: string;
reward: number;
asset: "USDC" | "XLM";
difficulty: Difficulty;
status: BountyStatus;
deadline: string;
labels: string[];
claimedBy?: string;
teamSplits?: TeamSplit[];
milestoneId?: string;
escrowId?: string;
}
export interface Milestone {
id: string;
name: string;
repo: string;
budget: number;
distributed: number;
asset: "USDC" | "XLM";
issueCount: number;
completedCount: number;
}
export interface ReputationProfile {
handle: string;
avatarUrl: string;
lifetimeEarnings: number;
mergedPRs: number;
completionRate: number;
avgReviewTimeHours: number;
onTimeDeliveryRate: number;
languages: string[];
organizations: string[];
topClients: string[];
}
export interface SponsorSummary {
name: string;
totalFunded: number;
activeBounties: number;
budgetRemaining: number;
repos: string[];
}
export interface MaintenancePool {
id: string;
repo: string;
monthlyDeposit: number;
balance: number;
asset: "USDC" | "XLM";
}
export interface AuthUser {
id: string;
username: string;
displayName: string | null;
avatarUrl: string | null;
roles: UserRole[];
stellarAddress: string | null;
}