///
import type { MetadataDef, ProviderMeta } from '@soul-wallet/extension-inject/types';
import type { JsonRpcResponse, ProviderInterface, ProviderInterfaceCallback } from '@polkadot/rpc-provider/types';
import type { AccountAuthType, AccountJson, AuthorizeRequest, MetadataRequest, RequestAuthorizeTab, RequestRpcSend, RequestRpcSubscribe, RequestRpcUnsubscribe, RequestSign, ResponseRpcListProviders, ResponseSigning, SigningRequest } from '../types';
import { RequestSettingsType } from '@soul-wallet/extension-base/background/KoniTypes';
import SettingsStore from '@soul-wallet/extension-base/stores/Settings';
import { BehaviorSubject } from 'rxjs';
export interface Resolver {
reject: (error: Error) => void;
resolve: (result: T) => void;
}
export interface AuthRequest extends Resolver {
id: string;
idStr: string;
request: RequestAuthorizeTab;
url: string;
}
export declare type AuthUrls = Record;
export interface AuthUrlInfo {
count: number;
id: string;
isAllowed: boolean;
origin: string;
url: string;
accountAuthType?: AccountAuthType;
isAllowedMap: Record;
currentEvmNetworkKey?: string;
}
interface MetaRequest extends Resolver {
id: string;
request: MetadataDef;
url: string;
}
declare type Providers = Record ProviderInterface;
}>;
interface SignRequest extends Resolver {
account: AccountJson;
id: string;
request: RequestSign;
url: string;
}
export declare enum NotificationOptions {
None = 0,
Normal = 1,
PopUp = 2
}
export default class State {
#private;
protected readonly settingsStore: SettingsStore;
readonly authSubject: BehaviorSubject;
readonly metaSubject: BehaviorSubject;
readonly signSubject: BehaviorSubject;
constructor(providers?: Providers);
get knownMetadata(): MetadataDef[];
get numAuthRequests(): number;
get numMetaRequests(): number;
get numSignRequests(): number;
get allAuthRequests(): AuthorizeRequest[];
get allMetaRequests(): MetadataRequest[];
get allSignRequests(): SigningRequest[];
get authUrls(): AuthUrls;
protected getPopup(): number[];
protected popupClose(): void;
getSettings(update: (value: RequestSettingsType) => void): void;
setSettings(data: RequestSettingsType, callback?: () => void): void;
protected popupOpen(): void;
private authComplete;
private saveCurrentAuthList;
private metaComplete;
private signComplete;
private updateIcon;
toggleAuthorization(url: string): AuthUrls;
private updateIconAuth;
private updateIconMeta;
private updateIconSign;
authorizeUrl(url: string, request: RequestAuthorizeTab): Promise;
ensureUrlAuthorized(url: string): boolean;
injectMetadata(url: string, request: MetadataDef): Promise;
getAuthRequest(id: string): AuthRequest;
getMetaRequest(id: string): MetaRequest;
getSignRequest(id: string): SignRequest;
rpcListProviders(): Promise;
rpcSend(request: RequestRpcSend, port: chrome.runtime.Port): Promise>;
rpcStartProvider(key: string, port: chrome.runtime.Port): Promise;
rpcSubscribe({ method, params, type }: RequestRpcSubscribe, cb: ProviderInterfaceCallback, port: chrome.runtime.Port): Promise;
rpcSubscribeConnected(_request: null, cb: ProviderInterfaceCallback, port: chrome.runtime.Port): void;
rpcUnsubscribe(request: RequestRpcUnsubscribe, port: chrome.runtime.Port): Promise;
saveMetadata(meta: MetadataDef): void;
sign(url: string, request: RequestSign, account: AccountJson): Promise;
}
export {};