/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { AxiosPromise } from 'axios';
import { GoogleApis } from '../..';
import { BodyResponseCallback, GlobalOptions, MethodOptions } from '../../lib/api';
/**
 * Google Cloud Key Management Service (KMS) API
 *
 * Manages encryption for your cloud services the same way you do on-premises.
 * You can generate, use, rotate, and destroy AES256 encryption keys.
 *
 * @example
 * const google = require('googleapis');
 * const cloudkms = google.cloudkms('v1');
 *
 * @namespace cloudkms
 * @type {Function}
 * @version v1
 * @variation v1
 * @param {object=} options Options for Cloudkms
 */
export declare class Cloudkms {
    _options: GlobalOptions;
    google: GoogleApis;
    root: this;
    projects: Resource$Projects;
    constructor(options: GlobalOptions, google: GoogleApis);
    getRoot(): this;
}
/**
 * Specifies the audit configuration for a service. The configuration determines
 * which permission types are logged, and what identities, if any, are exempted
 * from logging. An AuditConfig must have one or more AuditLogConfigs.  If there
 * are AuditConfigs for both `allServices` and a specific service, the union of
 * the two AuditConfigs is used for that service: the log_types specified in
 * each AuditConfig are enabled, and the exempted_members in each AuditLogConfig
 * are exempted.  Example Policy with multiple AuditConfigs:      {
 * &quot;audit_configs&quot;: [         {           &quot;service&quot;:
 * &quot;allServices&quot;           &quot;audit_log_configs&quot;: [ {
 * &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [
 * &quot;user:foo@gmail.com&quot;               ]             },             {
 * &quot;log_type&quot;: &quot;DATA_WRITE&quot;,             },             {
 * &quot;log_type&quot;: &quot;ADMIN_READ&quot;,             }           ] }, {
 * &quot;service&quot;: &quot;fooservice.googleapis.com&quot;
 * &quot;audit_log_configs&quot;: [             { &quot;log_type&quot;:
 * &quot;DATA_READ&quot;,             },             { &quot;log_type&quot;:
 * &quot;DATA_WRITE&quot;,               &quot;exempted_members&quot;: [
 * &quot;user:bar@gmail.com&quot;               ]             }           ] } ]
 * }  For fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
 * logging. It also exempts foo@gmail.com from DATA_READ logging, and
 * bar@gmail.com from DATA_WRITE logging.
 */
export interface Schema$AuditConfig {
    /**
     * The configuration for logging of each type of permission.
     */
    auditLogConfigs: Schema$AuditLogConfig[];
    /**
     * Specifies a service that will be enabled for audit logging. For example,
     * `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a
     * special value that covers all services.
     */
    service: string;
}
/**
 * Provides the configuration for logging a type of permissions. Example:      {
 * &quot;audit_log_configs&quot;: [         {           &quot;log_type&quot;:
 * &quot;DATA_READ&quot;,           &quot;exempted_members&quot;: [
 * &quot;user:foo@gmail.com&quot;           ]         },         {
 * &quot;log_type&quot;: &quot;DATA_WRITE&quot;,         }       ]     }  This
 * enables &#39;DATA_READ&#39; and &#39;DATA_WRITE&#39; logging, while exempting
 * foo@gmail.com from DATA_READ logging.
 */
export interface Schema$AuditLogConfig {
    /**
     * Specifies the identities that do not cause logging for this type of
     * permission. Follows the same format of Binding.members.
     */
    exemptedMembers: string[];
    /**
     * The log type that this config enables.
     */
    logType: string;
}
/**
 * Associates `members` with a `role`.
 */
export interface Schema$Binding {
    /**
     * Specifies the identities requesting access for a Cloud Platform resource.
     * `members` can have the following values:  * `allUsers`: A special
     * identifier that represents anyone who is    on the internet; with or
     * without a Google account.  * `allAuthenticatedUsers`: A special identifier
     * that represents anyone    who is authenticated with a Google account or a
     * service account.  * `user:{emailid}`: An email address that represents a
     * specific Google    account. For example, `alice@gmail.com` or
     * `joe@example.com`.   * `serviceAccount:{emailid}`: An email address that
     * represents a service    account. For example,
     * `my-other-app@appspot.gserviceaccount.com`.  * `group:{emailid}`: An email
     * address that represents a Google group.    For example,
     * `admins@example.com`.   * `domain:{domain}`: A Google Apps domain name that
     * represents all the    users of that domain. For example, `google.com` or
     * `example.com`.
     */
    members: string[];
    /**
     * Role that is assigned to `members`. For example, `roles/viewer`,
     * `roles/editor`, or `roles/owner`. Required
     */
    role: string;
}
/**
 * A CryptoKey represents a logical key that can be used for cryptographic
 * operations.  A CryptoKey is made up of one or more versions, which represent
 * the actual key material used in cryptographic operations.
 */
