declare enum AutocompleteBehavior {
    CYCLE = "cycle",
    HYBRID = "hybrid",
    SUGGEST = "suggest"
}
declare enum Key {
    SIGINT = 3,
    EOT = 4,
    WIN_BACKSPACE = 8,
    TAB = 9,
    ENTER = 13,
    SHIFT = 16,
    CTRL = 17,
    ALT = 18,
    PAUSE_BREAK = 19,
    CAPS_LOCK = 20,
    ESCAPE = 27,
    EXCLAMATION_POINT = 33,
    SPACE = 32,
    DOUBLE_QUOTE = 34,
    POUND = 35,
    DOLLAR = 36,
    PERCENT = 37,
    AMPERSAND = 38,
    SINGLE_QUOTE = 39,
    LEFT_PAREN = 40,
    RIGHT_PAREN = 41,
    ASTERISK = 42,
    PLUS_SIGN = 43,
    COMMA = 44,
    HYPHEN = 45,
    PERIOD = 46,
    FORWARD_SLASH = 47,
    NUM_0 = 48,
    NUM_1 = 49,
    NUM_2 = 50,
    NUM_3 = 51,
    NUM_4 = 52,
    NUM_5 = 53,
    NUM_6 = 54,
    NUM_7 = 55,
    NUM_8 = 56,
    NUM_9 = 57,
    COLON = 58,
    SEMI_COLON = 59,
    LEFT_CARET = 60,
    EQUAL_SIGN = 61,
    RIGHT_CARET = 62,
    QUESTION_MARK = 63,
    AT = 64,
    A = 65,
    B = 66,
    C = 67,
    D = 68,
    E = 69,
    F = 70,
    G = 71,
    H = 72,
    I = 73,
    J = 74,
    K = 75,
    L = 76,
    M = 77,
    N = 78,
    O = 79,
    P = 80,
    Q = 81,
    R = 82,
    S = 83,
    T = 84,
    U = 85,
    V = 86,
    W = 87,
    X = 88,
    Y = 89,
    Z = 90,
    LEFT_BRACKET = 91,
    BACK_SLASH = 92,
    RIGHT_BRACKET = 93,
    CIRCUMFLEX = 94,
    UNDERSCORE = 95,
    BACK_TICK = 96,
    a = 97,
    b = 98,
    c = 99,
    d = 100,
    e = 101,
    f = 102,
    g = 103,
    h = 104,
    i = 105,
    j = 106,
    k = 107,
    l = 108,
    m = 109,
    n = 110,
    o = 111,
    p = 112,
    q = 113,
    r = 114,
    s = 115,
    t = 116,
    u = 117,
    v = 118,
    w = 119,
    x = 120,
    y = 121,
    z = 122,
    LEFT_BRACE = 123,
    VERTICAL_BAR = 124,
    RIGHT_BRACE = 125,
    TILDE = 126,
    BACKSPACE = 127
}
declare type PromptSyncHistoryObj = {
    atStart: () => boolean;
    atPenultimate: () => boolean;
    pastEnd: () => boolean;
    atEnd: () => boolean;
    prev: () => string;
    next: () => string;
    reset: () => void;
    push: (line: string) => void;
    save: () => void;
};
declare type Config = {
    autocomplete: {
        behavior: AutocompleteBehavior;
        fill: boolean;
        searchFn?: (query: string) => string[];
        sticky: boolean;
        suggestColCount: number;
        triggerKey: Key;
    };
    echo: string;
    eot: boolean;
    defaultResponse: string;
    history?: PromptSyncHistoryObj;
    sigint: boolean;
};

declare type PromptType = {
    (ask: string, value?: string | Config, configOverride?: Config): string;
    history?: PromptSyncHistoryObj;
    hide?: (ask: string) => string;
};

declare function PromptSyncPlus(config: Config | undefined): PromptType;

export { AutocompleteBehavior, Key, PromptSyncPlus as default };
