import type * as Credentials from "@distilled.cloud/aws/Credentials";
import type * as Effect from "effect/Effect";
import * as Binding from "../../Binding.ts";
import type { GraphqlApi } from "./GraphqlApi.ts";
declare const GraphQLApiError_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "GraphQLApiError";
} & Readonly;
/**
* The GraphQL endpoint returned a non-2xx response or an unparseable body.
* GraphQL *field* errors do NOT fail the effect — they are surfaced on
* {@link GraphQLResult.errors} alongside any partial `data`.
*/
export declare class GraphQLApiError extends GraphQLApiError_base<{
/** HTTP status of the failed request (0 when the request never left). */
readonly status: number;
/** The raw response body (or the underlying failure message). */
readonly body: string;
}> {
}
/** A single entry of the standard GraphQL `errors` array. */
export interface GraphQLErrorItem {
message: string;
path?: ReadonlyArray;
locations?: ReadonlyArray<{
line: number;
column: number;
}>;
errorType?: string;
[key: string]: unknown;
}
/** The standard GraphQL response envelope. */
export interface GraphQLResult {
/** The (possibly partial) result data. */
data?: T;
/** GraphQL field/validation errors, if any. */
errors?: ReadonlyArray;
extensions?: Record;
}
/** A GraphQL operation to execute against the API. */
export interface GraphQLRequest {
/** The GraphQL document, e.g. `query($a: Int!) { add(a: $a, b: 1) }`. */
query: string;
/** Values for the document's variables. */
variables?: Record;
/** Which operation to run when the document defines several. */
operationName?: string;
}
export interface GraphQLClient {
/**
* Execute a GraphQL operation (query or mutation), SigV4-signed with the
* host Function's credentials. Fails only on transport/HTTP errors —
* GraphQL field errors are returned on `result.errors`.
*/
execute(request: GraphQLRequest): Effect.Effect, GraphQLApiError | Credentials.CredentialsError>;
}
/**
* Runtime binding for the `appsync:GraphQL` data-plane action — execute
* GraphQL operations against a {@link GraphqlApi}'s endpoint from a Lambda
* (or other AWS runtime), SigV4-signed with the host Function's IAM role.
*
* The API must accept `AWS_IAM` authentication (as its primary mode or an
* additional provider). Provide `AppSync.GraphQLHttp` on the hosting
* function's Effect to implement the binding.
*
* ### Executing GraphQL Operations
* **Example:** Query an IAM-authenticated API
* ```typescript
* const api = yield* AppSync.GraphqlApi("Api", {
* authenticationType: "AWS_IAM",
* schema,
* });
* const graphql = yield* AppSync.GraphQL(api);
*
* const result = yield* graphql.execute<{ add: number }>({
* query: "query($a: Int!, $b: Int!) { add(a: $a, b: $b) }",
* variables: { a: 2, b: 3 },
* });
* // result.data?.add === 5; field errors appear on result.errors
* ```
*
* @binding
*/
export interface GraphQL extends Binding.Service Effect.Effect> {
}
export declare const GraphQL: GraphQL;
export {};
//# sourceMappingURL=GraphQL.d.ts.map