export interface Schema$CryptoKey {
    /**
     * Output only. The time at which this CryptoKey was created.
     */
    createTime: string;
    /**
     * Labels with user-defined metadata. For more information, see [Labeling
     * Keys](/kms/docs/labeling-keys).
     */
    labels: any;
    /**
     * Output only. The resource name for this CryptoKey in the format
     * `projects/x/locations/x/keyRings/x/cryptoKeys/x.
     */
    name: string;
    /**
     * At next_rotation_time, the Key Management Service will automatically:  1.
     * Create a new version of this CryptoKey. 2. Mark the new version as primary.
     * Key rotations performed manually via CreateCryptoKeyVersion and
     * UpdateCryptoKeyPrimaryVersion do not affect next_rotation_time.
     */
    nextRotationTime: string;
    /**
     * Output only. A copy of the &quot;primary&quot; CryptoKeyVersion that will
     * be used by Encrypt when this CryptoKey is given in EncryptRequest.name. The
     * CryptoKey&#39;s primary version can be updated via
     * UpdateCryptoKeyPrimaryVersion.
     */
    primary: Schema$CryptoKeyVersion;
    /**
     * The immutable purpose of this CryptoKey. Currently, the only acceptable
     * purpose is ENCRYPT_DECRYPT.
     */
    purpose: string;
    /**
     * next_rotation_time will be advanced by this period when the service
     * automatically rotates a key. Must be at least one day.  If rotation_period
     * is set, next_rotation_time must also be set.
     */
    rotationPeriod: string;
}
/**
 * A CryptoKeyVersion represents an individual cryptographic key, and the
 * associated key material.  It can be used for cryptographic operations either
 * directly, or via its parent CryptoKey, in which case the server will choose
 * the appropriate version for the operation.  For security reasons, the raw
 * cryptographic key material represented by a CryptoKeyVersion can never be
 * viewed or exported. It can only be used to encrypt or decrypt data when an
 * authorized user or application invokes Cloud KMS.
 */
export interface Schema$CryptoKeyVersion {
    /**
     * Output only. The time at which this CryptoKeyVersion was created.
     */
    createTime: string;
    /**
     * Output only. The time this CryptoKeyVersion&#39;s key material was
     * destroyed. Only present if state is DESTROYED.
     */
    destroyEventTime: string;
    /**
     * Output only. The time this CryptoKeyVersion&#39;s key material is scheduled
     * for destruction. Only present if state is DESTROY_SCHEDULED.
     */
    destroyTime: string;
    /**
     * Output only. The resource name for this CryptoKeyVersion in the format
     * `projects/x/locations/x/keyRings/x/cryptoKeys/x/cryptoKeyVersions/x.
     */
    name: string;
    /**
     * The current state of the CryptoKeyVersion.
     */
    state: string;
}
/**
 * Request message for KeyManagementService.Decrypt.
 */
export interface Schema$DecryptRequest {
    /**
     * Optional data that must match the data originally supplied in
     * EncryptRequest.additional_authenticated_data.
     */
    additionalAuthenticatedData: string;
    /**
     * Required. The encrypted data originally returned in
     * EncryptResponse.ciphertext.
     */
    ciphertext: string;
}
/**
 * Response message for KeyManagementService.Decrypt.
 */
export interface Schema$DecryptResponse {
    /**
     * The decrypted data originally supplied in EncryptRequest.plaintext.
     */
    plaintext: string;
}
/**
 * Request message for KeyManagementService.DestroyCryptoKeyVersion.
 */
export interface Schema$DestroyCryptoKeyVersionRequest {
}
/**
 * Request message for KeyManagementService.Encrypt.
 */
