import { CreateConnectorFn } from "../types/connector.js";
import { UTXOConnectorParameters, UTXOWalletProvider } from "./types.js";
import { Account, Address, ChainId } from "@bigmi/core";

//#region src/connectors/onekey.d.ts
type OneKeyBitcoinNetwork = "livenet" | "testnet";
type OneKeyBitcoinEventMap = {
  accountsChanged(accounts: Address[]): void;
  networkChanged(network: OneKeyBitcoinNetwork): void;
};
type OneKeyBitcoinEvents = {
  addListener<TEvent extends keyof OneKeyBitcoinEventMap>(event: TEvent, listener: OneKeyBitcoinEventMap[TEvent]): void;
  removeListener<TEvent extends keyof OneKeyBitcoinEventMap>(event: TEvent, listener: OneKeyBitcoinEventMap[TEvent]): void;
};
type OneKeyConnectorProperties = {
  getAccounts(): Promise<readonly Account[]>;
  onAccountsChanged(accounts: Address[]): void;
  getInternalProvider(): Promise<OneKeyBitcoinProvider>;
  switchChain({
    chainId
  }: {
    chainId: ChainId;
  }): Promise<boolean>;
} & UTXOWalletProvider;
type OneKeyBitcoinProvider = {
  requestAccounts(): Promise<Address[]>;
  getAccounts(): Promise<Address[]>;
  getPublicKey(): Promise<string>;
  signPsbt(psbtHex: string, options: {
    toSignInputs: {
      index: number;
      address: string;
      sighashTypes?: number[];
    }[];
    autoFinalized?: boolean;
  }): Promise<string>;
  getNetwork(): Promise<OneKeyBitcoinNetwork>;
  switchNetwork(network: OneKeyBitcoinNetwork): Promise<OneKeyBitcoinNetwork>;
} & OneKeyBitcoinEvents;
declare function onekey(parameters?: UTXOConnectorParameters): CreateConnectorFn<UTXOWalletProvider | undefined, OneKeyConnectorProperties>;
declare namespace onekey {
  export var type: "UTXO";
}
//#endregion
export { OneKeyBitcoinEventMap, OneKeyBitcoinEvents, OneKeyBitcoinNetwork, onekey };
//# sourceMappingURL=onekey.d.ts.map