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

//#region src/connectors/okx.d.ts
type OKXBitcoinEventMap = {
  accountsChanged(accounts: Address[]): void;
  accountChanged(account: {
    address: Address;
    publicKey: string;
    compressedPublicKey: string;
  }): void;
};
type OKXBitcoinEvents = {
  addListener<TEvent extends keyof OKXBitcoinEventMap>(event: TEvent, listener: OKXBitcoinEventMap[TEvent]): void;
  removeListener<TEvent extends keyof OKXBitcoinEventMap>(event: TEvent, listener: OKXBitcoinEventMap[TEvent]): void;
};
type OKXConnectorProperties = {
  getAccounts(): Promise<readonly Account[]>;
  onAccountsChanged(accounts: Address[]): void;
  getInternalProvider(): Promise<OKXBitcoinProvider>;
} & UTXOWalletProvider;
type OKXBitcoinProvider = {
  requestAccounts(): Promise<Address[]>;
  getAccounts(): Promise<Address[]>;
  getPublicKey(): Promise<string>;
  connect(): Promise<{
    address: Address;
    publicKey: string;
  }>;
  signPsbt(psbtHex: string, options: {
    toSignInputs: {
      index: number;
      address: string;
      sighashTypes?: number[];
    }[];
    autoFinalized?: boolean;
  }): Promise<string>;
} & OKXBitcoinEvents;
declare function okx(parameters?: UTXOConnectorParameters): CreateConnectorFn<UTXOWalletProvider | undefined, OKXConnectorProperties>;
declare namespace okx {
  export var type: "UTXO";
}
//#endregion
export { OKXBitcoinEventMap, OKXBitcoinEvents, okx };
//# sourceMappingURL=okx.d.ts.map