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

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

/**
 * Describes the file proto/guard/policy/v1/policy.proto.
 */
export declare const file_proto_guard_policy_v1_policy: GenFile;

/**
 * GuardPolicyBundle is one immutable, versioned tenant policy snapshot.
 * Policy IDs must be unique in the bundle. Any change to a rule variant, mode,
 * execution location, input binding, or entity filter produces a new revision.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyBundle
 */
export declare type GuardPolicyBundle = Message<"proto.guard.policy.v1.GuardPolicyBundle"> & {
  /**
   * Strict policy-language version. The first supported version is 1.
   *
   * @generated from field: uint32 language_version = 1;
   */
  languageVersion: number;

  /**
   * Opaque revision shared by the control plane, runtime mirrors, and SDKs.
   *
   * @generated from field: string revision = 2;
   */
  revision: string;

  /**
   * Policies keyed by exact label. The compiler rejects duplicate labels.
   *
   * @generated from field: repeated proto.guard.policy.v1.GuardPolicy policies = 10;
   */
  policies: GuardPolicy[];
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyBundle.
 * Use `create(GuardPolicyBundleSchema)` to create a new message.
 */
export declare const GuardPolicyBundleSchema: GenMessage<GuardPolicyBundle>;

/**
 * GuardPolicy is the single policy for one exact Guard label.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicy
 */
export declare type GuardPolicy = Message<"proto.guard.policy.v1.GuardPolicy"> & {
  /**
   * Stable control-plane policy identity.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * Exact GuardRequest.label matched by this policy.
   *
   * @generated from field: string label = 2;
   */
  label: string;

  /**
   * Whether a non-empty application-asserted actor is required.
   *
   * @generated from field: bool requires_actor = 3;
   */
  requiresActor: boolean;

  /**
   * Named input contract for this policy. Names must be unique in the policy.
   *
   * @generated from field: repeated proto.guard.policy.v1.GuardPolicyInputRequirement inputs = 4;
   */
  inputs: GuardPolicyInputRequirement[];

  /**
   * Rules evaluated for this label. Rule IDs must be unique in the policy.
   *
   * @generated from field: repeated proto.guard.policy.v1.GuardPolicyRule rules = 10;
   */
  rules: GuardPolicyRule[];
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicy.
 * Use `create(GuardPolicySchema)` to create a new message.
 */
export declare const GuardPolicySchema: GenMessage<GuardPolicy>;

/**
 * GuardPolicyInputRequirement declares one named typed input.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyInputRequirement
 */
export declare type GuardPolicyInputRequirement = Message<"proto.guard.policy.v1.GuardPolicyInputRequirement"> & {
  /**
   * @generated from field: string name = 1;
   */
  name: string;

  /**
   * @generated from field: proto.guard.policy.v1.GuardPolicyInputKind kind = 2;
   */
  kind: GuardPolicyInputKind;

  /**
   * @generated from field: proto.guard.policy.v1.GuardPolicyInputExposure exposure = 3;
   */
  exposure: GuardPolicyInputExposure;

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

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyInputRequirement.
 * Use `create(GuardPolicyInputRequirementSchema)` to create a new message.
 */
export declare const GuardPolicyInputRequirementSchema: GenMessage<GuardPolicyInputRequirement>;

/**
 * GuardPolicyRule is a stable rule identity plus one typed rule variant.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyRule
 */
export declare type GuardPolicyRule = Message<"proto.guard.policy.v1.GuardPolicyRule"> & {
  /**
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * @generated from field: proto.guard.policy.v1.GuardPolicyRuleMode mode = 2;
   */
  mode: GuardPolicyRuleMode;

  /**
   * @generated from field: proto.guard.policy.v1.GuardPolicyRuleExecution execution = 3;
   */
  execution: GuardPolicyRuleExecution;

  /**
   * @generated from oneof proto.guard.policy.v1.GuardPolicyRule.rule
   */
  rule: {
    /**
     * @generated from field: proto.guard.policy.v1.GuardPolicyAllowedStringValues allowed_string_values = 10;
     */
    value: GuardPolicyAllowedStringValues;
    case: "allowedStringValues";
  } | {
    /**
     * @generated from field: proto.guard.policy.v1.GuardPolicyDeniedStringValues denied_string_values = 11;
     */
    value: GuardPolicyDeniedStringValues;
    case: "deniedStringValues";
  } | {
    /**
     * @generated from field: proto.guard.policy.v1.GuardPolicyStringLength string_length = 12;
     */
    value: GuardPolicyStringLength;
    case: "stringLength";
  } | {
    /**
     * @generated from field: proto.guard.policy.v1.GuardPolicyPromptInjection prompt_injection = 13;
     */
    value: GuardPolicyPromptInjection;
    case: "promptInjection";
  } | {
    /**
     * @generated from field: proto.guard.policy.v1.GuardPolicyStringListMembership string_list_membership = 14;
     */
    value: GuardPolicyStringListMembership;
    case: "stringListMembership";
  } | {
    /**
     * @generated from field: proto.guard.policy.v1.GuardPolicyLocalSensitiveInfo local_sensitive_info = 20;
     */
    value: GuardPolicyLocalSensitiveInfo;
    case: "localSensitiveInfo";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyRule.
 * Use `create(GuardPolicyRuleSchema)` to create a new message.
 */
export declare const GuardPolicyRuleSchema: GenMessage<GuardPolicyRule>;

/**
 * GuardPolicyStringValues wraps string values used by allow and deny lists.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyStringValues
 */
export declare type GuardPolicyStringValues = Message<"proto.guard.policy.v1.GuardPolicyStringValues"> & {
  /**
   * @generated from field: repeated string values = 1;
   */
  values: string[];
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyStringValues.
 * Use `create(GuardPolicyStringValuesSchema)` to create a new message.
 */
export declare const GuardPolicyStringValuesSchema: GenMessage<GuardPolicyStringValues>;

/**
 * GuardPolicyAllowedStringValues allows only listed values for a SERVER STRING
 * input.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyAllowedStringValues
 */
export declare type GuardPolicyAllowedStringValues = Message<"proto.guard.policy.v1.GuardPolicyAllowedStringValues"> & {
  /**
   * @generated from field: string input_name = 1;
   */
  inputName: string;

  /**
   * @generated from field: proto.guard.policy.v1.GuardPolicyStringValues values = 2;
   */
  values?: GuardPolicyStringValues;

  /**
   * @generated from field: proto.guard.policy.v1.GuardPolicyStringMatchOperator match_operator = 3;
   */
  matchOperator: GuardPolicyStringMatchOperator;
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyAllowedStringValues.
 * Use `create(GuardPolicyAllowedStringValuesSchema)` to create a new message.
 */
export declare const GuardPolicyAllowedStringValuesSchema: GenMessage<GuardPolicyAllowedStringValues>;

/**
 * GuardPolicyDeniedStringValues denies listed values for a SERVER STRING input.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyDeniedStringValues
 */
export declare type GuardPolicyDeniedStringValues = Message<"proto.guard.policy.v1.GuardPolicyDeniedStringValues"> & {
  /**
   * @generated from field: string input_name = 1;
   */
  inputName: string;

  /**
   * @generated from field: proto.guard.policy.v1.GuardPolicyStringValues values = 2;
   */
  values?: GuardPolicyStringValues;

  /**
   * @generated from field: proto.guard.policy.v1.GuardPolicyStringMatchOperator match_operator = 3;
   */
  matchOperator: GuardPolicyStringMatchOperator;
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyDeniedStringValues.
 * Use `create(GuardPolicyDeniedStringValuesSchema)` to create a new message.
 */
export declare const GuardPolicyDeniedStringValuesSchema: GenMessage<GuardPolicyDeniedStringValues>;

/**
 * GuardPolicyStringLength constrains the UTF-8 byte length of a SERVER STRING
 * input. At least one bound must be present.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyStringLength
 */
export declare type GuardPolicyStringLength = Message<"proto.guard.policy.v1.GuardPolicyStringLength"> & {
  /**
   * @generated from field: string input_name = 1;
   */
  inputName: string;

  /**
   * @generated from field: optional uint32 min_bytes = 2;
   */
  minBytes?: number;

  /**
   * @generated from field: optional uint32 max_bytes = 3;
   */
  maxBytes?: number;
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyStringLength.
 * Use `create(GuardPolicyStringLengthSchema)` to create a new message.
 */
export declare const GuardPolicyStringLengthSchema: GenMessage<GuardPolicyStringLength>;

/**
 * GuardPolicyPromptInjection detects prompt injection in a SERVER STRING input.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyPromptInjection
 */
export declare type GuardPolicyPromptInjection = Message<"proto.guard.policy.v1.GuardPolicyPromptInjection"> & {
  /**
   * @generated from field: string input_name = 1;
   */
  inputName: string;
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyPromptInjection.
 * Use `create(GuardPolicyPromptInjectionSchema)` to create a new message.
 */
export declare const GuardPolicyPromptInjectionSchema: GenMessage<GuardPolicyPromptInjection>;

/**
 * GuardPolicyStringListMembership allows a SERVER STRING input only when it is
 * exactly equal to an element of a distinct SERVER STRING_LIST input.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyStringListMembership
 */
export declare type GuardPolicyStringListMembership = Message<"proto.guard.policy.v1.GuardPolicyStringListMembership"> & {
  /**
   * @generated from field: string string_input_name = 1;
   */
  stringInputName: string;

  /**
   * @generated from field: string string_list_input_name = 2;
   */
  stringListInputName: string;
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyStringListMembership.
 * Use `create(GuardPolicyStringListMembershipSchema)` to create a new message.
 */
export declare const GuardPolicyStringListMembershipSchema: GenMessage<GuardPolicyStringListMembership>;

/**
 * GuardPolicyEntityList wraps sensitive-information entity names.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyEntityList
 */
export declare type GuardPolicyEntityList = Message<"proto.guard.policy.v1.GuardPolicyEntityList"> & {
  /**
   * @generated from field: repeated string entities = 1;
   */
  entities: string[];
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyEntityList.
 * Use `create(GuardPolicyEntityListSchema)` to create a new message.
 */
export declare const GuardPolicyEntityListSchema: GenMessage<GuardPolicyEntityList>;

/**
 * GuardPolicyLocalSensitiveInfo evaluates sensitive information over a LOCAL
 * STRING input. entities_allow exempts listed entity types and denies other
 * detected types; entities_deny denies listed types and allows other detected
 * types. An absent filter uses the evaluator default. A present empty allow list
 * denies every detected type; a present empty deny list allows every type.
 *
 * @generated from message proto.guard.policy.v1.GuardPolicyLocalSensitiveInfo
 */
export declare type GuardPolicyLocalSensitiveInfo = Message<"proto.guard.policy.v1.GuardPolicyLocalSensitiveInfo"> & {
  /**
   * @generated from field: string input_name = 1;
   */
  inputName: string;

  /**
   * @generated from oneof proto.guard.policy.v1.GuardPolicyLocalSensitiveInfo.entity_filter
   */
  entityFilter: {
    /**
     * @generated from field: proto.guard.policy.v1.GuardPolicyEntityList entities_allow = 2;
     */
    value: GuardPolicyEntityList;
    case: "entitiesAllow";
  } | {
    /**
     * @generated from field: proto.guard.policy.v1.GuardPolicyEntityList entities_deny = 3;
     */
    value: GuardPolicyEntityList;
    case: "entitiesDeny";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message proto.guard.policy.v1.GuardPolicyLocalSensitiveInfo.
 * Use `create(GuardPolicyLocalSensitiveInfoSchema)` to create a new message.
 */
export declare const GuardPolicyLocalSensitiveInfoSchema: GenMessage<GuardPolicyLocalSensitiveInfo>;

/**
 * GuardPolicyInputKind is the declared scalar or collection type of a policy
 * input.
 *
 * @generated from enum proto.guard.policy.v1.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.guard.policy.v1.GuardPolicyInputKind.
 */
export declare const GuardPolicyInputKindSchema: GenEnum<GuardPolicyInputKind>;

/**
 * GuardPolicyInputExposure controls whether the raw value is evaluated and
 * retained by Arcjet or remains in SDK memory.
 *
 * @generated from enum proto.guard.policy.v1.GuardPolicyInputExposure
 */
export enum GuardPolicyInputExposure {
  /**
   * @generated from enum value: GUARD_POLICY_INPUT_EXPOSURE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: GUARD_POLICY_INPUT_EXPOSURE_SERVER = 1;
   */
  SERVER = 1,

  /**
   * @generated from enum value: GUARD_POLICY_INPUT_EXPOSURE_LOCAL = 2;
   */
  LOCAL = 2,
}

/**
 * Describes the enum proto.guard.policy.v1.GuardPolicyInputExposure.
 */
export declare const GuardPolicyInputExposureSchema: GenEnum<GuardPolicyInputExposure>;

/**
 * GuardPolicyRuleMode controls whether a denial contributes to the aggregate
 * decision.
 *
 * @generated from enum proto.guard.policy.v1.GuardPolicyRuleMode
 */
export enum GuardPolicyRuleMode {
  /**
   * @generated from enum value: GUARD_POLICY_RULE_MODE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: GUARD_POLICY_RULE_MODE_LIVE = 1;
   */
  LIVE = 1,

  /**
   * @generated from enum value: GUARD_POLICY_RULE_MODE_DRY_RUN = 2;
   */
  DRY_RUN = 2,
}

/**
 * Describes the enum proto.guard.policy.v1.GuardPolicyRuleMode.
 */
export declare const GuardPolicyRuleModeSchema: GenEnum<GuardPolicyRuleMode>;

/**
 * GuardPolicyRuleExecution identifies where a policy rule is evaluated.
 *
 * @generated from enum proto.guard.policy.v1.GuardPolicyRuleExecution
 */
export enum GuardPolicyRuleExecution {
  /**
   * @generated from enum value: GUARD_POLICY_RULE_EXECUTION_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

/**
 * Describes the enum proto.guard.policy.v1.GuardPolicyRuleExecution.
 */
export declare const GuardPolicyRuleExecutionSchema: GenEnum<GuardPolicyRuleExecution>;

/**
 * GuardPolicyStringMatchOperator controls how a configured string value is
 * compared with a SERVER STRING input. Unspecified preserves the v1 legacy
 * behavior and is interpreted as an exact match.
 *
 * @generated from enum proto.guard.policy.v1.GuardPolicyStringMatchOperator
 */
export enum GuardPolicyStringMatchOperator {
  /**
   * @generated from enum value: GUARD_POLICY_STRING_MATCH_OPERATOR_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

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

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

/**
 * Describes the enum proto.guard.policy.v1.GuardPolicyStringMatchOperator.
 */
export declare const GuardPolicyStringMatchOperatorSchema: GenEnum<GuardPolicyStringMatchOperator>;

