@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
50 lines (48 loc) • 2.5 kB
text/typescript
import { createApi as createXrpApi } from "@ledgerhq/coin-xrp/api/index";
import { createApi as createStellarApi } from "@ledgerhq/coin-stellar/api/index";
import { createApi as createCantonApi } from "@ledgerhq/coin-canton/api/index";
import { createApi as createTronApi } from "@ledgerhq/coin-tron/api/index";
import { createApi as createEvmApi } from "@ledgerhq/coin-evm/api/index";
import { createApi as createTezosApi } from "@ledgerhq/coin-tezos/api/index";
import { getCurrencyConfiguration } from "../../../config";
import { getNetworkAlpacaApi } from "./network/network-alpaca";
import type { AlpacaApi } from "@ledgerhq/coin-framework/api/types";
import type { BridgeApi } from "@ledgerhq/ledger-wallet-framework/api/types";
import { XrpCoinConfig } from "@ledgerhq/coin-xrp/config";
import { StellarCoinConfig } from "@ledgerhq/coin-stellar/config";
import { CantonCoinConfig } from "@ledgerhq/coin-canton/config";
import { TronCoinConfig } from "@ledgerhq/coin-tron/config";
import { EvmConfigInfo } from "@ledgerhq/coin-evm/config";
import { TezosCoinConfig } from "@ledgerhq/coin-tezos/config";
import { findCryptoCurrencyByNetwork } from "../utils";
export function getAlpacaApi(network: string, kind: string): AlpacaApi<any> & BridgeApi {
if (kind === "local") {
const currency = findCryptoCurrencyByNetwork(network);
switch (currency?.family) {
case "xrp":
return createXrpApi(getCurrencyConfiguration<XrpCoinConfig>(currency)) as AlpacaApi<any> &
BridgeApi; // FIXME: createXrpApi returns a strongly typed Api<XrpSender>, fix AlpacaApi<any> & BridgeApi to allow it
case "stellar":
return createStellarApi(
getCurrencyConfiguration<StellarCoinConfig>(currency),
) as AlpacaApi<any> & BridgeApi;
case "canton":
return createCantonApi(
getCurrencyConfiguration<CantonCoinConfig>(currency),
) as AlpacaApi<any> & BridgeApi;
case "tron":
return createTronApi(getCurrencyConfiguration<TronCoinConfig>(currency)) as AlpacaApi<any> &
BridgeApi;
case "evm":
return createEvmApi(
getCurrencyConfiguration<EvmConfigInfo>(currency),
currency.id,
) as AlpacaApi<any> & BridgeApi;
case "tezos":
return createTezosApi(
getCurrencyConfiguration<TezosCoinConfig>(currency),
) as AlpacaApi<any> & BridgeApi;
}
}
return getNetworkAlpacaApi(network) satisfies Partial<AlpacaApi<any> & BridgeApi>;
}