import { NormalizedScalarsMap } from '@graphql-codegen/visitor-plugin-common';
import { GraphQLSchema } from 'graphql';
import { SwiftDeclarationBlock } from '../languages/swift-declaration-block';
import { AppSyncModelVisitor, CodeGenField, CodeGenModel, ParsedAppSyncModelConfig, RawAppSyncModelConfig } from './appsync-visitor';
export interface RawAppSyncModelSwiftConfig extends RawAppSyncModelConfig {
    emitAuthProvider?: boolean;
    generateIndexRules?: boolean;
}
export interface ParsedAppSyncModelSwiftConfig extends ParsedAppSyncModelConfig {
    emitAuthProvider?: boolean;
    generateIndexRules?: boolean;
}
export declare class AppSyncSwiftVisitor<TRawConfig extends RawAppSyncModelSwiftConfig = RawAppSyncModelSwiftConfig, TPluginConfig extends ParsedAppSyncModelSwiftConfig = ParsedAppSyncModelSwiftConfig> extends AppSyncModelVisitor<TRawConfig, TPluginConfig> {
    protected modelExtensionImports: string[];
    protected imports: string[];
    constructor(schema: GraphQLSchema, rawConfig: TRawConfig, additionalConfig: Partial<TPluginConfig>, defaultScalars?: NormalizedScalarsMap);
    generate(): string;
    generateStruct(): string;
    generateEnums(): string;
    generateNonModelType(): string;
    generateSchema(): string;
    generateCodingKeys(name: string, model: CodeGenModel, extensionDeclaration: SwiftDeclarationBlock): void;
    generateModelSchema(name: string, model: CodeGenModel, extensionDeclaration: SwiftDeclarationBlock): void;
    protected generatePrimaryKeyExtensions(model: CodeGenModel): string;
    protected generateModelPathExtensions(model: CodeGenModel): string;
    protected generateClassLoader(): string;
    private getInitBody;
    private getDecoderBody;
    private getDecoderBodyFieldType;
    private getEncoderBody;
    protected getListType(typeStr: string, field: CodeGenField): string;
    private generateFieldSchema;
    private getSwiftModelTypeName;
    private getFieldTypePathValue;
    protected getEnumValue(value: string): string;
    protected isFieldRequired(field: CodeGenField): boolean;
    protected generateKeyRules(model: CodeGenModel): string[];
    protected generatePrimaryKeyRules(model: CodeGenModel): string;
    protected isHasManyConnectionField(field: CodeGenField): boolean;
    protected isHasOneOrBelongsToConnectionField(field: CodeGenField): boolean;
    protected generateAuthRules(model: CodeGenModel): string;
    protected getWritableFields(model: CodeGenModel): CodeGenField[];
    protected hasReadOnlyFields(model: CodeGenModel): boolean;
    private getCodingKey;
}
//# sourceMappingURL=appsync-swift-visitor.d.ts.map