///
import { Options } from ".";
import Context from "./Context";
import Language, { Localization } from "./Language";
import { PrettyVError } from "./util/format-verror";
export declare class NoDefaultLabelsError extends Error {
readonly lang: Language;
constructor(lang: Language, message?: string);
}
export declare class LabelEncodingError extends PrettyVError {
text?: Buffer;
constructor(labelDescription: string, lang: Language, cause?: Error | string, ...params: unknown[]);
}
export interface Labels {
languageName?: T;
agree: T;
disagree: T;
print: T;
save: T;
message: T;
}
export declare namespace Labels {
type WithLanguageName = Labels & {
languageName: T;
};
type WithoutLanguageName = Labels & {
languageName?: never;
};
const names: readonly ("message" | "languageName" | "agree" | "disagree" | "print" | "save")[];
const descriptions: Readonly<{
languageName: string;
agree: string;
disagree: string;
print: string;
save: string;
message: string;
}>;
function fromPromises(labels: Labels.WithoutLanguageName>): Promise>;
function fromPromises(labels: Labels.WithLanguageName>): Promise>;
function fromPromises(labels: Labels>): Promise>;
interface MapOptions {
onNoLanguageName?(): U;
}
function mapAsync(labels: Labels.WithLanguageName, fun: (label: T, key: keyof Labels, labels: Labels) => Promise, options?: MapOptions>): Promise>;
function mapAsync(labels: Labels.WithoutLanguageName, fun: (label: T, key: keyof Labels, labels: Labels) => Promise, options?: MapOptions> & {
onNoLanguageName?: never;
}): Promise>;
function mapAsync(labels: Labels, fun: (label: T, key: keyof Labels, labels: Labels) => Promise, options: MapOptions> & {
onNoLanguageName(): Promise;
}): Promise>;
function mapAsync(labels: Labels, fun: (label: T, key: keyof Labels, labels: Labels) => Promise, options?: MapOptions>): Promise>;
function map(labels: Labels.WithLanguageName, fun: (label: T, key: keyof Labels, labels: Labels) => U, options?: MapOptions): Labels.WithLanguageName;
function map(labels: Labels.WithoutLanguageName, fun: (label: T, key: keyof Labels, labels: Labels) => U, options?: MapOptions & {
onNoLanguageName?: never;
}): Labels.WithoutLanguageName;
function map(labels: Labels, fun: (label: T, key: keyof Labels, labels: Labels) => U, options: MapOptions & {
onNoLanguageName(): U;
}): Labels.WithLanguageName;
function map(labels: Labels, fun: (label: T, key: keyof Labels, labels: Labels) => U, options?: MapOptions): Labels;
interface ForEachOptions {
onNoLanguageName?(): void;
}
function forEach(labels: Labels, fun: (label: T, key: keyof Labels, labels: Labels) => void, { onNoLanguageName }?: ForEachOptions): void;
interface CreateOptions {
includeLanguageName?: boolean;
}
function create(fun: (key: keyof Labels, index: number) => T, options: CreateOptions & {
includeLanguageName: true;
}): Labels.WithLanguageName;
function create(fun: (key: keyof Labels, index: number) => T, options?: CreateOptions & {
includeLanguageName?: false;
}): Labels.WithoutLanguageName;
function create(fun: (key: keyof Labels, index: number) => T, options?: CreateOptions): Labels;
function createAsync(fun: (key: keyof Labels, index: number) => Promise, options: CreateOptions & {
includeLanguageName: true;
}): Promise>;
function createAsync(fun: (key: keyof Labels, index: number) => Promise, options?: CreateOptions & {
includeLanguageName?: false;
}): Promise>;
function createAsync(fun: (key: keyof Labels, index: number) => Promise, options?: CreateOptions): Promise>;
/**
* Prepares a label set for insertion into a disk image as a `STR#` resource.
*
* @remarks
* Throws {@link LabelEncodingError} if there is a problem encoding some of the labels.
*
* Throws {@link verror#MultiError} if there is more than one error.
*
* @param labels - The label set to prepare.
*
* @param lang - The language to prepare the label set for. This determines the target character set.
*
* @returns A `Buffer` in `STR#` format.
*/
function prepare(labels: Labels, lang: Language): Buffer;
/**
* Prepares the given language's default label set for insertion into a disk image as a `STR#` resource.
*
* @remarks
* Throws {@link NoDefaultLabelsError} if there is no default label set for the given language.
*
* Throws {@link LabelEncodingError} if there is a problem encoding some of the labels.
*
* Throws a {@link verror#MultiError} if there is more than one error.
*
* @param lang - The language to prepare the label set for.
*
* @param contextOrOptions - Context of an existing {@link dmgLicense} run, or options for one (when calling this function standalone).
*
* @returns A `Buffer` in `STR#` format.
*/
function prepareDefault(lang: Language): Buffer;
/**
* Prepares a label set for insertion into a disk image as a `STR#` resource.
*
* @remarks
* This function delegates to `prepareDefault` or `prepare` as appropriate.
*
* Throws {@link NoDefaultLabelsError} if `labels` is `null` or `undefined` and there is no default label set for the given language.
*
* Throws {@link LabelEncodingError} if there is a problem encoding some of the labels.
*
* Throws a {@link verror#MultiError} if there is more than one error.
*
* @param labels - An object describing the label set to prepare. If `null` or `undefined`, the default label set for the given language is used instead.
*
* @param lang - The language to prepare the label set for. This determines the target character set, and if `labels` is `null` or `undefined`, which language's default label set to use.
*
* @param contextOrOptions - Context of an existing {@link dmgLicense} run, or options for one (when calling this function standalone). Used to resolve relative paths if `labels` is a `LabelsSpec.LabelsRaw`.
*
* @returns A `Buffer` in `STR#` format.
*/
function prepareSpec(labels: LabelsSpec | null | undefined, lang: Language, contextOrOptions: Context | Options): Promise;
}
export default Labels;
export interface NoLabels extends Partial> {
}
export declare type LabelsSpec = LabelsSpec.LabelsInline | LabelsSpec.LabelsRaw;
export declare namespace LabelsSpec {
interface LabelsInline extends Localization, Labels {
file?: never;
}
interface LabelsRaw extends Localization, NoLabels {
file: string;
}
}