import { List } from './List';
import { Text } from './Text';
import { Optional } from './Types';
import { Get } from './Get';
import { JsonValue } from './Json';
export type TemplateOptions = {
    type?: Text;
    property?: Text;
    actual?: Text;
    subject?: Text;
};
export declare class Template implements Text {
    private readonly template;
    private readonly subject;
    private readonly options;
    constructor(template: string, subject?: unknown, options?: TemplateOptions);
    toString: () => string;
    private readonly props;
    private readonly object;
    private readonly option;
}
export declare function template(tmpl: Text, subject: unknown, options?: TemplateOptions): Text;
export declare class ToText implements Text {
    readonly subject: string;
    constructor(subject: string);
    get cap(): ToText;
    get capFirst(): ToText;
    get title(): ToText;
    get pascal(): ToText;
    get lower(): ToText;
    get upper(): ToText;
    get camel(): ToText;
    get kebab(): ToText;
    get strictKebab(): ToText;
    get slug(): ToText;
    get snake(): ToText;
    get plural(): ToText;
    get space(): ToText;
    get sentence(): ToText;
    get initials(): ToText;
    get trim(): ToText;
    get isEmpty(): boolean;
    parse: (subject: unknown, options?: {}) => ToText;
    is: (...others: unknown[]) => boolean;
    equals: (...others: unknown[]) => boolean;
    isLike: (...others: unknown[]) => boolean;
    ifLike: (...others: unknown[]) => Optional<this>;
    endsWith: (end?: unknown) => boolean;
    startsWith: (end?: unknown) => boolean;
    first: (n: number) => ToText;
    last: (n: number) => ToText;
    map: (func: Get<string, string>) => ToText;
    replace: (search: Text, replace: Text) => ToText;
    add: (add?: unknown, separator?: string) => ToText;
    with: (separator: string, ...other: unknown[]) => ToText;
    split: (separator?: string) => List<string>;
    toString(): string;
    toJSON(): JsonValue;
}
export declare function text(subject?: unknown, alt?: string): ToText;
export declare function textValue(subject: any, prop: string): string;
