import { KmsCreateKeyType, KmsCreateKeyTypeEc, KmsCreateKeyTypeOct, KmsCreateKeyTypeOkp, KmsCreateKeyTypeRsa } from "../options/KmsCreateKeyOptions.js";
import { KmsJwkPrivateEc, KmsJwkPublicEc } from "./kty/ec/ecJwk.js";
import { KmsJwkPrivateOct, KmsJwkPublicOct } from "./kty/oct/octJwk.js";
import { KmsJwkPrivateOkp, KmsJwkPublicOkp } from "./kty/okp/okpJwk.js";
import { KmsJwkPrivateRsa, KmsJwkPublicRsa } from "./kty/rsa/rsaJwk.js";
import { z } from "zod";

//#region src/modules/kms/jwk/knownJwk.d.ts
declare const zKmsJwkPublicAsymmetric: z.ZodDiscriminatedUnion<"kty", [z.ZodObject<{
  kty: z.ZodLiteral<"EC">;
  crv: z.ZodEnum<["P-256", "P-384", "P-521", "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.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "EC";
  crv: "P-256" | "P-384" | "P-521" | "secp256k1";
  x: string;
  y: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: undefined;
}, {
  kty: "EC";
  crv: "P-256" | "P-384" | "P-521" | "secp256k1";
  x: string;
  y: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: undefined;
}>, 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.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "RSA";
  n: string;
  e: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: undefined;
  p?: undefined;
  q?: undefined;
  dp?: undefined;
  dq?: undefined;
  qi?: undefined;
  oth?: undefined;
}, {
  kty: "RSA";
  n: string;
  e: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: undefined;
  p?: undefined;
  q?: undefined;
  dp?: undefined;
  dq?: undefined;
  qi?: undefined;
  oth?: undefined;
}>, z.ZodObject<{
  kty: z.ZodLiteral<"OKP">;
  crv: z.ZodEnum<["X25519", "Ed25519"]>;
  x: z.ZodString;
  d: z.ZodOptional<z.ZodString>;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "OKP";
  crv: "X25519" | "Ed25519";
  x: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: string | undefined;
}, {
  kty: "OKP";
  crv: "X25519" | "Ed25519";
  x: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: string | undefined;
}>]>;
type KmsJwkPublicAsymmetric = z.output<typeof zKmsJwkPublicAsymmetric>;
declare function isJwkAsymmetric(jwk: KmsJwkPublic | KmsJwkPrivate): jwk is KmsJwkPrivateAsymmetric | KmsJwkPublicAsymmetric;
declare function assertJwkAsymmetric(jwk: KmsJwkPublic | KmsJwkPrivate, keyId?: string): asserts jwk is KmsJwkPublicAsymmetric | KmsJwkPrivateAsymmetric;
declare const zKmsJwkPublic: z.ZodDiscriminatedUnion<"kty", [z.ZodObject<{
  kty: z.ZodLiteral<"EC">;
  crv: z.ZodEnum<["P-256", "P-384", "P-521", "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.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "EC";
  crv: "P-256" | "P-384" | "P-521" | "secp256k1";
  x: string;
  y: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: undefined;
}, {
  kty: "EC";
  crv: "P-256" | "P-384" | "P-521" | "secp256k1";
  x: string;
  y: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: undefined;
}>, 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.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "RSA";
  n: string;
  e: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: undefined;
  p?: undefined;
  q?: undefined;
  dp?: undefined;
  dq?: undefined;
  qi?: undefined;
  oth?: undefined;
}, {
  kty: "RSA";
  n: string;
  e: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: undefined;
  p?: undefined;
  q?: undefined;
  dp?: undefined;
  dq?: undefined;
  qi?: undefined;
  oth?: undefined;
}>, z.ZodObject<{
  kty: z.ZodLiteral<"oct">;
  k: z.ZodOptional<z.ZodUndefined>;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "oct";
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  k?: undefined;
}, {
  kty: "oct";
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  k?: undefined;
}>, z.ZodObject<{
  kty: z.ZodLiteral<"OKP">;
  crv: z.ZodEnum<["X25519", "Ed25519"]>;
  x: z.ZodString;
  d: z.ZodOptional<z.ZodString>;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "OKP";
  crv: "X25519" | "Ed25519";
  x: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: string | undefined;
}, {
  kty: "OKP";
  crv: "X25519" | "Ed25519";
  x: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  d?: string | undefined;
}>]>;
type KmsJwkPublic = z.output<typeof zKmsJwkPublic>;
declare const zKmsJwkPrivate: z.ZodDiscriminatedUnion<"kty", [z.ZodObject<{
  d: z.ZodString;
  kty: z.ZodLiteral<"EC">;
  crv: z.ZodEnum<["P-256", "P-384", "P-521", "secp256k1"]>;
  x: z.ZodString;
  y: z.ZodString;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "EC";
  crv: "P-256" | "P-384" | "P-521" | "secp256k1";
  x: string;
  y: string;
  d: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}, {
  kty: "EC";
  crv: "P-256" | "P-384" | "P-521" | "secp256k1";
  x: string;
  y: string;
  d: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}>, z.ZodObject<{
  d: z.ZodString;
  p: z.ZodString;
  q: z.ZodString;
  dp: z.ZodString;
  dq: z.ZodString;
  qi: z.ZodString;
  oth: z.ZodOptional<z.ZodArray<z.ZodObject<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, z.ZodTypeAny, "passthrough">>, "many">>;
  kty: z.ZodLiteral<"RSA">;
  n: z.ZodString;
  e: z.ZodString;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "RSA";
  d: string;
  n: string;
  e: string;
  p: string;
  q: string;
  dp: string;
  dq: string;
  qi: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  oth?: z.objectOutputType<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, z.ZodTypeAny, "passthrough">[] | undefined;
}, {
  kty: "RSA";
  d: string;
  n: string;
  e: string;
  p: string;
  q: string;
  dp: string;
  dq: string;
  qi: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  oth?: z.objectInputType<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, z.ZodTypeAny, "passthrough">[] | undefined;
}>, z.ZodObject<{
  k: z.ZodString;
  kty: z.ZodLiteral<"oct">;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "oct";
  k: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}, {
  kty: "oct";
  k: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}>, z.ZodObject<{
  d: z.ZodString;
  kty: z.ZodLiteral<"OKP">;
  crv: z.ZodEnum<["X25519", "Ed25519"]>;
  x: z.ZodString;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "OKP";
  crv: "X25519" | "Ed25519";
  x: string;
  d: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}, {
  kty: "OKP";
  crv: "X25519" | "Ed25519";
  x: string;
  d: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}>]>;
