import { Account, AuthenticationOptions, AuthenticationResult, SecretType, WindowMode } from '@venly/connect';
import { VenlyController } from './venlyController';
export { SecretType, WindowMode } from '@venly/connect';
export { CHAIN_CONFIGS } from './types';
export declare class VenlyProvider {
    #private;
    venlyController: VenlyController;
    _provider: any;
    _blockTracker: any;
    get connect(): import("@venly/connect").VenlyConnect;
    changeSecretType(secretType?: SecretType, chainId?: string): Promise<any>;
    checkAuthenticated(): Promise<AuthenticationResult>;
    authenticate(authenticationOptions?: AuthenticationOptions): Promise<Account | {}>;
    logout(): Promise<void>;
    createProvider(options: VenlyProviderOptions): Promise<any>;
}
/**
 * @type {Object}
 * @property {string} clientId - The clientId to connect to Venly
 * @property {string} environment - The environment to which you want to connect, possible values are 'sandbox' and 'production'. Defaults to 'production'.
 * @property {SecretType} secretType - The secret type to use. Allowed types for web3 provider: ETHEREUM, BSC, MATIC https://docs.venly.io/widget/widget-advanced/object-type-reference/secrettype
 * @property {WindowMode} windowMode - The sign method you want to use, possible values are POPUP or REDIRECT. Defaults to POPUP.
 * @property {function} bearerTokenProvider - You can implement all the authentication handling yourself and provide Venly Connect with your own bearer token provider. The bearer token provider is a function returning the bearer token (access token) to login to Venly. Default the Venly Connect authentication client is used.
 * @property {AuthenticationOptions} authenticationOptions - The options to use for authentications https://docs.venly.io/widget/widget-advanced/object-type-reference/authenticationoptions
 * @property {boolean} skipAuthentication - Boolean flag that indicates if you want to authenticate immediately or revert to checkAuthenticated(). Defaults to false.
 */
export interface VenlyProviderOptions {
    clientId: string;
    environment?: string;
    secretType?: SecretType;
    windowMode?: WindowMode;
    bearerTokenProvider?: () => string;
    authenticationOptions?: AuthenticationOptions;
    skipAuthentication?: boolean;
    pollingInterval?: number;
}
