import { CreateConnectorFn } from "../types/connector.js";
import { UTXOConnectorParameters, UTXOWalletProvider } from "./types.js";
import { Account } from "@bigmi/core";
import { Wallet, WalletAccount } from "@wallet-standard/base";

//#region src/connectors/metamask.d.ts
type BitcoinAddressPurpose = "ordinals" | "payment";
/** MetaMask's string SIGHASH flags (Bigmi uses numeric). */
type BitcoinSigHashFlag = "ALL" | "NONE" | "SINGLE" | "ALL|ANYONECANPAY" | "NONE|ANYONECANPAY" | "SINGLE|ANYONECANPAY";
/** MetaMask Bitcoin Wallet Standard features, registered by the app via `@metamask/bitcoin-wallet-standard`. */
type MetaMaskBitcoinFeatures = {
  "bitcoin:connect": {
    connect(input: {
      purposes: BitcoinAddressPurpose[];
    }): Promise<{
      accounts: readonly WalletAccount[];
    }>;
  };
  "bitcoin:signTransaction": {
    signTransaction(...inputs: {
      psbt: Uint8Array;
      inputsToSign: {
        account: WalletAccount;
        signingIndexes: number[];
        sigHash?: BitcoinSigHashFlag;
      }[];
      chain?: string;
    }[]): Promise<readonly {
      signedPsbt: Uint8Array;
    }[]>;
  };
  "bitcoin:events": {
    on(event: "change", listener: (properties: {
      accounts?: readonly WalletAccount[];
    }) => void): () => void;
  };
};
type MetaMaskBitcoinWallet = Wallet & {
  features: MetaMaskBitcoinFeatures;
};
type MetaMaskBitcoinEventMap = {
  change(properties: {
    accounts?: readonly WalletAccount[];
  }): void;
};
type MetaMaskBitcoinEvents = {
  on(event: "change", listener: MetaMaskBitcoinEventMap["change"]): () => void;
};
type MetaMaskConnectorProperties = {
  getAccounts(): Promise<readonly Account[]>;
  onAccountsChanged(accounts: Account[]): void;
  getInternalProvider(): Promise<MetaMaskBitcoinWallet | undefined>;
} & UTXOWalletProvider;
declare function metamask(parameters?: UTXOConnectorParameters): CreateConnectorFn<UTXOWalletProvider | undefined, MetaMaskConnectorProperties>;
declare namespace metamask {
  export var type: "UTXO";
}
//#endregion
export { MetaMaskBitcoinEventMap, MetaMaskBitcoinEvents, metamask };
//# sourceMappingURL=metamask.d.ts.map