import { AnyUint8Array, Uint8ArrayBuffer } from "../../../types.js";
import { z } from "zod";

//#region src/modules/kms/options/KmsEncryptOptions.d.ts
declare const zKmsEncryptDataEncryptionAesGcm: z.ZodObject<{
  algorithm: z.ZodEnum<{
    A128GCM: "A128GCM";
    A192GCM: "A192GCM";
    A256GCM: "A256GCM";
  }>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  aad: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
}, z.core.$strip>;
type KmsEncryptDataEncryptionAesGcm = z.output<typeof zKmsEncryptDataEncryptionAesGcm>;
declare const zKmsEncryptDataEncryptionAesCbc: z.ZodObject<{
  algorithm: z.ZodEnum<{
    A128CBC: "A128CBC";
    A256CBC: "A256CBC";
  }>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
}, z.core.$strip>;
type KmsEncryptDataEncryptionAesCbc = z.output<typeof zKmsEncryptDataEncryptionAesCbc>;
declare const zKmsEncryptDataEncryptionC20p: z.ZodObject<{
  algorithm: z.ZodEnum<{
    C20P: "C20P";
    XC20P: "XC20P";
  }>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  aad: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
}, z.core.$strip>;
type KmsEncryptDataEncryptionX20c = z.output<typeof zKmsEncryptDataEncryptionC20p>;
declare const zKmsEncryptDataEncryption: z.ZodDiscriminatedUnion<[z.ZodObject<{
  algorithm: z.ZodEnum<{
    A128CBC: "A128CBC";
    A256CBC: "A256CBC";
  }>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
}, z.core.$strip>, z.ZodObject<{
  algorithm: z.ZodEnum<{
    "A128CBC-HS256": "A128CBC-HS256";
    "A192CBC-HS384": "A192CBC-HS384";
    "A256CBC-HS512": "A256CBC-HS512";
  }>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  aad: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
}, z.core.$strip>, z.ZodObject<{
  algorithm: z.ZodEnum<{
    A128GCM: "A128GCM";
    A192GCM: "A192GCM";
    A256GCM: "A256GCM";
  }>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  aad: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
}, z.core.$strip>, z.ZodObject<{
  algorithm: z.ZodEnum<{
    C20P: "C20P";
    XC20P: "XC20P";
  }>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  aad: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
}, z.core.$strip>, z.ZodObject<{
  algorithm: z.ZodEnum<{
    "XSALSA20-POLY1305": "XSALSA20-POLY1305";
  }>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
}, z.core.$strip>], "algorithm">;
type KmsEncryptDataEncryption = z.output<typeof zKmsEncryptDataEncryption>;
declare const zKmsEncryptOptions: z.ZodObject<{
  key: z.ZodUnion<readonly [z.ZodObject<{
    keyId: z.ZodString;
    privateJwk: z.ZodOptional<z.ZodNever>;
    keyAgreement: z.ZodOptional<z.ZodNever>;
  }, z.core.$strip>, z.ZodObject<{
    privateJwk: z.ZodObject<{
      k: z.ZodString;
      kty: z.ZodLiteral<"oct">;
      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>;
    keyId: z.ZodOptional<z.ZodNever>;
    keyAgreement: z.ZodOptional<z.ZodNever>;
  }, z.core.$strip>, z.ZodObject<{
    keyAgreement: z.ZodDiscriminatedUnion<[z.ZodObject<{
      keyId: z.ZodString;
      algorithm: z.ZodLiteral<"ECDH-ES">;
      externalPublicJwk: z.ZodUnion<readonly [z.ZodObject<{
        kty: z.ZodLiteral<"OKP">;
        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>;
        crv: z.ZodEnum<{
          X25519: "X25519";
        }>;
      }, z.core.$strip>, z.ZodObject<{
        kty: z.ZodLiteral<"EC">;
        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>;
        crv: z.ZodEnum<{
          "P-256": "P-256";
          "P-384": "P-384";
          "P-521": "P-521";
          secp256k1: "secp256k1";
        }>;
      }, z.core.$strip>]>;
      apu: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
      apv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
    }, z.core.$strip>, z.ZodObject<{
      keyId: z.ZodString;
      algorithm: z.ZodEnum<{
        "ECDH-ES+A128KW": "ECDH-ES+A128KW";
        "ECDH-ES+A192KW": "ECDH-ES+A192KW";
        "ECDH-ES+A256KW": "ECDH-ES+A256KW";
      }>;
      externalPublicJwk: z.ZodUnion<readonly [z.ZodObject<{
        kty: z.ZodLiteral<"OKP">;
        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>;
        crv: z.ZodEnum<{
          X25519: "X25519";
        }>;
      }, z.core.$strip>, z.ZodObject<{
        kty: z.ZodLiteral<"EC">;
        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>;
        crv: z.ZodEnum<{
          "P-256": "P-256";
          "P-384": "P-384";
          "P-521": "P-521";
          secp256k1: "secp256k1";
        }>;
      }, z.core.$strip>]>;
      apu: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
      apv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
    }, z.core.$strip>, z.ZodObject<{
      keyId: z.ZodOptional<z.ZodString>;
      algorithm: z.ZodLiteral<"ECDH-HSALSA20">;
      externalPublicJwk: z.ZodObject<{
        kty: z.ZodLiteral<"OKP">;
        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>;
        crv: z.ZodEnum<{
          X25519: "X25519";
        }>;
      }, z.core.$strip>;
    }, z.core.$strip>], "algorithm">;
    keyId: z.ZodOptional<z.ZodNever>;
    privateJwk: z.ZodOptional<z.ZodNever>;
  }, z.core.$strip>]>;
  encryption: z.ZodDiscriminatedUnion<[z.ZodObject<{
    algorithm: z.ZodEnum<{
      A128CBC: "A128CBC";
      A256CBC: "A256CBC";
    }>;
    iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  }, z.core.$strip>, z.ZodObject<{
    algorithm: z.ZodEnum<{
      "A128CBC-HS256": "A128CBC-HS256";
      "A192CBC-HS384": "A192CBC-HS384";
      "A256CBC-HS512": "A256CBC-HS512";
    }>;
    iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
    aad: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  }, z.core.$strip>, z.ZodObject<{
    algorithm: z.ZodEnum<{
      A128GCM: "A128GCM";
      A192GCM: "A192GCM";
      A256GCM: "A256GCM";
    }>;
    iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
    aad: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  }, z.core.$strip>, z.ZodObject<{
    algorithm: z.ZodEnum<{
      C20P: "C20P";
      XC20P: "XC20P";
    }>;
    iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
    aad: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  }, z.core.$strip>, z.ZodObject<{
    algorithm: z.ZodEnum<{
      "XSALSA20-POLY1305": "XSALSA20-POLY1305";
    }>;
    iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  }, z.core.$strip>], "algorithm">;
  data: z.ZodCustom<AnyUint8Array, AnyUint8Array>;
}, z.core.$strip>;
type KmsEncryptOptions = z.output<typeof zKmsEncryptOptions>;
interface KmsEncryptReturn {
  /**
   * The encrypted data, also known as "ciphertext" in JWE
   */
  encrypted: Uint8ArrayBuffer;
  /**
   * Optional authentication tag
   */
  tag?: Uint8ArrayBuffer;
  /**
   * The initialization vector. For algorithms where the iv is required
   * and not provided, this will contain the auto-generated value.
   */
  iv?: AnyUint8Array;
  /**
   * The encrypted content encryption key, if key wrapping was used
   */
  encryptedKey?: KmsEncryptedKey;
}
declare const zKmsEncryptedKey: z.ZodObject<{
  tag: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  iv: z.ZodOptional<z.ZodCustom<AnyUint8Array, AnyUint8Array>>;
  encrypted: z.ZodCustom<AnyUint8Array, AnyUint8Array>;
}, z.core.$strip>;
/**
 * An encrypted content encryption key (CEK).
 */
type KmsEncryptedKey = z.infer<typeof zKmsEncryptedKey>;
//#endregion
export { KmsEncryptDataEncryption, KmsEncryptDataEncryptionAesCbc, KmsEncryptDataEncryptionAesGcm, KmsEncryptDataEncryptionX20c, KmsEncryptOptions, KmsEncryptReturn, KmsEncryptedKey };
//# sourceMappingURL=KmsEncryptOptions.d.ts.map