1import type * as aa from "@distilled.cloud/aws/accessanalyzer";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Analyzer } from "./Analyzer.ts";
5
6/** `CreateAccessPreview` request with `analyzerArn` injected from the bound {@link Analyzer}. */
7export interface CreateAccessPreviewRequest extends Omit<
8 aa.CreateAccessPreviewRequest,
9 "analyzerArn"
10> {}
11
12/**
13 * Runtime binding for `access-analyzer:CreateAccessPreview`.
14 *
15 * Previews the findings a proposed resource policy would generate, before
16 * deploying the policy. Provide the implementation with
17 * `Effect.provide(AWS.AccessAnalyzer.CreateAccessPreviewHttp)`.
18 * ### Access Previews
19 * **Example:** Preview a Proposed Bucket Policy
20 * ```typescript
21 * const createPreview =
22 * yield* AWS.AccessAnalyzer.CreateAccessPreview(analyzer);
23 * const preview = yield* createPreview({
24 * configurations: {
25 * [bucketArn]: { s3Bucket: { bucketPolicy: proposedPolicy } },
26 * },
27 * });
28 * ```
29 *
30 * @binding
31 */
32export interface CreateAccessPreview extends Binding.Service<
33 CreateAccessPreview,
34 "AWS.AccessAnalyzer.CreateAccessPreview",
35 (
36 analyzer: Analyzer,
37 ) => Effect.Effect<
38 (
39 request: CreateAccessPreviewRequest,
40 ) => Effect.Effect<
41 aa.CreateAccessPreviewResponse,
42 aa.CreateAccessPreviewError
43 >
44 >
45> {}
46
47export const CreateAccessPreview = Binding.Service<CreateAccessPreview>(
48 "AWS.AccessAnalyzer.CreateAccessPreview",
49);