1import type * as SVC from "@distilled.cloud/aws/codepipeline";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Pipeline } from "./Pipeline.ts";
5
6export interface PutApprovalResultRequest extends Omit<
7 SVC.PutApprovalResultInput,
8 "pipelineName"
9> {}
10
11/**
12 * Runtime binding for `codepipeline:PutApprovalResult` — answers a manual
13 * approval action with `Approved` or `Rejected`. The approval `token` comes
14 * from the action's `latestExecution` in {@link GetPipelineState}.
15 * ### Approvals
16 * **Example:** Approve a Manual Approval Action
17 * ```typescript
18 * const putApproval = yield* AWS.CodePipeline.PutApprovalResult(pipeline);
19 *
20 * yield* putApproval({
21 * stageName: "Approve",
22 * actionName: "ManualApproval",
23 * token: approvalToken,
24 * result: { status: "Approved", summary: "LGTM" },
25 * });
26 * ```
27 *
28 * @binding
29 */
30export interface PutApprovalResult extends Binding.Service<
31 PutApprovalResult,
32 "AWS.CodePipeline.PutApprovalResult",
33 <P extends Pipeline>(
34 pipeline: P,
35 ) => Effect.Effect<
36 (
37 request: PutApprovalResultRequest,
38 ) => Effect.Effect<SVC.PutApprovalResultOutput, SVC.PutApprovalResultError>
39 >
40> {}
41export const PutApprovalResult = Binding.Service<PutApprovalResult>(
42 "AWS.CodePipeline.PutApprovalResult",
43);