import { C8yAuthOptions } from "./auth";
declare global {
    namespace Cypress {
        interface Chainable {
            /**
             * Login to Cumulocity.
             *
             * Uses env variables `C8Y_USERNAME` and `C8Y_PASSWORD` if no arguments or no
             * auth options are passed. The logged in user will be stored in `C8Y_LOGGED_IN_USER`.
             *
             * Default values for login options:
             * ```
             * {
             *   disableGainsight: true,
             *   hideCookieBanner: true,
             *   useSession: true, // for Cypress 11+
             *   validationFn: () => {
             *     cy.getCookie('XSRF-TOKEN').should('exist');
             *     cy.getCookie('authorization').should('exist');
             *   }
             * }
             * ```
             *
             * @param {string} user - the user to login to Cumulocity
             * @param {string} password - the password to login to Cumulocity
             * @param {C8yLoginOptions} options - login options to use for login to Cumulocity
             */
            login(options?: C8yLoginOptions): Chainable<void>;
            login(user: string, options?: C8yLoginOptions): Chainable<void>;
            login(user: string, password: string, options?: C8yLoginOptions): Chainable<void>;
            login(auth: C8yAuthOptions, options?: C8yLoginOptions): Chainable<void>;
        }
    }
    type C8yLoginOptions = {
        useSession?: boolean;
        disableGainsight?: boolean;
        hideCookieBanner?: boolean;
        validationFn?: () => boolean;
    };
    type C8yLoginAuthArgs = [options?: C8yLoginOptions] | [user: string, options?: C8yLoginOptions] | [user: string, password: string, options?: C8yLoginOptions] | [authOptions: C8yAuthOptions, options?: C8yLoginOptions];
}
export declare const defaultLoginOptions: () => C8yLoginOptions;
