1import type * as ce from "@distilled.cloud/aws/cost-explorer";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Request for {@link GetDimensionValues}.
7 */
8export interface GetDimensionValuesRequest
9 extends ce.GetDimensionValuesRequest {}
10
11/**
12 * Runtime binding for `ce:GetDimensionValues`.
13 *
14 * Retrieve the available values for a Cost Explorer dimension
15 * (services, linked accounts, regions, usage types, …) — the building
16 * blocks of query filter expressions. Provide the implementation with
17 * `Effect.provide(AWS.CostExplorer.GetDimensionValuesHttp)`.
18 * ### Exploring Dimensions and Tags
19 * **Example:** List Available Services
20 * ```typescript
21 * // init — account-level binding takes no resource
22 * const getDimensionValues = yield* AWS.CostExplorer.GetDimensionValues();
23 *
24 * // runtime
25 * const result = yield* getDimensionValues({
26 * TimePeriod: { Start: "2026-06-01", End: "2026-07-01" },
27 * Dimension: "SERVICE",
28 * });
29 * const services = (result.DimensionValues ?? []).map((v) => v.Value);
30 * ```
31 *
32 * @binding
33 */
34export interface GetDimensionValues extends Binding.Service<
35 GetDimensionValues,
36 "AWS.CostExplorer.GetDimensionValues",
37 () => Effect.Effect<
38 (
39 request: GetDimensionValuesRequest,
40 ) => Effect.Effect<
41 ce.GetDimensionValuesResponse,
42 ce.GetDimensionValuesError
43 >
44 >
45> {}
46
47export const GetDimensionValues = Binding.Service<GetDimensionValues>(
48 "AWS.CostExplorer.GetDimensionValues",
49);