import { Server } from "../Server";
import * as stats from "../stats";
import { ConfigurableServiceBase, ConfigurableServiceConfig } from "./ConfigurableServiceBase";
export interface GraphQLServiceConfig extends ConfigurableServiceConfig {
    schemaCacheSettings?: SchemaCacheSettings | "NoCache";
    disableAuthentication?: boolean;
    disableExplorer?: boolean;
    realmCacheMaxAge?: number;
    forceExplorerSSL?: boolean;
    includeCountInResponses?: boolean;
    presentIntsAsFloatsInSchema?: boolean;
    collectionModelSuffix?: string;
    inputModelSuffix?: string;
    namedSubscriptionModelName?: string;
    base64ModelName?: string;
    allRealmTypesModelName?: string;
    dateModelName?: string;
    updatePolicyModelName?: string;
}
export interface SchemaCacheSettings {
    max?: number;
    maxAge?: number;
}
export declare class GraphQLService extends ConfigurableServiceBase<GraphQLServiceConfig> {
    private schemaCache;
    private disableAuthentication;
    private realmCacheTTL;
    private disableExplorer;
    private schemaHandlers;
    private forceExplorerSSL;
    private includeCountInResponses;
    private presentIntsAsFloatsInSchema;
    private collectionModelSuffix;
    private inputModelSuffix;
    private namedSubscriptionModelName;
    private base64Type;
    private dateType;
    private allRealmTypesName;
    private updatePolicyModelName;
    private subscriptionServer;
    private handler;
    private graphiql;
    private pubsub;
    private querySubscriptions;
    private adminRealm;
    stats: stats.StatsSink;
    private metrics;
    private linkingObjectsResolver;
    constructor(config?: GraphQLServiceConfig);
    protected setConfigCore(config: GraphQLServiceConfig): void;
    protected startCore(server: Server): Promise<void>;
    protected stopCore(): Promise<void>;
    private subscriptionHandler;
    private getExplore;
    private postExplore;
    private get;
    private post;
    private deleteSchema;
    private getPath;
    private authenticateRequest;
    private authenticate;
    private validateAccess;
    private closeRealm;
    private validateRead;
    private validateWrite;
    private getSchema;
    private setupGetAllObjects;
    private setupAddObject;
    private setupUpdateObject;
    private setupDiffUpdateObject;
    private setupCreateObject;
    private setupCreateObjects;
    private setupSubscribeToQuery;
    private setupGetObjectByPK;
    private setupDeleteObject;
    private setupDeleteObjects;
    private setupCreatePartialSubscription;
    private subscriptionObjectNameRegex;
    private setupListPartialSubscriptions;
    private setupDeletePartialSubscription;
    private createObjects;
    private getPropertySchema;
    private getTypeString;
    private getPrimitiveTypeString;
    private isPrimitiveType;
    private getCollectionType;
    private getCollectionResponse;
    private resolveLinkingObjectsTypeArgument;
    private camelcase;
    private pluralize;
    private isReserved;
    private openRealm;
    private getSchemaHandler;
}
