// @generated by protoc-gen-es v2.2.0
// @generated from file proto/decide/v2/decide.proto (package proto.decide.v2, syntax proto3)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file proto/decide/v2/decide.proto.
 */
export declare const file_proto_decide_v2_decide: GenFile;

/**
 * RuleTokenBucket is a token bucket rate limiting rule.
 *
 * @generated from message proto.decide.v2.RuleTokenBucket
 */
export declare type RuleTokenBucket = Message<"proto.decide.v2.RuleTokenBucket"> & {
  /**
   * Config: the number of tokens refilled per interval.
   *
   * @generated from field: uint32 config_refill_rate = 1;
   */
  configRefillRate: number;

  /**
   * Config: the refill interval in seconds.
   *
   * @generated from field: uint32 config_interval_seconds = 2;
   */
  configIntervalSeconds: number;

  /**
   * Config: the maximum number of tokens in the bucket.
   *
   * @generated from field: uint32 config_max_tokens = 3;
   */
  configMaxTokens: number;

  /**
   * Config: the bucket identifier. Groups rate limit counters for
   * dashboard display and analytics. Required. Validated as a slug
   * (max 256 bytes, letters/digits/dash/dot, must start
   * and end with a letter or digit). Note: dots are allowed here
   * (unlike input_key_hash which uses stricter ID validation).
   *
   * @generated from field: string config_bucket = 4;
   */
  configBucket: string;

  /**
   * Input: a hash of the rate limit key(s) computed by the SDK.
   * The SDK accepts a single value or array of values, joins and
   * SHA-256 hashes them, then sends the hex digest here.
   * Required, max 128 bytes, ASCII [a-zA-Z0-9_-].
   *
   * @generated from field: string input_key_hash = 10;
   */
  inputKeyHash: string;

  /**
   * Input: the number of tokens requested.
   * A value of 0 is invalid and will produce an error result.
   * Omitting the field (proto3 default 0) is treated the same as 0.
   *
   * @generated from field: uint32 input_requested = 11;
   */
  inputRequested: number;
};

/**
 * Describes the message proto.decide.v2.RuleTokenBucket.
 * Use `create(RuleTokenBucketSchema)` to create a new message.
 */
export declare const RuleTokenBucketSchema: GenMessage<RuleTokenBucket>;

/**
 * RuleFixedWindow is a fixed window rate limiting rule.
 *
 * @generated from message proto.decide.v2.RuleFixedWindow
 */
export declare type RuleFixedWindow = Message<"proto.decide.v2.RuleFixedWindow"> & {
  /**
   * Config: the maximum number of requests allowed in the window.
   *
   * @generated from field: uint32 config_max_requests = 1;
   */
  configMaxRequests: number;

  /**
   * Config: the window duration in seconds.
   *
   * @generated from field: uint32 config_window_seconds = 2;
   */
  configWindowSeconds: number;

  /**
   * Config: the bucket identifier. Groups rate limit counters for
   * dashboard display and analytics. Required. Validated as a slug
   * (max 256 bytes, letters/digits/dash/dot, must start
   * and end with a letter or digit). Note: dots are allowed here
   * (unlike input_key_hash which uses stricter ID validation).
   *
   * @generated from field: string config_bucket = 3;
   */
  configBucket: string;

  /**
   * Input: a hash of the rate limit key(s) computed by the SDK.
   * The SDK accepts a single value or array of values, joins and
   * SHA-256 hashes them, then sends the hex digest here.
   * Required, max 128 bytes, ASCII [a-zA-Z0-9_-].
   *
   * @generated from field: string input_key_hash = 10;
   */
  inputKeyHash: string;

  /**
   * Input: the number of requests to count.
   * A value of 0 is invalid and will produce an error result.
   * Omitting the field (proto3 default 0) is treated the same as 0.
   *
   * @generated from field: uint32 input_requested = 11;
   */
  inputRequested: number;
};

/**
 * Describes the message proto.decide.v2.RuleFixedWindow.
 * Use `create(RuleFixedWindowSchema)` to create a new message.
 */
export declare const RuleFixedWindowSchema: GenMessage<RuleFixedWindow>;

/**
 * RuleSlidingWindow is a sliding window rate limiting rule.
 *
 * @generated from message proto.decide.v2.RuleSlidingWindow
 */
export declare type RuleSlidingWindow = Message<"proto.decide.v2.RuleSlidingWindow"> & {
  /**
   * Config: the maximum number of requests allowed in the interval.
   *
   * @generated from field: uint32 config_max_requests = 1;
   */
  configMaxRequests: number;

  /**
   * Config: the sliding window interval in seconds.
   *
   * @generated from field: uint32 config_interval_seconds = 2;
   */
  configIntervalSeconds: number;

  /**
   * Config: the bucket identifier. Groups rate limit counters for
   * dashboard display and analytics. Required. Validated as a slug
   * (max 256 bytes, letters/digits/dash/dot, must start
   * and end with a letter or digit). Note: dots are allowed here
   * (unlike input_key_hash which uses stricter ID validation).
   *
   * @generated from field: string config_bucket = 3;
   */
  configBucket: string;

  /**
   * Input: a hash of the rate limit key(s) computed by the SDK.
   * The SDK accepts a single value or array of values, joins and
   * SHA-256 hashes them, then sends the hex digest here.
   * Required, max 128 bytes, ASCII [a-zA-Z0-9_-].
   *
   * @generated from field: string input_key_hash = 10;
   */
  inputKeyHash: string;

  /**
   * Input: the number of requests to count.
   * A value of 0 is invalid and will produce an error result.
   * Omitting the field (proto3 default 0) is treated the same as 0.
   *
   * @generated from field: uint32 input_requested = 11;
   */
  inputRequested: number;
};

/**
 * Describes the message proto.decide.v2.RuleSlidingWindow.
 * Use `create(RuleSlidingWindowSchema)` to create a new message.
 */
export declare const RuleSlidingWindowSchema: GenMessage<RuleSlidingWindow>;

/**
 * RuleDetectPromptInjection is a prompt injection detection rule.
 *
 * @generated from message proto.decide.v2.RuleDetectPromptInjection
 */
export declare type RuleDetectPromptInjection = Message<"proto.decide.v2.RuleDetectPromptInjection"> & {
  /**
   * Input: the text to analyze for prompt injection.
   * Max 128 KiB (131072 bytes). Texts exceeding this limit produce an
   * error result (AJ1131).
   *
   * @generated from field: string input_text = 10;
   */
  inputText: string;
};

/**
 * Describes the message proto.decide.v2.RuleDetectPromptInjection.
 * Use `create(RuleDetectPromptInjectionSchema)` to create a new message.
 */
export declare const RuleDetectPromptInjectionSchema: GenMessage<RuleDetectPromptInjection>;

/**
 * RuleModerateContent is a content moderation rule.
 *
 * Mirrors RuleDetectPromptInjection: the text is sent to Arcjet's model
 * inference path and classified as harmful or not. The rule is experimental and
 * currently has no model wired up server-side, so it returns an error result
 * (ResultError) until a moderation model is attached.
 *
 * @generated from message proto.decide.v2.RuleModerateContent
 */
export declare type RuleModerateContent = Message<"proto.decide.v2.RuleModerateContent"> & {
  /**
   * Input: the text to analyze for harmful content.
   * Max 128 KiB (131072 bytes). Texts exceeding this limit produce an
   * error result (AJ1141).
   *
   * @generated from field: string input_text = 10;
   */
  inputText: string;
};

/**
 * Describes the message proto.decide.v2.RuleModerateContent.
 * Use `create(RuleModerateContentSchema)` to create a new message.
 */
export declare const RuleModerateContentSchema: GenMessage<RuleModerateContent>;

/**
 * EntityList wraps a list of entity type strings for use inside a oneof.
 *
 * @generated from message proto.decide.v2.EntityList
 */
export declare type EntityList = Message<"proto.decide.v2.EntityList"> & {
  /**
   * Entity type strings, e.g. "EMAIL", "PHONE_NUMBER", "IP_ADDRESS",
   * "CREDIT_CARD_NUMBER".
   *
   * @generated from field: repeated string entities = 1;
   */
  entities: string[];
};

/**
 * Describes the message proto.decide.v2.EntityList.
 * Use `create(EntityListSchema)` to create a new message.
 */
export declare const EntityListSchema: GenMessage<EntityList>;

/**
 * RuleLocalSensitiveInfo is a local sensitive information detection rule —
 * evaluated locally by the SDK.
 *
 * @generated from message proto.decide.v2.RuleLocalSensitiveInfo
 */
