import { ClientConfig } from './types/config';
import { IpfsService } from './services/ipfs';
import { TasksService } from './services/tasks';
import { VAccountService } from './services/vaccount';
import { TokenService } from './services/token';
import { APIClient, FetchProvider, FetchProviderOptions } from '@wharfkit/antelope';
import { Name, Session } from "@wharfkit/session";
import { ActionService } from './services/actions';
import { AtomicAssetsService } from './services/atomic';
import { DaoService } from './services/dao';
export declare class Client {
    static __classname: string;
    readonly config: ClientConfig;
    readonly fetchProvider: FetchProvider;
    readonly eos: APIClient;
    session: Session;
    /**
     * Create a new Effect Network Client instance
     * @param {string} environment Which network you would like to connect to, defaults to 'jungle4'
     */
    constructor(environment?: string, fetchProviderOptions?: FetchProviderOptions);
    tasks: TasksService;
    ipfs: IpfsService;
    vaccount: VAccountService;
    efx: TokenService;
    action: ActionService;
    atomic: AtomicAssetsService;
    dao: DaoService;
    /**
     * Login to the Effect Network with a session
     * @param session Session object
     */
    loginWithSession(session: Session): void;
    /**
     * Login to the Effect Network with a private key
     * @param actor EOS account name of the user
     * @param permission EOS permission of the user
     * @param privateKey EOS private key of the user
     */
    login(actor: string, permission: string, privateKey: string): void;
    /**
     * Logout from the Effect Network
     */
    logout(): void;
    /**
     * Check if the user is logged in
     * @returns {boolean} Whether or not the user is logged in
     */
    isLoggedIn(): boolean;
    /**
     * Require a session to be set (make sure user is logged in), otherwise throw an error.
     */
    requireSession(): void;
    /**
     * Retrieve the actor and permission from the session
     * @returns [{ actor: Name; permission: Name }]
     */
    sessionAuth: () => {
        actor: Name;
        permission: Name;
    }[];
}
