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 ProjectFeed, 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 Project 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",
 * });
 * // Create a feed that sends notifications about network resource updates.
 * const projectFeed = new gcp.cloudasset.ProjectFeed("project_feed", {
 *     project: "my-project-name",
 *     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
 *
 * ProjectFeed can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/feeds/{{name}}`
 *
 * * `{{project}}/{{name}}`
 *
 * * `{{name}}`
 *
 * When using the `pulumi import` command, ProjectFeed can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default projects/{{project}}/feeds/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default {{project}}/{{name}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:cloudasset/projectFeed:ProjectFeed default {{name}}
 * ```
 */
export declare class ProjectFeed extends pulumi.CustomResource {
    /**
     * Get an existing ProjectFeed 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?: ProjectFeedState, opts?: pulumi.CustomResourceOptions): ProjectFeed;
    /**
     * Returns true if the given object is an instance of ProjectFeed.  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 ProjectFeed;
    /**
     * 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. If not specified, the resource's project will be used.
     */
    readonly billingProject: pulumi.Output<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.
     */
    readonly condition: pulumi.Output<outputs.cloudasset.ProjectFeedCondition | 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.ProjectFeedFeedOutputConfig>;
    /**
     * The format will be projects/{projectNumber}/feeds/{client-assigned_feed_identifier}.
     */
    readonly name: pulumi.Output<string>;
    readonly project: pulumi.Output<string>;
    /**
     * Create a ProjectFeed 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: ProjectFeedArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering ProjectFeed resources.
 */
export interface ProjectFeedState {
    /**
     * 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. If not specified, the resource's project will be used.
     */
    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.ProjectFeedCondition>;
    /**
     * 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.ProjectFeedFeedOutputConfig>;
    /**
     * The format will be projects/{projectNumber}/feeds/{client-assigned_feed_identifier}.
     */
    name?: pulumi.Input<string>;
    project?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a ProjectFeed resource.
 */
export interface ProjectFeedArgs {
    /**
     * 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. If not specified, the resource's project will be used.
     */
    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.ProjectFeedCondition>;
    /**
     * 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.ProjectFeedFeedOutputConfig>;
    project?: pulumi.Input<string>;
}
