UNPKG

@ledgerhq/coin-mina

Version:
73 lines (63 loc) 2.19 kB
import type { AccountBridge, CurrencyBridge } from "@ledgerhq/types-live"; import { makeAccountBridgeReceive, getSerializedAddressParameters, updateTransaction, makeScanAccounts, } from "@ledgerhq/coin-framework/bridge/jsHelpers"; import { SignerContext } from "@ledgerhq/coin-framework/signer"; import getAddressWrapper from "@ledgerhq/coin-framework/bridge/getAddressWrapper"; import type { Transaction } from "../types/common"; import resolver from "../signer/getAddress"; import { sync, getAccountShape } from "./synchronisation"; import { MinaSigner } from "../types/signer"; import { MinaCoinConfig, setCoinConfig } from "../config"; import broadcast from "./broadcast"; import { createTransaction } from "./createTransaction"; import estimateMaxSpendable from "./estimateMaxSpendable"; import getTransactionStatus from "./getTransactionStatus"; import { prepareTransaction } from "./prepareTransaction"; import buildSignOperation from "./signOperation"; import makeCliTools from "./cli-transaction"; export { makeCliTools }; export function buildCurrencyBridge(signerContext: SignerContext<MinaSigner>): CurrencyBridge { const getAddress = resolver(signerContext); const scanAccounts = makeScanAccounts({ getAccountShape, getAddressFn: getAddress, }); return { preload: async () => Promise.resolve({}), hydrate: () => {}, scanAccounts, }; } export function buildAccountBridge( signerContext: SignerContext<MinaSigner>, ): AccountBridge<Transaction> { const getAddress = resolver(signerContext); const receive = makeAccountBridgeReceive(getAddressWrapper(getAddress)); const signOperation = buildSignOperation(signerContext); return { estimateMaxSpendable, createTransaction, updateTransaction, getTransactionStatus, prepareTransaction, sync, receive, signOperation, broadcast, getSerializedAddressParameters, }; } export function createBridges( signerContext: SignerContext<MinaSigner>, coinConfig: MinaCoinConfig, ) { setCoinConfig(coinConfig); return { currencyBridge: buildCurrencyBridge(signerContext), accountBridge: buildAccountBridge(signerContext), }; }