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

//#region src/connectors/unhosted.d.ts
type UnhostedBitcoinNetwork = "Mainnet" | "Testnet" | "Testnet4" | "Signet";
interface WalletAccount {
  address: string;
  publicKey: string;
}
interface Network$1 {
  name: UnhostedBitcoinNetwork;
}
type UnhostedBitcoinEvents = {
  on(event: "bitcoin:accountsChanged", listener: (accounts: WalletAccount[]) => void): void;
  on(event: "bitcoin:networkChanged", listener: (network: Network$1) => void): void;
  on(event: "bitcoin:disconnect", listener: () => void): void;
  off?(event: "bitcoin:accountsChanged", listener: (accounts: WalletAccount[]) => void): void;
  off?(event: "bitcoin:networkChanged", listener: (network: Network$1) => void): void;
  off?(event: "bitcoin:disconnect", listener: () => void): void;
};
type UnhostedConnectorProperties = {
  getAccounts(): Promise<readonly Account[]>;
  getInternalProvider(): Promise<UnhostedBitcoinProvider | undefined>;
} & UTXOWalletProvider;
interface SignPsbtParams {
  signInputs?: Record<string, number[]>;
  broadcast?: boolean;
}
interface SignPsbtResponse {
  psbt: string;
  txid?: string;
}
type Response<T> = Promise<{
  result: T;
}>;
type UnhostedBitcoinProvider = UnhostedBitcoinEvents & {
  wallet_connect(): Promise<{
    addresses: WalletAccount[];
  }>;
  wallet_getNetwork(): Response<{
    bitcoin: Network$1;
  }>;
  getAccounts(): Response<WalletAccount[]>;
  signPsbt(psbtBase64: string, params?: SignPsbtParams): Response<SignPsbtResponse>;
  isUnhosted?: boolean;
};
declare function unhosted(parameters?: UTXOConnectorParameters): CreateConnectorFn<UTXOWalletProvider | undefined, UnhostedConnectorProperties>;
declare namespace unhosted {
  export var type: "UTXO";
}
//#endregion
export { UnhostedBitcoinEvents, UnhostedBitcoinNetwork, unhosted };
//# sourceMappingURL=unhosted.d.ts.map