import { AnyFunction, Expr } from "@functionless/ast";
import { aws_dynamodb } from "aws-cdk-lib";
import { JsonFormat } from "typesafe-dynamodb/lib/json-format";
import { AppSyncVtlIntegration } from "../appsync";
import { ASL, ASLGraph, Task } from "../asl";
import { PrewarmClientInitializer } from "../function-prewarm";
import { IntegrationInput } from "../integration";
import { VTL } from "../vtl";
import { ITable } from "./table";
export declare const DocumentDBClient: PrewarmClientInitializer<"DynamoDB", AWS.DynamoDB.DocumentClient>;
export declare const DynamoDBClient: PrewarmClientInitializer<"DynamoDBDocument", AWS.DynamoDB>;
export declare type DynamoDBAccess = "read" | "write" | "read-write" | "full";
export declare function createDynamoIntegration<F extends AnyFunction, Format extends JsonFormat>(table: aws_dynamodb.ITable, operationName: keyof AWS.DynamoDB, format: JsonFormat, access: DynamoDBAccess, body: (client: Format extends JsonFormat.Document ? AWS.DynamoDB.DocumentClient : AWS.DynamoDB, params: Parameters<F>) => ReturnType<F>, asl?: {
    prepareParams?: (params: any) => any;
    resultSelector?: Task["ResultSelector"];
    override?: never;
} | {
    prepareParams?: never;
    resultSelector?: never;
    override: (input: Expr, context: ASL) => ASLGraph.NodeResults;
}): F;
export declare function makeAppSyncTableIntegration<F extends AnyFunction>(table: ITable<any, any, any>, methodName: string, integration: Omit<IntegrationInput<string, F>, "kind" | "appSyncVtl"> & {
    appSyncVtl: Omit<AppSyncVtlIntegration, "dataSource" | "dataSourceId">;
}): F;
export declare function addIfDefined(vtl: VTL, from: string, to: string, key: string): void;
//# sourceMappingURL=integration.d.ts.map