---@class inbox.Config ---@field default_maildir string|nil ---@field indexer_config inbox.Indexer.Config|nil ---@field buf_options table|nil ---@field win_options table|nil ---@field filters table ---@field columns integer[] ---@field flags table ---@field headers inbox.HeaderKey[] ---@class inbox.PartFilter ---@field command string ---@field args string[] ---@alias inbox.HeaderKey ---| "Subject" ---| "Date" ---| "To" ---| "From" ---| string ---@alias inbox.ContentType ---| "text/plain" ---| "text/html" ---| string ---@class inbox.Indexer ---@field setup? fun(opts: table) ---@field available? fun(): boolean ---@field index? fun(maildir: string, cb: fun(ids: string[], entries: inbox.Summary[], signs: (string | integer)[][]), opts?: table) ---@field get_entry? fun(id: string): inbox.Entry|nil ---@field get_parts? fun(id: string): inbox.ContentType[] ---@alias inbox.Indexer.Config ---| "notmuch" ---| string ---| table ---@class inbox.Summary ---@field tags string[] ---@field date string ---@field from string ---@field subject string ---@class inbox.Entry ---@field id string ---@field timestamp integer ---@field filename string[] ---@field tags string[] ---@field parts inbox.EntryPart[] ---@field headers table ---@class inbox.EntryPart ---@field id integer ---@field content-type inbox.ContentType ---@field content-charset? string ---@field content-length? integer ---@field content-disposition? string ---@field content-transfer-encoding? string ---@field content string