import { at as ExecApprovalForwardTarget, r as OpenClawConfig } from "./types.openclaw-BdCLfP4c.js";
import { a as SystemAgentApprovalRequest, h as PluginApprovalRequest, ht as ExecApprovalRequest } from "./approval-types-ClyNB7BE.js";
import { i as ReplyPayload } from "./reply-payload-BoJK2P3o.js";
import "./config-runtime-BcJv7C4y.js";
import "./exec-approval-reply-BjgOe5l7.js";
//#region src/infra/approval-request-filters.d.ts
/** Minimal approval request identity used by agent/session filter checks. */
type ApprovalRequestFilterInput = {
  agentId?: string | null;
  sessionKey?: string | null;
};
/** Matches session filters as literal substrings first, then bounded safe regexes. */
declare function matchesApprovalRequestSessionFilter(sessionKey: string, patterns: string[]): boolean;
/**
 * Applies optional approval request filters for agent ids and session keys.
 * Agent id can be parsed from the session key only when the caller opts in.
 */
declare function matchesApprovalRequestFilters(params: {
  request: ApprovalRequestFilterInput;
  agentFilter?: string[];
  sessionFilter?: string[];
  fallbackAgentIdFromSessionKey?: boolean;
}): boolean;
//#endregion
//#region src/plugin-sdk/approval-client-helpers.d.ts
type ApprovalRequest = ExecApprovalRequest | PluginApprovalRequest | SystemAgentApprovalRequest;
type ApprovalTarget = "dm" | "channel" | "both";
type ChannelExecApprovalEnableMode = boolean | "auto";
type ChannelApprovalConfig = {
  /** Whether the channel approval client is enabled for this account. */
  enabled?: ChannelExecApprovalEnableMode;
  /** Preferred approval delivery target for this account. */
  target?: ApprovalTarget;
  /** Optional agent filters for forwarded approval requests. */
  agentFilter?: string[];
  /** Optional session filters for forwarded approval requests. */
  sessionFilter?: string[];
};
type ApprovalProfileParams = {
  /** Full config used to resolve account-scoped approval settings. */
  cfg: OpenClawConfig;
  /** Optional channel account id for account-scoped approval settings. */
  accountId?: string | null;
};
/** Return whether a channel account has an enabled approval client and at least one approver. */
declare function isChannelExecApprovalClientEnabledFromConfig(params: {
  /** Configured channel approval enable mode. */
  enabled?: ChannelExecApprovalEnableMode;
  /** Number of configured approvers after account resolution. */
  approverCount: number;
}): boolean;
/**
 * Return whether a sender is one of the configured global exec approval forward targets.
 * Channel plugins provide the target matcher because `to` shapes differ by provider.
 */
declare function isChannelExecApprovalTargetRecipient(params: {
  /** Full config containing global exec approval target routing. */
  cfg: OpenClawConfig;
  /** Sender id or handle to compare with configured forward targets. */
  senderId?: string | null;
  /** Optional channel account id for account-scoped target matching. */
  accountId?: string | null;
  /** Channel id receiving the approval action. */
  channel: string;
  /** Optional sender normalizer; defaults to trimmed string normalization. */
  normalizeSenderId?: (value: string) => string | undefined;
  /** Channel-specific matcher for normalized sender ids against target records. */
  matchTarget: (params: {
    target: ExecApprovalForwardTarget;
    normalizedSenderId: string;
    normalizedAccountId?: string;
  }) => boolean;
}): boolean;
/**
 * Build the common approval-client profile used by channel plugins.
 * The returned helpers centralize enablement, approver auth, request filters, and local prompt suppression.
 */
declare function createChannelExecApprovalProfile(params: {
  /** Resolves channel approval config for the current account. */
  resolveConfig: (params: ApprovalProfileParams) => ChannelApprovalConfig | undefined;
  /** Resolves normalized approver ids for the current account. */
  resolveApprovers: (params: ApprovalProfileParams) => string[];
  /** Optional sender normalizer; defaults to trimmed string normalization. */
  normalizeSenderId?: (value: string) => string | undefined;
  /** Optional global approval-target matcher for sender authorization. */
  isTargetRecipient?: (params: ApprovalProfileParams & {
    senderId?: string | null;
  }) => boolean;
  /** Optional account matcher for filtering forwarded approval requests. */
  matchesRequestAccount?: (params: ApprovalProfileParams & {
    request: ApprovalRequest;
  }) => boolean;
  fallbackAgentIdFromSessionKey?: boolean;
  /** Allows local prompt suppression even when the remote approval client is disabled. */
  requireClientEnabledForLocalPromptSuppression?: boolean;
}): {
  /** Whether this account has an enabled channel approval client and approvers. */
  isClientEnabled: (input: ApprovalProfileParams) => boolean;
  /** Whether a sender is in the resolved approver set. */
  isApprover: (input: ApprovalProfileParams & {
    senderId?: string | null;
  }) => boolean;
  /** Whether a sender is either an approver or a configured approval target. */
  isAuthorizedSender: (input: ApprovalProfileParams & {
    senderId?: string | null;
  }) => boolean;
  /** Preferred delivery target, defaulting to approver DMs. */
  resolveTarget: (input: ApprovalProfileParams) => ApprovalTarget;
  /** Whether this profile should handle a forwarded approval request. */
  shouldHandleRequest: (input: ApprovalProfileParams & {
    request: ApprovalRequest;
  }) => boolean;
  /** Whether a local approval prompt should be suppressed for an already-rendered payload. */
  shouldSuppressLocalPrompt: (input: ApprovalProfileParams & {
    payload: ReplyPayload;
  }) => boolean;
};
//#endregion
export { matchesApprovalRequestFilters as a, ApprovalRequestFilterInput as i, isChannelExecApprovalClientEnabledFromConfig as n, matchesApprovalRequestSessionFilter as o, isChannelExecApprovalTargetRecipient as r, createChannelExecApprovalProfile as t };