export declare function defaultDataDir(): string; export declare function resolveConfigPath(): string; export declare const config: { /** Discord bot token (required) */ readonly discordToken: string; /** Pi binary path */ readonly piBin: string; /** Default model for pi */ readonly piModel: string; /** Thinking level for pi */ readonly piThinking: string; /** Base directory for per-channel session folders */ readonly sessionsDir: string; /** Days to retain archived sessions (0 = never clean) */ readonly archiveRetentionDays: number; /** Hours to retain downloaded attachment media for path-based agent access */ readonly mediaRetentionHours: number; /** SQLite database path */ readonly dbPath: string; /** Bot trigger name (default: bot's own display name) */ readonly triggerName: string; /** Max concurrent agent invocations */ readonly maxConcurrency: number; /** Max scheduled tasks enqueued per scheduler tick */ readonly maxScheduledConcurrency: number; /** Poll interval for message queue (ms) */ readonly pollInterval: number; /** Graceful shutdown timeout before aborting in-flight tasks (ms) */ readonly shutdownTimeoutMs: number; /** Log level */ readonly logLevel: string; /** Working directory for pi agent */ readonly piCwd: string; /** Extra pi flags (space-separated) */ readonly piExtraFlags: string; /** Auto-register DM channels */ readonly autoRegisterDMs: boolean; /** Channel access policy: open, open-trigger, or allowlist */ readonly channelPolicy: "open" | "open-trigger" | "allowlist"; /** Comma-separated channel IDs to exclude from auto-registration */ readonly excludedChannels: Set; /** Max size for a single Discord attachment in bytes (0 disables the limit) */ readonly maxAttachmentBytes: number; /** Max combined attachment size per Discord message in bytes (0 disables the limit) */ readonly maxTotalAttachmentBytes: number; }; export type Config = typeof config;