import { BaseEntity, CompositeKey, DatabaseProviderBase, EntityPermissionType, RunViewResult, UserInfo } from '@memberjunction/core';
import { UserViewEntityExtended } from '@memberjunction/core-entities';
import { PubSubEngine } from 'type-graphql';
import { RunViewGenericParams, UserPayload } from '../types.js';
import { RunDynamicViewInput, RunViewByIDInput, RunViewByNameInput } from './RunViewResolver.js';
import { DeleteOptionsInput } from './DeleteOptionsInput.js';
import { MJEvent } from '@memberjunction/global';
export declare class ResolverBase {
    private static _emit;
    private static _cloudeventsHeaders;
    private static _eventSubscriptionKey;
    private get EventSubscriptions();
    protected MapFieldNamesToCodeNames(entityName: string, dataObject: any, contextUser?: UserInfo): Promise<any>;
    protected ArrayMapFieldNamesToCodeNames(entityName: string, dataObjectArray: any[], contextUser?: UserInfo): Promise<any[]>;
    protected FilterEncryptedFieldsForAPI(entityName: string, dataObject: Record<string, unknown>, contextUser: UserInfo): Promise<Record<string, unknown>>;
    protected ArrayFilterEncryptedFieldsForAPI(entityName: string, dataObjectArray: Record<string, unknown>[], contextUser: UserInfo): Promise<Record<string, unknown>[]>;
    protected findBy<T = any>(provider: DatabaseProviderBase, entity: string, params: any, contextUser: UserInfo): Promise<Array<T>>;
    RunViewByNameGeneric(viewInput: RunViewByNameInput, provider: DatabaseProviderBase, userPayload: UserPayload, pubSub: PubSubEngine): Promise<RunViewResult<any>>;
    RunViewByIDGeneric(viewInput: RunViewByIDInput, provider: DatabaseProviderBase, userPayload: UserPayload, pubSub: PubSubEngine): Promise<RunViewResult<any>>;
    RunDynamicViewGeneric(viewInput: RunDynamicViewInput, provider: DatabaseProviderBase, userPayload: UserPayload, pubSub: PubSubEngine): Promise<RunViewResult<any>>;
    RunViewsGeneric(viewInputs: (RunViewByNameInput & RunViewByIDInput & RunDynamicViewInput)[], provider: DatabaseProviderBase, userPayload: UserPayload): Promise<RunViewResult[]>;
    private static _priorEmittedData;
    protected EmitCloudEvent({ component, event, eventCode, args }: MJEvent): Promise<void>;
    protected CheckUserReadPermissions(entityName: string, userPayload: UserPayload | null): void;
    protected RunViewGenericInternal(provider: DatabaseProviderBase, viewInfo: UserViewEntityExtended, extraFilter: string, orderBy: string, userSearchString: string, excludeUserViewRunID: string | undefined, overrideExcludeFilter: string | undefined, saveViewResults: boolean | undefined, fields: string[] | undefined, ignoreMaxRows: boolean | undefined, excludeDataFromAllPriorViewRuns: boolean | undefined, forceAuditLog: boolean | undefined, auditLogDescription: string | undefined, resultType: string | undefined, userPayload: UserPayload | null, maxRows: number | undefined, startRow: number | undefined): Promise<RunViewResult<any>>;
    protected RunViewsGenericInternal(params: RunViewGenericParams[]): Promise<RunViewResult[]>;
    protected createRecordAccessAuditLogRecord(provider: DatabaseProviderBase, userPayload: UserPayload, entityName: string, recordId: any): Promise<any>;
    protected getRowLevelSecurityWhereClause(provider: DatabaseProviderBase, entityName: string, userPayload: UserPayload, type: EntityPermissionType, returnPrefix: string): string;
    protected createAuditLogRecord(provider: DatabaseProviderBase, userPayload: UserPayload, authorizationName: string | null, auditLogTypeName: string, status: string, details: string | null, entityId: string, recordId: any | null): Promise<any>;
    protected safeFirstArrayElement<T = any>(arr: T[]): T;
    protected packageSPParam(paramValue: any, quoteString: string): string;
    protected GetUserFromEmail(email: string): UserInfo | undefined;
    protected GetUserFromPayload(userPayload: UserPayload): UserInfo | undefined;
    get MJCoreSchema(): string;
    protected ListenForEntityMessages(entityObject: BaseEntity, pubSub: PubSubEngine, userPayload: UserPayload): void;
    protected CreateRecord(entityName: string, input: any, provider: DatabaseProviderBase, userPayload: UserPayload, pubSub: PubSubEngine): Promise<any>;
    protected BeforeCreate(provider: DatabaseProviderBase, input: any): Promise<boolean>;
    protected AfterCreate(provider: DatabaseProviderBase, input: any): Promise<void>;
    protected UpdateRecord(entityName: string, input: any, provider: DatabaseProviderBase, userPayload: UserPayload, pubSub: PubSubEngine): Promise<any>;
    protected TestAndSetClientOldValuesToDBValues(input: any, clientNewValues: any, entityObject: BaseEntity, contextUser: UserInfo): Promise<void>;
    protected DeleteRecord(entityName: string, key: CompositeKey, options: DeleteOptionsInput, provider: DatabaseProviderBase, userPayload: UserPayload, pubSub: PubSubEngine): Promise<any>;
    protected BeforeDelete(provider: DatabaseProviderBase, key: CompositeKey): Promise<boolean>;
    protected AfterDelete(provider: DatabaseProviderBase, key: CompositeKey): Promise<void>;
    protected BeforeUpdate(provider: DatabaseProviderBase, input: any): Promise<boolean>;
    protected AfterUpdate(provider: DatabaseProviderBase, input: any): Promise<void>;
}
//# sourceMappingURL=ResolverBase.d.ts.map