import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Creates a Google Cloud Bigtable table inside an instance. For more information see
 * [the official documentation](https://cloud.google.com/bigtable/) and
 * [API](https://cloud.google.com/bigtable/docs/go/reference).
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const instance = new gcp.bigtable.Instance("instance", {
 *     name: "tf-instance",
 *     clusters: [{
 *         clusterId: "tf-instance-cluster",
 *         zone: "us-central1-b",
 *         numNodes: 3,
 *         storageType: "HDD",
 *     }],
 * });
 * const table = new gcp.bigtable.Table("table", {
 *     name: "tf-table",
 *     instanceName: instance.name,
 *     splitKeys: [
 *         "a",
 *         "b",
 *         "c",
 *     ],
 *     columnFamilies: [
 *         {
 *             family: "family-first",
 *         },
 *         {
 *             family: "family-second",
 *             type: "intsum",
 *         },
 *         {
 *             family: "family-third",
 *             type: `        {
 * \\t\\t\\t\\t\\t\\"aggregateType\\": {
 * \\t\\t\\t\\t\\t\\t\\"max\\": {},
 * \\t\\t\\t\\t\\t\\t\\"inputType\\": {
 * \\t\\t\\t\\t\\t\\t\\t\\"int64Type\\": {
 * \\t\\t\\t\\t\\t\\t\\t\\t\\"encoding\\": {
 * \\t\\t\\t\\t\\t\\t\\t\\t\\t\\"bigEndianBytes\\": {}
 * \\t\\t\\t\\t\\t\\t\\t\\t}
 * \\t\\t\\t\\t\\t\\t\\t}
 * \\t\\t\\t\\t\\t\\t}
 * \\t\\t\\t\\t\\t}
 * \\t\\t\\t\\t}
 * `,
 *         },
 *     ],
 *     changeStreamRetention: "24h0m0s",
 *     automatedBackupPolicy: {
 *         retentionPeriod: "72h0m0s",
 *         frequency: "24h0m0s",
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * -> **Fields affected by import** The following fields can't be read and will show diffs if set in config when imported: `split_keys`
 *
 * Bigtable Tables can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/instances/{{instance_name}}/tables/{{name}}`
 *
 * * `{{project}}/{{instance_name}}/{{name}}`
 *
 * * `{{instance_name}}/{{name}}`
 *
 * When using the `pulumi import` command, Bigtable Tables can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:bigtable/table:Table default projects/{{project}}/instances/{{instance_name}}/tables/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:bigtable/table:Table default {{project}}/{{instance_name}}/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:bigtable/table:Table default {{instance_name}}/{{name}}
 * ```
 */
export declare class Table extends pulumi.CustomResource {
    /**
     * Get an existing Table resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: TableState, opts?: pulumi.CustomResourceOptions): Table;
    /**
     * Returns true if the given object is an instance of Table.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Table;
    /**
     * Defines an automated backup policy for a table, specified by Retention Period and Frequency. To _create_ a table with automated backup disabled, either omit the automatedBackupPolicy argument, or set both Retention Period and Frequency properties to "0". To disable automated backup on an _existing_ table that has automated backup enabled, set _both_ Retention Period and Frequency properties to "0". When updating an existing table, to modify the Retention Period or Frequency properties of the resource's automated backup policy, set the respective property to a non-zero value. If the automatedBackupPolicy argument is not provided in the configuration on update, the resource's automated backup policy will _not_ be modified.
     *
     * -----
     */
    readonly automatedBackupPolicy: pulumi.Output<outputs.bigtable.TableAutomatedBackupPolicy>;
    /**
     * Duration to retain change stream data for the table. Set to 0 to disable. Must be between 1 and 7 days.
     */
    readonly changeStreamRetention: pulumi.Output<string>;
    /**
     * A group of columns within a table which share a common configuration. This can be specified multiple times. Structure is documented below.
     */
    readonly columnFamilies: pulumi.Output<outputs.bigtable.TableColumnFamily[] | undefined>;
    /**
     * A field to make the table protected against data loss i.e. when set to PROTECTED, deleting the table, the column families in the table, and the instance containing the table would be prohibited. If not provided, deletion protection will be set to UNPROTECTED.
     */
    readonly deletionProtection: pulumi.Output<string>;
    /**
     * The name of the Bigtable instance.
     */
    readonly instanceName: pulumi.Output<string>;
    /**
     * The name of the table. Must be 1-50 characters and must only contain hyphens, underscores, periods, letters and numbers.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The ID of the project in which the resource belongs. If it
     * is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * Defines the row key schema of a table. To create or update a table with a row key schema, specify this argument.
     * 					Note that in-place update is not supported, and any in-place modification to the schema will lead to failure.
     * 				    To update a schema, please clear it (by omitting the field), and update the resource again with a new schema.\n
     *
     * 					The schema must be a valid JSON encoded string representing a Type's struct protobuf message. Note that for bytes sequence (like delimited_bytes.delimiter)
     * 					the delimiter must be base64 encoded. For example, if you want to set a delimiter to a single byte character "#", it should be set to "Iw==", which is the base64 encoding of the byte sequence "#".
     */
    readonly rowKeySchema: pulumi.Output<string | undefined>;
    /**
     * A list of predefined keys to split the table on.
     * !> **Warning:** Modifying the `splitKeys` of an existing table will cause the provider
     * to delete/recreate the entire `gcp.bigtable.Table` resource.
     */
    readonly splitKeys: pulumi.Output<string[] | undefined>;
    /**
     * Create a Table resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: TableArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Table resources.
 */
export interface TableState {
    /**
     * Defines an automated backup policy for a table, specified by Retention Period and Frequency. To _create_ a table with automated backup disabled, either omit the automatedBackupPolicy argument, or set both Retention Period and Frequency properties to "0". To disable automated backup on an _existing_ table that has automated backup enabled, set _both_ Retention Period and Frequency properties to "0". When updating an existing table, to modify the Retention Period or Frequency properties of the resource's automated backup policy, set the respective property to a non-zero value. If the automatedBackupPolicy argument is not provided in the configuration on update, the resource's automated backup policy will _not_ be modified.
     *
     * -----
     */
    automatedBackupPolicy?: pulumi.Input<inputs.bigtable.TableAutomatedBackupPolicy>;
    /**
     * Duration to retain change stream data for the table. Set to 0 to disable. Must be between 1 and 7 days.
     */
    changeStreamRetention?: pulumi.Input<string>;
    /**
     * A group of columns within a table which share a common configuration. This can be specified multiple times. Structure is documented below.
     */
    columnFamilies?: pulumi.Input<pulumi.Input<inputs.bigtable.TableColumnFamily>[]>;
    /**
     * A field to make the table protected against data loss i.e. when set to PROTECTED, deleting the table, the column families in the table, and the instance containing the table would be prohibited. If not provided, deletion protection will be set to UNPROTECTED.
     */
    deletionProtection?: pulumi.Input<string>;
    /**
     * The name of the Bigtable instance.
     */
    instanceName?: pulumi.Input<string>;
    /**
     * The name of the table. Must be 1-50 characters and must only contain hyphens, underscores, periods, letters and numbers.
     */
    name?: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs. If it
     * is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * Defines the row key schema of a table. To create or update a table with a row key schema, specify this argument.
     * 					Note that in-place update is not supported, and any in-place modification to the schema will lead to failure.
     * 				    To update a schema, please clear it (by omitting the field), and update the resource again with a new schema.\n
     *
     * 					The schema must be a valid JSON encoded string representing a Type's struct protobuf message. Note that for bytes sequence (like delimited_bytes.delimiter)
     * 					the delimiter must be base64 encoded. For example, if you want to set a delimiter to a single byte character "#", it should be set to "Iw==", which is the base64 encoding of the byte sequence "#".
     */
    rowKeySchema?: pulumi.Input<string>;
    /**
     * A list of predefined keys to split the table on.
     * !> **Warning:** Modifying the `splitKeys` of an existing table will cause the provider
     * to delete/recreate the entire `gcp.bigtable.Table` resource.
     */
    splitKeys?: pulumi.Input<pulumi.Input<string>[]>;
}
/**
 * The set of arguments for constructing a Table resource.
 */
export interface TableArgs {
    /**
     * Defines an automated backup policy for a table, specified by Retention Period and Frequency. To _create_ a table with automated backup disabled, either omit the automatedBackupPolicy argument, or set both Retention Period and Frequency properties to "0". To disable automated backup on an _existing_ table that has automated backup enabled, set _both_ Retention Period and Frequency properties to "0". When updating an existing table, to modify the Retention Period or Frequency properties of the resource's automated backup policy, set the respective property to a non-zero value. If the automatedBackupPolicy argument is not provided in the configuration on update, the resource's automated backup policy will _not_ be modified.
     *
     * -----
     */
    automatedBackupPolicy?: pulumi.Input<inputs.bigtable.TableAutomatedBackupPolicy>;
    /**
     * Duration to retain change stream data for the table. Set to 0 to disable. Must be between 1 and 7 days.
     */
    changeStreamRetention?: pulumi.Input<string>;
    /**
     * A group of columns within a table which share a common configuration. This can be specified multiple times. Structure is documented below.
     */
    columnFamilies?: pulumi.Input<pulumi.Input<inputs.bigtable.TableColumnFamily>[]>;
    /**
     * A field to make the table protected against data loss i.e. when set to PROTECTED, deleting the table, the column families in the table, and the instance containing the table would be prohibited. If not provided, deletion protection will be set to UNPROTECTED.
     */
    deletionProtection?: pulumi.Input<string>;
    /**
     * The name of the Bigtable instance.
     */
    instanceName: pulumi.Input<string>;
    /**
     * The name of the table. Must be 1-50 characters and must only contain hyphens, underscores, periods, letters and numbers.
     */
    name?: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs. If it
     * is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * Defines the row key schema of a table. To create or update a table with a row key schema, specify this argument.
     * 					Note that in-place update is not supported, and any in-place modification to the schema will lead to failure.
     * 				    To update a schema, please clear it (by omitting the field), and update the resource again with a new schema.\n
     *
     * 					The schema must be a valid JSON encoded string representing a Type's struct protobuf message. Note that for bytes sequence (like delimited_bytes.delimiter)
     * 					the delimiter must be base64 encoded. For example, if you want to set a delimiter to a single byte character "#", it should be set to "Iw==", which is the base64 encoding of the byte sequence "#".
     */
    rowKeySchema?: pulumi.Input<string>;
    /**
     * A list of predefined keys to split the table on.
     * !> **Warning:** Modifying the `splitKeys` of an existing table will cause the provider
     * to delete/recreate the entire `gcp.bigtable.Table` resource.
     */
    splitKeys?: pulumi.Input<pulumi.Input<string>[]>;
}
