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}}
 * ```
 *
 * ```sh
 * $ 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.
     */
    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:
     * ["CONTENT_TYPE_UNSPECIFIED", "RESOURCE", "IAM_POLICY", "ORG_POLICY", "OS_INVENTORY", "ACCESS_POLICY"]
     */
    readonly contentType: pulumi.Output<string | undefined>;
    /**
     * 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>[]>;
    /**
     * 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>[]>;
    /**
     * 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.
     */
    condition?: pulumi.Input<inputs.cloudasset.FolderFeedCondition>;
    /**
     * Asset content type. If not specified, no content but the asset name and type will be returned. Possible values:
     * ["CONTENT_TYPE_UNSPECIFIED", "RESOURCE", "IAM_POLICY", "ORG_POLICY", "OS_INVENTORY", "ACCESS_POLICY"]
     */
    contentType?: pulumi.Input<string>;
    /**
     * 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>;
    /**
     * The ID of the folder where this feed has been created. Both [FOLDER_NUMBER]
     * and folders/[FOLDER_NUMBER] are accepted.
     */
    folderId?: pulumi.Input<string>;
    /**
     * The format will be folders/{folder_number}/feeds/{client-assigned_feed_identifier}.
     */
    name?: pulumi.Input<string>;
}
/**
 * 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>[]>;
    /**
     * 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>[]>;
    /**
     * 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.
     */
    condition?: pulumi.Input<inputs.cloudasset.FolderFeedCondition>;
    /**
     * Asset content type. If not specified, no content but the asset name and type will be returned. Possible values:
     * ["CONTENT_TYPE_UNSPECIFIED", "RESOURCE", "IAM_POLICY", "ORG_POLICY", "OS_INVENTORY", "ACCESS_POLICY"]
     */
    contentType?: pulumi.Input<string>;
    /**
     * 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>;
}
