import * as Provider from "../../Provider.ts";
import { Resource } from "../../Resource.ts";
import type { Providers } from "../Providers.ts";
declare const ResourceAssociationNotVisible_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "ResourceAssociationNotVisible";
} & Readonly;
/**
* Raised when a freshly created resource association has not become visible
* to `getAssociatedResource` within the bounded eventual-consistency window.
*/
export declare class ResourceAssociationNotVisible extends ResourceAssociationNotVisible_base<{
readonly application: string;
readonly resource: string;
}> {
}
export interface ResourceAssociationProps {
/**
* The application to associate the resource with: its ID, name, or ARN.
* Changing it replaces the association.
*/
application: string;
/**
* The type of resource being associated: `CFN_STACK` for a CloudFormation
* stack or `RESOURCE_TAG_VALUE` for a tag-value query. Changing it replaces
* the association.
*/
resourceType: "CFN_STACK" | "RESOURCE_TAG_VALUE";
/**
* The name or ARN of the resource to associate (e.g. the CloudFormation
* stack name). Changing it replaces the association.
*/
resource: string;
/**
* Association options. `APPLY_APPLICATION_TAG` (the service default) stamps
* the resource with the `awsApplication` tag; `SKIP_APPLICATION_TAG` leaves
* the resource's tags untouched. Updatable in place (the association is
* re-created under the hood).
*/
options?: ("APPLY_APPLICATION_TAG" | "SKIP_APPLICATION_TAG")[];
}
export interface ResourceAssociation extends Resource<"AWS.AppRegistry.ResourceAssociation", ResourceAssociationProps, {
/** The ID of the associated application. */
applicationId: string;
/** The ARN of the associated application. */
applicationArn: string;
/** The type of the associated resource. */
resourceType: string;
/** The canonical name of the associated resource. */
resourceName: string;
/** The ARN of the associated resource. */
resourceArn: string;
}, never, Providers> {
}
/**
* Associates an AWS resource (a CloudFormation stack or a tag-value query)
* with an AppRegistry {@link Application} so the resource is inventoried
* under the application in myApplications.
*
* ### Associating a Resource
* **Example:** Associate a CloudFormation Stack
* ```typescript
* import * as AppRegistry from "alchemy/AWS/AppRegistry";
* import * as CloudFormation from "alchemy/AWS/CloudFormation";
*
* const app = yield* AppRegistry.Application("Storefront", {});
* const stack = yield* CloudFormation.Stack("Network", {
* templateBody: networkTemplateJson,
* });
*
* const association = yield* AppRegistry.ResourceAssociation("StackAssoc", {
* application: app.applicationId,
* resourceType: "CFN_STACK",
* resource: stack.stackName,
* });
* ```
*
* **Example:** Associate Without Applying the Application Tag
* ```typescript
* const association = yield* AppRegistry.ResourceAssociation("StackAssoc", {
* application: app.applicationId,
* resourceType: "CFN_STACK",
* resource: stack.stackName,
* options: ["SKIP_APPLICATION_TAG"],
* });
* ```
*
* @resource
*/
export declare const ResourceAssociation: import("../../Resource.ts").ResourceClass;
export declare const ResourceAssociationProvider: () => import("effect/Layer").Layer, never, import("@distilled.cloud/aws/Credentials").Credentials | import("effect/unstable/http/HttpClient").HttpClient>;
export {};
//# sourceMappingURL=ResourceAssociation.d.ts.map