1import type * as parametermanager from "@distilled.cloud/gcp/parametermanager_v1";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { RuntimeContext } from "../../RuntimeContext.ts";
5import type { ParametersVersion } from "./ParametersVersion.ts";
6
7/**
8 * Runtime binding for Parameter Manager `parameters.versions.render`.
9 *
10 * Bind this operation to a {@link ParametersVersion} in a Function/Action
11 * init phase. Provide {@link RenderParameterVersionHttp}. Rendering
12 * substitutes Secret Manager references and only works for JSON or YAML
13 * parameters.
14 *
15 * Grants `roles/parametermanager.parameterAccessor` on the project under
16 * an IAM Condition matching only this version: Parameter Manager has no
17 * resource-level IAM. Secrets the payload references need their own
18 * Secret Manager access.
19 *
20 * ### Rendering a Parameter Version
21 * **Example:** Render JSON with secret substitutions
22 * ```typescript
23 * const render = yield* GCP.ParameterManager.RenderParameterVersion(version);
24 * const { renderedPayload } = yield* render();
25 * ```
26 *
27 * @binding
28 * @category ParameterManager
29 */
30export interface RenderParameterVersion extends Binding.Service<
31 RenderParameterVersion,
32 "GCP.ParameterManager.RenderParameterVersion",
33 (
34 version: ParametersVersion,
35 ) => Effect.Effect<
36 () => Effect.Effect<
37 parametermanager.RenderParameterVersionResponse,
38 parametermanager.RenderProjectsLocationsParametersVersionsError,
39 RuntimeContext
40 >
41 >
42> {}
43
44export const RenderParameterVersion = Binding.Service<RenderParameterVersion>(
45 "GCP.ParameterManager.RenderParameterVersion",
46);