1import { writable } from 'svelte/store';
2import { AtpClient, type NotificationsStream } from './at/client';
3import { SvelteMap } from 'svelte/reactivity';
4import type { Did, ResourceUri } from '@atcute/lexicons';
5import type { Backlink } from './at/constellation';
6import type { PostWithUri } from './at/fetch';
7import type { AtprotoDid } from '@atcute/lexicons/syntax';
8// import type { JetstreamSubscription } from '@atcute/jetstream';
9
10export const notificationStream = writable<NotificationsStream | null>(null);
11// export const jetstream = writable<JetstreamSubscription | null>(null);
12
13export type PostActions = {
14 like: Backlink | null;
15 repost: Backlink | null;
16 // reply: Backlink | null;
17 // quote: Backlink | null;
18};
19export const postActions = new SvelteMap<`${Did}:${ResourceUri}`, PostActions>();
20
21export const pulsingPostId = writable<string | null>(null);
22
23export const viewClient = new AtpClient();
24export const clients = new SvelteMap<AtprotoDid, AtpClient>();
25
26export const posts = new SvelteMap<Did, SvelteMap<ResourceUri, PostWithUri>>();
27export const cursors = new SvelteMap<Did, { value?: string; end: boolean }>();