/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
import * as i18n from '../../../i18n/i18n_ast';
import * as html from '../../../ml_parser/ast';
import * as o from '../../../output/output_ast';
export declare const TRANSLATION_PREFIX = "I18N_";
/** Name of the i18n attributes **/
export declare const I18N_ATTR = "i18n";
export declare const I18N_ATTR_PREFIX = "i18n-";
/** Prefix of var expressions used in ICUs */
export declare const I18N_ICU_VAR_PREFIX = "VAR_";
/** Prefix of ICU expressions for post processing */
export declare const I18N_ICU_MAPPING_PREFIX = "I18N_EXP_";
/** Placeholder wrapper for i18n expressions **/
export declare const I18N_PLACEHOLDER_SYMBOL = "\uFFFD";
export declare function isI18nAttribute(name: string): boolean;
export declare function isI18nRootNode(meta?: i18n.I18nMeta): meta is i18n.Message;
export declare function isSingleI18nIcu(meta?: i18n.I18nMeta): boolean;
export declare function hasI18nAttrs(element: html.Element): boolean;
export declare function icuFromI18nMessage(message: i18n.Message): i18n.IcuPlaceholder;
export declare function wrapI18nPlaceholder(content: string | number, contextId?: number): string;
export declare function assembleI18nBoundString(strings: string[], bindingStartIndex?: number, contextId?: number): string;
export declare function getSeqNumberGenerator(startsAt?: number): () => number;
export declare function placeholdersToParams(placeholders: Map<string, string[]>): {
    [name: string]: o.LiteralExpr;
};
export declare function updatePlaceholderMap(map: Map<string, any[]>, name: string, ...values: any[]): void;
export declare function assembleBoundTextPlaceholders(meta: i18n.I18nMeta, bindingStartIndex?: number, contextId?: number): Map<string, any[]>;
/**
 * Format the placeholder names in a map of placeholders to expressions.
 *
 * The placeholder names are converted from "internal" format (e.g. `START_TAG_DIV_1`) to "external"
 * format (e.g. `startTagDiv_1`).
 *
 * @param params A map of placeholder names to expressions.
 * @param useCamelCase whether to camelCase the placeholder name when formatting.
 * @returns A new map of formatted placeholder names to expressions.
 */
export declare function i18nFormatPlaceholderNames(params: {
    [name: string]: o.Expression;
} | undefined, useCamelCase: boolean): {
    [key: string]: o.Expression;
};
/**
 * Converts internal placeholder names to public-facing format
 * (for example to use in goog.getMsg call).
 * Example: `START_TAG_DIV_1` is converted to `startTagDiv_1`.
 *
 * @param name The placeholder name that should be formatted
 * @returns Formatted placeholder name
 */
export declare function formatI18nPlaceholderName(name: string, useCamelCase?: boolean): string;
/**
 * Generates a prefix for translation const name.
 *
 * @param extra Additional local prefix that should be injected into translation var name
 * @returns Complete translation const prefix
 */
export declare function getTranslationConstPrefix(extra: string): string;
/**
 * Generate AST to declare a variable. E.g. `var I18N_1;`.
 * @param variable the name of the variable to declare.
 */
export declare function declareI18nVariable(variable: o.ReadVarExpr): o.Statement;