export interface Schema$EncryptRequest {
    /**
     * Optional data that, if specified, must also be provided during decryption
     * through DecryptRequest.additional_authenticated_data.  Must be no larger
     * than 64KiB.
     */
    additionalAuthenticatedData: string;
    /**
     * Required. The data to encrypt. Must be no larger than 64KiB.
     */
    plaintext: string;
}
/**
 * Response message for KeyManagementService.Encrypt.
 */
export interface Schema$EncryptResponse {
    /**
     * The encrypted data.
     */
    ciphertext: string;
    /**
     * The resource name of the CryptoKeyVersion used in encryption.
     */
    name: string;
}
/**
 * A KeyRing is a toplevel logical grouping of CryptoKeys.
 */
export interface Schema$KeyRing {
    /**
     * Output only. The time at which this KeyRing was created.
     */
    createTime: string;
    /**
     * Output only. The resource name for the KeyRing in the format
     * `projects/x/locations/x/keyRings/x.
     */
    name: string;
}
/**
 * Response message for KeyManagementService.ListCryptoKeys.
 */
export interface Schema$ListCryptoKeysResponse {
    /**
     * The list of CryptoKeys.
     */
    cryptoKeys: Schema$CryptoKey[];
    /**
     * A token to retrieve next page of results. Pass this value in
     * ListCryptoKeysRequest.page_token to retrieve the next page of results.
     */
    nextPageToken: string;
    /**
     * The total number of CryptoKeys that matched the query.
     */
    totalSize: number;
}
/**
 * Response message for KeyManagementService.ListCryptoKeyVersions.
 */
export interface Schema$ListCryptoKeyVersionsResponse {
    /**
     * The list of CryptoKeyVersions.
     */
    cryptoKeyVersions: Schema$CryptoKeyVersion[];
    /**
     * A token to retrieve next page of results. Pass this value in
     * ListCryptoKeyVersionsRequest.page_token to retrieve the next page of
     * results.
     */
    nextPageToken: string;
    /**
     * The total number of CryptoKeyVersions that matched the query.
     */
    totalSize: number;
}
/**
 * Response message for KeyManagementService.ListKeyRings.
 */
export interface Schema$ListKeyRingsResponse {
    /**
     * The list of KeyRings.
     */
    keyRings: Schema$KeyRing[];
    /**
     * A token to retrieve next page of results. Pass this value in
     * ListKeyRingsRequest.page_token to retrieve the next page of results.
     */
    nextPageToken: string;
    /**
     * The total number of KeyRings that matched the query.
     */
    totalSize: number;
}
/**
 * The response message for Locations.ListLocations.
 */
export interface Schema$ListLocationsResponse {
    /**
     * A list of locations that matches the specified filter in the request.
     */
    locations: Schema$Location[];
    /**
     * The standard List next-page token.
     */
    nextPageToken: string;
}
/**
 * A resource that represents Google Cloud Platform location.
 */
export interface Schema$Location {
    /**
     * The friendly name for this location, typically a nearby city name. For
     * example, &quot;Tokyo&quot;.
     */
    displayName: string;
    /**
     * Cross-service attributes for the location. For example
     * {&quot;cloud.googleapis.com/region&quot;: &quot;us-east1&quot;}
     */
    labels: any;
    /**
     * The canonical id for this location. For example: `&quot;us-east1&quot;`.
     */
    locationId: string;
    /**
     * Service-specific metadata. For example the available capacity at the given
     * location.
     */
    metadata: any;
    /**
     * Resource name for the location, which may vary between implementations. For
     * example: `&quot;projects/example-project/locations/us-east1&quot;`
     */
    name: string;
}
/**
 * Defines an Identity and Access Management (IAM) policy. It is used to specify
 * access control policies for Cloud Platform resources.   A `Policy` consists
 * of a list of `bindings`. A `Binding` binds a list of `members` to a `role`,
 * where the members can be user accounts, Google groups, Google domains, and
 * service accounts. A `role` is a named list of permissions defined by IAM.
 * **Example**      {       &quot;bindings&quot;: [         { &quot;role&quot;:
 * &quot;roles/owner&quot;,           &quot;members&quot;: [
 * &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;,
 * &quot;domain:google.com&quot;,
 * &quot;serviceAccount:my-other-app@appspot.gserviceaccount.com&quot;, ] }, {
 * &quot;role&quot;: &quot;roles/viewer&quot;,           &quot;members&quot;:
 * [&quot;user:sean@example.com&quot;]         }       ]     }  For a
 * description of IAM and its features, see the [IAM developer&#39;s
 * guide](https://cloud.google.com/iam/docs).
 */
