export interface FlagOption {
    alias?: string;
    type?: CliFlagTypes;
    help?: string;
}
export interface FlagWithValues {
    name?: string;
    type?: CliFlagTypes;
    values?: any[];
    help?: string;
}
/**
 * As given by the user, eg:
 *
 * { verbose: {alias: 'v', count: true } }
 */
export interface FlagOptions {
    [flagname: string]: FlagOption;
}
export interface Flags {
    [flagname: string]: FlagWithValues;
    help?: boolean;
    version?: boolean;
}
export interface FlagsWithValues extends FlagOption {
    values: string[];
}
export declare enum CliFlagTypes {
    Array,
    String,
    Boolean,
    Number,
    Count,
}
export interface CliInputAndFlags {
    input: string[];
    flags: Array<string[]>;
}
export interface FlagsOutput {
    command: string;
    input: string[];
    rawFlags: Array<string[]>;
    flagValues: FlagWithValues;
    flags: Flags;
    trailing: string;
}
/**
 * Accept either string or array input
 */
export default function parse(input: string | string[], opts?: FlagOptions): FlagsOutput;
