import { Character as CharacterInfo, CharacterImage, CharacterSettings, KinkChoice, SharedDefinitions, SimpleCharacter } from '../../interfaces'; export interface SharedStore { shared: SharedDefinitions authenticated: boolean } export interface StoreMethods { bookmarkUpdate(id: number, state: boolean): Promise characterBlock?(id: number, block: boolean, reason?: string): Promise characterCustomKinkAdd(id: number, name: string, description: string, choice: KinkChoice): Promise characterData(name: string | undefined, id: number | undefined, skipEvent: boolean | undefined): Promise characterDelete(id: number): Promise characterDuplicate(id: number, name: string): Promise characterFriends(id: number): Promise characterNameCheck(name: string): Promise characterRename?(id: number, name: string, renamedFor?: string): Promise characterReport(reportData: CharacterReportData): Promise contactMethodIconUrl(name: string): string sendNoteUrl(character: CharacterInfo): string fieldsGet(): Promise friendDissolve(friend: Friend): Promise friendRequest(target: number, source: number): Promise friendRequestAccept(request: FriendRequest): Promise friendRequestIgnore(request: FriendRequest): Promise friendRequestCancel(request: FriendRequest): Promise friendsGet(id: number): Promise groupsGet(id: number): Promise guestbookPageGet(character: number, offset?: number, limit?: number, unapproved_only?: boolean): Promise guestbookPostApprove(character: number, id: number, approval: boolean): Promise guestbookPostDelete(character: number, id: number): Promise guestbookPostPost(target: number, source: number, message: string, privatePost: boolean): Promise guestbookPostReply(character: number, id: number, reply: string | null): Promise hasPermission?(permission: string): boolean imagesGet(id: number): Promise imageUrl(image: CharacterImage): string imageThumbUrl(image: CharacterImage): string kinksGet(id: number): Promise memoUpdate(id: number, memo: string): Promise } export type SiteDate = number | string | null; export type KinkChoiceFull = KinkChoice | number; export const CONTACT_GROUP_ID = 1; export interface DisplayKink { id: number name: string description: string choice?: KinkChoice group: number isCustom: boolean hasSubkinks: boolean subkinks: DisplayKink[] ignore: boolean key: string } export interface CharacterKink { id: number choice: KinkChoice } export type ThreadOrderMode = 'post' | 'explicit'; export interface GroupPermissions { view: boolean edit: boolean threads: boolean permissions: boolean } export interface CharacterGroup { id: number title: string public: boolean description: string threadCount: number orderMode: ThreadOrderMode createdAt: SiteDate myPermissions: GroupPermissions character: SimpleCharacter owner: boolean } export interface CharacterMemo { id: number; memo: string; } export interface Character { readonly is_self: boolean character: CharacterInfo readonly settings: CharacterSettings readonly badges?: string[] memo?: CharacterMemo; readonly character_list?: { id: number name: string }[] bookmarked?: boolean readonly self_staff: boolean readonly ban?: string readonly ban_reason?: string readonly timeout?: number readonly block_reason?: string } export interface GuestbookPost { readonly id: number readonly character: SimpleCharacter approved: boolean readonly private: boolean postedAt: SiteDate message: string reply: string | null repliedAt: SiteDate canEdit: boolean deleted?: boolean } export interface Guestbook { readonly posts: GuestbookPost[] readonly total: number } export interface CharacterReportData { subject: string message: string character: number | null type: string url: string reported_character: number } export interface Friend { id: number source: SimpleCharacter target: SimpleCharacter createdAt: SiteDate } export type FriendRequest = Friend; export interface FriendsByCharacter { existing: Friend[] pending: FriendRequest[] incoming: FriendRequest[] name: string }