import * as Rx from "rxjs"; import { Dispatch } from "../gateway/dispatch"; import { GuildCreateEvent, Snowflake } from "../types"; export interface CrudObservables { id: (resource: T) => string; init?: (guild: GuildCreateEvent) => Rx.Observable; create$?: Rx.Observable; update$?: Rx.Observable; delete$?: Rx.Observable; effects$?: Rx.Observable; } export type CreateOp = { event: "create"; parentId?: Snowflake; resourceId: string; resource: T; }; export type UpdateOp = { event: "update"; parentId?: Snowflake; resourceId: string; resource: T; }; export type DeleteOp = { event: "delete"; parentId?: Snowflake; resourceId: string; }; export type ParentDeleteOp = { event: "parent_delete"; parentId: Snowflake; }; export type WatchOp = CreateOp | UpdateOp | DeleteOp | ParentDeleteOp; export declare const watch$: (fromDispatch: Dispatch, { id, init, create$, update$, delete$, effects$, }: CrudObservables) => Rx.Observable>;