import { Template, TemplateResourceSummary } from "../svi-datahub";
import { ApplicationType, TemplateType } from "../page-admin/page-admin-api";
/**
 * This API provides functionality that relates to the page templates.
 *
 * Accessed from the window at `window.sas.vi.pageTemplate`.
 *
 * @example window.sas.vi.pageTemplate.getPageTemplateById(templateNumber);
 * @category API
 */
export interface PageTemplateApi {
    /**
     * @method
     * @description Retrieves all templates matching the parameters.
     * @param entityType {string} The object type for which the templates are to be retrieved.
     * @param includeNoDataSource {boolean} Boolean to determine whether templates with no dataSource should be included.
     * @param clientApplication {ApplicationType} The name of the application type used for this page. Must be a valid datahub client application (for example, desktop | mobile).
     * @param templateType {TemplateType} The name of the template type used for this page. Must be a valid datahub template type (for example, home | page).
     * @returns A promise of an array of {@link TemplateResourceSummary}.
     */
    getPageTemplatesByType(entityType: string, includeNoDataSource: boolean, clientApplication: ApplicationType, templateType: TemplateType): Promise<TemplateResourceSummary[]>;
    /**
     * @method
     * @description Gets the page template with the specified ID.
     * @param templateId {number} The ID of the page template.
     * @returns A promise containing the page template metadata {@link Template}.
     */
    getPageTemplateById(templateId: number): Promise<Template>;
    /**
     * @method
     * @description Gets the page template with the specified UUID.
     * @param templateUuid {string} The UUID of the page template.
     * @returns A promise containing the page template metadata {@link Template}.
     */
    getPageTemplateByUuid(templateUuid: string): Promise<Template>;
    /**
     * @method
     * @description Get all templates of a specific client and template type. If null params defaults to clientApplication = DESKTOP, templateType = PAGE
     * @param [clientApplication] {ApplicationType} The name of the application type used for this page. Must be a valid datahub client application (for example, desktop | mobile).
     * @param [templateType] {TemplateType} The name of the template type used for this page. Must be a valid datahub template type (for example, home | page).
     * @returns A promise which returns an array of {@link TemplateResourceSummary}
     */
    getTemplates(clientApplication?: ApplicationType, templateType?: TemplateType): Promise<TemplateResourceSummary[]>;
}