export declare type RuleLocalSensitiveInfo = Message<"proto.decide.v2.RuleLocalSensitiveInfo"> & {
  /**
   * Config: which entity types to filter. Exactly one must be set:
   * - entities_allow: only these types are denied (everything else allowed).
   * - entities_deny: only these types are allowed (everything else denied).
   *
   * @generated from oneof proto.decide.v2.RuleLocalSensitiveInfo.config_entity_filter
   */
  configEntityFilter: {
    /**
     * Entity types to allow (everything else is denied).
     *
     * @generated from field: proto.decide.v2.EntityList config_entities_allow = 1;
     */
    value: EntityList;
    case: "configEntitiesAllow";
  } | {
    /**
     * Entity types to deny (everything else is allowed).
     *
     * @generated from field: proto.decide.v2.EntityList config_entities_deny = 2;
     */
    value: EntityList;
    case: "configEntitiesDeny";
  } | { case: undefined; value?: undefined };

  /**
   * Input: a hash of the analyzed text, for correlation and caching.
   * The actual text never leaves the SDK — only a hash is sent.
   *
   * @generated from field: string input_text_hash = 10;
   */
  inputTextHash: string;

  /**
   * The locally-computed result. Exactly one variant must be set:
   * - result_computed: the SDK successfully evaluated the rule.
   * - result_error: the SDK failed to evaluate (e.g. wasm load failure).
   * - result_not_run: the SDK did not attempt evaluation.
   *
   * @generated from oneof proto.decide.v2.RuleLocalSensitiveInfo.local_result
   */
  localResult: {
    /**
     * The SDK successfully evaluated the rule locally.
     *
     * @generated from field: proto.decide.v2.ResultLocalSensitiveInfo result_computed = 20;
     */
    value: ResultLocalSensitiveInfo;
    case: "resultComputed";
  } | {
    /**
     * The SDK failed to evaluate (e.g. wasm module failed to load).
     *
     * @generated from field: proto.decide.v2.ResultError result_error = 22;
     */
    value: ResultError;
    case: "resultError";
  } | {
    /**
     * The SDK did not attempt local evaluation.
     *
     * @generated from field: proto.decide.v2.ResultNotRun result_not_run = 23;
     */
    value: ResultNotRun;
    case: "resultNotRun";
  } | { case: undefined; value?: undefined };

  /**
   * Time spent computing the result, in milliseconds.
   * Optional so the server can distinguish "not measured" from 0 ms.
   *
   * @generated from field: optional uint64 result_duration_ms = 21;
   */
  resultDurationMs?: bigint;
};

/**
 * Describes the message proto.decide.v2.RuleLocalSensitiveInfo.
 * Use `create(RuleLocalSensitiveInfoSchema)` to create a new message.
 */
export declare const RuleLocalSensitiveInfoSchema: GenMessage<RuleLocalSensitiveInfo>;

/**
 * RuleLocalCustom is a custom local rule — an arbitrary user-defined rule
 * evaluated locally by the SDK.
 *
 * @generated from message proto.decide.v2.RuleLocalCustom
 */
export declare type RuleLocalCustom = Message<"proto.decide.v2.RuleLocalCustom"> & {
  /**
   * Config: arbitrary key-value data defining the rule's configuration.
   *
   * @generated from field: map<string, string> config_data = 1;
   */
  configData: { [key: string]: string };

  /**
   * Input: arbitrary key-value data passed to the custom rule function.
   *
   * @generated from field: map<string, string> input_data = 10;
   */
  inputData: { [key: string]: string };

  /**
   * The locally-computed result. Exactly one variant must be set:
   * - result_computed: the SDK successfully evaluated the rule.
   * - result_error: the SDK failed to evaluate (e.g. custom rule threw).
   * - result_not_run: the SDK did not attempt evaluation.
   *
   * @generated from oneof proto.decide.v2.RuleLocalCustom.local_result
   */
  localResult: {
    /**
     * The SDK successfully evaluated the rule locally.
     *
     * @generated from field: proto.decide.v2.ResultLocalCustom result_computed = 20;
     */
    value: ResultLocalCustom;
    case: "resultComputed";
  } | {
    /**
     * The SDK failed to evaluate (e.g. custom rule function threw).
     *
     * @generated from field: proto.decide.v2.ResultError result_error = 22;
     */
    value: ResultError;
    case: "resultError";
  } | {
    /**
     * The SDK did not attempt local evaluation.
     *
     * @generated from field: proto.decide.v2.ResultNotRun result_not_run = 23;
     */
    value: ResultNotRun;
    case: "resultNotRun";
  } | { case: undefined; value?: undefined };

  /**
   * Time spent computing the result, in milliseconds.
   * Optional so the server can distinguish "not measured" from 0 ms.
   *
   * @generated from field: optional uint64 result_duration_ms = 21;
   */
  resultDurationMs?: bigint;
};

/**
 * Describes the message proto.decide.v2.RuleLocalCustom.
 * Use `create(RuleLocalCustomSchema)` to create a new message.
 */
export declare const RuleLocalCustomSchema: GenMessage<RuleLocalCustom>;

/**
 * GuardRule wraps one of the supported rule types.
 *
 * @generated from message proto.decide.v2.GuardRule
 */
