2018-10-30 09:35:47 -07:00
|
|
|
// backend
|
|
|
|
export interface SocialMedia {
|
2019-01-16 21:01:29 -08:00
|
|
|
url: string;
|
|
|
|
service: string;
|
|
|
|
username: string;
|
2018-10-30 09:35:47 -07:00
|
|
|
}
|
2019-02-13 08:54:46 -08:00
|
|
|
// NOTE: sync with backend/grant/utils/enums.py MilestoneStage
|
|
|
|
export enum MILESTONE_STAGE {
|
|
|
|
IDLE = 'IDLE',
|
|
|
|
REQUESTED = 'REQUESTED',
|
|
|
|
REJECTED = 'REJECTED',
|
|
|
|
ACCEPTED = 'ACCEPTED',
|
|
|
|
PAID = 'PAID',
|
|
|
|
}
|
2018-10-30 09:35:47 -07:00
|
|
|
export interface Milestone {
|
2019-02-13 08:54:46 -08:00
|
|
|
id: number;
|
|
|
|
index: number;
|
2018-10-30 09:35:47 -07:00
|
|
|
content: string;
|
2019-02-13 08:54:46 -08:00
|
|
|
dateCreated: number;
|
|
|
|
dateEstimated: number;
|
|
|
|
dateRequested: number;
|
|
|
|
dateAccepted: number;
|
|
|
|
dateRejected: number;
|
|
|
|
datePaid: number;
|
2018-10-30 09:35:47 -07:00
|
|
|
immediatePayout: boolean;
|
|
|
|
payoutPercent: string;
|
|
|
|
stage: string;
|
|
|
|
title: string;
|
|
|
|
}
|
2019-02-01 11:13:30 -08:00
|
|
|
// NOTE: sync with backend/grant/utils/enums.py RFPStatus
|
|
|
|
export enum RFP_STATUS {
|
|
|
|
DRAFT = 'DRAFT',
|
|
|
|
LIVE = 'LIVE',
|
|
|
|
CLOSED = 'CLOSED',
|
|
|
|
}
|
|
|
|
export interface RFP {
|
|
|
|
id: number;
|
|
|
|
dateCreated: number;
|
2019-02-08 08:54:20 -08:00
|
|
|
dateOpened: number | null;
|
|
|
|
dateClosed: number | null;
|
2019-02-01 11:13:30 -08:00
|
|
|
title: string;
|
|
|
|
brief: string;
|
|
|
|
content: string;
|
|
|
|
category: string;
|
|
|
|
status: string;
|
|
|
|
proposals: Proposal[];
|
2019-02-08 08:54:20 -08:00
|
|
|
matching: boolean;
|
|
|
|
bounty: string | null;
|
|
|
|
dateCloses: number | null;
|
2019-02-01 11:13:30 -08:00
|
|
|
}
|
|
|
|
export interface RFPArgs {
|
|
|
|
title: string;
|
|
|
|
brief: string;
|
|
|
|
content: string;
|
|
|
|
category: string;
|
2019-02-08 08:54:20 -08:00
|
|
|
matching: boolean;
|
|
|
|
dateCloses: number | null | undefined;
|
|
|
|
bounty: string | null | undefined;
|
|
|
|
status: string;
|
2019-02-01 11:13:30 -08:00
|
|
|
}
|
2019-02-09 19:00:49 -08:00
|
|
|
// NOTE: sync with backend/grant/utils/enums.py ProposalArbiterStatus
|
|
|
|
export enum PROPOSAL_ARBITER_STATUS {
|
|
|
|
MISSING = 'MISSING',
|
|
|
|
NOMINATED = 'NOMINATED',
|
|
|
|
ACCEPTED = 'ACCEPTED',
|
|
|
|
}
|
|
|
|
export interface ProposalArbiter {
|
|
|
|
user?: User;
|
|
|
|
proposal: Proposal;
|
|
|
|
status: PROPOSAL_ARBITER_STATUS;
|
|
|
|
}
|
2019-01-30 09:59:15 -08:00
|
|
|
// NOTE: sync with backend/grant/utils/enums.py ProposalStatus
|
2019-01-09 10:23:08 -08:00
|
|
|
export enum PROPOSAL_STATUS {
|
|
|
|
DRAFT = 'DRAFT',
|
|
|
|
PENDING = 'PENDING',
|
|
|
|
APPROVED = 'APPROVED',
|
|
|
|
REJECTED = 'REJECTED',
|
|
|
|
LIVE = 'LIVE',
|
|
|
|
DELETED = 'DELETED',
|
2019-01-31 14:56:16 -08:00
|
|
|
STAKING = 'STAKING',
|
2019-01-09 10:23:08 -08:00
|
|
|
}
|
2019-02-15 19:35:25 -08:00
|
|
|
// NOTE: sync with backend/grant/utils/enums.py ProposalStage
|
|
|
|
export enum PROPOSAL_STAGE {
|
|
|
|
PREVIEW = 'PREVIEW',
|
|
|
|
FUNDING_REQUIRED = 'FUNDING_REQUIRED',
|
|
|
|
WIP = 'WIP',
|
|
|
|
COMPLETED = 'COMPLETED',
|
|
|
|
}
|
2018-10-30 09:35:47 -07:00
|
|
|
export interface Proposal {
|
2018-11-09 10:48:55 -08:00
|
|
|
proposalId: number;
|
2019-01-09 10:23:08 -08:00
|
|
|
brief: string;
|
|
|
|
status: PROPOSAL_STATUS;
|
2019-02-13 08:54:46 -08:00
|
|
|
payoutAddress: string;
|
2018-10-30 09:35:47 -07:00
|
|
|
dateCreated: number;
|
2019-01-09 10:23:08 -08:00
|
|
|
dateApproved: number;
|
|
|
|
datePublished: number;
|
2019-02-15 19:35:25 -08:00
|
|
|
deadlineDuration: number;
|
|
|
|
isFailed: boolean;
|
2018-10-30 09:35:47 -07:00
|
|
|
title: string;
|
2018-11-14 09:59:48 -08:00
|
|
|
content: string;
|
2019-02-15 19:35:25 -08:00
|
|
|
stage: PROPOSAL_STAGE;
|
2018-10-30 09:35:47 -07:00
|
|
|
category: string;
|
|
|
|
milestones: Milestone[];
|
2019-02-13 08:54:46 -08:00
|
|
|
currentMilestone?: Milestone;
|
2018-10-30 09:35:47 -07:00
|
|
|
team: User[];
|
|
|
|
comments: Comment[];
|
|
|
|
contractStatus: string;
|
2019-01-09 10:23:08 -08:00
|
|
|
target: string;
|
2019-01-29 15:50:27 -08:00
|
|
|
contributed: string;
|
|
|
|
funded: string;
|
2019-01-09 10:23:08 -08:00
|
|
|
rejectReason: string;
|
2019-01-29 15:50:27 -08:00
|
|
|
contributionMatching: number;
|
2019-02-01 11:13:30 -08:00
|
|
|
rfp?: RFP;
|
2019-02-09 19:00:49 -08:00
|
|
|
arbiter: ProposalArbiter;
|
2018-10-30 09:35:47 -07:00
|
|
|
}
|
|
|
|
export interface Comment {
|
|
|
|
commentId: string;
|
2019-01-16 21:01:29 -08:00
|
|
|
proposalId: Proposal['proposalId'];
|
|
|
|
proposal?: Proposal;
|
|
|
|
dateCreated: number;
|
2018-10-30 09:35:47 -07:00
|
|
|
content: string;
|
|
|
|
}
|
2019-02-06 09:47:47 -08:00
|
|
|
// NOTE: sync with backend/utils/enums.py
|
|
|
|
export enum CONTRIBUTION_STATUS {
|
|
|
|
PENDING = 'PENDING',
|
|
|
|
CONFIRMED = 'CONFIRMED',
|
|
|
|
DELETED = 'DELETED',
|
|
|
|
}
|
2019-01-16 21:01:29 -08:00
|
|
|
export interface Contribution {
|
|
|
|
id: number;
|
2019-02-06 09:47:47 -08:00
|
|
|
status: CONTRIBUTION_STATUS;
|
2019-01-16 21:01:29 -08:00
|
|
|
txId: null | string;
|
|
|
|
amount: string;
|
|
|
|
dateCreated: number;
|
|
|
|
user: User;
|
|
|
|
proposal: Proposal;
|
2019-02-06 10:01:14 -08:00
|
|
|
addresses: {
|
|
|
|
transparent: string;
|
|
|
|
sprout: string;
|
|
|
|
memo: string;
|
|
|
|
};
|
2019-01-16 21:01:29 -08:00
|
|
|
}
|
2019-02-06 09:47:47 -08:00
|
|
|
export interface ContributionArgs {
|
2019-02-06 11:01:46 -08:00
|
|
|
proposalId: string | number;
|
|
|
|
userId: string | number;
|
2019-02-06 09:47:47 -08:00
|
|
|
amount: string;
|
2019-02-06 11:01:46 -08:00
|
|
|
status: string;
|
2019-02-06 09:47:47 -08:00
|
|
|
txId?: string;
|
2019-01-16 21:01:29 -08:00
|
|
|
}
|
2018-10-30 09:35:47 -07:00
|
|
|
export interface User {
|
|
|
|
accountAddress: string;
|
|
|
|
avatar: null | { imageUrl: string };
|
|
|
|
displayName: string;
|
|
|
|
emailAddress: string;
|
|
|
|
socialMedias: SocialMedia[];
|
|
|
|
title: string;
|
|
|
|
userid: number;
|
|
|
|
proposals: Proposal[];
|
|
|
|
comments: Comment[];
|
2019-01-16 21:01:29 -08:00
|
|
|
contributions: Contribution[];
|
2019-02-14 20:18:43 -08:00
|
|
|
silenced: boolean;
|
|
|
|
banned: boolean;
|
|
|
|
bannedReason: string;
|
2018-10-30 09:35:47 -07:00
|
|
|
}
|
2019-01-09 11:08:25 -08:00
|
|
|
|
|
|
|
export interface EmailExample {
|
|
|
|
info: {
|
|
|
|
subject: string;
|
|
|
|
title: string;
|
|
|
|
preview: string;
|
|
|
|
};
|
|
|
|
html: string;
|
|
|
|
text: string;
|
|
|
|
}
|
2019-01-30 09:59:15 -08:00
|
|
|
|
|
|
|
export enum PROPOSAL_CATEGORY {
|
|
|
|
DEV_TOOL = 'DEV_TOOL',
|
|
|
|
CORE_DEV = 'CORE_DEV',
|
|
|
|
COMMUNITY = 'COMMUNITY',
|
|
|
|
DOCUMENTATION = 'DOCUMENTATION',
|
|
|
|
ACCESSIBILITY = 'ACCESSIBILITY',
|
|
|
|
}
|
2019-02-05 12:34:19 -08:00
|
|
|
|
|
|
|
export interface PageQuery {
|
|
|
|
page: number;
|
|
|
|
filters: string[];
|
|
|
|
search: string;
|
|
|
|
sort: string;
|
|
|
|
}
|
2019-02-06 09:47:47 -08:00
|
|
|
|
|
|
|
export interface PageData<T> extends PageQuery {
|
|
|
|
pageSize: number;
|
|
|
|
total: number;
|
|
|
|
items: T[];
|
|
|
|
fetching: boolean;
|
|
|
|
fetched: boolean;
|
|
|
|
}
|