import { CommonBlockData } from "../aggregate/Common"; import { Filters } from "../aggregate/Filters"; import { Database } from "../process/Types"; export type BlockFn = (database: Database, filters: Filters, common: CommonBlockData, args: Args) => Data; /** Triggers that should make a block data stale (e.g. changes to these filters in the UI) */ export type Filter = "authors" | "channels" | "time"; /** A description of a block */ export type BlockDescription = { key: K; triggers: Filter[]; fn: BlockFn; }; /** All existing blocks must be defined here, so the UI can dynamically load them */ export declare const Blocks: { readonly "timeline/active-authors": BlockDescription<"timeline/active-authors", import("../aggregate/blocks/timeline/ActiveAuthors").ActiveAuthorsTimeline, undefined>; readonly "calls/activity": BlockDescription<"calls/activity", import("../aggregate/blocks/calls/CallsActivity").CallsActivity, undefined>; readonly "calls/per-period": BlockDescription<"calls/per-period", import("../aggregate/blocks/calls/CallsPerPeriod").CallsPerPeriod, undefined>; readonly "calls/stats": BlockDescription<"calls/stats", import("../aggregate/blocks/calls/CallsStats").CallsStats, undefined>; readonly "interaction/conversation-duration": BlockDescription<"interaction/conversation-duration", import("../aggregate/blocks/interaction/ConversationsDuration").ConversationDuration, undefined>; readonly "interaction/conversation-stats": BlockDescription<"interaction/conversation-stats", import("../aggregate/blocks/interaction/ConversationStats").ConversationStats, undefined>; readonly "domains/stats": BlockDescription<"domains/stats", import("../aggregate/blocks/domains/DomainsStats").DomainsStats, undefined>; readonly "emoji/stats": BlockDescription<"emoji/stats", import("../aggregate/blocks/emojis/EmojiStats").EmojiStats, undefined>; readonly "timeline/growth": BlockDescription<"timeline/growth", import("../aggregate/blocks/timeline/Growth").GrowthTimeline, undefined>; readonly "interaction/stats": BlockDescription<"interaction/stats", import("../aggregate/blocks/interaction/InteractionStats").InteractionStats, undefined>; readonly "language/stats": BlockDescription<"language/stats", import("../aggregate/blocks/language/LanguageStats").LanguageStats, undefined>; readonly "messages/edited": BlockDescription<"messages/edited", import("../aggregate/blocks/messages/MessagesEdited").MessagesEdited, undefined>; readonly "messages/per-period": BlockDescription<"messages/per-period", import("../aggregate/blocks/messages/MessagesPerPeriod").MessagesPerPeriod, undefined>; readonly "messages/stats": BlockDescription<"messages/stats", import("../aggregate/blocks/messages/MessagesStats").MessagesStats, undefined>; readonly "sentiment/per-period": BlockDescription<"sentiment/per-period", import("../aggregate/blocks/sentiment/SentimentPerPeriod").SentimentPerPeriod, undefined>; readonly "sentiment/stats": BlockDescription<"sentiment/stats", import("../aggregate/blocks/sentiment/SentimentStats").SentimentStats, undefined>; readonly "language/word-stats": BlockDescription<"language/word-stats", import("../aggregate/blocks/language/WordStats").WordStats, import("../aggregate/blocks/language/WordStats").WordStatsArgs>; }; /** Block identifier */ export type BlockKey = keyof typeof Blocks; /** The input arguments required for a block */ export type BlockArgs = Parameters<(typeof Blocks)[K]["fn"]>[3]; /** The result of a block */ export type BlockData = ReturnType<(typeof Blocks)[K]["fn"]>;