import type Transport from "@ledgerhq/hw-transport"; import type { SignerContext } from "@ledgerhq/ledger-wallet-framework/signer"; import type { GetViewKeyFn, GetViewKeyOptions } from "@ledgerhq/coin-aleo/signer/getViewKey"; import type { CreateSigner } from "../../../../bridge/setup"; import type { Resolver } from "./types"; export type ViewKeyResolver = (signerContext: SignerContext) => GetViewKeyFn; /** * Inject the `signer` so it can be used by the resolver function. * @param signerFactory * @param viewKeyResolver * @returns Resolver */ export function createViewKeyResolver( signerFactory: CreateSigner, viewKeyResolver: ViewKeyResolver, ): Resolver { return (transport: Transport, opts: GetViewKeyOptions): ReturnType => { const signerContext: SignerContext = (_, fn) => fn(signerFactory(transport)); return viewKeyResolver(signerContext)("", opts); }; }