import { IdObjectSkeletonInterface } from '../api/ApiTypes';
import { State } from '../shared/State';
import { ExportMetaData } from './OpsTypes';
export type EmailTemplate = {
    /**
     * Email template type key used to build the IDM id: 'emailTemplate/<id>'
     */
    EMAIL_TEMPLATE_TYPE: string;
    /**
     * Create an empty email template export template
     * @returns {EmailTemplateExportInterface} an empty email template export template
     */
    createEmailTemplateExportTemplate(): EmailTemplateExportInterface;
    /**
     * Get all email templates
     * @returns {Promise<EmailTemplateSkeleton[]>} a promise that resolves to an array of email template objects
     */
    readEmailTemplates(): Promise<EmailTemplateSkeleton[]>;
    /**
     * Get email template
     * @param {string} templateId id/name of the email template without the type prefix
     * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves an email template object
     */
    readEmailTemplate(templateId: string): Promise<EmailTemplateSkeleton>;
    /**
     * Export all email templates. The response can be saved to file as is.
     * @returns {Promise<EmailTemplateExportInterface>} Promise resolving to a EmailTemplateExportInterface object.
     */
    exportEmailTemplates(): Promise<EmailTemplateExportInterface>;
    /**
     * Create email template
     * @param {string} templateId id/name of the email template without the type prefix
     * @param {EmailTemplateSkeleton} templateData email template object
     * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves to an email template object
     */
    createEmailTemplate(templateId: string, templateData: EmailTemplateSkeleton): Promise<EmailTemplateSkeleton>;
    /**
     * Update or create email template
     * @param {string} templateId id/name of the email template without the type prefix
     * @param {EmailTemplateSkeleton} templateData email template object
     * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves to an email template object
     */
    updateEmailTemplate(templateId: string, templateData: EmailTemplateSkeleton): Promise<EmailTemplateSkeleton>;
    /**
     * Import all email templates
     * @param {EmailTemplateExportInterface} importData import data
     * @returns {Promise<IdObjectSkeletonInterface[]>} a promise resolving to an array of email template objects
     */
    importEmailTemplates(importData: EmailTemplateExportInterface): Promise<EmailTemplateSkeleton[]>;
    /**
     * Delete all email templates
     * @returns {Promise<EmailTemplateSkeleton[]>} a promise that resolves to an array of email template objects
     */
    deleteEmailTemplates(): Promise<EmailTemplateSkeleton[]>;
    /**
     * Delete email template
     * @param {string} templateId id/name of the email template without the type prefix 'emailTemplate/'
     * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves an email template object
     */
    deleteEmailTemplate(templateId: string): Promise<EmailTemplateSkeleton>;
    /**
     * Get all email templates
     * @returns {Promise<EmailTemplateSkeleton[]>} a promise that resolves to an array of email template objects
     * @deprecated since v2.0.0 use {@link EmailTemplate.readEmailTemplates | readEmailTemplates} instead
     * ```javascript
     * readEmailTemplates(): Promise<EmailTemplateSkeleton[]>
     * ```
     * @group Deprecated
     */
    getEmailTemplates(): Promise<EmailTemplateSkeleton[]>;
    /**
     * Get email template
     * @param {string} templateId id/name of the email template without the type prefix
     * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves an email template object
     * @deprecated since v2.0.0 use {@link EmailTemplate.readEmailTemplate | readEmailTemplate} instead
     * ```javascript
     * readEmailTemplate(templateId: string): Promise<EmailTemplateSkeleton>
     * ```
     * @group Deprecated
     */
    getEmailTemplate(templateId: string): Promise<EmailTemplateSkeleton>;
    /**
     * Put email template
     * @param {string} templateId id/name of the email template without the type prefix
     * @param {Object} templateData email template object
     * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves to an email template object
     * @deprecated since v2.0.0 use {@link EmailTemplate.updateEmailTemplate | updateEmailTemplate} or {@link EmailTemplate.createEmailTemplate | createEmailTemplate} instead
     * ```javascript
     * updateEmailTemplate(templateId: string, templateData: EmailTemplateSkeleton): Promise<EmailTemplateSkeleton>
     * createEmailTemplate(templateId: string, templateData: EmailTemplateSkeleton): Promise<EmailTemplateSkeleton>
     * ```
     * @group Deprecated
     */
    putEmailTemplate(templateId: string, templateData: EmailTemplateSkeleton): Promise<EmailTemplateSkeleton>;
};
declare const _default: (state: State) => EmailTemplate;
export default _default;
/**
 * Email template type key used to build the IDM id: 'emailTemplate/<id>'
 */
