UNPKG

edge-core-js

Version:

Edge account & wallet management library

95 lines (80 loc) 2.36 kB
import { asArray, asBoolean, asNumber, asObject, asOptional, asString } from 'cleaners' import { asBase16 } from '../../types/server-cleaners' import { asJsonObject } from '../../util/file-helpers' // --------------------------------------------------------------------- // building-block types // --------------------------------------------------------------------- const asEdgeDenomination = asObject({ multiplier: asString, name: asString, symbol: asOptional(asString) }) const asEdgeToken = asObject({ currencyCode: asString, denominations: asArray(asEdgeDenomination), displayName: asString, networkLocation: asOptional(asJsonObject) }) const asSwapSettings = asObject({ enabled: asOptional(asBoolean, true) }).withRest // --------------------------------------------------------------------- // file types // --------------------------------------------------------------------- /** * An Airbitz Bitcoin wallet, which includes the private key & state. */ export const asLegacyWalletFile = asObject({ SortIndex: asOptional(asNumber, 0), Archived: asOptional(asBoolean, false), BitcoinSeed: asBase16, MK: asBase16, SyncKey: asBase16 }).withRest /** * An Edge wallet state file. The keys are stored in the login server. */ export const asWalletStateFile = asObject({ id: asString, archived: asOptional(asBoolean), deleted: asOptional(asBoolean), hidden: asOptional(asBoolean), migratedFromWalletId: asOptional(asString), sortIndex: asOptional(asNumber) }) /** * Stores settings for currency and swap plugins. */ export const asPluginSettingsFile = asObject({ // Currency plugins: userSettings: asOptional(asObject(asJsonObject), () => ({})), // Swap plugins: swapSettings: asOptional(asObject(asSwapSettings), () => ({})) }).withRest /** * The settings file managed by the GUI. */ export const asGuiSettingsFile = asObject({ customTokens: asArray( asObject({ contractAddress: asString, currencyCode: asString, currencyName: asString, denomination: asString, denominations: asArray(asEdgeDenomination), isVisible: asOptional(asBoolean, true), multiplier: asString, walletType: asOptional(asString, 'wallet:ethereum') }) ) }) export const asCustomTokensFile = asObject({ customTokens: asObject(asObject(asEdgeToken)) })