
---@class SessionOpts
---@field project_data_path string
---@field global_data_path string
---@field project_root string
---
---@class Continue.Config
---@field use_git_branch? boolean
---@field use_git_host? boolean
---@field auto_restore? boolean
---@field react_on_cwd_change? boolean
---@field auto_save? boolean
---@field auto_save_min_buffer? number
---@field auto_restore_on_branch_change? boolean
---@field log_level? integer
---@field picker? "telescope" | "snacks" | "select"
---@field mappings? Continue.Config.Mappings
---@field extensions? table<Continue.Extension>
---@field shada? Continue.Config.Shada
---@field hooks? Continue.Config.Hooks
---@field root_dir? string
---@field git_remote? string | fun(cwd: string): string
---
---@class Continue.Config.Mappings
---@field delete_session? table
---@field save_as_session? table

---@class Continue.Config.HookArgs
---@field cwd_path string
---@field project_path string
---
---@class Continue.Config.Hooks
---@field pre_save? fun(args: Continue.Config.HookArgs): nil
---@field post_save? fun(args: Continue.Config.HookArgs): nil
---@field pre_restore? fun(args: Continue.Config.HookArgs): nil
---@field post_restore? fun(args: Continue.Config.HookArgs): nil
---
---@class Continue.Config.Shada
---@field project? string
---@field global? string

---@class Continue.PickerData
---@field base string
---@field branch string
---@field name string
---@field path string
---
---@class Continue.PickerModule
---@field register function
---@field enabled boolean
---@field pick function
---@field name string
---
---@class Continue.SearchOpts
---@field all? boolean
---@field picker? "telescope" | "snacks" | "select"

---@class Continue.Extension
---@field id string
---@field load fun(data: table<string, any>, opts: SessionOpts): nil
---@field save fun(opts: SessionOpts): table<string, any>
---@field enabled? fun(opts: SessionOpts): boolean

---@class Continue.OnCwdChange
---@field before_change function
---@field after_change function
---@field condition function
