import Command, { flags } from '@oclif/command';
import * as OClifConfig from '@oclif/config';
import _inquirer from '@cto.ai/inquirer';
import { Config, User, Team, ValidationFields, SigninPipeline, Tokens, Services } from './types';
declare abstract class CTOCommand extends Command {
    accessToken: string;
    user: User;
    team: Team;
    state: {
        config: Config;
    };
    ux: {
        print: (text: string) => Promise<void>;
        prompt: <A>(questions: _inquirer.ListQuestion<Record<string, any>> | _inquirer.RawListQuestion<Record<string, any>> | _inquirer.ExpandQuestion<Record<string, any>> | _inquirer.CheckboxQuestion<Record<string, any>> | _inquirer.CheckboxPlusQuestion<Record<string, any>> | _inquirer.EmojiQuestion<Record<string, any>> | _inquirer.FuzzyPathQuestion<Record<string, any>> | _inquirer.ConfirmQuestion<Record<string, any>> | _inquirer.InputQuestion<Record<string, any>> | _inquirer.NumberQuestion<Record<string, any>> | _inquirer.PasswordQuestion<Record<string, any>> | _inquirer.EditorQuestion<Record<string, any>> | _inquirer.AutoCompleteQuestion<Record<string, any>> | _inquirer.DatePickerQuestion<Record<string, any>> | _inquirer.Question<Record<string, any>>[]) => Promise<A>;
        colors: import("chalk").Chalk & {
            supportsColor: import("chalk").ColorSupport;
        } & {
            callOutCyan: (text: string) => string;
            actionBlue: (text: string) => string;
            primary: (text: string) => string;
            secondary: (text: string) => string;
            tertiary: (text: string) => string;
            successGreen: (text: string) => string;
            errorRed: (text: string) => string;
            multiPurple: (text: string) => string;
            multiBlue: (text: string) => string;
            multiOrange: (text: string) => string;
        };
        spinner: {
            start: (text: string) => void;
            stop: (text: string) => void;
        };
        wait: (duration: number) => Promise<void>;
        url: (text: string, url: string) => string;
        annotation: (text: string, annotation: string) => void;
        table: typeof import("cli-ux/lib/styled/table").table;
        tree: typeof import("cli-ux/lib/styled/tree").default;
        progress: {
            init: (options?: import("cli-progress").Options | undefined) => import("cli-progress").Bar;
        };
        notify: (options: object) => void;
        inquirer: _inquirer.Inquirer;
    };
    services: Services;
    constructor(argv: string[], config: OClifConfig.IConfig, services?: Services);
    init(): Promise<void>;
    isTokenValid: (tokens: Tokens) => boolean;
    checkAndRefreshAccessToken: (tokens: Tokens) => Promise<Config>;
    isLoggedIn(): Promise<Config>;
    fetchUserInfo: ({ tokens }: SigninPipeline) => Promise<{
        meResponse: {
            me: {
                id: any;
                username: any;
                email: any;
            };
            teams: Team[];
        };
        tokens: Tokens;
    }>;
    writeConfig: (oldConfigObj: Partial<Config> | null | undefined, newConfigObj: Partial<Config>) => Promise<Partial<Config>>;
    readConfig: () => Promise<Config>;
    clearConfig: () => Promise<void>;
    invalidateKeycloakSession: () => Promise<void>;
    initConfig: (tokens: Tokens) => Promise<Config>;
    validateUniqueField(query: ValidationFields, accessToken: string): Promise<boolean>;
    pickFromList(items: string[], question: string): Promise<string>;
}
export { CTOCommand as default, flags };
