//#region src/channels/thread-bindings-messages.d.ts
/** Formats thread-binding timeout durations for compact user-facing messages. */
declare function formatThreadBindingDurationLabel(durationMs: number): string;
/** Builds the native thread name for a focused thread-bound session. */
declare function resolveThreadBindingThreadName(params: {
  agentId?: string;
  label?: string;
}): string;
/** Builds the system-prefixed intro text posted when a thread binding becomes active. */
declare function resolveThreadBindingIntroText(params: {
  agentId?: string;
  label?: string;
  idleTimeoutMs?: number;
  maxAgeMs?: number;
  sessionCwd?: string;
  sessionDetails?: string[];
}): string;
/** Builds the system-prefixed farewell text posted when a thread binding ends. */
declare function resolveThreadBindingFarewellText(params: {
  reason?: string;
  farewellText?: string;
  idleTimeoutMs: number;
  maxAgeMs: number;
}): string;
//#endregion
//#region src/shared/thread-binding-lifecycle.d.ts
/** Persisted timestamps and optional TTL overrides for one channel thread binding. */
type ThreadBindingLifecycleRecord = {
  /** Epoch milliseconds when the binding was created. */boundAt: number; /** Epoch milliseconds of the latest activity seen for the bound conversation. */
  lastActivityAt: number; /** Optional idle timeout override in milliseconds; zero disables idle expiry. */
  idleTimeoutMs?: number; /** Optional max-age override in milliseconds; zero disables max-age expiry. */
  maxAgeMs?: number;
};
/** Resolves the next expiration for a channel thread binding from idle and max-age limits. */
declare function resolveThreadBindingLifecycle(params: {
  /** Stored binding timestamps and optional timeout overrides. */record: ThreadBindingLifecycleRecord; /** Fallback idle timeout in milliseconds when the record has no override. */
  defaultIdleTimeoutMs: number; /** Fallback max-age timeout in milliseconds when the record has no override. */
  defaultMaxAgeMs: number;
}): {
  /** Earliest expiration timestamp, omitted when both limits are disabled. */expiresAt?: number; /** Expiration source corresponding to `expiresAt`. */
  reason?: "idle-expired" | "max-age-expired";
};
//#endregion
export { resolveThreadBindingIntroText as a, resolveThreadBindingFarewellText as i, resolveThreadBindingLifecycle as n, resolveThreadBindingThreadName as o, formatThreadBindingDurationLabel as r, ThreadBindingLifecycleRecord as t };