import { DogeNetworkId } from "../networks/types"; import { Transaction } from "../transaction"; interface ISignatureResult { publicKey: string; signature: string; } interface IDogeSignatureRequest { transaction: Transaction; sigHashType: number; inputIndex: number; } interface IDogeTransactionSigner { getCompressedPublicKey(): Promise; canSignHash(): boolean; signHash(hashHex: string, signSha256?: boolean): Promise; signTransaction(signatureRequest: IDogeSignatureRequest): Promise; getPrivateKeyWIF?(): Promise; } type TWalletAbility = "add-wallet-random" | "add-wallet-bip39" | "add-wallet-bip44" | "add-wallet-bip178" | "sign-transaction" | "sign-hash-sha256" | "sign-hash-raw" | "export-private-key-wif"; interface IDogeWalletProvider { getSigners(): Promise; addWalletRandom?(networkId: DogeNetworkId): Promise; addWalletBIP39?(networkId: DogeNetworkId, seedPhrase: string, password?: string): Promise; addWalletBIP44?(networkId: DogeNetworkId, fullDerivationPath: string): Promise; addWalletBIP178?(networkId: DogeNetworkId, wif: string): Promise; getAbilities(): TWalletAbility[]; } interface IFullDogeWalletProvider extends IDogeWalletProvider { getCompressedPublicKeys(useCache?: boolean): Promise; getSignerForPublicKey(compressedPublicKeyHex: string, useCache?: boolean): Promise; getP2PKHAddresses(networkId: string, useCache?: boolean): Promise<{ address: string; publicKey: string; }[]>; getSignerForAddress(address: string, useCache?: boolean): Promise; getBaseProvider(): T; } interface IDogeWalletSerialized { wif: string; networkId: string; name: string; } export type { ISignatureResult, IDogeTransactionSigner, IDogeWalletProvider, IDogeWalletSerialized, IFullDogeWalletProvider, IDogeSignatureRequest, TWalletAbility, };