import * as IGXB from "./IGXB";
export interface CustomerData {
    email?: string;
    name?: string;
    street?: string;
    postalcode?: string;
    city?: string;
    firstName?: string;
    lastName?: string;
}
export interface Attachment {
    description?: string;
    identifier: string;
    fileType: "jpg" | "png";
    file: string;
    attachmentType: "perspective" | "floorplan" | "group" | "wall";
}
export interface SessionData<T = object> {
    data: T;
    customer?: CustomerData;
    /**
     * Provide additional statistics to server (f.e. cover: leather or feet: green)
     *
     * @type {Record<string, string | string[]>}
     */
    stats?: Record<string, string | string[]>;
    /**
     * Provides additional article information
     */
    igxb?: IGXB.IGXB_Object;
}
export interface IProjectService<SaveData = object, Settings = object> {
    getSettings(): Promise<Settings>;
    saveSession(data: SessionData<SaveData>): Promise<string>;
    finishSession(pin: string): Promise<void>;
    saveSessionAttachments(pin: string, attachments: Attachment[]): Promise<void>;
    loadSession(pin: string): Promise<SaveData>;
    getSessionPDFUrl(pin: string, locale: string): Promise<string>;
    getSessionShareImageUrl(pin: string): Promise<string>;
    sendSessionEmail(pin: string, customerData?: CustomerData, locale?: string): Promise<any>;
    validatePinFormat(pin: string): {
        hasError?: boolean;
        value: string;
    };
}
