import {GenericEventData} from "@polkadot/types/generic/Event"; import { ApiPromise } from '@polkadot/api' import { MemberId } from '@joystream/types/members' import { ProposalParameters, ProposalStatus, VotingResults, } from '@joystream/types/proposals' import { AccountId, Nominations } from '@polkadot/types/interfaces' import { Option } from '@polkadot/types/codec' import { StorageKey } from '@polkadot/types/primitive' export class Statistics { councilRound: number = 0; councilMembers: number = 0; electionApplicants: number = 0; electionAvgApplicants: number = 0; perElectionApplicants: number = 0; electionApplicantsStakes: number = 0; electionVotes: number = 0; avgVotePerApplicant: number = 0; dateStart: string = ""; dateEnd: string = ""; startBlock: number = 0; endBlock: number = 0; percNewBlocks: number = 0; startMembers: number = 0; endMembers: number = 0; newMembers: number = 0; percNewMembers: number = 0; newBlocks: number = 0; avgBlockProduction: number = 0; startThreads: number = 0; endThreads: number = 0; newThreads: number = 0; totalThreads: number = 0; percNewThreads: number = 0; startPosts: number = 0; // endPosts: number = 0; newPosts: number = 0; endPosts: number = 0; percNewPosts: number = 0; startCategories: number = 0; endCategories: number = 0; newCategories: number = 0; perNewCategories: number = 0; newProposals: number = 0; newApprovedProposals: number = 0; startChannels: number = 0; newChannels: number = 0; endChannels: number = 0; percNewChannels: number = 0; startMedia: number = 0; newMedia: number = 0; endMedia: number = 0; percNewMedia: number = 0; deletedMedia: number = 0; newMints: number = 0; startMinted: number = 0; totalMinted: number = 0; percMinted: number = 0; endMinted: number = 0; totalMintCapacityIncrease: number = 0; startCouncilMinted: number = 0; endCouncilMinted: number = 0; newCouncilMinted: number = 0; percNewCouncilMinted: number = 0; startCuratorMinted: number = 0; endCuratorMinted: number = 0; newCuratorMinted: number = 0; percCuratorMinted: number = 0; startStorageMinted: number = 0; endStorageMinted: number = 0; newStorageMinted: number = 0; percStorageMinted: number = 0; startIssuance: number = 0; endIssuance: number = 0; newIssuance: number = 0; percNewIssuance: number = 0; newTokensBurn: number = 0; newValidatorRewards: number = 0; avgValidators: number = 0; startValidators: string = ""; endValidators: string = ""; percValidators: number = 0; startValidatorsStake: number = 0; endValidatorsStake: number = 0; percNewValidatorsStake: number = 0; startStorageProviders: number = 0; endStorageProviders: number = 0; percNewStorageProviders: number = 0; newStorageProviderReward: number = 0; startStorageProvidersStake: number = 0; endStorageProvidersStake: number = 0; percNewStorageProviderStake: number = 0; newCouncilRewards: number = 0; startCurators: number = 0; endCurators: number = 0; percNewCurators: number = 0; newCuratorRewards: number = 0; startUsedSpace: number = 0; newUsedSpace: number = 0; endUsedSpace: number = 0; percNewUsedSpace: number = 0; avgNewSizePerContent: number = 0; totalAvgSizePerContent: number = 0; percAvgSizePerContent: number = 0; newStakes: number = 0; totalNewStakeValue: number = 0; newTextProposals: number = 0; newRuntimeUpgradeProposal: number = 0; newSetElectionParametersProposal: number = 0; spendingProposalsTotal: number = 0; bountiesTotalPaid: number = 0; newSetLeadProposal: number = 0; newSetContentWorkingGroupMintCapacityProposal: number = 0; newEvictStorageProviderProposal: number = 0; newSetValidatorCountProposal: number = 0; newSetStorageRoleParametersProposal: number = 0; storageProviders: string; curators: string; constructor() { } } export class ValidatorReward { sharedReward: number = 0; remainingReward: number = 0; validators: number = 0; slotStake: number = 0; blockNumber: number = 0; } export class WorkersInfo { rewards: number = 0; startStake: number = 0; endStake: number = 0; startNrOfWorkers: number = 0; endNrOfWorkers: number = 0; } export class Exchange { sender: string = ""; amount: number = 0; fees: number = 0; blockNumber: number = 0; } export enum ProposalTypes { Text = "Text", RuntimeUpgrade = "RuntimeUpgrade", SetElectionParameters = "SetElectionParameters", Spending = "Spending", SetLead = "SetLead", SetContentWorkingGroupMintCapacity = "SetContentWorkingGroupMintCapacity", EvictStorageProvider = "EvictStorageProvider", SetValidatorCount = "SetValidatorCount", SetStorageRoleParameters = "SetStorageRoleParameters", } export class SpendingProposals { constructor(public id: number, public spentAmount: number) { } } export class MintStatistics { startMinted: number; endMinted: number; diffMinted: number; percMinted: number; constructor(startMinted: number = 0, endMinted: number = 0, diffMinted: number = 0, percMinted: number = 0) { this.startMinted = startMinted; this.endMinted = endMinted; this.diffMinted = diffMinted; this.percMinted = percMinted; } } export class Media { constructor(public id: number, public title: string) { } } export class Channel { constructor(public id: number, public title: string) { } } export class Bounty { constructor(public proposalId: number, public title: string, public status: string, public amountAsked: number, public amountMinted: number) { } } export class CacheEvent { constructor(public section: string, public method: string, public data: GenericEventData) { } } export interface Api { query: any rpc: any derive: any } export interface Block { height: number blockHash: string } export interface Category { } export interface Member { } export interface Thread { } export interface Post { } export interface IState { //gethandle: (account: AccountId | string) => string; connecting: boolean now: number block: number blocks: Block[] nominators: string[] validators: string[] stashes: string[] loading: boolean councils: Seat[][] councilElection?: { stage: any; round: number; termEndsAt: number } channels: Channel[] categories: Category[] proposals: ProposalDetail[] posts: Post[] threads: Thread[] domain: string proposalCount: number proposalPosts: any[] handles: Handles members: Member[] tokenomics?: Tokenomics reports: { [key: string]: string } [key: string]: any stars: { [key: string]: boolean } stakes?: { [key: string]: Stakes } rewardPoints?: RewardPoints lastReward: number } export interface RewardPoints { total: number individual: { [account: string]: number } } export interface Stake { who: string value: number } export interface Stakes { total: number own: number others: Stake[] commission: number } export interface Seat { member: string handle?: string id?: number stake: number backers: Backer[] } export interface Backer { member: string stake: number } export interface CouncilType { round: number last: string } export interface CouncilModel {} export interface Options { verbose: number channel: boolean council: boolean forum: boolean proposals: boolean } export interface ProposalDetail { createdAt: number finalizedAt: number message: string parameters: string stage: any result: string exec: any id: number title: string description: any votes: VotingResults type: string votesByAccount?: Vote[] author?: string authorId: number } export interface Vote { vote: string handle: string } export type ProposalArray = number[] export interface ProposalPost { threadId: number text: string id: number } export interface Proposals { current: number last: number active: ProposalArray executing: ProposalArray } export interface ChannelType { id: number handle: string title: string description: string avatar: string banner: string content: string ownerId: number accountId: string publicationStatus: boolean curation: string createdAt: string principal: number } export interface CategoryType { id: number threadId: number title: string description: string createdAt: number deleted: boolean archived: boolean subcategories: number unmoderatedThreads: number moderatedThreads: number position: number moderatorId: string } export interface PostType { id: number text: string threadId: number authorId: string createdAt: { block: number; time: number } } export interface ThreadType { id: number title: string categoryId: number nrInCategory: number moderation: string createdAt: string authorId: string } export interface MemberType { account: string handle: string id: number registeredAt: number about: string addPost: any } export interface Header { number: number timestamp: number author: string } export interface Summary { blocks: Block[] validators: number[] nominators: number[] } export type NominatorsEntries = [StorageKey, Option][] export interface ProviderStatus { [propName: string]: boolean } export interface Handles { [key: string]: string } export interface Tokenomics { price: string totalIssuance: string validators: { total_stake: string } burns: Burn[] exchanges: Exchange[] extecutedBurnsAmount: number } export interface Burn { amount: number blockHeight: number date: string // "2020-09-21T11:07:54.000Z" logTime: string //"2020-09-21T11:08:54.091Z" } export interface Exchange { amount: number amountUSD: number blockHeight: number date: string // "2020-09-21T11:07:48.000Z" logTime: string // "2020-09-21T11:08:48.552Z" price: number // 0.000053676219442924057 recipient: string //"5D5PhZQNJzcJXVBxwJxZcsutjKPqUPydrvpu6HeiBfMaeKQu" sender: string // "5DACzSg65taZ2NRktUtzBjhLZr8H5T8rwNoZUng9gQV6ayqT" senderMemo: string //"4Testing1337SendToBurnerAddressHopingItWorksOfc5D5PhZQNJzcJXVBxwJxZcsutjKPqUPydrvpu6HeiBfMaeKQu" status: string // FINALIZED | PENDING xmrAddress: string //"No address found" } export interface Event { text: string date: number category: { tag: string color: string } link: { url: string text: string } } export interface CalendarItem { id: number group: number title: string start_time: number end_time: number } export interface CalendarGroup { id: number title: string } export interface Status { block: number era: number round: number members: number channels: number categories: number threads: number posts: number proposals: number proposalPosts: number }