import * as pulumi from "@pulumi/pulumi";
import * as outputs from "../types/output";
/**
 * To get more information about Snapshot, see:
 *
 * * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/snapshots)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/compute/docs/disks/create-snapshots)
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * //by name
 * const snapshot = gcp.compute.getSnapshot({
 *     name: "my-snapshot",
 * });
 * // using a filter
 * const latest_snapshot = gcp.compute.getSnapshot({
 *     filter: "name != my-snapshot",
 *     mostRecent: true,
 * });
 * ```
 */
export declare function getSnapshot(args?: GetSnapshotArgs, opts?: pulumi.InvokeOptions): Promise<GetSnapshotResult>;
/**
 * A collection of arguments for invoking getSnapshot.
 */
export interface GetSnapshotArgs {
    /**
     * A filter to retrieve the compute snapshot.
     * See [API filter parameter documentation](https://cloud.google.com/compute/docs/reference/rest/v1/snapshots/list#body.QUERY_PARAMETERS.filter) for reference.
     * If multiple compute snapshot match, either adjust the filter or specify `mostRecent`. One of `name` or `filter` must be provided.
     * If you want to use a regular expression, use the `eq` (equal) or `ne` (not equal) operator against a single un-parenthesized expression with or without quotes or against multiple parenthesized expressions. Example `sourceDisk eq '.*(.*&#47;data-disk$).*'`. More details for golang Snapshots list call filters [here](https://pkg.go.dev/google.golang.org/api/compute/v1#SnapshotsListCall.Filter).
     */
    filter?: string;
    /**
     * If `filter` is provided, ensures the most recent snapshot is returned when multiple compute snapshot match.
     *
     * - - -
     */
    mostRecent?: boolean;
    /**
     * The name of the compute snapshot. One of `name` or `filter` must be provided.
     */
    name?: string;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: string;
}
/**
 * A collection of values returned by getSnapshot.
 */
export interface GetSnapshotResult {
    readonly chainName: string;
    readonly creationTimestamp: string;
    readonly description: string;
    readonly diskSizeGb: number;
    readonly effectiveLabels: {
        [key: string]: string;
    };
    readonly filter?: string;
    readonly guestFlush: boolean;
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    readonly labelFingerprint: string;
    readonly labels: {
        [key: string]: string;
    };
    readonly licenses: string[];
    readonly mostRecent?: boolean;
    readonly name?: string;
    readonly project?: string;
    readonly pulumiLabels: {
        [key: string]: string;
    };
    readonly selfLink: string;
    readonly snapshotEncryptionKeys: outputs.compute.GetSnapshotSnapshotEncryptionKey[];
    readonly snapshotId: number;
    readonly snapshotType: string;
    readonly sourceDisk: string;
    readonly sourceDiskEncryptionKeys: outputs.compute.GetSnapshotSourceDiskEncryptionKey[];
    readonly sourceInstantSnapshot: string;
    readonly storageBytes: number;
    readonly storageLocations: string[];
    readonly zone: string;
}
/**
 * To get more information about Snapshot, see:
 *
 * * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/snapshots)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/compute/docs/disks/create-snapshots)
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * //by name
 * const snapshot = gcp.compute.getSnapshot({
 *     name: "my-snapshot",
 * });
 * // using a filter
 * const latest_snapshot = gcp.compute.getSnapshot({
 *     filter: "name != my-snapshot",
 *     mostRecent: true,
 * });
 * ```
 */
export declare function getSnapshotOutput(args?: GetSnapshotOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetSnapshotResult>;
/**
 * A collection of arguments for invoking getSnapshot.
 */
export interface GetSnapshotOutputArgs {
    /**
     * A filter to retrieve the compute snapshot.
     * See [API filter parameter documentation](https://cloud.google.com/compute/docs/reference/rest/v1/snapshots/list#body.QUERY_PARAMETERS.filter) for reference.
     * If multiple compute snapshot match, either adjust the filter or specify `mostRecent`. One of `name` or `filter` must be provided.
     * If you want to use a regular expression, use the `eq` (equal) or `ne` (not equal) operator against a single un-parenthesized expression with or without quotes or against multiple parenthesized expressions. Example `sourceDisk eq '.*(.*&#47;data-disk$).*'`. More details for golang Snapshots list call filters [here](https://pkg.go.dev/google.golang.org/api/compute/v1#SnapshotsListCall.Filter).
     */
    filter?: pulumi.Input<string>;
    /**
     * If `filter` is provided, ensures the most recent snapshot is returned when multiple compute snapshot match.
     *
     * - - -
     */
    mostRecent?: pulumi.Input<boolean>;
    /**
     * The name of the compute snapshot. One of `name` or `filter` must be provided.
     */
    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>;
}
