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

//#region src/connectors/dynamic.d.ts
type DynamicWalletConnectorEventMap = {
  accountChange(props: {
    accounts: string[];
  }): void;
};
type DynamicWalletConnectorEvents = {
  addListener<TEvent extends keyof DynamicWalletConnectorEventMap>(event: TEvent, listener: DynamicWalletConnectorEventMap[TEvent]): void;
  removeListener<TEvent extends keyof DynamicWalletConnectorEventMap>(event: TEvent, listener: DynamicWalletConnectorEventMap[TEvent]): void;
};
type DynamicWalletConnector = {
  providerId: string;
  name: string;
  id: string;
  getAddress(): string;
  _metadata: {
    icon?: string;
  };
} & DynamicWalletConnectorEvents;
type BitcoinAddress = {
  address: string;
  type: "ordinals" | "payment";
  publicKey: string;
};
type BitcoinSignPsbtRequestSignature = {
  address: string;
  signingIndexes: number[] | undefined;
  disableAddressValidation?: boolean;
};
type BitcoinSignPsbtRequest = {
  allowedSighash: number[];
  unsignedPsbtBase64: string;
  signature?: BitcoinSignPsbtRequestSignature[];
};
type BitcoinSignPsbtResponse = {
  signedPsbt: string;
};
type DynamicBitcoinWallet = {
  connector: DynamicWalletConnector;
  additionalAddresses: BitcoinAddress[];
  address: string;
  isAuthenticated: boolean;
  signPsbt(parameters: BitcoinSignPsbtRequest): Promise<BitcoinSignPsbtResponse | undefined>;
};
type DynamicConnectorProperties = {
  getAccounts(): Promise<readonly Account[]>;
  onAccountsChanged(accounts: Address[]): void;
  getInternalProvider(): Promise<DynamicWalletConnector>;
} & UTXOWalletProvider;
type DynamicConnectorParameters = {
  wallet: DynamicBitcoinWallet;
} & UTXOConnectorParameters;
declare function dynamic(parameters: DynamicConnectorParameters): CreateConnectorFn<UTXOWalletProvider | undefined, DynamicConnectorProperties>;
declare namespace dynamic {
  export var type: "UTXO";
}
//#endregion
export { BitcoinSignPsbtRequestSignature, DynamicWalletConnector, DynamicWalletConnectorEventMap, DynamicWalletConnectorEvents, dynamic };
//# sourceMappingURL=dynamic.d.ts.map