import { AnyUint8Array } from "../../../types.js";
import { KmsJwkPublic } from "../jwk/knownJwk.js";
import { z } from "zod";

//#region src/modules/kms/options/KmsVerifyOptions.d.ts
declare const zKmsVerifyOptions: z.ZodObject<{
  key: z.ZodUnion<readonly [z.ZodObject<{
    keyId: z.ZodString;
    publicJwk: z.ZodOptional<z.ZodNever>;
  }, z.core.$strip>, z.ZodObject<{
    publicJwk: z.ZodDiscriminatedUnion<[z.ZodObject<{
      kty: z.ZodLiteral<"EC">;
      crv: z.ZodEnum<{
        "P-256": "P-256";
        "P-384": "P-384";
        "P-521": "P-521";
        secp256k1: "secp256k1";
      }>;
      x: z.ZodString;
      y: z.ZodString;
      d: z.ZodOptional<z.ZodUndefined>;
      kid: z.ZodOptional<z.ZodString>;
      alg: z.ZodOptional<z.ZodString>;
      key_ops: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"sign">, z.ZodLiteral<"verify">, z.ZodLiteral<"encrypt">, z.ZodLiteral<"decrypt">, z.ZodLiteral<"wrapKey">, z.ZodLiteral<"unwrapKey">, z.ZodLiteral<"deriveKey">, z.ZodLiteral<"deriveBits">]>, z.ZodString]>>>;
      use: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
      ext: z.ZodOptional<z.ZodBoolean>;
      x5c: z.ZodOptional<z.ZodArray<z.ZodString>>;
      x5t: z.ZodOptional<z.ZodString>;
      'x5t#S256': z.ZodOptional<z.ZodString>;
      x5u: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>, z.ZodObject<{
      kty: z.ZodLiteral<"RSA">;
      n: z.ZodString;
      e: z.ZodString;
      d: z.ZodOptional<z.ZodUndefined>;
      p: z.ZodOptional<z.ZodUndefined>;
      q: z.ZodOptional<z.ZodUndefined>;
      dp: z.ZodOptional<z.ZodUndefined>;
      dq: z.ZodOptional<z.ZodUndefined>;
      qi: z.ZodOptional<z.ZodUndefined>;
      oth: z.ZodOptional<z.ZodUndefined>;
      kid: z.ZodOptional<z.ZodString>;
      alg: z.ZodOptional<z.ZodString>;
      key_ops: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"sign">, z.ZodLiteral<"verify">, z.ZodLiteral<"encrypt">, z.ZodLiteral<"decrypt">, z.ZodLiteral<"wrapKey">, z.ZodLiteral<"unwrapKey">, z.ZodLiteral<"deriveKey">, z.ZodLiteral<"deriveBits">]>, z.ZodString]>>>;
      use: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
      ext: z.ZodOptional<z.ZodBoolean>;
      x5c: z.ZodOptional<z.ZodArray<z.ZodString>>;
      x5t: z.ZodOptional<z.ZodString>;
      'x5t#S256': z.ZodOptional<z.ZodString>;
      x5u: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>, z.ZodObject<{
      kty: z.ZodLiteral<"OKP">;
      crv: z.ZodEnum<{
        Ed25519: "Ed25519";
        X25519: "X25519";
      }>;
      x: z.ZodString;
      d: z.ZodOptional<z.ZodString>;
      kid: z.ZodOptional<z.ZodString>;
      alg: z.ZodOptional<z.ZodString>;
      key_ops: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"sign">, z.ZodLiteral<"verify">, z.ZodLiteral<"encrypt">, z.ZodLiteral<"decrypt">, z.ZodLiteral<"wrapKey">, z.ZodLiteral<"unwrapKey">, z.ZodLiteral<"deriveKey">, z.ZodLiteral<"deriveBits">]>, z.ZodString]>>>;
      use: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
      ext: z.ZodOptional<z.ZodBoolean>;
      x5c: z.ZodOptional<z.ZodArray<z.ZodString>>;
      x5t: z.ZodOptional<z.ZodString>;
      'x5t#S256': z.ZodOptional<z.ZodString>;
      x5u: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>], "kty">;
    keyId: z.ZodOptional<z.ZodNever>;
  }, z.core.$strip>]>;
  algorithm: z.ZodEnum<{
    HS256: "HS256";
    HS384: "HS384";
    HS512: "HS512";
    RS256: "RS256";
    RS384: "RS384";
    RS512: "RS512";
    ES256: "ES256";
    ES384: "ES384";
    ES512: "ES512";
    PS256: "PS256";
    PS384: "PS384";
    PS512: "PS512";
    EdDSA: "EdDSA";
    Ed25519: "Ed25519";
    ES256K: "ES256K";
  }>;
  data: z.ZodCustom<AnyUint8Array, AnyUint8Array>;
  signature: z.ZodCustom<AnyUint8Array, AnyUint8Array>;
}, z.core.$strip>;
type KmsVerifyOptions = z.output<typeof zKmsVerifyOptions>;
type KmsVerifyReturn = {
  verified: true;
  publicJwk: KmsJwkPublic;
} | {
  verified: false;
};
//#endregion
export { KmsVerifyOptions, KmsVerifyReturn };
//# sourceMappingURL=KmsVerifyOptions.d.ts.map