UNPKG

@subsocial/api

Version:
181 lines (180 loc) 6.09 kB
import BN from 'bn.js'; import { Content, WhoAndWhen } from '@subsocial/definitions/interfaces'; import { GenericAccountId } from '@polkadot/types/generic'; import { Bool, bool } from '@polkadot/types/primitive'; import * as content from './ipfs'; declare type Id = string; export declare type Cid = string; export declare type RoleId = string; export declare type HasId = { id: Id; }; export declare type CanHaveParentId = { parentId?: Id; }; export declare type CanHaveSpaceId = { spaceId?: Id; }; export declare type CanHaveContent = { contentId?: Cid; }; export declare type HasOwner = { ownerId: string; }; export declare type HasHandle = { handle: string; }; export declare type CanHaveHandle = Partial<HasHandle>; export declare type HasCreated = { createdByAccount: string; createdAtBlock: number; createdAtTime: number; }; export declare type HasUpdated = { updatedByAccount?: string; updatedAtBlock?: number; updatedAtTime?: number; }; export declare type CanBeUpdated = { isUpdated?: boolean; }; export declare type CanBeHidden = { hidden: boolean; }; export declare type FlatSuperCommon = HasCreated & CanBeUpdated & CanHaveContent; export declare type FlatSpaceOrPost = FlatSuperCommon & HasId & HasOwner & CanBeHidden; /** Flat space struct. */ export declare type SpaceStruct = FlatSpaceOrPost & CanHaveParentId & CanHaveHandle & SpacePermissions & { postsCount?: number; canFollowerCreatePosts: boolean; canEveryoneCreatePosts: boolean; }; /** Flat post struct. */ export declare type PostStruct = FlatSpaceOrPost & CanHaveSpaceId & { upvotesCount: number; downvotesCount: number; repliesCount?: number; sharesCount?: number; isRegularPost: boolean; isSharedPost: boolean; isComment: boolean; }; export declare type ReactionStruct = FlatSuperCommon & HasId & HasUpdated & { kind: ReactionEnum; }; export declare type CommentExtension = { parentId?: Id; rootPostId: Id; }; export declare type SharedPostExtension = { originalPostId: Id; }; export declare type FlatPostExtension = {} | CommentExtension | SharedPostExtension; export declare type SharedPostStruct = PostStruct & SharedPostExtension; export declare type CommentStruct = PostStruct & CommentExtension; export declare type SuperCommonStruct = { created: WhoAndWhen; edited: Bool; content: Content; }; export declare type SpaceOrPostStruct = SuperCommonStruct & { id: BN; owner: GenericAccountId; hidden: bool; }; export declare type AnyId = EntityId | BN; export declare type EntityId = string; export declare type AccountId = EntityId; export declare type SpaceId = EntityId; export declare type PostId = EntityId; export declare type ReactionId = EntityId; /** `ProfileId` is the alias for `AccountId`. */ export declare type ProfileId = EntityId; export declare type SummarizedContent = { summary: string; isShowMore: boolean; }; export declare type DerivedContent<C extends content.IpfsCommonContent> = C & SummarizedContent; export declare type CommonContent = content.IpfsCommonContent & SummarizedContent; export declare type SpaceContent = DerivedContent<content.IpfsSpaceContent>; export declare type PostContent = DerivedContent<content.IpfsPostContent>; export declare type CommentContent = DerivedContent<content.IpfsCommentContent>; export declare type SharedPostContent = DerivedContent<content.IpfsSharedPostContent>; export declare type EntityData<S extends HasId, C extends CommonContent> = { id: EntityId; struct: S; content?: C; }; export declare type SpaceData = EntityData<SpaceStruct, SpaceContent>; export declare type PostData = EntityData<PostStruct, PostContent>; export declare type CommentData = EntityData<CommentStruct, CommentContent>; export declare type SharedPostData = EntityData<SharedPostStruct, SharedPostContent>; export declare type AnySubsocialData = SpaceData | PostData | CommentData | SharedPostData; declare type PostExtensionData = Exclude<PostWithSomeDetails, 'ext'>; export declare type SpaceWithSomeDetails = SpaceData & { owner?: SpaceData; }; export declare type PostWithSomeDetails = { id: EntityId; post: PostData; ext?: PostExtensionData; owner?: SpaceData; space?: SpaceData; }; export declare type PostWithAllDetails = Omit<PostWithSomeDetails, 'owner' | 'space'> & { owner: SpaceData; space: SpaceData; }; export declare type ReactionType = 'Upvote' | 'Downvote'; export declare enum ReactionEnum { Upvote = "Upvote", Downvote = "Downvote" } export declare type SpacePermissionMap = { ManageRoles?: boolean; RepresentSpaceInternally?: boolean; RepresentSpaceExternally?: boolean; UpdateSpace?: boolean; CreateSubspaces?: boolean; UpdateOwnSubspaces?: boolean; DeleteOwnSubspaces?: boolean; HideOwnSubspaces?: boolean; UpdateAnySubspace?: boolean; DeleteAnySubspace?: boolean; HideAnySubspace?: boolean; CreatePosts?: boolean; UpdateOwnPosts?: boolean; DeleteOwnPosts?: boolean; HideOwnPosts?: boolean; UpdateAnyPost?: boolean; DeleteAnyPost?: boolean; HideAnyPost?: boolean; CreateComments?: boolean; UpdateOwnComments?: boolean; DeleteOwnComments?: boolean; HideOwnComments?: boolean; HideAnyComment?: boolean; Upvote?: boolean; Downvote?: boolean; Share?: boolean; OverrideSubspacePermissions?: boolean; OverridePostPermissions?: boolean; SuggestEntityStatus?: boolean; UpdateEntityStatus?: boolean; UpdateSpaceSettings?: boolean; }; export declare type SpacePermissionKey = keyof SpacePermissionMap; export declare type SpacePermissions = { nonePermissions?: SpacePermissionMap; everyonePermissions?: SpacePermissionMap; followerPermissions?: SpacePermissionMap; spaceOwnerPermissions?: SpacePermissionMap; }; export declare type SpacePermissionsKey = keyof SpacePermissions; export declare type DomainStruct = { owner: AccountId; outerValue?: string; expiresAt: string; innerSpace?: string; }; export {};