import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Describes a Cloud Asset Inventory feed used to to listen to asset updates.
 *
 * To get more information about FolderFeed, see:
 *
 * * [API documentation](https://cloud.google.com/asset-inventory/docs/reference/rest/)
 * * How-to Guides
 *     * [Official Documentation](https://cloud.google.com/asset-inventory/docs)
 *
 * ## Example Usage
 *
 * ### Cloud Asset Folder Feed
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * // The topic where the resource change notifications will be sent.
 * const feedOutput = new gcp.pubsub.Topic("feed_output", {
 *     project: "my-project-name",
 *     name: "network-updates",
 * });
 * // The folder that will be monitored for resource updates.
 * const myFolder = new gcp.organizations.Folder("my_folder", {
 *     displayName: "Networking",
 *     parent: "organizations/123456789",
 *     deletionProtection: false,
 * });
 * // Create a feed that sends notifications about network resource updates under a
 * // particular folder.
 * const folderFeed = new gcp.cloudasset.FolderFeed("folder_feed", {
 *     billingProject: "my-project-name",
 *     folder: myFolder.folderId,
 *     feedId: "network-updates",
 *     contentType: "RESOURCE",
 *     assetTypes: [
 *         "compute.googleapis.com/Subnetwork",
 *         "compute.googleapis.com/Network",
 *     ],
 *     feedOutputConfig: {
 *         pubsubDestination: {
 *             topic: feedOutput.id,
 *         },
 *     },
 *     condition: {
 *         expression: `!temporal_asset.deleted &&
 * temporal_asset.prior_asset_state == google.cloud.asset.v1.TemporalAsset.PriorAssetState.DOES_NOT_EXIST
 * `,
 *         title: "created",
 *         description: "Send notifications on creation events",
 *     },
 * });
 * // Find the project number of the project whose identity will be used for sending
 * // the asset change notifications.
 * const project = gcp.organizations.getProject({
 *     projectId: "my-project-name",
 * });
 * ```
 *
 * ## Import
 *
 * FolderFeed can be imported using any of these accepted formats:
 *
 * * `folders/{{folder_id}}/feeds/{{name}}`
 * * `{{folder_id}}/{{name}}`
 *
 * When using the `pulumi import` command, FolderFeed can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:cloudasset/folderFeed:FolderFeed default folders/{{folder_id}}/feeds/{{name}}
 * $ pulumi import gcp:cloudasset/folderFeed:FolderFeed default {{folder_id}}/{{name}}
 * ```
 */
export declare class FolderFeed extends pulumi.CustomResource {
    /**
     * Get an existing FolderFeed 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?: FolderFeedState, opts?: pulumi.CustomResourceOptions): FolderFeed;
    /**
     * Returns true if the given object is an instance of FolderFeed.  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 FolderFeed;
    /**
     * A list of the full names of the assets to receive updates. You must specify either or both of
     * assetNames and assetTypes. Only asset updates matching specified assetNames and assetTypes are
     * exported to the feed. For example: //compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1.
     * See https://cloud.google.com/apis/design/resourceNames#fullResourceName for more info.
     */
    readonly assetNames: pulumi.Output<string[] | undefined>;
    /**
     * A list of types of the assets to receive updates. You must specify either or both of assetNames
     * and assetTypes. Only asset updates matching specified assetNames and assetTypes are exported to
     * the feed. For example: "compute.googleapis.com/Disk"
     * See https://cloud.google.com/asset-inventory/docs/supported-asset-types for a list of all
     * supported asset types.
     */
    readonly assetTypes: pulumi.Output<string[] | undefined>;
    /**
     * The project whose identity will be used when sending messages to the
     * destination pubsub topic. It also specifies the project for API
     * enablement check, quota, and billing.
     */
    readonly billingProject: pulumi.Output<string>;
    /**
     * A condition which determines whether an asset update should be published. If specified, an asset
     * will be returned only when the expression evaluates to true. When set, expression field
     * must be a valid CEL expression on a TemporalAsset with name temporal_asset. Example: a Feed with
     * expression "temporal_asset.deleted == true" will only publish Asset deletions. Other fields of
     * condition are optional.
     * Structure is documented below.
     */
    readonly condition: pulumi.Output<outputs.cloudasset.FolderFeedCondition | undefined>;
    /**
     * Asset content type. If not specified, no content but the asset name and type will be returned.
     * Possible values are: `CONTENT_TYPE_UNSPECIFIED`, `RESOURCE`, `IAM_POLICY`, `ORG_POLICY`, `OS_INVENTORY`, `ACCESS_POLICY`.
     */
    readonly contentType: pulumi.Output<string | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    readonly deletionPolicy: pulumi.Output<string>;
    /**
     * This is the client-assigned asset feed identifier and it needs to be unique under a specific parent.
     */
    readonly feedId: pulumi.Output<string>;
    /**
     * Output configuration for asset feed destination.
     * Structure is documented below.
     */
    readonly feedOutputConfig: pulumi.Output<outputs.cloudasset.FolderFeedFeedOutputConfig>;
    /**
     * The folder this feed should be created in.
     */
    readonly folder: pulumi.Output<string>;
    /**
     * The ID of the folder where this feed has been created. Both [FOLDER_NUMBER]
     * and folders/[FOLDER_NUMBER] are accepted.
     */
    readonly folderId: pulumi.Output<string>;
    /**
     * The format will be folders/{folder_number}/feeds/{client-assigned_feed_identifier}.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Create a FolderFeed 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: FolderFeedArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering FolderFeed resources.
 */
export interface FolderFeedState {
    /**
     * A list of the full names of the assets to receive updates. You must specify either or both of
     * assetNames and assetTypes. Only asset updates matching specified assetNames and assetTypes are
     * exported to the feed. For example: //compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1.
     * See https://cloud.google.com/apis/design/resourceNames#fullResourceName for more info.
     */
    assetNames?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * A list of types of the assets to receive updates. You must specify either or both of assetNames
     * and assetTypes. Only asset updates matching specified assetNames and assetTypes are exported to
     * the feed. For example: "compute.googleapis.com/Disk"
     * See https://cloud.google.com/asset-inventory/docs/supported-asset-types for a list of all
     * supported asset types.
     */
    assetTypes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The project whose identity will be used when sending messages to the
     * destination pubsub topic. It also specifies the project for API
     * enablement check, quota, and billing.
     */
    billingProject?: pulumi.Input<string | undefined>;
    /**
     * A condition which determines whether an asset update should be published. If specified, an asset
     * will be returned only when the expression evaluates to true. When set, expression field
     * must be a valid CEL expression on a TemporalAsset with name temporal_asset. Example: a Feed with
     * expression "temporal_asset.deleted == true" will only publish Asset deletions. Other fields of
     * condition are optional.
     * Structure is documented below.
     */
    condition?: pulumi.Input<inputs.cloudasset.FolderFeedCondition | undefined>;
    /**
     * Asset content type. If not specified, no content but the asset name and type will be returned.
     * Possible values are: `CONTENT_TYPE_UNSPECIFIED`, `RESOURCE`, `IAM_POLICY`, `ORG_POLICY`, `OS_INVENTORY`, `ACCESS_POLICY`.
     */
    contentType?: pulumi.Input<string | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * This is the client-assigned asset feed identifier and it needs to be unique under a specific parent.
     */
    feedId?: pulumi.Input<string | undefined>;
    /**
     * Output configuration for asset feed destination.
     * Structure is documented below.
     */
    feedOutputConfig?: pulumi.Input<inputs.cloudasset.FolderFeedFeedOutputConfig | undefined>;
    /**
     * The folder this feed should be created in.
     */
    folder?: pulumi.Input<string | undefined>;
    /**
     * The ID of the folder where this feed has been created. Both [FOLDER_NUMBER]
     * and folders/[FOLDER_NUMBER] are accepted.
     */
    folderId?: pulumi.Input<string | undefined>;
    /**
     * The format will be folders/{folder_number}/feeds/{client-assigned_feed_identifier}.
     */
    name?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a FolderFeed resource.
 */
export interface FolderFeedArgs {
    /**
     * A list of the full names of the assets to receive updates. You must specify either or both of
     * assetNames and assetTypes. Only asset updates matching specified assetNames and assetTypes are
     * exported to the feed. For example: //compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1.
     * See https://cloud.google.com/apis/design/resourceNames#fullResourceName for more info.
     */
    assetNames?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * A list of types of the assets to receive updates. You must specify either or both of assetNames
     * and assetTypes. Only asset updates matching specified assetNames and assetTypes are exported to
     * the feed. For example: "compute.googleapis.com/Disk"
     * See https://cloud.google.com/asset-inventory/docs/supported-asset-types for a list of all
     * supported asset types.
     */
    assetTypes?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The project whose identity will be used when sending messages to the
     * destination pubsub topic. It also specifies the project for API
     * enablement check, quota, and billing.
     */
    billingProject: pulumi.Input<string>;
    /**
     * A condition which determines whether an asset update should be published. If specified, an asset
     * will be returned only when the expression evaluates to true. When set, expression field
     * must be a valid CEL expression on a TemporalAsset with name temporal_asset. Example: a Feed with
     * expression "temporal_asset.deleted == true" will only publish Asset deletions. Other fields of
     * condition are optional.
     * Structure is documented below.
     */
    condition?: pulumi.Input<inputs.cloudasset.FolderFeedCondition | undefined>;
    /**
     * Asset content type. If not specified, no content but the asset name and type will be returned.
     * Possible values are: `CONTENT_TYPE_UNSPECIFIED`, `RESOURCE`, `IAM_POLICY`, `ORG_POLICY`, `OS_INVENTORY`, `ACCESS_POLICY`.
     */
    contentType?: pulumi.Input<string | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * This is the client-assigned asset feed identifier and it needs to be unique under a specific parent.
     */
    feedId: pulumi.Input<string>;
    /**
     * Output configuration for asset feed destination.
     * Structure is documented below.
     */
    feedOutputConfig: pulumi.Input<inputs.cloudasset.FolderFeedFeedOutputConfig>;
    /**
     * The folder this feed should be created in.
     */
    folder: pulumi.Input<string>;
}
//# sourceMappingURL=folderFeed.d.ts.map