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 { Parameter } from "./Parameter.ts";
6
7/**
8 * Runtime binding for Parameter Manager `parameters.get`.
9 *
10 * Bind this operation to a {@link Parameter} in a Function/Action init
11 * phase. Provide {@link GetParameterHttp}.
12 *
13 * Grants `roles/parametermanager.parameterViewer` on the project under an
14 * IAM Condition matching only this parameter: Parameter Manager has no
15 * resource-level IAM.
16 *
17 * ### Reading a Parameter
18 * **Example:** Get parameter metadata
19 * ```typescript
20 * const getParameter = yield* GCP.ParameterManager.GetParameter(parameter);
21 * const live = yield* getParameter();
22 * ```
23 *
24 * @binding
25 * @category ParameterManager
26 */
27export interface GetParameter extends Binding.Service<
28 GetParameter,
29 "GCP.ParameterManager.GetParameter",
30 (
31 parameter: Parameter,
32 ) => Effect.Effect<
33 () => Effect.Effect<
34 parametermanager.Parameter,
35 parametermanager.GetProjectsLocationsParametersError,
36 RuntimeContext
37 >
38 >
39> {}
40
41export const GetParameter = Binding.Service<GetParameter>(
42 "GCP.ParameterManager.GetParameter",
43);