import type { Observable } from "rxjs";
import type { ConnectionProvider } from "./provider";
import type { ConnectionState } from "./connection-state";
export declare type ProviderOption = {
provider: ConnectionProvider ;
option: Option;
};
export interface IConnector {
/**
* Get all available connection options (Metamask, Fortmatic, Blocto, Temple etc)
*/
getOptions(): Promise[]>;
/**
* Connect using specific option
*/
connect(option: ProviderOption): void;
/**
* Subscribe to this observable to get current connection state
*/
connection: Observable>;
}
/**
* This component is used to save/load last connected provider
*/
export interface IConnectorStateProvider {
getValue(): Promise;
setValue(value: string | undefined): Promise;
}
export declare class DefaultConnectionStateProvider implements IConnectorStateProvider {
private readonly key;
constructor(key: string);
getValue(): Promise;
setValue(value: string | undefined): Promise;
}
export declare class Connector implements IConnector {
private readonly providers;
private readonly stateProvider?;
static pageUnloading: boolean | undefined;
private readonly provider;
connection: Observable>;
constructor(providers: ConnectionProvider[], stateProvider?: IConnectorStateProvider | undefined);
/**
* Add flag when page unload to avoid disconnect events from connectors
*/
static initPageUnloadProtection(): void;
/**
* Push {@link provider} to connectors list
* @param provider connection provider
*/
add(provider: ConnectionProvider): Connector ;
/**
* Create connector instance and push {@link provider} to connectors list
* @param provider connection provider
* @param stateProvider provider used to save/load last connected provider
*/
static create (provider: ConnectionProvider | ConnectionProvider [], stateProvider?: IConnectorStateProvider): Connector ;
private checkAutoConnect;
getOptions(): Promise[]>;
connect(option: ProviderOption): Promise;
}