type KmsJwkPrivate = z.output<typeof zKmsJwkPrivate>;
declare const zKmsJwkPrivateAsymmetric: z.ZodDiscriminatedUnion<"kty", [z.ZodObject<{
  d: z.ZodString;
  kty: z.ZodLiteral<"EC">;
  crv: z.ZodEnum<["P-256", "P-384", "P-521", "secp256k1"]>;
  x: z.ZodString;
  y: z.ZodString;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "EC";
  crv: "P-256" | "P-384" | "P-521" | "secp256k1";
  x: string;
  y: string;
  d: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}, {
  kty: "EC";
  crv: "P-256" | "P-384" | "P-521" | "secp256k1";
  x: string;
  y: string;
  d: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}>, z.ZodObject<{
  d: z.ZodString;
  p: z.ZodString;
  q: z.ZodString;
  dp: z.ZodString;
  dq: z.ZodString;
  qi: z.ZodString;
  oth: z.ZodOptional<z.ZodArray<z.ZodObject<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, z.ZodTypeAny, "passthrough">>, "many">>;
  kty: z.ZodLiteral<"RSA">;
  n: z.ZodString;
  e: z.ZodString;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "RSA";
  d: string;
  n: string;
  e: string;
  p: string;
  q: string;
  dp: string;
  dq: string;
  qi: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  oth?: z.objectOutputType<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, z.ZodTypeAny, "passthrough">[] | undefined;
}, {
  kty: "RSA";
  d: string;
  n: string;
  e: string;
  p: string;
  q: string;
  dp: string;
  dq: string;
  qi: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
  oth?: z.objectInputType<{
    d: z.ZodOptional<z.ZodString>;
    r: z.ZodOptional<z.ZodString>;
    t: z.ZodOptional<z.ZodString>;
  }, z.ZodTypeAny, "passthrough">[] | undefined;
}>, z.ZodObject<{
  d: z.ZodString;
  kty: z.ZodLiteral<"OKP">;
  crv: z.ZodEnum<["X25519", "Ed25519"]>;
  x: z.ZodString;
  kid: z.ZodOptional<z.ZodString>;
  alg: z.ZodOptional<z.ZodString>;
  key_ops: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodUnion<[z.ZodUnion<[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]>, "many">, string[], string[]>>;
  use: z.ZodOptional<z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"sig">, z.ZodLiteral<"enc">]>, z.ZodString]>>;
  ext: z.ZodOptional<z.ZodBoolean>;
  x5c: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
  x5t: z.ZodOptional<z.ZodString>;
  'x5t#S256': z.ZodOptional<z.ZodString>;
  x5u: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  kty: "OKP";
  crv: "X25519" | "Ed25519";
  x: string;
  d: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}, {
  kty: "OKP";
  crv: "X25519" | "Ed25519";
  x: string;
  d: string;
  kid?: string | undefined;
  alg?: string | undefined;
  key_ops?: string[] | undefined;
  use?: string | undefined;
  ext?: boolean | undefined;
  x5c?: string[] | undefined;
  x5t?: string | undefined;
  'x5t#S256'?: string | undefined;
  x5u?: string | undefined;
}>]>;
type KmsJwkPrivateAsymmetric = z.output<typeof zKmsJwkPrivateAsymmetric>;
declare function publicJwkFromPrivateJwk(privateJwk: KmsJwkPrivate | KmsJwkPublic): KmsJwkPublic;
type KmsJwkPrivateFromKmsJwkPublic<Type extends KmsCreateKeyType> = Type extends KmsCreateKeyTypeRsa ? KmsJwkPrivateRsa : Type extends KmsCreateKeyTypeOct ? KmsJwkPrivateOct : Type extends KmsCreateKeyTypeOkp ? KmsJwkPrivateOkp & {
  crv: Type['crv'];
} : Type extends KmsCreateKeyTypeEc ? KmsJwkPrivateEc & {
  crv: Type['crv'];
} : KmsJwkPrivate;
type KmsJwkPublicFromKmsJwkPrivate<Jwk extends KmsJwkPrivate> = Jwk extends KmsJwkPrivateRsa ? KmsJwkPublicRsa : Jwk extends KmsJwkPrivateOct ? KmsJwkPublicOct : Jwk extends KmsJwkPrivateOkp ? KmsJwkPublicOkp & {
  crv: Jwk['crv'];
} : Jwk extends KmsJwkPrivateEc ? KmsJwkPublicEc & {
  crv: Jwk['crv'];
} : KmsJwkPublic;
type KmsJwkPublicFromCreateType<Type extends KmsCreateKeyType> = Type extends KmsCreateKeyTypeRsa ? KmsJwkPublicRsa : Type extends KmsCreateKeyTypeOct ? KmsJwkPublicOct : Type extends KmsCreateKeyTypeOkp ? KmsJwkPublicOkp & {
  crv: Type['crv'];
} : Type extends KmsCreateKeyTypeEc ? KmsJwkPublicEc & {
  crv: Type['crv'];
} : KmsJwkPublic;
//#endregion
export { KmsJwkPrivate, KmsJwkPrivateAsymmetric, KmsJwkPrivateFromKmsJwkPublic, KmsJwkPublic, KmsJwkPublicAsymmetric, KmsJwkPublicFromCreateType, KmsJwkPublicFromKmsJwkPrivate, assertJwkAsymmetric, isJwkAsymmetric, publicJwkFromPrivateJwk };
//# sourceMappingURL=knownJwk.d.ts.map