export interface Schema$Policy {
    /**
     * Specifies cloud audit logging configuration for this policy.
     */
    auditConfigs: Schema$AuditConfig[];
    /**
     * Associates a list of `members` to a `role`. `bindings` with no members will
     * result in an error.
     */
    bindings: Schema$Binding[];
    /**
     * `etag` is used for optimistic concurrency control as a way to help prevent
     * simultaneous updates of a policy from overwriting each other. It is
     * strongly suggested that systems make use of the `etag` in the
     * read-modify-write cycle to perform policy updates in order to avoid race
     * conditions: An `etag` is returned in the response to `getIamPolicy`, and
     * systems are expected to put that etag in the request to `setIamPolicy` to
     * ensure that their change will be applied to the same version of the policy.
     * If no `etag` is provided in the call to `setIamPolicy`, then the existing
     * policy is overwritten blindly.
     */
    etag: string;
    /**
     * Deprecated.
     */
    version: number;
}
/**
 * Request message for KeyManagementService.RestoreCryptoKeyVersion.
 */
export interface Schema$RestoreCryptoKeyVersionRequest {
}
/**
 * Request message for `SetIamPolicy` method.
 */
export interface Schema$SetIamPolicyRequest {
    /**
     * REQUIRED: The complete policy to be applied to the `resource`. The size of
     * the policy is limited to a few 10s of KB. An empty policy is a valid policy
     * but certain Cloud Platform services (such as Projects) might reject them.
     */
    policy: Schema$Policy;
    /**
     * OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
     * the fields in the mask will be modified. If no mask is provided, the
     * following default mask is used: paths: &quot;bindings, etag&quot; This
     * field is only used by Cloud IAM.
     */
    updateMask: string;
}
/**
 * Request message for `TestIamPermissions` method.
 */
export interface Schema$TestIamPermissionsRequest {
    /**
     * The set of permissions to check for the `resource`. Permissions with
     * wildcards (such as &#39;*&#39; or &#39;storage.*&#39;) are not allowed. For
     * more information see [IAM
     * Overview](https://cloud.google.com/iam/docs/overview#permissions).
     */
    permissions: string[];
}
/**
 * Response message for `TestIamPermissions` method.
 */
export interface Schema$TestIamPermissionsResponse {
    /**
     * A subset of `TestPermissionsRequest.permissions` that the caller is
     * allowed.
     */
    permissions: string[];
}
/**
 * Request message for KeyManagementService.UpdateCryptoKeyPrimaryVersion.
 */
