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

//#region src/connectors/unisat.d.ts
declare enum UnisatBitcoinChainEnum {
  BITCOIN_MAINNET = "BITCOIN_MAINNET",
  BITCOIN_TESTNET = "BITCOIN_TESTNET",
  BITCOIN_TESTNET4 = "BITCOIN_TESTNET4",
  BITCOIN_SIGNET = "BITCOIN_SIGNET",
  FRACTAL_BITCOIN_MAINNET = "FRACTAL_BITCOIN_MAINNET",
  FRACTAL_BITCOIN_TESTNET = "FRACTAL_BITCOIN_TESTNET"
}
type UnisatBitcoinNetwork = "livenet" | "testnet";
type UnisatBitcoinChain = {
  enum: UnisatBitcoinChainEnum;
  name: string;
  network: UnisatBitcoinNetwork;
};
type UnisatBitcoinEventMap = {
  accountsChanged(accounts: Address[]): void;
  networkChanged(network: UnisatBitcoinNetwork): void;
};
type UnisatBitcoinEvents = {
  addListener<TEvent extends keyof UnisatBitcoinEventMap>(event: TEvent, listener: UnisatBitcoinEventMap[TEvent]): void;
  removeListener<TEvent extends keyof UnisatBitcoinEventMap>(event: TEvent, listener: UnisatBitcoinEventMap[TEvent]): void;
};
type UnisatConnectorProperties = {
  getAccounts(): Promise<readonly Account[]>;
  onAccountsChanged(accounts: Address[]): void;
  getInternalProvider(): Promise<UnisatBitcoinProvider>;
} & UTXOWalletProvider;
type UnisatBitcoinProvider = {
  requestAccounts(): Promise<Address[]>;
  getAccounts(): Promise<Address[]>;
  getPublicKey(): Promise<string>;
  signPsbt(psbtHex: string, options: {
    toSignInputs: {
      index: number;
      address: string;
      sighashTypes?: number[];
    }[];
    autoFinalized?: boolean;
  }): Promise<string>;
  getChain(): Promise<UnisatBitcoinChain>;
  switchChain(chain: UnisatBitcoinChainEnum): Promise<UnisatBitcoinChain>;
} & UnisatBitcoinEvents;
declare function unisat(parameters?: UTXOConnectorParameters): CreateConnectorFn<UTXOWalletProvider | undefined, UnisatConnectorProperties>;
declare namespace unisat {
  export var type: "UTXO";
}
//#endregion
export { UnisatBitcoinChain, UnisatBitcoinChainEnum, UnisatBitcoinEventMap, UnisatBitcoinEvents, UnisatBitcoinNetwork, unisat };
//# sourceMappingURL=unisat.d.ts.map