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

//#region src/connectors/leather.d.ts
type LeatherBitcoinEventMap = {
  accountChange(accounts: Account[]): void;
};
type LeatherBitcoinEvents = {
  addListener<TEvent extends keyof LeatherBitcoinEventMap>(event: TEvent, listener: LeatherBitcoinEventMap[TEvent]): void;
  removeListener?<TEvent extends keyof LeatherBitcoinEventMap>(event: TEvent, listener: LeatherBitcoinEventMap[TEvent]): void;
};
type LeatherConnectorProperties = {
  getAccounts(): Promise<readonly (Account | Address)[]>;
  getInternalProvider(): Promise<LeatherBitcoinProvider>;
} & UTXOWalletProvider;
type Error = {
  code: number;
  message: string;
};
interface GetAccountsResponse {
  result?: {
    addresses: Account[];
  };
  error?: Error;
}
type LeatherBitcoinProvider = {
  request(method: "signPsbt", options: {
    hex: string;
    allowedSignHash: number;
    signAtIndex?: number | number[];
    broadcast: boolean;
  }): Promise<{
    result: {
      hex: string;
    };
  }>;
  request(method: "getAddresses"): Promise<GetAccountsResponse>;
} & LeatherBitcoinEvents;
declare function leather(parameters?: UTXOConnectorParameters): CreateConnectorFn<UTXOWalletProvider | undefined, LeatherConnectorProperties>;
declare namespace leather {
  export var type: "UTXO";
}
//#endregion
export { LeatherBitcoinEventMap, LeatherBitcoinEvents, leather };
//# sourceMappingURL=leather.d.ts.map