export interface Schema$UpdateCryptoKeyPrimaryVersionRequest {
    /**
     * The id of the child CryptoKeyVersion to use as primary.
     */
    cryptoKeyVersionId: string;
}
export declare class Resource$Projects {
    root: Cloudkms;
    locations: Resource$Projects$Locations;
    constructor(root: Cloudkms);
    getRoot(): Cloudkms;
}
export declare class Resource$Projects$Locations {
    root: Cloudkms;
    keyRings: Resource$Projects$Locations$Keyrings;
    constructor(root: Cloudkms);
    getRoot(): Cloudkms;
    /**
     * cloudkms.projects.locations.get
     * @desc Gets information about a location.
     * @alias cloudkms.projects.locations.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name Resource name for the location.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$Location>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Location>, callback?: BodyResponseCallback<Schema$Location>): void;
    /**
     * cloudkms.projects.locations.list
     * @desc Lists information about the supported locations for this service.
     * @alias cloudkms.projects.locations.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.filter The standard list filter.
     * @param {string} params.name The resource that owns the locations collection, if applicable.
     * @param {integer=} params.pageSize The standard list page size.
     * @param {string=} params.pageToken The standard list page token.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    list(params?: any, options?: MethodOptions): AxiosPromise<Schema$ListLocationsResponse>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ListLocationsResponse>, callback?: BodyResponseCallback<Schema$ListLocationsResponse>): void;
}
export declare class Resource$Projects$Locations$Keyrings {
    root: Cloudkms;
    cryptoKeys: Resource$Projects$Locations$Keyrings$Cryptokeys;
    constructor(root: Cloudkms);
    getRoot(): Cloudkms;
    /**
     * cloudkms.projects.locations.keyRings.create
     * @desc Create a new KeyRing in a given Project and Location.
     * @alias cloudkms.projects.locations.keyRings.create
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.keyRingId Required. It must be unique within a location and match the regular expression `[a-zA-Z0-9_-]{1,63}`
     * @param {string} params.parent Required. The resource name of the location associated with the KeyRings, in the format `projects/x/locations/x`.
     * @param {().KeyRing} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    create(params?: any, options?: MethodOptions): AxiosPromise<Schema$KeyRing>;
    create(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$KeyRing>, callback?: BodyResponseCallback<Schema$KeyRing>): void;
    /**
     * cloudkms.projects.locations.keyRings.get
     * @desc Returns metadata for a given KeyRing.
     * @alias cloudkms.projects.locations.keyRings.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name The name of the KeyRing to get.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$KeyRing>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$KeyRing>, callback?: BodyResponseCallback<Schema$KeyRing>): void;
    /**
     * cloudkms.projects.locations.keyRings.getIamPolicy
     * @desc Gets the access control policy for a resource. Returns an empty
     * policy if the resource exists and does not have a policy set.
     * @alias cloudkms.projects.locations.keyRings.getIamPolicy
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.resource_ REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    getIamPolicy(params?: any, options?: MethodOptions): AxiosPromise<Schema$Policy>;
    getIamPolicy(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Policy>, callback?: BodyResponseCallback<Schema$Policy>): void;
    /**
     * cloudkms.projects.locations.keyRings.list
     * @desc Lists KeyRings.
     * @alias cloudkms.projects.locations.keyRings.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer=} params.pageSize Optional limit on the number of KeyRings to include in the response.  Further KeyRings can subsequently be obtained by including the ListKeyRingsResponse.next_page_token in a subsequent request.  If unspecified, the server will pick an appropriate default.
     * @param {string=} params.pageToken Optional pagination token, returned earlier via ListKeyRingsResponse.next_page_token.
     * @param {string} params.parent Required. The resource name of the location associated with the KeyRings, in the format `projects/x/locations/x`.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    list(params?: any, options?: MethodOptions): AxiosPromise<Schema$ListKeyRingsResponse>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ListKeyRingsResponse>, callback?: BodyResponseCallback<Schema$ListKeyRingsResponse>): void;
    /**
     * cloudkms.projects.locations.keyRings.setIamPolicy
     * @desc Sets the access control policy on the specified resource. Replaces
     * any existing policy.
     * @alias cloudkms.projects.locations.keyRings.setIamPolicy
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.resource_ REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.
     * @param {().SetIamPolicyRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    setIamPolicy(params?: any, options?: MethodOptions): AxiosPromise<Schema$Policy>;
    setIamPolicy(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Policy>, callback?: BodyResponseCallback<Schema$Policy>): void;
    /**
     * cloudkms.projects.locations.keyRings.testIamPermissions
     * @desc Returns permissions that a caller has on the specified resource. If
     * the resource does not exist, this will return an empty set of permissions,
     * not a NOT_FOUND error.  Note: This operation is designed to be used for
     * building permission-aware UIs and command-line tools, not for authorization
     * checking. This operation may "fail open" without warning.
     * @alias cloudkms.projects.locations.keyRings.testIamPermissions
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.resource_ REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.
     * @param {().TestIamPermissionsRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    testIamPermissions(params?: any, options?: MethodOptions): AxiosPromise<Schema$TestIamPermissionsResponse>;
    testIamPermissions(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$TestIamPermissionsResponse>, callback?: BodyResponseCallback<Schema$TestIamPermissionsResponse>): void;
}
export declare class Resource$Projects$Locations$Keyrings$Cryptokeys {
    root: Cloudkms;
    cryptoKeyVersions: Resource$Projects$Locations$Keyrings$Cryptokeys$Cryptokeyversions;
    constructor(root: Cloudkms);
    getRoot(): Cloudkms;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.create
     * @desc Create a new CryptoKey within a KeyRing.  CryptoKey.purpose is
     * required.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.create
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string=} params.cryptoKeyId Required. It must be unique within a KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}`
     * @param {string} params.parent Required. The name of the KeyRing associated with the CryptoKeys.
     * @param {().CryptoKey} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    create(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKey>;
    create(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKey>, callback?: BodyResponseCallback<Schema$CryptoKey>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.decrypt
     * @desc Decrypts data that was protected by Encrypt.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.decrypt
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name Required. The resource name of the CryptoKey to use for decryption. The server will choose the appropriate version.
     * @param {().DecryptRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    decrypt(params?: any, options?: MethodOptions): AxiosPromise<Schema$DecryptResponse>;
    decrypt(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$DecryptResponse>, callback?: BodyResponseCallback<Schema$DecryptResponse>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.encrypt
     * @desc Encrypts data, so that it can only be recovered by a call to Decrypt.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.encrypt
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name Required. The resource name of the CryptoKey or CryptoKeyVersion to use for encryption.  If a CryptoKey is specified, the server will use its primary version.
     * @param {().EncryptRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    encrypt(params?: any, options?: MethodOptions): AxiosPromise<Schema$EncryptResponse>;
    encrypt(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$EncryptResponse>, callback?: BodyResponseCallback<Schema$EncryptResponse>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.get
     * @desc Returns metadata for a given CryptoKey, as well as its primary
     * CryptoKeyVersion.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name The name of the CryptoKey to get.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKey>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKey>, callback?: BodyResponseCallback<Schema$CryptoKey>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.getIamPolicy
     * @desc Gets the access control policy for a resource. Returns an empty
     * policy if the resource exists and does not have a policy set.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.getIamPolicy
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.resource_ REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    getIamPolicy(params?: any, options?: MethodOptions): AxiosPromise<Schema$Policy>;
    getIamPolicy(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Policy>, callback?: BodyResponseCallback<Schema$Policy>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.list
     * @desc Lists CryptoKeys.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer=} params.pageSize Optional limit on the number of CryptoKeys to include in the response.  Further CryptoKeys can subsequently be obtained by including the ListCryptoKeysResponse.next_page_token in a subsequent request.  If unspecified, the server will pick an appropriate default.
     * @param {string=} params.pageToken Optional pagination token, returned earlier via ListCryptoKeysResponse.next_page_token.
     * @param {string} params.parent Required. The resource name of the KeyRing to list, in the format `projects/x/locations/x/keyRings/x`.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    list(params?: any, options?: MethodOptions): AxiosPromise<Schema$ListCryptoKeysResponse>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ListCryptoKeysResponse>, callback?: BodyResponseCallback<Schema$ListCryptoKeysResponse>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.patch
     * @desc Update a CryptoKey.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name Output only. The resource name for this CryptoKey in the format `projects/x/locations/x/keyRings/x/cryptoKeys/x`.
     * @param {string=} params.updateMask Required list of fields to be updated in this request.
     * @param {().CryptoKey} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    patch(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKey>;
    patch(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKey>, callback?: BodyResponseCallback<Schema$CryptoKey>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.setIamPolicy
     * @desc Sets the access control policy on the specified resource. Replaces
     * any existing policy.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.setIamPolicy
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.resource_ REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.
     * @param {().SetIamPolicyRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    setIamPolicy(params?: any, options?: MethodOptions): AxiosPromise<Schema$Policy>;
    setIamPolicy(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$Policy>, callback?: BodyResponseCallback<Schema$Policy>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.testIamPermissions
     * @desc Returns permissions that a caller has on the specified resource. If
     * the resource does not exist, this will return an empty set of permissions,
     * not a NOT_FOUND error.  Note: This operation is designed to be used for
     * building permission-aware UIs and command-line tools, not for authorization
     * checking. This operation may "fail open" without warning.
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.testIamPermissions
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.resource_ REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.
     * @param {().TestIamPermissionsRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    testIamPermissions(params?: any, options?: MethodOptions): AxiosPromise<Schema$TestIamPermissionsResponse>;
    testIamPermissions(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$TestIamPermissionsResponse>, callback?: BodyResponseCallback<Schema$TestIamPermissionsResponse>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.updatePrimaryVersion
     * @desc Update the version of a CryptoKey that will be used in Encrypt
     * @alias cloudkms.projects.locations.keyRings.cryptoKeys.updatePrimaryVersion
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name The resource name of the CryptoKey to update.
     * @param {().UpdateCryptoKeyPrimaryVersionRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    updatePrimaryVersion(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKey>;
    updatePrimaryVersion(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKey>, callback?: BodyResponseCallback<Schema$CryptoKey>): void;
}
export declare class Resource$Projects$Locations$Keyrings$Cryptokeys$Cryptokeyversions {
    root: Cloudkms;
    constructor(root: Cloudkms);
    getRoot(): Cloudkms;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.create
     * @desc Create a new CryptoKeyVersion in a CryptoKey.  The server will assign
     * the next sequential id. If unset, state will be set to ENABLED.
     * @alias
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.create
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.parent Required. The name of the CryptoKey associated with the CryptoKeyVersions.
     * @param {().CryptoKeyVersion} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    create(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKeyVersion>;
    create(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKeyVersion>, callback?: BodyResponseCallback<Schema$CryptoKeyVersion>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.destroy
     * @desc Schedule a CryptoKeyVersion for destruction.  Upon calling this
     * method, CryptoKeyVersion.state will be set to DESTROY_SCHEDULED and
     * destroy_time will be set to a time 24 hours in the future, at which point
     * the state will be changed to DESTROYED, and the key material will be
     * irrevocably destroyed.  Before the destroy_time is reached,
     * RestoreCryptoKeyVersion may be called to reverse the process.
     * @alias
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.destroy
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name The resource name of the CryptoKeyVersion to destroy.
     * @param {().DestroyCryptoKeyVersionRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    destroy(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKeyVersion>;
    destroy(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKeyVersion>, callback?: BodyResponseCallback<Schema$CryptoKeyVersion>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.get
     * @desc Returns metadata for a given CryptoKeyVersion.
     * @alias
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.get
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name The name of the CryptoKeyVersion to get.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    get(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKeyVersion>;
    get(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKeyVersion>, callback?: BodyResponseCallback<Schema$CryptoKeyVersion>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.list
     * @desc Lists CryptoKeyVersions.
     * @alias
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.list
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {integer=} params.pageSize Optional limit on the number of CryptoKeyVersions to include in the response. Further CryptoKeyVersions can subsequently be obtained by including the ListCryptoKeyVersionsResponse.next_page_token in a subsequent request. If unspecified, the server will pick an appropriate default.
     * @param {string=} params.pageToken Optional pagination token, returned earlier via ListCryptoKeyVersionsResponse.next_page_token.
     * @param {string} params.parent Required. The resource name of the CryptoKey to list, in the format `projects/x/locations/x/keyRings/x/cryptoKeys/x`.
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    list(params?: any, options?: MethodOptions): AxiosPromise<Schema$ListCryptoKeyVersionsResponse>;
    list(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$ListCryptoKeyVersionsResponse>, callback?: BodyResponseCallback<Schema$ListCryptoKeyVersionsResponse>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.patch
     * @desc Update a CryptoKeyVersion's metadata.  state may be changed between
     * ENABLED and DISABLED using this method. See DestroyCryptoKeyVersion and
     * RestoreCryptoKeyVersion to move between other states.
     * @alias
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.patch
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name Output only. The resource name for this CryptoKeyVersion in the format `projects/x/locations/x/keyRings/x/cryptoKeys/x/cryptoKeyVersions/x`.
     * @param {string=} params.updateMask Required list of fields to be updated in this request.
     * @param {().CryptoKeyVersion} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    patch(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKeyVersion>;
    patch(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKeyVersion>, callback?: BodyResponseCallback<Schema$CryptoKeyVersion>): void;
    /**
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.restore
     * @desc Restore a CryptoKeyVersion in the DESTROY_SCHEDULED, state.  Upon
     * restoration of the CryptoKeyVersion, state will be set to DISABLED, and
     * destroy_time will be cleared.
     * @alias
     * cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.restore
     * @memberOf! ()
     *
     * @param {object} params Parameters for request
     * @param {string} params.name The resource name of the CryptoKeyVersion to restore.
     * @param {().RestoreCryptoKeyVersionRequest} params.resource Request body data
     * @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
     * @param {callback} callback The callback that handles the response.
     * @return {object} Request object
     */
    restore(params?: any, options?: MethodOptions): AxiosPromise<Schema$CryptoKeyVersion>;
    restore(params?: any, options?: MethodOptions | BodyResponseCallback<Schema$CryptoKeyVersion>, callback?: BodyResponseCallback<Schema$CryptoKeyVersion>): void;
}
