/*! Copyright 2023-2024 the gnablib contributors MPL-1.1 */
import { ColType } from './ColType.js';
import { ACudColType } from './ACudColType.js';
import type { IValid } from '../interfaces/IValid.js';
import { FromBinResult } from '../../primitive/FromBinResult.js';
import { IProblem } from '../../error/probs/interfaces/IProblem.js';
declare abstract class AUtf8 extends ACudColType implements IValid<string> {
    protected abstract get _lenBytes(): number;
    protected abstract get _maxStrLen(): number;
    readonly sqliteType = "TEXT";
    readonly postgresType = "text";
    constructor(nullable?: boolean);
    cudByteSize(input: string): number;
    valid(input?: string): IProblem | undefined;
    unknownBin(value?: string): Uint8Array;
    binUnknown(bin: Uint8Array, pos: number): FromBinResult<string | undefined>;
}
export declare class Utf81 extends AUtf8 {
    readonly _colType = ColType.Utf81;
    readonly _lenBytes = 1;
    readonly _maxStrLen = 255;
    readonly mysqlType = "TINYTEXT";
    readonly cudType = "utf8-1";
}
export declare class Utf82 extends AUtf8 {
    readonly _colType = ColType.Utf82;
    readonly _lenBytes = 2;
    readonly _maxStrLen = 65535;
    readonly mysqlType = "TEXT";
    readonly cudType = "utf8-2";
}
export declare class Utf83 extends AUtf8 {
    readonly _colType = ColType.Utf83;
    readonly _lenBytes = 3;
    readonly _maxStrLen = 16777215;
    readonly mysqlType = "MEDIUMTEXT";
    readonly cudType = "utf8-3";
}
export declare class Utf84ish extends AUtf8 {
    readonly _colType = ColType.Utf84ish;
    readonly _lenBytes = 4;
    readonly _maxStrLen = 1000000000;
    readonly mysqlType = "LONGTEXT";
    readonly cudType = "utf8-4";
}
export {};
