import { DatabaseAdapter, DatabaseSession } from "./database/types"; import { StaffDefinition } from "./lib"; import { App, Company, Config, Contact, Database, Interaction, TemplateEmail } from "./types"; export declare class CrmSession implements DatabaseSession { databaseAdapter: DatabaseAdapter; databaseSession?: DatabaseSession; constructor(database: DatabaseAdapter); close(): Promise; database(): Promise; addCompany(company: Partial): Promise; addApp(app: Partial): Promise; addContact(attributes: Partial): Promise; addInteraction(interaction: Interaction & { company: string; }): Promise; addStaff(staff: StaffDefinition): Promise<{ [email: string]: string; } | { error: string; }>; addTemplate(template: TemplateEmail): Promise; updateConfig(attributes: Partial): Promise; updateApp(appName: string, attributes: Partial): Promise; updateCompany(name: string, attributes: Partial): Promise; updateContact(email: string, attributes: Partial): Promise; updateInteraction(companyName: string, index: number, attributes: Partial): Promise; doneInteraction(companyName: string, index: number): Promise; dump(): Promise; findAppByEmail(email: string): Promise<{ company: Company; app: App; } | undefined>; findAppByName(appName: string): Promise<{ company: Company; app: App; } | undefined>; findCompanyByName(name: string): Promise; findContactByEmail(email: string): Promise<{ company: Company; contact: Contact; } | undefined>; findFollowups(startDate: string, endDate: string): Promise<(Interaction & { company: string; })[]>; findInteractions(startDate: string, endDate: string): Promise<(Interaction & { company: string; })[]>; searchCompanies(filter: string): Promise; loadConfig(): Promise; } /** * Open a new CRM Session. * * This should be short lived (as loaded data will be cached for the duration of the session). */ export declare function crmSession(url?: string): Promise;