import { AccountRoles, LadAccountControlModel, LadAccountModel, LadDocumentService, LadMicroService, LadRedisService, SystemDocument } from ".."; export declare enum APIFunctionTypes { PRIVATE = "private", PUBLIC = "public", POST_SAVE = "postSave", PRE_SAVE = "preSave", POST_DELETE = "postDelete", PRE_DELETE = "preDelete", CREATE_RULE = "create", READ_RULE = "read", UPDATE_RULE = "update", DELETE_RULE = "delete" } export declare class APIFunctionEntry { name: string; type: APIFunctionTypes; value: APIFunction; roles: AccountRoles[]; } export declare type APIRegistrar = (m: DocumentModuleEntry, apiFn: APIFunctionEntry) => void; export declare type EventsRegistrar = (channelName: string) => void; export interface IndexedField { propertyKey: string; modelName: string; } export declare type IndexedFieldsRegistrar = (modelName: string, propertyName: string) => void; export declare type APIFunction = (args: any, utils: LadAPIUtils, opInfo?: any) => Promise; export declare class DocumentModuleEntry { model: any; api: APIFunctionEntry[]; constructor(model: any); } export declare enum AccessType { READ = "read", WRITE = "write", DELETE = "delete" } export interface AccessRuleParams { updates: SystemDocument; oldDocument: SystemDocument; userDocument: LadAccountModel; documentService: LadDocumentService; context: any; } export interface LadRedisLock { release(): Promise; } export interface LadSignupInfo { origin?: string; username?: string; mobileNo?: string; password: string; otp?: string; email?: string; } export declare class LadAPIUtils { currentUserId: string; documentService: LadDocumentService; sendSMS: (message: string, number: string, opt?: any) => Promise; executeMService: (service: LadMicroService, reqBody: any) => Promise; getCurrentAccount: () => Promise; getCurrentAccountControl: () => Promise; lockResources: (resources: string[]) => Promise; doSignup: (signupInfo: LadSignupInfo) => Promise; doUpdatePassword: (accountId: string, newPassword: string) => Promise; redisService: LadRedisService; publishEvent: (modelName: any, eventName: any, data: any) => any; requestOTP: (mobileNo: any, message?: string, userId?: string) => any; consumeOTP: (mobileNo: any, otp: string) => any; } export declare function checkMobileNo(mobileNoStr: string): string;