1import type * as cloudcontrol from "@distilled.cloud/aws/cloudcontrol";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { CloudControlBindingOptions } from "./BindingOptions.ts";
5
6/**
7 * Runtime binding for `cloudformation:DeleteResource`.
8 *
9 * Deletes a Cloud Control-supported resource. The call is asynchronous: poll
10 * the returned `RequestToken` with {@link GetResourceRequestStatus} until the
11 * operation settles. Because Cloud Control invokes the resource type's delete
12 * handler with the caller's credentials, pass the handler's underlying
13 * permissions via
14 * {@link CloudControlBindingOptions.handlerPolicyStatements}.
15 * ### Provisioning Resources
16 * **Example:** Delete an SSM Parameter at runtime
17 * ```typescript
18 * const deleteResource = yield* CloudControl.DeleteResource({
19 * handlerPolicyStatements: [
20 * { Effect: "Allow", Action: ["ssm:DeleteParameter"], Resource: ["*"] },
21 * ],
22 * });
23 *
24 * // runtime
25 * const deleted = yield* deleteResource({
26 * TypeName: "AWS::SSM::Parameter",
27 * Identifier: "/tenants/acme/greeting",
28 * });
29 * ```
30 *
31 * @binding
32 */
33export interface DeleteResource extends Binding.Service<
34 DeleteResource,
35 "AWS.CloudControl.DeleteResource",
36 (
37 options?: CloudControlBindingOptions,
38 ) => Effect.Effect<
39 (
40 request: cloudcontrol.DeleteResourceInput,
41 ) => Effect.Effect<
42 cloudcontrol.DeleteResourceOutput,
43 cloudcontrol.DeleteResourceError
44 >
45 >
46> {}
47
48export const DeleteResource = Binding.Service<DeleteResource>(
49 "AWS.CloudControl.DeleteResource",
50);