export declare const EMAIL_TEMPLATE_TYPE = "emailTemplate";
export type EmailTemplateSkeleton = IdObjectSkeletonInterface & {
    defaultLocale?: string;
    displayName?: string;
    enabled?: boolean;
    from: string;
    subject: Record<string, string>;
    message?: Record<string, string>;
    html?: Record<string, string>;
};
export interface EmailTemplateExportInterface {
    meta?: ExportMetaData;
    emailTemplate: Record<string, EmailTemplateSkeleton>;
}
export declare function createEmailTemplateExportTemplate({ state, }: {
    state: State;
}): EmailTemplateExportInterface;
/**
 * Get all email templates
 * @returns {Promise<EmailTemplateSkeleton[]>} a promise that resolves to an array of email template objects
 */
export declare function readEmailTemplates({ state, }: {
    state: State;
}): Promise<EmailTemplateSkeleton[]>;
/**
 * Get email template
 * @param {string} templateId id/name of the email template without the type prefix
 * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves an email template object
 */
export declare function readEmailTemplate({ templateId, state, }: {
    templateId: string;
    state: State;
}): Promise<EmailTemplateSkeleton>;
/**
 * Export all email templates. The response can be saved to file as is.
 * @returns {Promise<EmailTemplateExportInterface>} Promise resolving to a EmailTemplateExportInterface object.
 */
export declare function exportEmailTemplates({ state, }: {
    state: State;
}): Promise<EmailTemplateExportInterface>;
/**
 * Create email template
 * @param {string} templateId id/name of the email template without the type prefix
 * @param {EmailTemplateSkeleton} templateData email template object
 * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves to an email template object
 */
export declare function createEmailTemplate({ templateId, templateData, state, }: {
    templateId: string;
    templateData: EmailTemplateSkeleton;
    state: State;
}): Promise<EmailTemplateSkeleton>;
/**
 * Update or create email template
 * @param {string} templateId id/name of the email template without the type prefix
 * @param {EmailTemplateSkeleton} templateData email template object
 * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves to an email template object
 */
export declare function updateEmailTemplate({ templateId, templateData, state, }: {
    templateId: string;
    templateData: EmailTemplateSkeleton;
    state: State;
}): Promise<EmailTemplateSkeleton>;
/**
 * Import email templates.
 * @param {EmailTemplateExportInterface} importData email template import data.
 * @returns {Promise<SocialIdpSkeleton[]>} a promise resolving to an array of email template objects
 */
export declare function importEmailTemplates({ importData, state, }: {
    importData: EmailTemplateExportInterface;
    state: State;
}): Promise<EmailTemplateSkeleton[]>;
/**
 * Delete all email templates
 * @returns {Promise<EmailTemplateSkeleton[]>} a promise that resolves to an array of email template objects
 */
export declare function deleteEmailTemplates({ state, }: {
    state: State;
}): Promise<EmailTemplateSkeleton[]>;
/**
 * Delete email template
 * @param {string} templateId id/name of the email template without the type prefix 'emailTemplate/'
 * @returns {Promise<EmailTemplateSkeleton>} a promise that resolves an email template object
 */
export declare function deleteEmailTemplate({ templateId, state, }: {
    templateId: string;
    state: State;
}): Promise<EmailTemplateSkeleton>;
//# sourceMappingURL=EmailTemplateOps.d.ts.map