@subsocial/api
Version:
JavaScript API for Subsocial blockchain.
181 lines (180 loc) • 6.09 kB
TypeScript
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 {};