## API Report File for "@aws-amplify/graphql-model-transformer"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

import { AppSyncDataSourceType } from '@aws-amplify/graphql-transformer-interfaces';
import * as cdk from 'aws-cdk-lib';
import { DataSourceInstance } from '@aws-amplify/graphql-transformer-interfaces';
import { DataSourceProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { DirectiveNode } from 'graphql';
import { DocumentNode } from 'graphql';
import { EnumTypeDefinitionNode } from 'graphql';
import { Expression } from 'graphql-mapping-template';
import { FieldDefinitionNode } from 'graphql';
import { FieldWrapper } from '@aws-amplify/graphql-transformer-core';
import * as iam from 'aws-cdk-lib/aws-iam';
import { InputObjectDefinitionWrapper } from '@aws-amplify/graphql-transformer-core';
import { InputObjectTypeDefinitionNode } from 'graphql';
import { InputValueDefinitionNode } from 'graphql';
import { MutationFieldType } from '@aws-amplify/graphql-transformer-interfaces';
import { ObjectTypeDefinitionNode } from 'graphql';
import { QueryFieldType } from '@aws-amplify/graphql-transformer-interfaces';
import { SQLLambdaModelDataSourceStrategy } from '@aws-amplify/graphql-transformer-interfaces';
import { SubscriptionFieldType } from '@aws-amplify/graphql-transformer-interfaces';
import { SyncConfig } from '@aws-amplify/graphql-transformer-core';
import { TransformerBeforeStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { TransformerModelBase } from '@aws-amplify/graphql-transformer-core';
import { TransformerModelProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { TransformerPrepareStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { TransformerResolverProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { TransformerSchemaVisitStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
import { TransformerValidationStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';

// @public (undocumented)
export const addDirectivesToField: (ctx: TransformerTransformSchemaStepContextProvider, typeName: string, fieldName: string, directives: Array<DirectiveNode>) => void;

// @public (undocumented)
export const addDirectivesToOperation: (ctx: TransformerTransformSchemaStepContextProvider, typeName: string, operationName: string, directives: Array<DirectiveNode>) => void;

// @public (undocumented)
export const addModelConditionInputs: (ctx: TransformerTransformSchemaStepContextProvider) => void;

// @public (undocumented)
export const createEnumModelFilters: (ctx: TransformerTransformSchemaStepContextProvider, type: ObjectTypeDefinitionNode) => InputObjectTypeDefinitionNode[];

// @public (undocumented)
export class DynamoDBModelVTLGenerator implements ModelVTLGenerator {
    // (undocumented)
    generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string;
    // (undocumented)
    generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateDefaultResponseMappingTemplate(config: ModelDefaultResponseConfig): string;
    // (undocumented)
    generateDeleteRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateGetResponseTemplate(config: ModelUpdateRequestConfig): string;
    // (undocumented)
    generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateSubscriptionRequestTemplate(): string;
    // (undocumented)
    generateSubscriptionResponseTemplate(): string;
    // (undocumented)
    generateSyncRequestTemplate(config: ModelRequestConfig): string;
    // (undocumented)
    generateUpdateInitSlotTemplate(config: ModelCreateInitSlotConfig): string;
    // (undocumented)
    generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string;
}

// @public (undocumented)
export const extendTypeWithDirectives: (ctx: TransformerTransformSchemaStepContextProvider, typeName: string, directives: Array<DirectiveNode>) => void;

// @public (undocumented)
export const generateApplyDefaultsToInputTemplate: (target: string) => Expression;

// @public (undocumented)
export const generateAuthExpressionForSandboxMode: (isSandboxModeEnabled: boolean, genericIamAccessEnabled: boolean | undefined) => string;

// @public (undocumented)
export function generateModelScalarFilterInputName(typeName: string, includeFilter: boolean, isSubscriptionFilter?: boolean): string;

// @public (undocumented)
export const generateResolverKey: (typeName: string, fieldName: string) => string;

// @public (undocumented)
export const getSubscriptionFilterInputName: (name: string) => string;

// @public (undocumented)
export function makeAttributeTypeEnum(): EnumTypeDefinitionNode;

// @public (undocumented)
export const makeConditionFilterInput: (ctx: TransformerTransformSchemaStepContextProvider, name: string, object: ObjectTypeDefinitionNode) => InputObjectDefinitionWrapper;

// @public (undocumented)
export const makeCreateInputField: (obj: ObjectTypeDefinitionNode, modelDirectiveConfig: ModelDirectiveConfiguration, knownModelTypes: Set<string>, document: DocumentNode, isSyncEnabled: boolean) => InputObjectTypeDefinitionNode;

// @public (undocumented)
export const makeDeleteInputField: (type: ObjectTypeDefinitionNode, isSyncEnabled: boolean) => InputObjectTypeDefinitionNode;

// @public (undocumented)
export function makeEnumFilterInput(fieldWrapper: FieldWrapper): InputObjectTypeDefinitionNode;

// @public (undocumented)
export const makeListQueryFilterInput: (ctx: TransformerTransformSchemaStepContextProvider, name: string, object: ObjectTypeDefinitionNode) => InputObjectTypeDefinitionNode;

// @public (undocumented)
export const makeListQueryModel: (type: ObjectTypeDefinitionNode, modelName: string, isSyncEnabled: boolean) => ObjectTypeDefinitionNode;

// @public (undocumented)
export function makeModelScalarFilterInputObject(type: string, supportsConditions: boolean, isSubscriptionFilter?: boolean): InputObjectTypeDefinitionNode;

// @public (undocumented)
export const makeModelSortDirectionEnumObject: () => EnumTypeDefinitionNode;

// @public (undocumented)
export const makeMutationConditionInput: (ctx: TransformerTransformSchemaStepContextProvider, name: string, object: ObjectTypeDefinitionNode, modelDirectiveConfig: ModelDirectiveConfiguration) => InputObjectTypeDefinitionNode;

// @public (undocumented)
export function makeSizeInputType(): InputObjectTypeDefinitionNode;

// @public (undocumented)
export function makeSubscriptionField(fieldName: string, returnTypeName: string, mutations: string[]): FieldDefinitionNode;

// @public (undocumented)
export const makeSubscriptionFilterInput: (ctx: TransformerTransformSchemaStepContextProvider, name: string, object: ObjectTypeDefinitionNode) => InputObjectDefinitionWrapper;

// @public (undocumented)
export const makeSubscriptionQueryFilterInput: (ctx: TransformerTransformSchemaStepContextProvider, name: string, object: ObjectTypeDefinitionNode) => InputObjectTypeDefinitionNode;

// @public (undocumented)
export const makeUpdateInputField: (obj: ObjectTypeDefinitionNode, modelDirectiveConfig: ModelDirectiveConfiguration, knownModelTypes: Set<string>, document: DocumentNode, isSyncEnabled: boolean) => InputObjectTypeDefinitionNode;

// @public (undocumented)
export type ModelCreateInitSlotConfig = {
    modelConfig: ModelDirectiveConfiguration;
};

// @public (undocumented)
export type ModelCreateRequestConfig = ModelRequestConfig & {
    modelIndexFields: string[];
};

// @public (undocumented)
export type ModelDefaultResponseConfig = ModelRequestConfig & {
    isSyncEnabled: boolean;
    mutation: boolean;
};

// @public (undocumented)
export type ModelDeleteRequestConfig = ModelUpdateRequestConfig;

// @public (undocumented)
export type ModelDirectiveConfiguration = {
    queries?: Partial<{
        get: Partial<string>;
        list: Partial<string>;
        sync: Partial<string>;
    }>;
    mutations: Partial<{
        create: Partial<string>;
        update: Partial<string>;
        delete: Partial<string>;
    }>;
    subscriptions: Partial<{
        onCreate: Partial<string>[];
        onUpdate: Partial<string>[];
        onDelete: Partial<string>[];
        level: SubscriptionLevel;
    }>;
    timestamps: Partial<{
        createdAt: Partial<string>;
        updatedAt: Partial<string>;
    }>;
};

// @public (undocumented)
export type ModelGetResponseConfig = ModelUpdateRequestConfig;

// @public (undocumented)
export type ModelRequestConfig = {
    modelName: string;
    operation: string;
    operationName: string;
};

// @public (undocumented)
export class ModelTransformer extends TransformerModelBase implements TransformerModelProvider {
    // Warning: (ae-forgotten-export) The symbol "ModelTransformerOptions" needs to be exported by the entry point index.d.ts
    constructor(options?: ModelTransformerOptions);
    // (undocumented)
    before: (ctx: TransformerBeforeStepContextProvider) => void;
    // (undocumented)
    createIAMRole: (context: TransformerContextProvider, def: ObjectTypeDefinitionNode, stack: cdk.Stack, tableName: string) => iam.Role;
    // (undocumented)
    ensureModelSortDirectionEnum: (ctx: TransformerValidationStepContextProvider) => void;
    // (undocumented)
    generateCreateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    generateDeleteResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    generateGetResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    generateListResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    generateOnCreateResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    generateOnDeleteResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    generateOnUpdateResolver: (ctx: TransformerContextProvider, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    generateResolvers: (context: TransformerContextProvider) => void;
    // (undocumented)
    generateSyncResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    generateUpdateResolver: (ctx: TransformerContextProvider, type: ObjectTypeDefinitionNode, typeName: string, fieldName: string, resolverLogicalId: string) => TransformerResolverProvider;
    // (undocumented)
    getDataSourceResource: (type: ObjectTypeDefinitionNode) => DataSourceInstance;
    // (undocumented)
    getDataSourceType: () => AppSyncDataSourceType;
    // (undocumented)
    getInputs: (ctx: TransformerTransformSchemaStepContextProvider, type: ObjectTypeDefinitionNode, operation: {
        fieldName: string;
        typeName: string;
        type: QueryFieldType | MutationFieldType | SubscriptionFieldType;
    }) => InputValueDefinitionNode[];
    // (undocumented)
    getMutationFieldNames: (type: ObjectTypeDefinitionNode) => Set<{
        fieldName: string;
        typeName: string;
        type: MutationFieldType;
        resolverLogicalId: string;
    }>;
    // (undocumented)
    getMutationName: (subscriptionType: SubscriptionFieldType, mutationMap: Set<{
        fieldName: string;
        typeName: string;
        type: MutationFieldType;
        resolverLogicalId: string;
    }>) => string;
    // (undocumented)
    getOutputType: (ctx: TransformerTransformSchemaStepContextProvider, type: ObjectTypeDefinitionNode, operation: {
        fieldName: string;
        typeName: string;
        type: QueryFieldType | MutationFieldType | SubscriptionFieldType;
    }) => ObjectTypeDefinitionNode;
    // (undocumented)
    getQueryFieldNames: (type: ObjectTypeDefinitionNode) => Set<{
        fieldName: string;
        typeName: string;
        type: QueryFieldType;
        resolverLogicalId: string;
    }>;
    // (undocumented)
    getSubscriptionFieldNames: (type: ObjectTypeDefinitionNode) => Set<{
        fieldName: string;
        typeName: string;
        type: SubscriptionFieldType;
        resolverLogicalId: string;
    }>;
    // (undocumented)
    object: (definition: ObjectTypeDefinitionNode, directive: DirectiveNode, ctx: TransformerSchemaVisitStepContextProvider) => void;
    // (undocumented)
    prepare: (context: TransformerPrepareStepContextProvider) => void;
    // (undocumented)
    transformSchema: (ctx: TransformerTransformSchemaStepContextProvider) => void;
}

// @public (undocumented)
export type ModelUpdateInitSlotConfig = ModelCreateInitSlotConfig;

// @public (undocumented)
export type ModelUpdateRequestConfig = ModelRequestConfig & {
    modelIndexFields: string[];
    isSyncEnabled: boolean;
};

// @public (undocumented)
export interface ModelVTLGenerator {
    // (undocumented)
    generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string;
    // (undocumented)
    generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateDefaultResponseMappingTemplate(config: ModelDefaultResponseConfig): string;
    // (undocumented)
    generateDeleteRequestTemplate(config: ModelDeleteRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateGetResponseTemplate(config: ModelGetResponseConfig): string;
    // (undocumented)
    generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateSubscriptionRequestTemplate(): string;
    // (undocumented)
    generateSubscriptionResponseTemplate(): string;
    // (undocumented)
    generateSyncRequestTemplate(config: ModelRequestConfig): string;
    // (undocumented)
    generateUpdateInitSlotTemplate(config: ModelUpdateInitSlotConfig): string;
    // (undocumented)
    generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string;
}

// @public (undocumented)
export const OPERATION_KEY = "__operation";

// @public (undocumented)
export const propagateDirectivesToNestedTypes: (ctx: TransformerContextProvider, def: ObjectTypeDefinitionNode, seenNonModelTypes: Set<string>, serviceDirectives: DirectiveNode[]) => void;

// Warning: (ae-forgotten-export) The symbol "ModelResourceGenerator" needs to be exported by the entry point index.d.ts
//
// @public (undocumented)
export class RdsModelResourceGenerator extends ModelResourceGenerator {
    // (undocumented)
    generateResources(context: TransformerContextProvider, strategyOverride?: SQLLambdaModelDataSourceStrategy): void;
    // (undocumented)
    protected readonly generatorType = "RdsModelResourceGenerator";
    // (undocumented)
    getVTLGenerator(): ModelVTLGenerator;
    // (undocumented)
    setFieldMappingResolverReferences(context: TransformerContextProvider): void;
}

// @public (undocumented)
export class RDSModelVTLGenerator implements ModelVTLGenerator {
    // (undocumented)
    generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string;
    // (undocumented)
    generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateDefaultResponseMappingTemplate(config: ModelDefaultResponseConfig): string;
    // (undocumented)
    generateDeleteRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateGetResponseTemplate(config: ModelUpdateRequestConfig): string;
    // (undocumented)
    generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
    // (undocumented)
    generateSubscriptionRequestTemplate(): string;
    // (undocumented)
    generateSubscriptionResponseTemplate(): string;
    // (undocumented)
    generateSyncRequestTemplate(config: ModelRequestConfig): string;
    // (undocumented)
    generateUpdateInitSlotTemplate(config: ModelCreateInitSlotConfig): string;
    // (undocumented)
    generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string;
}

// @public (undocumented)
export const removeSubscriptionFilterInputAttribute: (ctx: TransformerTransformSchemaStepContextProvider, typeName: string, fieldName: string) => void;

// @public (undocumented)
export enum SubscriptionLevel {
    // (undocumented)
    off = "off",
    // (undocumented)
    on = "on",
    // (undocumented)
    public = "public"
}

// (No @packageDocumentation comment for this package)

```