export declare type GuardRule = Message<"proto.decide.v2.GuardRule"> & {
  /**
   * The rule variant. Exactly one must be set.
   * Server-evaluated rules use fields 1–9, locally-evaluated rules use 10–19.
   *
   * Server-evaluated rules (1–9)
   *
   * @generated from oneof proto.decide.v2.GuardRule.rule
   */
  rule: {
    /**
     * Token bucket rate limiting rule.
     *
     * @generated from field: proto.decide.v2.RuleTokenBucket token_bucket = 1;
     */
    value: RuleTokenBucket;
    case: "tokenBucket";
  } | {
    /**
     * Fixed window rate limiting rule.
     *
     * @generated from field: proto.decide.v2.RuleFixedWindow fixed_window = 2;
     */
    value: RuleFixedWindow;
    case: "fixedWindow";
  } | {
    /**
     * Sliding window rate limiting rule.
     *
     * @generated from field: proto.decide.v2.RuleSlidingWindow sliding_window = 3;
     */
    value: RuleSlidingWindow;
    case: "slidingWindow";
  } | {
    /**
     * Prompt injection detection rule.
     *
     * @generated from field: proto.decide.v2.RuleDetectPromptInjection detect_prompt_injection = 4;
     */
    value: RuleDetectPromptInjection;
    case: "detectPromptInjection";
  } | {
    /**
     * Content moderation rule.
     *
     * @generated from field: proto.decide.v2.RuleModerateContent moderate_content = 5;
     */
    value: RuleModerateContent;
    case: "moderateContent";
  } | {
    /**
     * Sensitive information detection rule (evaluated locally by the SDK).
     *
     * @generated from field: proto.decide.v2.RuleLocalSensitiveInfo local_sensitive_info = 10;
     */
    value: RuleLocalSensitiveInfo;
    case: "localSensitiveInfo";
  } | {
    /**
     * Custom local rule (evaluated locally by the SDK).
     *
     * @generated from field: proto.decide.v2.RuleLocalCustom local_custom = 11;
     */
    value: RuleLocalCustom;
    case: "localCustom";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.decide.v2.GuardRule.
 * Use `create(GuardRuleSchema)` to create a new message.
 */
export declare const GuardRuleSchema: GenMessage<GuardRule>;

/**
 * GuardRuleSubmission wraps a configured rule with bound input and identity
 * metadata.
 *
 * Identity fields (1–9)
 *
 * @generated from message proto.decide.v2.GuardRuleSubmission
 */
export declare type GuardRuleSubmission = Message<"proto.decide.v2.GuardRuleSubmission"> & {
  /**
   * Opaque identifier for the RuleWithConfig instance in the SDK.
   * Shared across submissions from the same configured rule.
   * Echoed back in the corresponding GuardRuleResult for SDK-side
   * result correlation.
   *
   * @generated from field: string config_id = 1;
   */
  configId: string;

  /**
   * Opaque identifier for the RuleWithInput instance in the SDK.
   * Unique per submission — identifies the specific input binding.
   * Echoed back in the corresponding GuardRuleResult.
   *
   * @generated from field: string input_id = 2;
   */
  inputId: string;

  /**
   * An optional human-readable label for this rule submission.
   *
   * @generated from field: optional string label = 10;
   */
  label?: string;

  /**
   * Legacy (migration): superseded by `metadata_json` (field 12), which carries
   * typed, nested values. New SDKs send `metadata_json`; the server prefers it
   * and falls back to this plain-string map. Retained for older SDKs.
   *
   * @generated from field: map<string, string> metadata = 11 [deprecated = true];
   * @deprecated
   */
  metadata: { [key: string]: string };

  /**
   * Nested-JSON metadata: key -> JSON-encoded value (typed counterpart to the
   * legacy `metadata` map).
   *
   * @generated from field: map<string, string> metadata_json = 12;
   */
  metadataJson: { [key: string]: string };

  /**
   * The rule to evaluate.
   *
   * @generated from field: proto.decide.v2.GuardRule rule = 20;
   */
  rule?: GuardRule;

  /**
   * The evaluation mode for this rule. Defaults to LIVE if not specified.
   * In DRY_RUN mode, the rule is evaluated and a conclusion is reported in
   * the result, but a DENY conclusion does not contribute to the aggregate
   * decision conclusion.
   *
   * @generated from field: proto.decide.v2.GuardRuleMode mode = 21;
   */
  mode: GuardRuleMode;
};

/**
 * Describes the message proto.decide.v2.GuardRuleSubmission.
 * Use `create(GuardRuleSubmissionSchema)` to create a new message.
 */
export declare const GuardRuleSubmissionSchema: GenMessage<GuardRuleSubmission>;

/**
 * ResultTokenBucket contains result details for a token bucket rate limit
 * evaluation.
 *
 * @generated from message proto.decide.v2.ResultTokenBucket
 */
export declare type ResultTokenBucket = Message<"proto.decide.v2.ResultTokenBucket"> & {
  /**
   * The conclusion for this rule (ALLOW or DENY).
   *
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * The number of tokens remaining after this request.
   *
   * @generated from field: uint32 remaining_tokens = 2;
   */
  remainingTokens: number;

  /**
   * The maximum number of tokens in the bucket.
   *
   * @generated from field: uint32 max_tokens = 3;
   */
  maxTokens: number;

  /**
   * Unix timestamp (seconds) at which the bucket will be fully refilled.
   *
   * @generated from field: uint32 reset_at_unix_seconds = 4;
   */
  resetAtUnixSeconds: number;

  /**
   * The refill rate (tokens per interval).
   *
   * @generated from field: uint32 refill_rate = 5;
   */
  refillRate: number;

  /**
   * The refill interval in seconds.
   *
   * @generated from field: uint32 refill_interval_seconds = 6;
   */
  refillIntervalSeconds: number;
};

/**
 * Describes the message proto.decide.v2.ResultTokenBucket.
 * Use `create(ResultTokenBucketSchema)` to create a new message.
 */
export declare const ResultTokenBucketSchema: GenMessage<ResultTokenBucket>;

/**
 * ResultFixedWindow contains result details for a fixed window rate limit
 * evaluation.
 *
 * @generated from message proto.decide.v2.ResultFixedWindow
 */
export declare type ResultFixedWindow = Message<"proto.decide.v2.ResultFixedWindow"> & {
  /**
   * The conclusion for this rule (ALLOW or DENY).
   *
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * The number of requests remaining in the current window.
   *
   * @generated from field: uint32 remaining_requests = 2;
   */
  remainingRequests: number;

  /**
   * The maximum number of requests allowed in the window.
   *
   * @generated from field: uint32 max_requests = 3;
   */
  maxRequests: number;

  /**
   * Unix timestamp (seconds) at which the current window expires.
   *
   * @generated from field: uint32 reset_at_unix_seconds = 4;
   */
  resetAtUnixSeconds: number;

  /**
   * The window duration in seconds.
   *
   * @generated from field: uint32 window_seconds = 5;
   */
  windowSeconds: number;
};

/**
 * Describes the message proto.decide.v2.ResultFixedWindow.
 * Use `create(ResultFixedWindowSchema)` to create a new message.
 */
export declare const ResultFixedWindowSchema: GenMessage<ResultFixedWindow>;

/**
 * ResultSlidingWindow contains result details for a sliding window rate limit
 * evaluation.
 *
 * @generated from message proto.decide.v2.ResultSlidingWindow
 */
export declare type ResultSlidingWindow = Message<"proto.decide.v2.ResultSlidingWindow"> & {
  /**
   * The conclusion for this rule (ALLOW or DENY).
   *
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * The number of requests remaining in the current interval.
   *
   * @generated from field: uint32 remaining_requests = 2;
   */
  remainingRequests: number;

  /**
   * The maximum number of requests allowed in the interval.
   *
   * @generated from field: uint32 max_requests = 3;
   */
  maxRequests: number;

  /**
   * Unix timestamp (seconds) at which the oldest request in the window expires.
   *
   * @generated from field: uint32 reset_at_unix_seconds = 4;
   */
  resetAtUnixSeconds: number;

  /**
   * The sliding window interval in seconds.
   *
   * @generated from field: uint32 interval_seconds = 5;
   */
  intervalSeconds: number;
};

/**
 * Describes the message proto.decide.v2.ResultSlidingWindow.
 * Use `create(ResultSlidingWindowSchema)` to create a new message.
 */
export declare const ResultSlidingWindowSchema: GenMessage<ResultSlidingWindow>;

/**
 * Billing describes the metered usage charged for a single rule evaluation.
 *
 * @generated from message proto.decide.v2.Billing
 */
export declare type Billing = Message<"proto.decide.v2.Billing"> & {
  /**
   * The billing unit the count is expressed in, e.g. "tokens" or
   * "text_units".
   *
   * @generated from field: string unit = 1;
   */
  unit: string;

  /**
   * The number of units charged for this rule evaluation.
   *
   * @generated from field: uint64 count = 2;
   */
  count: bigint;
};

/**
 * Describes the message proto.decide.v2.Billing.
 * Use `create(BillingSchema)` to create a new message.
 */
export declare const BillingSchema: GenMessage<Billing>;

/**
 * ResultPromptInjection contains result details for a prompt injection
 * detection evaluation.
 *
 * @generated from message proto.decide.v2.ResultPromptInjection
 */
export declare type ResultPromptInjection = Message<"proto.decide.v2.ResultPromptInjection"> & {
  /**
   * The conclusion for this rule (ALLOW or DENY).
   *
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * Whether a prompt injection attempt was detected.
   *
   * @generated from field: bool detected = 2;
   */
  detected: boolean;

  /**
   * The billing charged for this evaluation (unit "tokens").
   *
   * @generated from field: proto.decide.v2.Billing billing = 3;
   */
  billing?: Billing;
};

/**
 * Describes the message proto.decide.v2.ResultPromptInjection.
 * Use `create(ResultPromptInjectionSchema)` to create a new message.
 */
export declare const ResultPromptInjectionSchema: GenMessage<ResultPromptInjection>;

/**
 * ResultModerateContent contains result details for a content moderation
 * evaluation.
 *
 * @generated from message proto.decide.v2.ResultModerateContent
 */
export declare type ResultModerateContent = Message<"proto.decide.v2.ResultModerateContent"> & {
  /**
   * The conclusion for this rule (ALLOW or DENY).
   *
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * Whether harmful content was detected.
   *
   * @generated from field: bool detected = 2;
   */
  detected: boolean;

  /**
   * The billing charged for this evaluation (unit "text_units").
   *
   * @generated from field: proto.decide.v2.Billing billing = 3;
   */
  billing?: Billing;
};

/**
 * Describes the message proto.decide.v2.ResultModerateContent.
 * Use `create(ResultModerateContentSchema)` to create a new message.
 */
export declare const ResultModerateContentSchema: GenMessage<ResultModerateContent>;

/**
 * ResultStringConstraint is the result of a typed remote-policy string
 * constraint. The rule type identifies allowed values, denied values, or length.
 *
 * @generated from message proto.decide.v2.ResultStringConstraint
 */
export declare type ResultStringConstraint = Message<"proto.decide.v2.ResultStringConstraint"> & {
  /**
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * Set for allowed and denied string-value rules. Unspecified is retained
   * for string-length results and for exact-match responses from old servers.
   *
   * @generated from field: proto.decide.v2.GuardStringMatchOperator match_operator = 2;
   */
  matchOperator: GuardStringMatchOperator;
};

/**
 * Describes the message proto.decide.v2.ResultStringConstraint.
 * Use `create(ResultStringConstraintSchema)` to create a new message.
 */
export declare const ResultStringConstraintSchema: GenMessage<ResultStringConstraint>;

/**
 * ResultStringListMembership reports exact membership in a server string list.
 *
 * @generated from message proto.decide.v2.ResultStringListMembership
 */
export declare type ResultStringListMembership = Message<"proto.decide.v2.ResultStringListMembership"> & {
  /**
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * @generated from field: bool matched = 2;
   */
  matched: boolean;
};

/**
 * Describes the message proto.decide.v2.ResultStringListMembership.
 * Use `create(ResultStringListMembershipSchema)` to create a new message.
 */
export declare const ResultStringListMembershipSchema: GenMessage<ResultStringListMembership>;

/**
 * ResultLocalSensitiveInfo contains result details for a sensitive information
 * detection evaluation.
 *
 * @generated from message proto.decide.v2.ResultLocalSensitiveInfo
 */
export declare type ResultLocalSensitiveInfo = Message<"proto.decide.v2.ResultLocalSensitiveInfo"> & {
  /**
   * The conclusion for this rule (ALLOW or DENY).
   *
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * Whether sensitive information was detected.
   *
   * @generated from field: bool detected = 2;
   */
  detected: boolean;

  /**
   * The entity types that triggered detection (e.g. "EMAIL", "CREDIT_CARD_NUMBER").
   *
   * @generated from field: repeated string detected_entity_types = 3;
   */
  detectedEntityTypes: string[];

  /**
   * Safe locations of detected entities. Contains only type and offsets;
   * matched input values must never cross the SDK boundary.
   *
   * @generated from field: repeated proto.decide.v2.GuardSensitiveInfoEntity detected_entities = 4;
   */
  detectedEntities: GuardSensitiveInfoEntity[];
};

/**
 * Describes the message proto.decide.v2.ResultLocalSensitiveInfo.
 * Use `create(ResultLocalSensitiveInfoSchema)` to create a new message.
 */
export declare const ResultLocalSensitiveInfoSchema: GenMessage<ResultLocalSensitiveInfo>;

/**
 * @generated from message proto.decide.v2.GuardSensitiveInfoEntity
 */
export declare type GuardSensitiveInfoEntity = Message<"proto.decide.v2.GuardSensitiveInfoEntity"> & {
  /**
   * @generated from field: string type = 1;
   */
  type: string;

  /**
   * @generated from field: uint32 start = 2;
   */
  start: number;

  /**
   * @generated from field: uint32 end = 3;
   */
  end: number;
};

/**
 * Describes the message proto.decide.v2.GuardSensitiveInfoEntity.
 * Use `create(GuardSensitiveInfoEntitySchema)` to create a new message.
 */
export declare const GuardSensitiveInfoEntitySchema: GenMessage<GuardSensitiveInfoEntity>;

/**
 * ResultLocalCustom contains result details for a custom local rule evaluation.
 *
 * @generated from message proto.decide.v2.ResultLocalCustom
 */
export declare type ResultLocalCustom = Message<"proto.decide.v2.ResultLocalCustom"> & {
  /**
   * The conclusion for this rule (ALLOW or DENY).
   *
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 1;
   */
  conclusion: GuardConclusion;

  /**
   * Arbitrary key-value data returned by the custom rule function.
   *
   * @generated from field: map<string, string> data = 2;
   */
  data: { [key: string]: string };
};

/**
 * Describes the message proto.decide.v2.ResultLocalCustom.
 * Use `create(ResultLocalCustomSchema)` to create a new message.
 */
export declare const ResultLocalCustomSchema: GenMessage<ResultLocalCustom>;

/**
 * ResultNotRun is the result for a rule that was not evaluated (e.g. skipped
 * by the server).
 * SDKs should treat ResultNotRun as ALLOW (fail open). Error handling and
 * conclusion synthesis from ResultNotRun/ResultError is an SDK responsibility.
 *
 * @generated from message proto.decide.v2.ResultNotRun
 */
export declare type ResultNotRun = Message<"proto.decide.v2.ResultNotRun"> & {
};

/**
 * Describes the message proto.decide.v2.ResultNotRun.
 * Use `create(ResultNotRunSchema)` to create a new message.
 */
export declare const ResultNotRunSchema: GenMessage<ResultNotRun>;

/**
 * ResultError is the result for a rule that encountered an error during
 * evaluation.
 * SDKs should treat ResultError as ALLOW (fail open). Error handling and
 * conclusion synthesis from ResultNotRun/ResultError is an SDK responsibility.
 *
 * @generated from message proto.decide.v2.ResultError
 */
export declare type ResultError = Message<"proto.decide.v2.ResultError"> & {
  /**
   * Human-readable error message.
   *
   * @generated from field: string message = 1;
   */
  message: string;

  /**
   * Machine-readable error code for programmatic handling.
   * Codes follow the format "AJ" + 4 digits (e.g. "AJ1100").
   * The canonical registry is maintained server-side. Codes are stable
   * across releases — SDKs may match on them for programmatic handling.
   *
   * @generated from field: string code = 2;
   */
  code: string;
};

/**
 * Describes the message proto.decide.v2.ResultError.
 * Use `create(ResultErrorSchema)` to create a new message.
 */
export declare const ResultErrorSchema: GenMessage<ResultError>;

/**
 * Warning is a non-fatal validation warning. Same shape as ResultError; used
 * for client-reported local_warnings (e.g. metadata keys the SDK dropped before
 * sending).
 *
 * @generated from message proto.decide.v2.Warning
 */
export declare type Warning = Message<"proto.decide.v2.Warning"> & {
  /**
   * Machine-readable code ("AJ" + 4 digits), same registry as ResultError.code.
   *
   * @generated from field: string code = 1;
   */
  code: string;

  /**
   * Human-readable message.
   *
   * @generated from field: string message = 2;
   */
  message: string;
};

/**
 * Describes the message proto.decide.v2.Warning.
 * Use `create(WarningSchema)` to create a new message.
 */
export declare const WarningSchema: GenMessage<Warning>;

/**
 * GuardRuleResult contains the result of evaluating a single guard rule.
 *
 * Identity fields (1–9)
 *
 * @generated from message proto.decide.v2.GuardRuleResult
 */
export declare type GuardRuleResult = Message<"proto.decide.v2.GuardRuleResult"> & {
  /**
   * Server-generated unique identifier for this result (TypeID, prefix "gres").
   *
   * @generated from field: string result_id = 1;
   */
  resultId: string;

  /**
   * The config_id from the corresponding GuardRuleSubmission.
   *
   * @generated from field: string config_id = 2;
   */
  configId: string;

  /**
   * The input_id from the corresponding GuardRuleSubmission.
   *
   * @generated from field: string input_id = 3;
   */
  inputId: string;

  /**
   * The specific rule type that produced this result. Relevant because
   * ResultError and ResultNotRun can be produced by any rule type.
   *
   * @generated from field: proto.decide.v2.GuardRuleType type = 4;
   */
  type: GuardRuleType;

  /**
   * Configuration provenance. Old responses leave this unspecified; SDKs
   * derive SDK for positional results.
   *
   * @generated from field: proto.decide.v2.GuardRuleSource source = 5;
   */
  source: GuardRuleSource;

  /**
   * Evaluation location. Old responses leave this unspecified; SDKs derive it
   * from the rule type.
   *
   * @generated from field: proto.decide.v2.GuardRuleExecution execution = 6;
   */
  execution: GuardRuleExecution;

  /**
   * Evaluation mode. Old responses leave this unspecified; SDKs derive it
   * from the submitted rule.
   *
   * @generated from field: proto.decide.v2.GuardRuleMode mode = 7;
   */
  mode: GuardRuleMode;

  /**
   * The typed result. The active variant determines the conclusion and
   * reason — evaluated results carry their own conclusion (ALLOW/DENY),
   * while error results default to ALLOW (fail open) and not_run
   * results are ALLOW.
   *
   * Server-evaluated rule results use fields 10–19, locally-evaluated
   * rule results use 20–29, cross-cutting results use 30–39.
   *
   * Server-evaluated rule results (10–19)
   *
   * @generated from oneof proto.decide.v2.GuardRuleResult.result
   */
  result: {
    /**
     * Token bucket rate limit result.
     *
     * @generated from field: proto.decide.v2.ResultTokenBucket token_bucket = 10;
     */
    value: ResultTokenBucket;
    case: "tokenBucket";
  } | {
    /**
     * Fixed window rate limit result.
     *
     * @generated from field: proto.decide.v2.ResultFixedWindow fixed_window = 11;
     */
    value: ResultFixedWindow;
    case: "fixedWindow";
  } | {
    /**
     * Sliding window rate limit result.
     *
     * @generated from field: proto.decide.v2.ResultSlidingWindow sliding_window = 12;
     */
    value: ResultSlidingWindow;
    case: "slidingWindow";
  } | {
    /**
     * Prompt injection detection result.
     *
     * @generated from field: proto.decide.v2.ResultPromptInjection prompt_injection = 13;
     */
    value: ResultPromptInjection;
    case: "promptInjection";
  } | {
    /**
     * Content moderation result.
     *
     * @generated from field: proto.decide.v2.ResultModerateContent moderate_content = 14;
     */
    value: ResultModerateContent;
    case: "moderateContent";
  } | {
    /**
     * Sensitive information detection result.
     *
     * @generated from field: proto.decide.v2.ResultLocalSensitiveInfo local_sensitive_info = 20;
     */
    value: ResultLocalSensitiveInfo;
    case: "localSensitiveInfo";
  } | {
    /**
     * Custom local rule result.
     *
     * @generated from field: proto.decide.v2.ResultLocalCustom local_custom = 21;
     */
    value: ResultLocalCustom;
    case: "localCustom";
  } | {
    /**
     * Error result — the rule failed to evaluate.
     *
     * @generated from field: proto.decide.v2.ResultError error = 30;
     */
    value: ResultError;
    case: "error";
  } | {
    /**
     * Not-run result — the rule was not evaluated.
     *
     * @generated from field: proto.decide.v2.ResultNotRun not_run = 31;
     */
    value: ResultNotRun;
    case: "notRun";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.decide.v2.GuardRuleResult.
 * Use `create(GuardRuleResultSchema)` to create a new message.
 */
export declare const GuardRuleResultSchema: GenMessage<GuardRuleResult>;

/**
 * GuardPolicyEvaluation describes remote-policy selection for one Guard call.
 *
 * @generated from message proto.decide.v2.GuardPolicyEvaluation
 */
export declare type GuardPolicyEvaluation = Message<"proto.decide.v2.GuardPolicyEvaluation"> & {
  /**
   * @generated from field: string revision = 1;
   */
  revision: string;

  /**
   * @generated from field: proto.decide.v2.GuardPolicyStatus status = 2;
   */
  status: GuardPolicyStatus;

  /**
   * The SDK should refresh its local projection before retrying once.
   *
   * @generated from field: bool refresh_required = 3;
   */
  refreshRequired: boolean;
};

/**
 * Describes the message proto.decide.v2.GuardPolicyEvaluation.
 * Use `create(GuardPolicyEvaluationSchema)` to create a new message.
 */
export declare const GuardPolicyEvaluationSchema: GenMessage<GuardPolicyEvaluation>;

/**
 * GuardPolicyRuleResult is a remotely configured rule result. It carries its
 * own policy identity and never correlates to SDK submissions by position.
 *
 * @generated from message proto.decide.v2.GuardPolicyRuleResult
 */
export declare type GuardPolicyRuleResult = Message<"proto.decide.v2.GuardPolicyRuleResult"> & {
  /**
   * @generated from field: string result_id = 1;
   */
  resultId: string;

  /**
   * @generated from field: string policy_id = 2;
   */
  policyId: string;

  /**
   * @generated from field: string policy_revision = 3;
   */
  policyRevision: string;

  /**
   * @generated from field: string rule_id = 4;
   */
  ruleId: string;

  /**
   * @generated from field: proto.decide.v2.GuardRuleType type = 5;
   */
  type: GuardRuleType;

  /**
   * @generated from field: proto.decide.v2.GuardRuleMode mode = 6;
   */
  mode: GuardRuleMode;

  /**
   * @generated from field: proto.decide.v2.GuardRuleExecution execution = 7;
   */
  execution: GuardRuleExecution;

  /**
   * Always REMOTE for this message; explicit on the wire for unambiguous
   * evidence and forward-compatible consumers.
   *
   * @generated from field: proto.decide.v2.GuardRuleSource source = 8;
   */
  source: GuardRuleSource;

  /**
   * @generated from oneof proto.decide.v2.GuardPolicyRuleResult.result
   */
  result: {
    /**
     * @generated from field: proto.decide.v2.ResultPromptInjection prompt_injection = 13;
     */
    value: ResultPromptInjection;
    case: "promptInjection";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultStringConstraint allowed_string_values = 15;
     */
    value: ResultStringConstraint;
    case: "allowedStringValues";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultStringConstraint denied_string_values = 16;
     */
    value: ResultStringConstraint;
    case: "deniedStringValues";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultStringConstraint string_length = 17;
     */
    value: ResultStringConstraint;
    case: "stringLength";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultStringListMembership string_list_membership = 18;
     */
    value: ResultStringListMembership;
    case: "stringListMembership";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultLocalSensitiveInfo local_sensitive_info = 20;
     */
    value: ResultLocalSensitiveInfo;
    case: "localSensitiveInfo";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultError error = 30;
     */
    value: ResultError;
    case: "error";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultNotRun not_run = 31;
     */
    value: ResultNotRun;
    case: "notRun";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.decide.v2.GuardPolicyRuleResult.
 * Use `create(GuardPolicyRuleResultSchema)` to create a new message.
 */
export declare const GuardPolicyRuleResultSchema: GenMessage<GuardPolicyRuleResult>;

/**
 * GuardDecision is the aggregate decision from evaluating all guard rules.
 *
 * Identity and conclusion (1–9)
 *
 * @generated from message proto.decide.v2.GuardDecision
 */
export declare type GuardDecision = Message<"proto.decide.v2.GuardDecision"> & {
  /**
   * Server-generated unique identifier for this decision (TypeID, prefix "gdec").
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The aggregate conclusion across all rules.
   *
   * @generated from field: proto.decide.v2.GuardConclusion conclusion = 2;
   */
  conclusion: GuardConclusion;

  /**
   * The broad reason for the conclusion (set when conclusion is DENY).
   *
   * @generated from field: proto.decide.v2.GuardReason reason = 3;
   */
  reason: GuardReason;

  /**
   * One result per submission, in submission order.
   *
   * @generated from field: repeated proto.decide.v2.GuardRuleResult rule_results = 10;
   */
  ruleResults: GuardRuleResult[];

  /**
   * Remote-policy status. Absent means an old server, not no policy.
   *
   * @generated from field: proto.decide.v2.GuardPolicyEvaluation policy_evaluation = 11;
   */
  policyEvaluation?: GuardPolicyEvaluation;

  /**
   * Remote-policy results, identified by policy and rule IDs rather than SDK
   * submission position.
   *
   * @generated from field: repeated proto.decide.v2.GuardPolicyRuleResult policy_rule_results = 12;
   */
  policyRuleResults: GuardPolicyRuleResult[];
};

/**
 * Describes the message proto.decide.v2.GuardDecision.
 * Use `create(GuardDecisionSchema)` to create a new message.
 */
export declare const GuardDecisionSchema: GenMessage<GuardDecision>;

/**
 * GuardStringList wraps repeated strings for use inside a oneof.
 *
 * @generated from message proto.decide.v2.GuardStringList
 */
export declare type GuardStringList = Message<"proto.decide.v2.GuardStringList"> & {
  /**
   * @generated from field: repeated string values = 1;
   */
  values: string[];
};

/**
 * Describes the message proto.decide.v2.GuardStringList.
 * Use `create(GuardStringListSchema)` to create a new message.
 */
export declare const GuardStringListSchema: GenMessage<GuardStringList>;

/**
 * GuardPolicyServerInput carries a raw value sent to Arcjet for evaluation and
 * evidence retention.
 *
 * @generated from message proto.decide.v2.GuardPolicyServerInput
 */
export declare type GuardPolicyServerInput = Message<"proto.decide.v2.GuardPolicyServerInput"> & {
  /**
   * @generated from oneof proto.decide.v2.GuardPolicyServerInput.value
   */
  value: {
    /**
     * @generated from field: string string_value = 1;
     */
    value: string;
    case: "stringValue";
  } | {
    /**
     * @generated from field: bool boolean_value = 2;
     */
    value: boolean;
    case: "booleanValue";
  } | {
    /**
     * @generated from field: sint64 integer_value = 3;
     */
    value: bigint;
    case: "integerValue";
  } | {
    /**
     * @generated from field: double number_value = 4;
     */
    value: number;
    case: "numberValue";
  } | {
    /**
     * @generated from field: proto.decide.v2.GuardStringList string_list_value = 5;
     */
    value: GuardStringList;
    case: "stringListValue";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.decide.v2.GuardPolicyServerInput.
 * Use `create(GuardPolicyServerInputSchema)` to create a new message.
 */
export declare const GuardPolicyServerInputSchema: GenMessage<GuardPolicyServerInput>;

/**
 * GuardPolicyLocalInput identifies a value that remains in SDK memory. The
 * digest is correlation data, not anonymization or a privacy guarantee. For a
 * LOCAL STRING it is exactly 32 bytes:
 *
 * SHA-256(UTF8("arcjet.guard.policy-input.v1\0") ||
 *        UINT32_BE(byte_length(UTF8(value))) || UTF8(value))
 *
 * Other local kinds require a future versioned encoding.
 *
 * @generated from message proto.decide.v2.GuardPolicyLocalInput
 */
export declare type GuardPolicyLocalInput = Message<"proto.decide.v2.GuardPolicyLocalInput"> & {
  /**
   * @generated from field: proto.decide.v2.GuardPolicyInputKind kind = 1;
   */
  kind: GuardPolicyInputKind;

  /**
   * @generated from field: bytes value_sha256 = 2;
   */
  valueSha256: Uint8Array;
};

/**
 * Describes the message proto.decide.v2.GuardPolicyLocalInput.
 * Use `create(GuardPolicyLocalInputSchema)` to create a new message.
 */
export declare const GuardPolicyLocalInputSchema: GenMessage<GuardPolicyLocalInput>;

/**
 * GuardPolicyInput has exactly one explicit exposure representation.
 *
 * @generated from message proto.decide.v2.GuardPolicyInput
 */
export declare type GuardPolicyInput = Message<"proto.decide.v2.GuardPolicyInput"> & {
  /**
   * @generated from oneof proto.decide.v2.GuardPolicyInput.representation
   */
  representation: {
    /**
     * @generated from field: proto.decide.v2.GuardPolicyServerInput server = 1;
     */
    value: GuardPolicyServerInput;
    case: "server";
  } | {
    /**
     * @generated from field: proto.decide.v2.GuardPolicyLocalInput local = 2;
     */
    value: GuardPolicyLocalInput;
    case: "local";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.decide.v2.GuardPolicyInput.
 * Use `create(GuardPolicyInputSchema)` to create a new message.
 */
export declare const GuardPolicyInputSchema: GenMessage<GuardPolicyInput>;

/**
 * GuardLocalPolicyResult is a trusted SDK attestation for one local remote
 * policy rule and input digest.
 *
 * @generated from message proto.decide.v2.GuardLocalPolicyResult
 */
export declare type GuardLocalPolicyResult = Message<"proto.decide.v2.GuardLocalPolicyResult"> & {
  /**
   * @generated from field: string policy_id = 1;
   */
  policyId: string;

  /**
   * @generated from field: string policy_revision = 2;
   */
  policyRevision: string;

  /**
   * @generated from field: string rule_id = 3;
   */
  ruleId: string;

  /**
   * @generated from field: string input_name = 4;
   */
  inputName: string;

  /**
   * @generated from field: bytes value_sha256 = 5;
   */
  valueSha256: Uint8Array;

  /**
   * @generated from field: proto.decide.v2.GuardRuleType type = 6;
   */
  type: GuardRuleType;

  /**
   * @generated from field: optional uint64 duration_ms = 7;
   */
  durationMs?: bigint;

  /**
   * @generated from oneof proto.decide.v2.GuardLocalPolicyResult.result
   */
  result: {
    /**
     * @generated from field: proto.decide.v2.ResultLocalSensitiveInfo local_sensitive_info = 20;
     */
    value: ResultLocalSensitiveInfo;
    case: "localSensitiveInfo";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultError error = 30;
     */
    value: ResultError;
    case: "error";
  } | {
    /**
     * @generated from field: proto.decide.v2.ResultNotRun not_run = 31;
     */
    value: ResultNotRun;
    case: "notRun";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.decide.v2.GuardLocalPolicyResult.
 * Use `create(GuardLocalPolicyResultSchema)` to create a new message.
 */
export declare const GuardLocalPolicyResultSchema: GenMessage<GuardLocalPolicyResult>;

/**
 * GuardRequest is a request to the Guard RPC.
 *
 * Observability fields (1–9)
 *
 * @generated from message proto.decide.v2.GuardRequest
 */
export declare type GuardRequest = Message<"proto.decide.v2.GuardRequest"> & {
  /**
   * The user-agent string identifying the SDK, runtime, and environment.
   * Follows user-agent conventions with product tokens and comments, e.g.
   * "arcjet-guard-js/0.1.0 (Node.js 24.0.0; next 15.2.0; linux arm64)".
   *
   * @generated from field: string user_agent = 1;
   */
  userAgent: string;

  /**
   * Total time from .guard() call to message serialization, in milliseconds.
   * Monotonic clock — no clock skew.
   * Optional so the server can distinguish "not measured" from 0 ms.
   *
   * @generated from field: optional uint64 local_eval_duration_ms = 2;
   */
  localEvalDurationMs?: bigint;

  /**
   * Client wall clock at message send time (Unix epoch, milliseconds).
   * Subject to clock skew but allows the server to estimate one-way
   * network latency as: server_receive_time - sent_at_unix_ms - local_eval_duration_ms.
   * Server should discard outliers where skew is clearly unreasonable.
   * Optional so the server can distinguish "not sent" from epoch 0.
   *
   * @generated from field: optional uint64 sent_at_unix_ms = 3;
   */
  sentAtUnixMs?: bigint;

  /**
   * A label identifying the protection boundary (e.g. "tools.weather").
   * Required. Max 256 bytes. Only lowercase letters, digits, dash, and dot.
   * Must start and end with a lowercase letter or digit.
   *
   * @generated from field: string label = 10;
   */
  label: string;

  /**
   * Legacy (migration): superseded by `metadata_json` (field 14), which carries
   * typed, nested values (key -> JSON-encoded value). New SDKs send
   * `metadata_json`; the server prefers it and falls back to this plain-string
   * map. Retained for older SDKs until they all emit `metadata_json`.
   *
   * @generated from field: map<string, string> metadata = 11 [deprecated = true];
   * @deprecated
   */
  metadata: { [key: string]: string };

  /**
   * The rule submissions to evaluate.
   *
   * @generated from field: repeated proto.decide.v2.GuardRuleSubmission rule_submissions = 12;
   */
  ruleSubmissions: GuardRuleSubmission[];

  /**
   * An optional, caller-supplied opaque identifier used to correlate this
   * guard call with other guard() and protect() calls that belong to the same
   * workflow, agent run, or multi-step task (e.g. a web request that kicks off
   * a chain of tool calls). It does not affect the decision; it is stored
   * alongside the recorded decision so a chain of actions can be
   * reconstructed. A first-class field rather than a metadata key so it has a
   * stable name and can be indexed. Max 256 bytes, printable ASCII.
   *
   * @generated from field: string correlation_id = 13;
   */
  correlationId: string;

  /**
   * Nested-JSON metadata: key -> JSON-encoded value (the typed counterpart to
   * the legacy `metadata` map of plain strings). Validated per-key by the
   * server (count/size/depth) and stored verbatim.
   *
   * @generated from field: map<string, string> metadata_json = 14;
   */
  metadataJson: { [key: string]: string };

  /**
   * Client-side validation warnings the SDK reports to the server (e.g.
   * metadata keys it dropped before sending). Untrusted; the server bounds
   * count/length and persists them alongside its own warnings.
   *
   * @generated from field: repeated proto.decide.v2.Warning local_warnings = 15;
   */
  localWarnings: Warning[];

  /**
   * Opaque identity asserted by trusted application code. Optional unless the
   * active remote policy requires it.
   *
   * @generated from field: optional string actor = 16;
   */
  actor?: string;

  /**
   * Explicitly typed and exposed named inputs for remote policy evaluation.
   *
   * @generated from field: map<string, proto.decide.v2.GuardPolicyInput> policy_inputs = 17;
   */
  policyInputs: { [key: string]: GuardPolicyInput };

  /**
   * Revision used for local remote-policy evaluation.
   *
   * @generated from field: string local_policy_revision = 18;
   */
  localPolicyRevision: string;

  /**
   * Trusted SDK attestations for locally evaluated remote rules.
   *
   * @generated from field: repeated proto.decide.v2.GuardLocalPolicyResult local_policy_results = 19;
   */
  localPolicyResults: GuardLocalPolicyResult[];

  /**
   * Versioned capability strings, e.g. "guard-policy-v1" and
   * "local-sensitive-info-v1".
   *
   * @generated from field: repeated string policy_capabilities = 20;
   */
  policyCapabilities: string[];
};

/**
 * Describes the message proto.decide.v2.GuardRequest.
 * Use `create(GuardRequestSchema)` to create a new message.
 */
export declare const GuardRequestSchema: GenMessage<GuardRequest>;

/**
 * GuardResponse is the response from the Guard RPC.
 *
 * @generated from message proto.decide.v2.GuardResponse
 */
export declare type GuardResponse = Message<"proto.decide.v2.GuardResponse"> & {
  /**
   * The decision made by evaluating the guard rules.
   *
   * @generated from field: proto.decide.v2.GuardDecision decision = 1;
   */
  decision?: GuardDecision;

  /**
   * Non-fatal errors encountered during request validation (e.g. invalid
   * metadata keys that were stripped). Each entry has a machine-readable
   * code and a human-readable message. The SDK should surface these via
   * its isError() helper but the decision is still valid.
   *
   * @generated from field: repeated proto.decide.v2.ResultError errors = 2;
   */
  errors: ResultError[];
};

/**
 * Describes the message proto.decide.v2.GuardResponse.
 * Use `create(GuardResponseSchema)` to create a new message.
 */
export declare const GuardResponseSchema: GenMessage<GuardResponse>;

/**
 * GetGuardPolicyRequest requests the SDK-local projection for one exact label.
 *
 * @generated from message proto.decide.v2.GetGuardPolicyRequest
 */
export declare type GetGuardPolicyRequest = Message<"proto.decide.v2.GetGuardPolicyRequest"> & {
  /**
   * @generated from field: string user_agent = 1;
   */
  userAgent: string;

  /**
   * @generated from field: string label = 10;
   */
  label: string;

  /**
   * @generated from field: repeated string policy_capabilities = 11;
   */
  policyCapabilities: string[];
};

/**
 * Describes the message proto.decide.v2.GetGuardPolicyRequest.
 * Use `create(GetGuardPolicyRequestSchema)` to create a new message.
 */
export declare const GetGuardPolicyRequestSchema: GenMessage<GetGuardPolicyRequest>;

/**
 * GuardLocalPolicyInputRequirement is a local input required by the projection.
 *
 * @generated from message proto.decide.v2.GuardLocalPolicyInputRequirement
 */
export declare type GuardLocalPolicyInputRequirement = Message<"proto.decide.v2.GuardLocalPolicyInputRequirement"> & {
  /**
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * @generated from field: proto.decide.v2.GuardPolicyInputKind kind = 2;
   */
  kind: GuardPolicyInputKind;

  /**
   * @generated from field: bool required = 3;
   */
  required: boolean;
};

/**
 * Describes the message proto.decide.v2.GuardLocalPolicyInputRequirement.
 * Use `create(GuardLocalPolicyInputRequirementSchema)` to create a new message.
 */
export declare const GuardLocalPolicyInputRequirementSchema: GenMessage<GuardLocalPolicyInputRequirement>;

/**
 * GuardLocalSensitiveInfoRule configures one SDK-local sensitive-information
 * evaluation. entities_allow exempts listed types and denies other detected
 * types; entities_deny denies listed types and allows other detected types. An
 * absent filter uses the evaluator default. Empty allow denies every detected
 * type; empty deny allows every type.
 *
 * @generated from message proto.decide.v2.GuardLocalSensitiveInfoRule
 */
export declare type GuardLocalSensitiveInfoRule = Message<"proto.decide.v2.GuardLocalSensitiveInfoRule"> & {
  /**
   * @generated from field: string rule_id = 1;
   */
  ruleId: string;

  /**
   * @generated from field: string input_name = 2;
   */
  inputName: string;

  /**
   * @generated from field: proto.decide.v2.GuardRuleMode mode = 3;
   */
  mode: GuardRuleMode;

  /**
   * @generated from oneof proto.decide.v2.GuardLocalSensitiveInfoRule.entity_filter
   */
  entityFilter: {
    /**
     * @generated from field: proto.decide.v2.EntityList entities_allow = 10;
     */
    value: EntityList;
    case: "entitiesAllow";
  } | {
    /**
     * @generated from field: proto.decide.v2.EntityList entities_deny = 11;
     */
    value: EntityList;
    case: "entitiesDeny";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.decide.v2.GuardLocalSensitiveInfoRule.
 * Use `create(GuardLocalSensitiveInfoRuleSchema)` to create a new message.
 */
export declare const GuardLocalSensitiveInfoRuleSchema: GenMessage<GuardLocalSensitiveInfoRule>;

/**
 * GuardLocalPolicyProjection is the policy subset an SDK needs for local
 * evaluation. Server-only rule configuration is deliberately omitted.
 *
 * @generated from message proto.decide.v2.GuardLocalPolicyProjection
 */
export declare type GuardLocalPolicyProjection = Message<"proto.decide.v2.GuardLocalPolicyProjection"> & {
  /**
   * @generated from field: string policy_id = 1;
   */
  policyId: string;

  /**
   * @generated from field: string revision = 2;
   */
  revision: string;

  /**
   * @generated from field: string label = 3;
   */
  label: string;

  /**
   * @generated from field: bool requires_actor = 4;
   */
  requiresActor: boolean;

  /**
   * @generated from field: repeated proto.decide.v2.GuardLocalPolicyInputRequirement inputs = 10;
   */
  inputs: GuardLocalPolicyInputRequirement[];

  /**
   * @generated from field: repeated proto.decide.v2.GuardLocalSensitiveInfoRule sensitive_info_rules = 11;
   */
  sensitiveInfoRules: GuardLocalSensitiveInfoRule[];
};

/**
 * Describes the message proto.decide.v2.GuardLocalPolicyProjection.
 * Use `create(GuardLocalPolicyProjectionSchema)` to create a new message.
 */
export declare const GuardLocalPolicyProjectionSchema: GenMessage<GuardLocalPolicyProjection>;

/**
 * GetGuardPolicyResponse returns policy status and, when configured, the
 * SDK-local projection.
 *
 * @generated from message proto.decide.v2.GetGuardPolicyResponse
 */
export declare type GetGuardPolicyResponse = Message<"proto.decide.v2.GetGuardPolicyResponse"> & {
  /**
   * @generated from field: proto.decide.v2.GuardPolicyLookupStatus status = 1;
   */
  status: GuardPolicyLookupStatus;

  /**
   * @generated from field: proto.decide.v2.GuardLocalPolicyProjection policy = 2;
   */
  policy?: GuardLocalPolicyProjection;

  /**
   * @generated from field: uint64 server_time_unix_ms = 3;
   */
  serverTimeUnixMs: bigint;
};

/**
 * Describes the message proto.decide.v2.GetGuardPolicyResponse.
 * Use `create(GetGuardPolicyResponseSchema)` to create a new message.
 */
export declare const GetGuardPolicyResponseSchema: GenMessage<GetGuardPolicyResponse>;

/**
 * CaptureEvent is a single fact reported by the application about what it
 * did — never a judgment. Nothing client-sent is trusted: anything the
 * platform relies on (team, receive time, event identity) is derived
 * server-side. Event identifiers are authored by the server on receipt;
 * there is no client-supplied event ID, and duplicate events are never
 * suppressed on the wire.
 *
 * Timing fields (1-9)
 *
 * @generated from message proto.decide.v2.CaptureEvent
 */
export declare type CaptureEvent = Message<"proto.decide.v2.CaptureEvent"> & {
  /**
   * Client wall clock when the event occurred (Unix epoch, milliseconds).
   * Informational and subject to clock skew; the server records its own
   * authoritative receive time.
   *
   * @generated from field: uint64 occurred_at_unix_ms = 1;
   */
  occurredAtUnixMs: bigint;

  /**
   * Optional, explicitly passed identifier correlating this event with
   * other calls in the same workflow or agent run. Never inherited
   * ambiently.
   *
   * @generated from field: string correlation_id = 10;
   */
  correlationId: string;

  /**
   * Optional join key referencing the decision (e.g. a GuardDecision.id)
   * this event's action relates to.
   *
   * @generated from field: string decision_id = 11;
   */
  decisionId: string;

  /**
   * What the application did. Convention: "resource.verb", past tense
   * (e.g. "refund.issued"). Required.
   *
   * @generated from field: string action = 20;
   */
  action: string;

  /**
   * Legacy (migration): superseded by `metadata_json` (field 22), which carries
   * typed, nested values. New SDKs send `metadata_json`; the server prefers it
   * and falls back to this plain-string map. Customer-supplied and untrusted.
   *
   * @generated from field: map<string, string> metadata = 21 [deprecated = true];
   * @deprecated
   */
  metadata: { [key: string]: string };

  /**
   * Nested-JSON metadata: key -> JSON-encoded value (typed counterpart to the
   * legacy `metadata` map).
   *
   * @generated from field: map<string, string> metadata_json = 22;
   */
  metadataJson: { [key: string]: string };

  /**
   * Client-side validation warnings for this event's metadata (e.g. keys the
   * SDK dropped before sending). Per-event so batched events keep their own.
   * Untrusted; the server bounds count/length and persists them.
   *
   * @generated from field: repeated proto.decide.v2.Warning local_warnings = 23;
   */
  localWarnings: Warning[];

  /**
   * Where this event came from, set by whatever produced it: "sdk" for an
   * explicit capture() call, "otlp" for the OpenTelemetry conversion path.
   * Open string rather than an enum because we don't know the full set of
   * producers; consumers must tolerate values they don't recognize.
   *
   * Per event, not per request, because one request can carry events from more
   * than one producer — an SDK that accepts capture() calls and also converts
   * spans feeds both into the same queue.
   *
   * Customer-supplied, untrusted, and forgeable. Nothing downstream may grant
   * trust on the basis of this field. Empty means unknown, which is NOT a
   * synonym for "sdk": events sent by SDKs predating this field have none, and
   * the server stores unknown as NULL rather than guessing.
   *
   * @generated from field: string source = 24;
   */
  source: string;
};

/**
 * Describes the message proto.decide.v2.CaptureEvent.
 * Use `create(CaptureEventSchema)` to create a new message.
 */
export declare const CaptureEventSchema: GenMessage<CaptureEvent>;

/**
 * CaptureRequest is a request to the Capture RPC.
 *
 * Observability fields (1-9), mirroring GuardRequest.
 *
 * @generated from message proto.decide.v2.CaptureRequest
 */
export declare type CaptureRequest = Message<"proto.decide.v2.CaptureRequest"> & {
  /**
   * The user-agent string identifying the SDK, runtime, and environment.
   *
   * @generated from field: string user_agent = 1;
   */
  userAgent: string;

  /**
   * Client wall clock at message send time (Unix epoch, milliseconds).
   * Optional so the server can distinguish "not sent" from epoch 0.
   *
   * @generated from field: optional uint64 sent_at_unix_ms = 2;
   */
  sentAtUnixMs?: bigint;

  /**
   * The events to record. Repeated so transports can batch without wire
   * changes.
   *
   * @generated from field: repeated proto.decide.v2.CaptureEvent events = 10;
   */
  events: CaptureEvent[];
};

/**
 * Describes the message proto.decide.v2.CaptureRequest.
 * Use `create(CaptureRequestSchema)` to create a new message.
 */
export declare const CaptureRequestSchema: GenMessage<CaptureRequest>;

/**
 * CaptureResponse is the response from the Capture RPC. Deliberately empty:
 * capture is fire-and-forget with no per-event ack status. The ack means
 * the request was received, not that events are durably recorded —
 * persistence is asynchronous.
 *
 * @generated from message proto.decide.v2.CaptureResponse
 */
export declare type CaptureResponse = Message<"proto.decide.v2.CaptureResponse"> & {
};

/**
 * Describes the message proto.decide.v2.CaptureResponse.
 * Use `create(CaptureResponseSchema)` to create a new message.
 */
export declare const CaptureResponseSchema: GenMessage<CaptureResponse>;

/**
 * GuardConclusion is the outcome of a guard decision — Arcjet's judgment.
 *
 * @generated from enum proto.decide.v2.GuardConclusion
 */
export enum GuardConclusion {
  /**
   * Unspecified conclusion — should not appear in practice.
   *
   * @generated from enum value: GUARD_CONCLUSION_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * The request is allowed.
   *
   * @generated from enum value: GUARD_CONCLUSION_ALLOW = 1;
   */
  ALLOW = 1,

  /**
   * The request is denied.
   *
   * @generated from enum value: GUARD_CONCLUSION_DENY = 2;
   */
  DENY = 2,
}

/**
 * Describes the enum proto.decide.v2.GuardConclusion.
 */
export declare const GuardConclusionSchema: GenEnum<GuardConclusion>;

/**
 * GuardReason is the broad reason category for a guard decision or rule result.
 *
 * @generated from enum proto.decide.v2.GuardReason
 */
export enum GuardReason {
  /**
   * Unspecified reason — no reason was set.
   *
   * @generated from enum value: GUARD_REASON_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * The rule encountered an error during evaluation.
   *
   * @generated from enum value: GUARD_REASON_ERROR = 1;
   */
  ERROR = 1,

  /**
   * The rule was not evaluated (e.g. skipped by the server).
   *
   * @generated from enum value: GUARD_REASON_NOT_RUN = 2;
   */
  NOT_RUN = 2,

  /**
   * A custom user-defined rule produced this reason.
   *
   * @generated from enum value: GUARD_REASON_CUSTOM = 3;
   */
  CUSTOM = 3,

  /**
   * The conclusion was due to a rate limiting rule.
   *
   * @generated from enum value: GUARD_REASON_RATE_LIMIT = 10;
   */
  RATE_LIMIT = 10,

  /**
   * The conclusion was due to a prompt injection detection rule.
   *
   * @generated from enum value: GUARD_REASON_PROMPT_INJECTION = 11;
   */
  PROMPT_INJECTION = 11,

  /**
   * The conclusion was due to a sensitive information detection rule.
   *
   * @generated from enum value: GUARD_REASON_SENSITIVE_INFO = 12;
   */
  SENSITIVE_INFO = 12,

  /**
   * The conclusion was due to a content moderation rule.
   *
   * @generated from enum value: GUARD_REASON_MODERATE_CONTENT = 13;
   */
  MODERATE_CONTENT = 13,

  /**
   * The conclusion was due to a typed remote-policy input constraint.
   *
   * @generated from enum value: GUARD_REASON_INPUT_CONSTRAINT = 14;
   */
  INPUT_CONSTRAINT = 14,
}

/**
 * Describes the enum proto.decide.v2.GuardReason.
 */
export declare const GuardReasonSchema: GenEnum<GuardReason>;

/**
 * GuardRuleType identifies the specific rule type that produced a result.
 *
 * @generated from enum proto.decide.v2.GuardRuleType
 */
export enum GuardRuleType {
  /**
   * Unspecified rule type — should not appear in practice.
   *
   * @generated from enum value: GUARD_RULE_TYPE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * Token bucket rate limiting.
   *
   * @generated from enum value: GUARD_RULE_TYPE_TOKEN_BUCKET = 10;
   */
  TOKEN_BUCKET = 10,

  /**
   * Fixed window rate limiting.
   *
   * @generated from enum value: GUARD_RULE_TYPE_FIXED_WINDOW = 11;
   */
  FIXED_WINDOW = 11,

  /**
   * Sliding window rate limiting.
   *
   * @generated from enum value: GUARD_RULE_TYPE_SLIDING_WINDOW = 12;
   */
  SLIDING_WINDOW = 12,

  /**
   * Prompt injection detection.
   *
   * @generated from enum value: GUARD_RULE_TYPE_PROMPT_INJECTION = 13;
   */
  PROMPT_INJECTION = 13,

  /**
   * Content moderation.
   *
   * @generated from enum value: GUARD_RULE_TYPE_MODERATE_CONTENT = 14;
   */
  MODERATE_CONTENT = 14,

  /**
   * Remote-policy allowed string values.
   *
   * @generated from enum value: GUARD_RULE_TYPE_ALLOWED_STRING_VALUES = 15;
   */
  ALLOWED_STRING_VALUES = 15,

  /**
   * Remote-policy denied string values.
   *
   * @generated from enum value: GUARD_RULE_TYPE_DENIED_STRING_VALUES = 16;
   */
  DENIED_STRING_VALUES = 16,

  /**
   * Remote-policy string length constraint.
   *
   * @generated from enum value: GUARD_RULE_TYPE_STRING_LENGTH = 17;
   */
  STRING_LENGTH = 17,

  /**
   * @generated from enum value: GUARD_RULE_TYPE_STRING_LIST_MEMBERSHIP = 18;
   */
  STRING_LIST_MEMBERSHIP = 18,

  /**
   * Sensitive information detection (evaluated locally by the SDK).
   *
   * @generated from enum value: GUARD_RULE_TYPE_LOCAL_SENSITIVE_INFO = 20;
   */
  LOCAL_SENSITIVE_INFO = 20,

  /**
   * Custom user-defined rule (evaluated locally by the SDK).
   *
   * @generated from enum value: GUARD_RULE_TYPE_LOCAL_CUSTOM = 29;
   */
  LOCAL_CUSTOM = 29,
}

/**
 * Describes the enum proto.decide.v2.GuardRuleType.
 */
export declare const GuardRuleTypeSchema: GenEnum<GuardRuleType>;

/**
 * GuardRuleMode is the evaluation mode for a rule submission.
 *
 * @generated from enum proto.decide.v2.GuardRuleMode
 */
export enum GuardRuleMode {
  /**
   * Unspecified mode — defaults to LIVE.
   *
   * @generated from enum value: GUARD_RULE_MODE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * Live mode: the rule is evaluated normally and contributes to the decision.
   *
   * @generated from enum value: GUARD_RULE_MODE_LIVE = 1;
   */
  LIVE = 1,

  /**
   * Dry-run mode: the rule is evaluated and produces a conclusion in its result,
   * but a DENY conclusion does not contribute to the aggregate decision.
   *
   * @generated from enum value: GUARD_RULE_MODE_DRY_RUN = 2;
   */
  DRY_RUN = 2,
}

/**
 * Describes the enum proto.decide.v2.GuardRuleMode.
 */
export declare const GuardRuleModeSchema: GenEnum<GuardRuleMode>;

/**
 * GuardRuleSource identifies where a rule's configuration came from.
 *
 * @generated from enum proto.decide.v2.GuardRuleSource
 */
export enum GuardRuleSource {
  /**
   * @generated from enum value: GUARD_RULE_SOURCE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: GUARD_RULE_SOURCE_SDK = 1;
   */
  SDK = 1,

  /**
   * @generated from enum value: GUARD_RULE_SOURCE_REMOTE = 2;
   */
  REMOTE = 2,
}

/**
 * Describes the enum proto.decide.v2.GuardRuleSource.
 */
export declare const GuardRuleSourceSchema: GenEnum<GuardRuleSource>;

/**
 * GuardRuleExecution identifies where a rule was evaluated.
 *
 * @generated from enum proto.decide.v2.GuardRuleExecution
 */
export enum GuardRuleExecution {
  /**
   * @generated from enum value: GUARD_RULE_EXECUTION_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: GUARD_RULE_EXECUTION_SDK = 1;
   */
  SDK = 1,

  /**
   * @generated from enum value: GUARD_RULE_EXECUTION_SERVER = 2;
   */
  SERVER = 2,
}

/**
 * Describes the enum proto.decide.v2.GuardRuleExecution.
 */
export declare const GuardRuleExecutionSchema: GenEnum<GuardRuleExecution>;

/**
 * GuardStringMatchOperator identifies how a remote-policy string constraint
 * compared its input. Unspecified responses from older servers mean EXACT for
 * allowed and denied string-value results.
 *
 * @generated from enum proto.decide.v2.GuardStringMatchOperator
 */
export enum GuardStringMatchOperator {
  /**
   * @generated from enum value: GUARD_STRING_MATCH_OPERATOR_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: GUARD_STRING_MATCH_OPERATOR_EXACT = 1;
   */
  EXACT = 1,

  /**
   * @generated from enum value: GUARD_STRING_MATCH_OPERATOR_EMAIL_DOMAIN = 2;
   */
  EMAIL_DOMAIN = 2,
}

/**
 * Describes the enum proto.decide.v2.GuardStringMatchOperator.
 */
export declare const GuardStringMatchOperatorSchema: GenEnum<GuardStringMatchOperator>;

/**
 * GuardPolicyInputKind is the declared wire type of a remote-policy input.
 *
 * @generated from enum proto.decide.v2.GuardPolicyInputKind
 */
export enum GuardPolicyInputKind {
  /**
   * @generated from enum value: GUARD_POLICY_INPUT_KIND_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: GUARD_POLICY_INPUT_KIND_STRING = 1;
   */
  STRING = 1,

  /**
   * @generated from enum value: GUARD_POLICY_INPUT_KIND_BOOLEAN = 2;
   */
  BOOLEAN = 2,

  /**
   * @generated from enum value: GUARD_POLICY_INPUT_KIND_INTEGER = 3;
   */
  INTEGER = 3,

  /**
   * @generated from enum value: GUARD_POLICY_INPUT_KIND_NUMBER = 4;
   */
  NUMBER = 4,

  /**
   * @generated from enum value: GUARD_POLICY_INPUT_KIND_STRING_LIST = 5;
   */
  STRING_LIST = 5,
}

/**
 * Describes the enum proto.decide.v2.GuardPolicyInputKind.
 */
export declare const GuardPolicyInputKindSchema: GenEnum<GuardPolicyInputKind>;

/**
 * GuardPolicyStatus reports whether a remote policy was selected and fully
 * evaluated. An absent GuardPolicyEvaluation means the server predates remote
 * policy support; it is not equivalent to NOT_CONFIGURED.
 *
 * @generated from enum proto.decide.v2.GuardPolicyStatus
 */
export enum GuardPolicyStatus {
  /**
   * @generated from enum value: GUARD_POLICY_STATUS_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: GUARD_POLICY_STATUS_NOT_CONFIGURED = 1;
   */
  NOT_CONFIGURED = 1,

  /**
   * @generated from enum value: GUARD_POLICY_STATUS_APPLIED = 2;
   */
  APPLIED = 2,

  /**
   * @generated from enum value: GUARD_POLICY_STATUS_INCOMPLETE = 3;
   */
  INCOMPLETE = 3,

  /**
   * @generated from enum value: GUARD_POLICY_STATUS_UNAVAILABLE = 4;
   */
  UNAVAILABLE = 4,
}

/**
 * Describes the enum proto.decide.v2.GuardPolicyStatus.
 */
export declare const GuardPolicyStatusSchema: GenEnum<GuardPolicyStatus>;

/**
 * GuardPolicyLookupStatus describes local-projection retrieval, not rule
 * evaluation.
 *
 * @generated from enum proto.decide.v2.GuardPolicyLookupStatus
 */
export enum GuardPolicyLookupStatus {
  /**
   * @generated from enum value: GUARD_POLICY_LOOKUP_STATUS_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: GUARD_POLICY_LOOKUP_STATUS_NOT_CONFIGURED = 1;
   */
  NOT_CONFIGURED = 1,

  /**
   * @generated from enum value: GUARD_POLICY_LOOKUP_STATUS_AVAILABLE = 2;
   */
  AVAILABLE = 2,

  /**
   * @generated from enum value: GUARD_POLICY_LOOKUP_STATUS_UNAVAILABLE = 3;
   */
  UNAVAILABLE = 3,
}

/**
 * Describes the enum proto.decide.v2.GuardPolicyLookupStatus.
 */
export declare const GuardPolicyLookupStatusSchema: GenEnum<GuardPolicyLookupStatus>;

/**
 * DecideService evaluates guard rules into a single decision, and separately
 * records application-reported facts via Capture.
 * Guard and Capture live on DecideService to share infrastructure (auth,
 * billing, interceptors) with the existing Decide and Report RPCs.
 *
 * @generated from service proto.decide.v2.DecideService
 */
export declare const DecideService: GenService<{
  /**
   * Evaluate a set of guard rules and return a decision.
   *
   * @generated from rpc proto.decide.v2.DecideService.Guard
   */
  guard: {
    methodKind: "unary";
    input: typeof GuardRequestSchema;
    output: typeof GuardResponseSchema;
  },
  /**
   * Retrieve the SDK-local projection of the remote policy for an exact label.
   *
   * @generated from rpc proto.decide.v2.DecideService.GetGuardPolicy
   */
  getGuardPolicy: {
    methodKind: "unary";
    input: typeof GetGuardPolicyRequestSchema;
    output: typeof GetGuardPolicyResponseSchema;
  },
  /**
   * Record facts about what the application did. Fire-and-forget: the ack
   * means received, not durably recorded.
   *
   * @generated from rpc proto.decide.v2.DecideService.Capture
   */
  capture: {
    methodKind: "unary";
    input: typeof CaptureRequestSchema;
    output: typeof CaptureResponseSchema;
  },
}>;

