@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
268 lines • 12.4 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAvailableProviders = exports.fetchAndMergeProviderData = exports.findExchangeCurrencyData = exports.getSwapProvider = exports.privacyPolicy = exports.termsOfUse = exports.dexProvidersContractAddress = void 0;
const live_env_1 = require("@ledgerhq/live-env");
const _1 = require(".");
const ledger_cal_service_1 = __importStar(require("@ledgerhq/ledger-cal-service"));
const isIntegrationTestEnv_1 = require("../swap/utils/isIntegrationTestEnv");
const DEFAULT_SWAP_PROVIDERS = {
changelly: {
name: "Changelly",
publicKey: {
curve: "secp256k1",
data: Buffer.from("0480d7c0d3a9183597395f58dda05999328da6f18fabd5cda0aff8e8e3fc633436a2dbf48ecb23d40df7c3c7d3e774b77b4b5df0e9f7e08cf1cdf2dba788eb085b", "hex"),
},
signature: Buffer.from("3045022100e73339e5071b5d232e8cacecbd7c118c919122a43f8abb8b2062d4bfcd58274e022050b11605d8b7e199f791266146227c43fd11d7645b1d881f705a2f8841d21de5", "hex"),
needsKYC: false,
needsBearerToken: false,
type: "CEX",
usefulUrls: [
"https://changelly.com/terms-of-use",
"https://changelly.com/aml-kyc",
"https://support.changelly.com/en/support/tickets/new",
],
termsOfUseUrl: "https://changelly.com/terms-of-use",
supportUrl: "https://support.changelly.com/en/support/home",
mainUrl: "https://changelly.com/",
},
changelly_v2: {
name: "Changelly",
publicKey: {
curve: "secp256k1",
data: Buffer.from("0480d7c0d3a9183597395f58dda05999328da6f18fabd5cda0aff8e8e3fc633436a2dbf48ecb23d40df7c3c7d3e774b77b4b5df0e9f7e08cf1cdf2dba788eb085b", "hex"),
},
signature: Buffer.from("3045022100c2db00da651cfcc84702f75ab5f131a3f037592080ea750a6f665a8cb36797c802200e594938cdf2c836b34717f57487002a0588f2088f64f00a6c4d320fd37db6fa", "hex"),
needsKYC: false,
needsBearerToken: false,
type: "CEX",
usefulUrls: [
"https://changelly.com/terms-of-use",
"https://changelly.com/aml-kyc",
"https://support.changelly.com/en/support/tickets/new",
],
termsOfUseUrl: "https://changelly.com/terms-of-use",
supportUrl: "https://support.changelly.com/en/support/home",
mainUrl: "https://changelly.com/",
version: 2,
},
exodus: {
name: "exodus",
publicKey: {
curve: "secp256k1",
data: Buffer.from("048abacf1b1027b7c5f96d77826eada263e21d2ba8a2a037a84e0679e05d997a91ff34df181f88bdaf3521c26fb70eb028622f3afd66d0c282d5bb61da38ad76c1", "hex"),
},
signature: Buffer.from("30450221009278b9a6d7b69e56a7f58004072bd4ec741f4c6134ac0a0b83d42e8d246159760220317b334a465d9b056e9da5bfbccbac31d36c0b564b06c60e28d6e8b010782c3e", "hex"),
needsKYC: false,
needsBearerToken: false,
type: "CEX",
termsOfUseUrl: "https://www.exodus.com/legal/exodus-tos-20240219-v29.pdf",
supportUrl: "https://www.exodus.com/contact-support/",
mainUrl: "https://www.exodus.com/",
},
cic: {
name: "CIC",
publicKey: {
curve: "secp256k1",
data: Buffer.from("0444a71652995d15ef0d4d6fe8de21a0c8ad48bdbfea7f789319973669785ca96abca9fd0c504c3074d9b654f0e3a76dde642a03efe4ccdee3af3ca4ba4afa202d", "hex"),
},
signature: Buffer.from("3044022078a73433ab6289027b7a169a260f180d16346f7ab55b06a22109f68a756d691d0220190edd6e1214c3309dc1b0afe90d217b728377491561383f2ee543e2c90188eb", "hex"),
needsKYC: false,
needsBearerToken: false,
type: "CEX",
termsOfUseUrl: "https://criptointercambio.com/terms-of-use",
supportUrl: "https://criptointercambio.com/en/about",
mainUrl: "https://criptointercambio.com/",
},
moonpay: {
name: "moonpay",
publicKey: {
curve: "secp256k1",
data: Buffer.from("044989cad389020fadfb9d7a85d29338a450beec571347d2989fb57b99ecddbc8907cf8c229deee30fb8ac139e978cab8f6efad76bde2a9c6d6710ceda1fe0a4d8", "hex"),
},
signature: Buffer.from("304402202ea20dd1a67185a14503f073a387ec22564cc06bbb2545444efc929d69c70d1002201622ac8e34a7f332ac50d67c1d9221dcc3334ad7c1fb84e674654cd306bbda73", "hex"),
needsKYC: true,
needsBearerToken: false,
type: "CEX",
version: 2,
termsOfUseUrl: "https://www.moonpay.com/legal/terms_of_use_row",
supportUrl: "https://support.moonpay.com/",
mainUrl: "https://www.moonpay.com/",
},
oneinch: {
type: "DEX",
needsKYC: false,
needsBearerToken: false,
termsOfUseUrl: "https://1inch.com/assets/Widget_1inch.com_Terms_of_Use.pdf",
supportUrl: "https://help.1inch.com/en/",
mainUrl: "https://1inch.com/",
},
paraswap: {
type: "DEX",
needsKYC: false,
needsBearerToken: false,
termsOfUseUrl: "https://files.paraswap.io/tos_v4.pdf",
supportUrl: "https://help.paraswap.io/en/",
mainUrl: "https://www.paraswap.io/",
},
thorswap: {
type: "CEX",
name: "thorswap",
needsBearerToken: false,
termsOfUseUrl: "https://docs.thorswap.finance/thorswap/resources/terms-of-service",
supportUrl: "mailto:support@thorswap.finance",
mainUrl: "https://www.thorswap.finance/",
needsKYC: false,
version: 2,
publicKey: {
curve: "secp256r1",
data: Buffer.from("0480a453a91e728c5f622d966b90d15de6fdb6c267bb8147dd0e0d4e1c730d631594e724aaf2b2f526600f3713ce6bc2adbfdbaafd2121bfee64fce93fd59a9050", "hex"),
},
signature: Buffer.from("304402207a9676f6971575cad70e4ef4d937ebdba82c51e6a0ab5343c11fefa18dff326d0220643f0718da68ead3fd9900eb90bca782d533d1698c8ea1435ae232ddf2e94229", "hex"),
},
nearintents: {
type: "CEX",
name: "NEAR Intents",
needsBearerToken: false,
termsOfUseUrl: "https://swapkit.dev/terms-of-service/",
supportUrl: "https://ledgerhelp.swapkit.dev/",
mainUrl: "https://www.near.org/intents",
needsKYC: false,
version: 2,
publicKey: {
curve: "secp256r1",
data: Buffer.from("0480a453a91e728c5f622d966b90d15de6fdb6c267bb8147dd0e0d4e1c730d631594e724aaf2b2f526600f3713ce6bc2adbfdbaafd2121bfee64fce93fd59a9050", "hex"),
},
signature: Buffer.from("30440220331fca95bc6b8cf2264d72a0da9d791888c4ead9ed02bee4f6525f7e512911ca02204a78d416baa7b3fc8d6a82abbadda2e096abcbfa9a57769a8a20260d3e553b7d", "hex"),
},
lifi: {
type: "CEX",
name: "lifi",
needsBearerToken: false,
termsOfUseUrl: "https://li.fi/legal/terms-and-conditions/",
supportUrl: "https://discord.gg/jumperexchange",
mainUrl: "https://li.fi/",
needsKYC: false,
version: 2,
publicKey: {
curve: "secp256k1",
data: Buffer.from("04e5f4fa0f28dec3b1f52934f29bd91ab862b003a531d67ba3864e3ba4303be8e815a619ee6f78e8079acf46f0d0d8fc664be2f343d1c9a20c4d2420f51a56ccea", "hex"),
},
signature: Buffer.from("3044022041344dba7353fe94a4d24a20285b5afaa8fa9a022a62e1042d059b0f1d37cbc302200a3ed5d661df0c44d78c439939c4c49868936c7357da3807a19104bcfb323d24", "hex"),
},
velora: {
type: "DEX",
needsKYC: false,
needsBearerToken: false,
termsOfUseUrl: "https://files.paraswap.io/tos_v4.pdf",
supportUrl: "https://help.paraswap.io/en/",
mainUrl: "https://www.velora.xyz/",
},
};
exports.dexProvidersContractAddress = {
"0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad": "Uniswap",
"0x111111125421ca6dc452d289314280a0f8842a65": "1inch",
};
exports.termsOfUse = {
paraswap: "https://paraswap.io/tos",
"1inch": "https://1inch.com/assets/Widget_1inch.com_Terms_of_Use.pdf",
Uniswap: "https://uniswap.org/terms-of-service",
};
exports.privacyPolicy = {
Uniswap: "https://uniswap.org/privacy-policy",
};
let providerDataCache = null;
const getSwapProvider = async (providerName) => {
const testProviderInfo = (0, _1.getTestProviderInfo)();
const ledgerSignatureEnv = (0, live_env_1.getEnv)("MOCK_EXCHANGE_TEST_CONFIG") ? "test" : "prod";
const partnerSignatureEnv = (0, live_env_1.getEnv)("MOCK_EXCHANGE_TEST_PARTNER") ? "test" : "prod";
if (ledgerSignatureEnv === "test" && testProviderInfo) {
return {
needsKYC: false,
useInExchangeApp: true,
needsBearerToken: false,
type: "CEX",
termsOfUseUrl: "https://example.com",
supportUrl: "https://example.com",
mainUrl: "https://example.com",
displayName: providerName,
...testProviderInfo,
};
}
const res = await (0, exports.fetchAndMergeProviderData)({ ledgerSignatureEnv, partnerSignatureEnv });
if (!res[providerName.toLowerCase()]) {
throw new Error(`Unknown partner ${providerName}`);
}
return res[providerName.toLowerCase()];
};
exports.getSwapProvider = getSwapProvider;
/**
* Retrieves the currency data for a given ID
* @param currencyId The unique identifier for the currency.
* @returns A promise that resolves to the currency data including ID, serialized config, and signature.
* @deprecated Use cal module `findCurrencyData` method.
*/
const findExchangeCurrencyData = async (currencyId) => ledger_cal_service_1.default.findCurrencyData(currencyId);
exports.findExchangeCurrencyData = findExchangeCurrencyData;
const fetchAndMergeProviderData = async (env) => {
if (providerDataCache) {
return providerDataCache;
}
try {
const [providersData, providersExtraData] = await Promise.all([
ledger_cal_service_1.default.getProvidersData({ type: "swap", ...env }),
ledger_cal_service_1.default.getProvidersCDNData(),
]);
const finalProvidersData = mergeProviderData(providersData, providersExtraData);
providerDataCache = finalProvidersData;
return finalProvidersData;
}
catch (error) {
console.error("Error fetching or processing provider data:", error);
const finalProvidersData = mergeProviderData(DEFAULT_SWAP_PROVIDERS, ledger_cal_service_1.SWAP_DATA_CDN);
return finalProvidersData;
}
};
exports.fetchAndMergeProviderData = fetchAndMergeProviderData;
function mergeProviderData(baseData, additionalData) {
const mergedData = { ...baseData };
Object.keys(additionalData).forEach(key => {
mergedData[key] = {
...mergedData[key],
...additionalData[key],
};
});
return mergedData;
}
const getAvailableProviders = async () => {
const ledgerSignatureEnv = (0, live_env_1.getEnv)("MOCK_EXCHANGE_TEST_CONFIG") ? "test" : "prod";
const partnerSignatureEnv = (0, live_env_1.getEnv)("MOCK_EXCHANGE_TEST_PARTNER") ? "test" : "prod";
if ((0, isIntegrationTestEnv_1.isIntegrationTestEnv)()) {
return Object.keys(DEFAULT_SWAP_PROVIDERS).filter(p => p !== "changelly");
}
return Object.keys(await (0, exports.fetchAndMergeProviderData)({ ledgerSignatureEnv, partnerSignatureEnv }));
};
exports.getAvailableProviders = getAvailableProviders;
//# sourceMappingURL=swap.js.map