Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
@ledgerhq/types-live
Advanced tools
Ledger Live main types.
A token belongs to an Account and share the parent account address
Type: {type: "TokenAccount"
, id: string, parentId: string, token: TokenCurrency, balance: BigNumber, spendableBalance: BigNumber, creationDate: Date, operationsCount: number, operations: Array<Operation>, pendingOperations: Array<Operation>, starred: boolean, balanceHistoryCache: BalanceHistoryCache, swapHistory: Array<SwapOperation>, approvals: Array<{sender: string, value: string}>?}
type
"TokenAccount"
id
stringparentId
stringtoken
TokenCurrencybalance
BigNumberspendableBalance
BigNumbercreationDate
DateoperationsCount
numberoperations
Array<Operation>pendingOperations
Array<Operation>starred
booleanbalanceHistoryCache
BalanceHistoryCacheswapHistory
Array<SwapOperation>approvals
Array<{sender: string, value: string}>?A child account belongs to an Account but has its own address
Type: {type: "ChildAccount"
, id: string, name: string, starred: boolean, parentId: string, currency: CryptoCurrency, address: string, balance: BigNumber, creationDate: Date, operationsCount: number, operations: Array<Operation>, pendingOperations: Array<Operation>, balanceHistoryCache: BalanceHistoryCache, swapHistory: Array<SwapOperation>}
type
"ChildAccount"
id
stringname
stringstarred
booleanparentId
stringcurrency
CryptoCurrencyaddress
stringbalance
BigNumbercreationDate
DateoperationsCount
numberoperations
Array<Operation>pendingOperations
Array<Operation>balanceHistoryCache
BalanceHistoryCacheswapHistory
Array<SwapOperation>Type: {address: string, derivationPath: string}
Account type is the main level account of a blockchain currency. Each family maybe need an extra field, to solve this, you can have some subtyping like this:
export type BitcoinAccount = Account & { bitcoinResources: BitcoinResources }
and all parts where we would need it, we would need to cast,
const bitcoinAccount = account as BitcoinAccount;
and that BitcoinAccount type would be part of a coin integration family specific indeed.
Type: {type: "Account"
, id: string, seedIdentifier: string, xpub: string?, derivationMode: DerivationMode, index: number, freshAddress: string, freshAddressPath: string, freshAddresses: Array<Address>, name: string, starred: boolean, used: boolean, balance: BigNumber, spendableBalance: BigNumber, creationDate: Date, blockHeight: number, currency: CryptoCurrency, feesCurrency: (CryptoCurrency | TokenCurrency)?, unit: Unit, operationsCount: number, operations: Array<Operation>, pendingOperations: Array<Operation>, lastSyncDate: Date, endpointConfig: (string | null | undefined)?, subAccounts: Array<SubAccount>?, balanceHistoryCache: BalanceHistoryCache, swapHistory: Array<SwapOperation>, syncHash: string?, nfts: Array<ProtoNFT>?}
type
"Account"
id
stringseedIdentifier
stringxpub
string?derivationMode
DerivationModeindex
numberfreshAddress
stringfreshAddressPath
stringfreshAddresses
Array<Address>name
stringstarred
booleanused
booleanbalance
BigNumberspendableBalance
BigNumbercreationDate
DateblockHeight
numbercurrency
CryptoCurrencyfeesCurrency
(CryptoCurrency | TokenCurrency)?unit
UnitoperationsCount
numberoperations
Array<Operation>pendingOperations
Array<Operation>lastSyncDate
DateendpointConfig
(string | null | undefined)?subAccounts
Array<SubAccount>?balanceHistoryCache
BalanceHistoryCacheswapHistory
Array<SwapOperation>syncHash
string?nfts
Array<ProtoNFT>?super type that is either a token or a child account
Type: (TokenAccount | ChildAccount)
One of the Account type
Type: (Account | SubAccount)
An array of AccountLikes
Type: (Array<AccountLike> | Array<TokenAccount> | Array<ChildAccount> | Array<Account>)
Type: {type: "TokenAccountRaw"
, id: string, starred: boolean?, parentId: string, tokenId: string, creationDate: string?, operationsCount: number?, operations: Array<OperationRaw>, pendingOperations: Array<OperationRaw>, balance: string, spendableBalance: string?, balanceHistoryCache: BalanceHistoryCache?, swapHistory: Array<SwapOperationRaw>?, approvals: Array<{sender: string, value: string}>?}
type
"TokenAccountRaw"
id
stringstarred
boolean?parentId
stringtokenId
stringcreationDate
string?operationsCount
number?operations
Array<OperationRaw>pendingOperations
Array<OperationRaw>balance
stringspendableBalance
string?balanceHistoryCache
BalanceHistoryCache?swapHistory
Array<SwapOperationRaw>?approvals
Array<{sender: string, value: string}>?Type: {type: "ChildAccountRaw"
, id: string, name: string, starred: boolean?, parentId: string, currencyId: string, address: string, creationDate: string?, operationsCount: number?, operations: Array<OperationRaw>, pendingOperations: Array<OperationRaw>, balance: string, balanceHistoryCache: BalanceHistoryCache?, swapHistory: Array<SwapOperationRaw>?}
type
"ChildAccountRaw"
id
stringname
stringstarred
boolean?parentId
stringcurrencyId
stringaddress
stringcreationDate
string?operationsCount
number?operations
Array<OperationRaw>pendingOperations
Array<OperationRaw>balance
stringbalanceHistoryCache
BalanceHistoryCache?swapHistory
Array<SwapOperationRaw>?Type: {id: string, seedIdentifier: string, xpub: string?, derivationMode: DerivationMode, index: number, freshAddress: string, freshAddressPath: string, freshAddresses: Array<Address>, name: string, starred: boolean?, used: boolean?, balance: string, spendableBalance: string?, blockHeight: number, creationDate: string?, operationsCount: number?, currencyId: string, feesCurrencyId: string?, operations: Array<OperationRaw>, pendingOperations: Array<OperationRaw>, unitMagnitude: number, lastSyncDate: string, endpointConfig: (string | null | undefined)?, subAccounts: Array<SubAccountRaw>?, balanceHistoryCache: BalanceHistoryCache?, swapHistory: Array<SwapOperationRaw>?, syncHash: string?, nfts: Array<ProtoNFTRaw>?}
id
stringseedIdentifier
stringxpub
string?derivationMode
DerivationModeindex
numberfreshAddress
stringfreshAddressPath
stringfreshAddresses
Array<Address>name
stringstarred
boolean?used
boolean?balance
stringspendableBalance
string?blockHeight
numbercreationDate
string?operationsCount
number?currencyId
stringfeesCurrencyId
string?operations
Array<OperationRaw>pendingOperations
Array<OperationRaw>unitMagnitude
numberlastSyncDate
stringendpointConfig
(string | null | undefined)?subAccounts
Array<SubAccountRaw>?balanceHistoryCache
BalanceHistoryCache?swapHistory
Array<SwapOperationRaw>?syncHash
string?nfts
Array<ProtoNFTRaw>?Type: (TokenAccountRaw | ChildAccountRaw)
Type: (AccountRaw | SubAccountRaw)
Type: {type: string, version: string, currencyId: string, xpubOrAddress: string, derivationMode: DerivationMode}
type
stringversion
stringcurrencyId
stringxpubOrAddress
stringderivationMode
DerivationModeMore events will come in the future
Type: {type: "discovered"
, account: AccountRaw}
type
"discovered"
account
AccountRawUnique identifier of a device. It will depend on the underlying implementation.
Type: string
Type: Partial<{preloadMaxAge: number}>
Type: {account: Account, signedOperation: SignedOperation}
account
AccountsignedOperation
SignedOperationType: {account: Account, transaction: T, deviceId: DeviceId}
Type: function (arg0: SignOperationArg0<T>): Observable<SignOperationEvent>
Abstraction related to a currency
Abstraction related to an account
This function mutates the 'accountRaw' object in-place to add any extra fields that the coin may need to set. It is called during the serialization mechanism, for instance bitcoinResources need to be serialized.
Type: function (account: Account, accountRaw: AccountRaw): void
account
Account The original account object.accountRaw
AccountRaw The account in its serialized form.This function mutates the 'account' object in-place to add any extra fields that the coin may need to set. It is called during the deserialization mechanism, for instance bitcoinResources need to be deserialized.
Type: function (accountRaw: AccountRaw, account: Account): void
accountRaw
AccountRaw The account in its serialized form.account
Account The original account object.This function mutates the 'account' object to extend it with any extra fields of the coin. For instance bitcoinResources needs to be created.
Type: function (account: Account): void
account
Account The original account object to mutates in-place.Type: {FIXME_ignoreAccountFields: Array<string>?, FIXME_ignoreOperationFields: Array<string>?, FIXME_ignorePreloadFields: Array<string>?, mockDeviceOptions: any?, scanAccounts: Array<{name: string, apdus: string, unstableAccounts: boolean?, test: function (expect: ExpectFn, scanned: Array<Account>, bridge: CurrencyBridge): any?}>?, accounts: Array<{implementations: Array<string>?, raw: AccountRaw, FIXME_tests: Array<(string | RegExp)>?, transactions: Array<CurrencyTransaction<T>>?, test: function (arg0: ExpectFn, arg1: Account, arg2: AccountBridge<T>): any?}>?, test: function (arg0: ExpectFn, arg1: CurrencyBridge): any?}
FIXME_ignoreAccountFields
Array<string>?FIXME_ignoreOperationFields
Array<string>?FIXME_ignorePreloadFields
Array<string>?mockDeviceOptions
any?scanAccounts
Array<{name: string, apdus: string, unstableAccounts: boolean?, test: function (expect: ExpectFn, scanned: Array<Account>, bridge: CurrencyBridge): any?}>?accounts
Array<{implementations: Array<string>?, raw: AccountRaw, FIXME_tests: Array<(string | RegExp)>?, transactions: Array<CurrencyTransaction<T>>?, test: function (arg0: ExpectFn, arg1: Account, arg2: AccountBridge<T>): any?}>?test
function (arg0: ExpectFn, arg1: CurrencyBridge): any?Type: {implementations: Array<string>, currencies: (Record<CryptoCurrencyIds, CurrenciesData<T>> | Record<string, never>)}
implementations
Array<string>currencies
(Record<CryptoCurrencyIds, CurrenciesData<T>> | Record<string, never>)DerivationMode is a string identifier of a specific derivation scheme in a list defined in live-common derivation.ts
Type: string
Add others with union (e.g. "learn" | "market" | "foo")
Type: ("learn"
| "brazePushNotifications"
| "brazeLearn"
| "llmNewDeviceSelection"
| "llmUsbFirmwareUpdate"
| "ratingsPrompt"
| "counterValue"
| "deviceLocalization"
| "deviceInitialApps"
| "buyDeviceFromLive"
| "ptxSmartRouting"
| "ptxEarn"
| "currencyAvalancheCChain"
| "ptxSmartRoutingMobile"
| "mockFeature"
| "multibuyNavigation"
| "syncOnboarding"
| "walletConnectLiveApp"
| "walletConnectEntryPoint"
| "customImage"
| "referralProgramDiscoverCard"
| "referralProgramDesktopBanner"
| "disableNftSend"
| "disableNftLedgerMarket"
| "disableNftRaribleOpensea"
| "walletNftGallery"
| "receiveStakingFlowConfigDesktop"
| "ethStakingProviders"
| "storyly"
| "staxWelcomeScreen"
| "postOnboardingClaimNft"
| "postOnboardingAssetsTransfer"
| "firebaseEnvironmentReadOnly"
| "protectServicesMobile"
| "swapShowDexQuotes"
| "stakePrograms"
| "portfolioExchangeBanner"
| "objkt"
| "stakeAccountBanner"
| "newsfeedPage"
| "domainInputResolution"
| "discover"
| "protectServicesDiscoverDesktop"
)
We use objects instead of direct booleans for potential future improvements like feature versioning etc
Type: {enabled: boolean, desktop_version: string?, enabledOverriddenForCurrentDesktopVersion: boolean?, mobile_version: string?, enabledOverriddenForCurrentMobileVersion: boolean?, languages_whitelisted: [string]?, languages_blacklisted: [string]?, enabledOverriddenForCurrentLanguage: boolean?, overridesRemote: boolean?, overriddenByEnv: boolean?, params: T?}
enabled
booleandesktop_version
string?enabledOverriddenForCurrentDesktopVersion
boolean?mobile_version
string?enabledOverriddenForCurrentMobileVersion
boolean?languages_whitelisted
[string]?languages_blacklisted
[string]?enabledOverriddenForCurrentLanguage
boolean?overridesRemote
boolean?overriddenByEnv
boolean?params
T?If false, the feature is disabled (for every languages regardless of the languages_whitelisted option)
Type: boolean
The desktop_version
option is desktop specific, it has no impact on mobile
Type: string
If set, the feature is disabled when the desktop app version does not satisfies this param
Type: string
It should respect the semantic versioning specification (https://semver.org/)
Type: string
Whether the remote value of enabled
was overriden due to desktop_version
Type: boolean
The mobile_version
option is mobile specific, it has no impact on mobile
Type: string
If set, the feature is disabled when the mobile app version does not satisfies this param
Type: string
It should respect the semantic versioning specification (https://semver.org/)
Type: string
Whether the remote value of enabled
was overriden due to mobile_version
Type: boolean
You can optionnally use one of the two following options (languages_whitelisted and languages_blacklisted) (Only implemented on mobile for now)
Type: [string]
List of languages for which the feature is enabled (it will be disabled by default for all of the others)
Type: [string]
List of languages for which the feature is disabled
Type: [string]
Whether the remote value of enabled
was overriden due to languages_whitelisted
or languages_blacklisted
Type: boolean
Whether the remote value of this object was overriden locally
Type: boolean
Whether the remote value of this object was overriden by an environment variable
Type: boolean
Additional params
Type: T
Type: any
Type: {firmware: string, firmwareKey: string, delete: string?, deleteKey: string?, targetId: (string | number)?, hash: string, perso: string}
firmware
stringfirmwareKey
stringdelete
string?deleteKey
string?targetId
(string | number)?hash
stringperso
stringType: {mcuVersion: string, version: string, majMin: string, targetId: (string | number), isBootloader: boolean, isRecoveryMode: boolean?, isOSU: boolean, providerName: (string | null | undefined), managerAllowed: boolean, pinValidated: boolean, seVersion: string?, mcuBlVersion: string?, mcuTargetId: number?, seTargetId: number?, onboarded: boolean?, hasDevFirmware: boolean?, bootloaderVersion: string?, hardwareVersion: number?, languageId: number?}
mcuVersion
stringversion
stringmajMin
stringtargetId
(string | number)isBootloader
booleanisRecoveryMode
boolean?isOSU
booleanproviderName
(string | null | undefined)managerAllowed
booleanpinValidated
booleanseVersion
string?mcuBlVersion
string?mcuTargetId
number?seTargetId
number?onboarded
boolean?hasDevFirmware
boolean?bootloaderVersion
string?hardwareVersion
number?languageId
number?Type: {modelId: DeviceModelId, deviceInfo: DeviceInfo, apps: Array<{name: string, version: string}>}
modelId
DeviceModelIddeviceInfo
DeviceInfoapps
Array<{name: string, version: string}>Type: {id: Id, name: string, display_name: string, target_id: string, description: string, device: Id, providers: Array<Id>, mcu_versions: Array<Id>, se_firmware_final_versions: Array<Id>, osu_versions: Array<Id>, application_versions: Array<Id>, date_creation: string, date_last_modified: string}
id
Idname
stringdisplay_name
stringtarget_id
stringdescription
stringdevice
Idproviders
Array<Id>mcu_versions
Array<Id>se_firmware_final_versions
Array<Id>osu_versions
Array<Id>application_versions
Array<Id>date_creation
stringdate_last_modified
stringType: {id: Id, mcu: Id, name: string, description: (string | null | undefined), providers: Array<Id>, from_bootloader_version: string, device_versions: Array<Id>, se_firmware_final_versions: Array<Id>, date_creation: string, date_last_modified: string}
id
Idmcu
Idname
stringdescription
(string | null | undefined)providers
Array<Id>from_bootloader_version
stringdevice_versions
Array<Id>se_firmware_final_versions
Array<Id>date_creation
stringdate_last_modified
stringType: {isBootloader: boolean, rawVersion: string, targetId: number, seVersion: string?, mcuVersion: string, mcuBlVersion: string?, mcuTargetId: number?, seTargetId: number?, flags: Buffer, bootloaderVersion: string?, hardwareVersion: number?, languageId: number?}
isBootloader
booleanrawVersion
stringtargetId
numberseVersion
string?mcuVersion
stringmcuBlVersion
string?mcuTargetId
number?seTargetId
number?flags
BufferbootloaderVersion
string?hardwareVersion
number?languageId
number?Type: any
Type: any
Type: {osu: OsuFirmware, final: FinalFirmware, shouldFlashMCU: boolean}
osu
OsuFirmwarefinal
FinalFirmwareshouldFlashMCU
booleanType: {id: Id, name: string, version: string, app: Id, description: (string | null | undefined), display_name: string, icon: string, notes: (string | null | undefined), perso: string, hash: string, firmware: string, firmware_key: string, delete: string, delete_key: string, device_versions: Array<Id>, se_firmware_final_versions: Array<Id>, providers: Array<Id>, date_creation: string, date_last_modified: string, type: AppType?, bytes: (number | null | undefined), warning: (string | null | undefined), currency: CryptoCurrency?}
id
Idname
stringversion
stringapp
Iddescription
(string | null | undefined)display_name
stringicon
stringnotes
(string | null | undefined)perso
stringhash
stringfirmware
stringfirmware_key
stringdelete
stringdelete_key
stringdevice_versions
Array<Id>se_firmware_final_versions
Array<Id>providers
Array<Id>date_creation
stringdate_last_modified
stringtype
AppType?bytes
(number | null | undefined)warning
(string | null | undefined)currency
CryptoCurrency?Type: {id: Id, name: string, description: (string | null | undefined), application_versions: Array<ApplicationVersion>, providers: Array<Id>, category: Id, publisher: (Id | null | undefined), date_creation: string, date_last_modified: string, currencyId: (string | null | undefined), authorName: (string | null | undefined), supportURL: (string | null | undefined), contactURL: (string | null | undefined), sourceURL: (string | null | undefined), compatibleWalletsJSON: (string | null | undefined)}
id
Idname
stringdescription
(string | null | undefined)application_versions
Array<ApplicationVersion>providers
Array<Id>category
Idpublisher
(Id | null | undefined)date_creation
stringdate_last_modified
stringcurrencyId
(string | null | undefined)authorName
(string | null | undefined)supportURL
(string | null | undefined)contactURL
(string | null | undefined)sourceURL
(string | null | undefined)compatibleWalletsJSON
(string | null | undefined)App is higher level on top of Application and ApplicationVersion with all fields Live needs and in normalized form (but still serializable)
Type: {id: Id, name: string, displayName: string, version: string, currencyId: (string | null | undefined), description: (string | null | undefined), dateModified: string, icon: string, authorName: (string | null | undefined), supportURL: (string | null | undefined), contactURL: (string | null | undefined), sourceURL: (string | null | undefined), compatibleWallets: Array<{name: string, url: (string | null | undefined)}>, hash: string, perso: string, firmware: string, firmware_key: string, delete: string, delete_key: string, dependencies: Array<string>, bytes: (number | null | undefined), warning: (string | null | undefined), indexOfMarketCap: number, isDevTools: boolean, type: AppType}
id
Idname
stringdisplayName
stringversion
stringcurrencyId
(string | null | undefined)description
(string | null | undefined)dateModified
stringicon
stringauthorName
(string | null | undefined)supportURL
(string | null | undefined)contactURL
(string | null | undefined)sourceURL
(string | null | undefined)compatibleWallets
Array<{name: string, url: (string | null | undefined)}>hash
stringperso
stringfirmware
stringfirmware_key
stringdelete
stringdelete_key
stringdependencies
Array<string>bytes
(number | null | undefined)warning
(string | null | undefined)indexOfMarketCap
numberisDevTools
booleantype
AppTypeType: {id: Id, name: string, description: (string | null | undefined), providers: Array<Id>, applications: Array<Id>, date_creation: string, date_last_modified: string}
id
Idname
stringdescription
(string | null | undefined)providers
Array<Id>applications
Array<Id>date_creation
stringdate_last_modified
stringType: ({type: "bulk-progress"
, progress: number, index: number, total: number} | {type: "result"
, payload: any} | {type: "warning"
, message: string} | {type: "device-permission-requested"
, wording: string} | {type: "device-permission-granted"
} | {type: "exchange-before"
, nonce: number, apdu: Buffer} | {type: "exchange"
, nonce: number, apdu: Buffer, data: Buffer, status: number} | {type: "opened"
} | {type: "closed"
})
Type: ("ERC721"
| "ERC1155"
)
Type: ("preview"
| "big"
| "original"
)
Type: Record<NFTMediaSize, {uri: string, mediaType: string}>
Type: {tokenName: (string | null), nftName: (string | null), medias: NFTMedias, description: (string | null), properties: Array<Record<("key"
| "value"
), string>>, links: Record<NFTMetadataLinksProviders, string>}
tokenName
(string | null)nftName
(string | null)medias
NFTMediasdescription
(string | null)properties
Array<Record<("key"
| "value"
), string>>links
Record<NFTMetadataLinksProviders, string>Type: {tokenName: (string | null)}
tokenName
(string | null)Type: {id: string, tokenId: string, amount: BigNumber, contract: string, standard: NFTStandard, currencyId: CryptoCurrencyIds, metadata: NFTMetadata?}
id
stringtokenId
stringamount
BigNumbercontract
stringstandard
NFTStandardcurrencyId
CryptoCurrencyIdsmetadata
NFTMetadata?Type: any
Type: any
Type: ("opensea"
| "rarible"
| "explorer"
)
Type: {status: (200
| 404
| 500
), result: ({contract: string, tokenId: string, tokenName: (string | null), nftName: (string | null), medias: NFTMedias, description: (string | null), properties: Array<Record<("key"
| "value"
), string>>, links: Record<NFTMetadataLinksProviders, string>} | null)?}
status
(200
| 404
| 500
)result
({contract: string, tokenId: string, tokenName: (string | null), nftName: (string | null), medias: NFTMedias, description: (string | null), properties: Array<Record<("key"
| "value"
), string>>, links: Record<NFTMetadataLinksProviders, string>} | null)?Type: {status: (200
| 404
| 500
), result: ({contract: string, tokenName: (string | null)} | null)?}
Type: {ticker: string, value: number}
Type: ("IN"
| "OUT"
| "NONE"
| "CREATE"
| "REVEAL"
| "DELEGATE"
| "UNDELEGATE"
| "REDELEGATE"
| "REWARD"
| "FEES"
| "FREEZE"
| "UNFREEZE"
| "VOTE"
| "REWARD_PAYOUT"
| "BOND"
| "UNBOND"
| "WITHDRAW_UNBONDED"
| "SET_CONTROLLER"
| "SLASH"
| "NOMINATE"
| "CHILL"
| "APPROVE"
| "OPT_IN"
| "OPT_OUT"
| "LOCK"
| "UNLOCK"
| "WITHDRAW"
| "REVOKE"
| "ACTIVATE"
| "REGISTER"
| "NFT_IN"
| "NFT_OUT"
| "STAKE"
| "UNSTAKE"
| "WITHDRAW_UNSTAKED"
)
Type: {id: string, hash: string, type: OperationType, value: BigNumber, fee: BigNumber, senders: Array<string>, recipients: Array<string>, blockHeight: (number | null | undefined), blockHash: (string | null | undefined), transactionSequenceNumber: number?, accountId: string, standard: (NFTStandard | string)?, operator: string?, contract: string?, tokenId: string?, date: Date, extra: Record<string, any>, hasFailed: boolean?, subOperations: Array<Operation>?, internalOperations: Array<Operation>?, nftOperations: Array<Operation>?, transactionRaw: TransactionCommonRaw?}
id
stringhash
stringtype
OperationTypevalue
BigNumberfee
BigNumbersenders
Array<string>recipients
Array<string>blockHeight
(number | null | undefined)blockHash
(string | null | undefined)transactionSequenceNumber
number?accountId
stringstandard
(NFTStandard | string)?operator
string?contract
string?tokenId
string?date
Dateextra
Record<string, any>hasFailed
boolean?subOperations
Array<Operation>?internalOperations
Array<Operation>?nftOperations
Array<Operation>?transactionRaw
TransactionCommonRaw?Type: {id: string, hash: string, type: OperationType, value: string, fee: string, senders: Array<string>, recipients: Array<string>, blockHeight: (number | null | undefined), blockHash: (string | null | undefined), transactionSequenceNumber: number?, accountId: string, hasFailed: boolean?, standard: (NFTStandard | string)?, operator: string?, contract: string?, tokenId: string?, date: string, extra: Record<string, any>, subOperations: Array<OperationRaw>?, internalOperations: Array<OperationRaw>?, nftOperations: Array<OperationRaw>?, transactionRaw: TransactionCommonRaw?}
id
stringhash
stringtype
OperationTypevalue
stringfee
stringsenders
Array<string>recipients
Array<string>blockHeight
(number | null | undefined)blockHash
(string | null | undefined)transactionSequenceNumber
number?accountId
stringhasFailed
boolean?standard
(NFTStandard | string)?operator
string?contract
string?tokenId
string?date
stringextra
Record<string, any>subOperations
Array<OperationRaw>?internalOperations
Array<OperationRaw>?nftOperations
Array<OperationRaw>?transactionRaw
TransactionCommonRaw?Type: {day: Date, data: Array<Operation>}
Type: {sections: Array<DailyOperationsSection>, completed: boolean}
sections
Array<DailyOperationsSection>completed
booleanA pagination config holds the user's pagination state this is a state that usually should leave during the app lifecycle, but is not persisted it drives the number of operations to poll in accounts when a user paginate more, the number should accordingly be incremented The UI should manage scrolling ahead of time (e.g. if 30 ops is displayed and UI have pages of 20 ops, the UI can already request to poll 70 ops so it have 2 pages in advance) The UI must always do max() to keep the increasing the counter and not going back to lower value: that optim the sync to not recompute things too much
Type: {operationsPerAccountId: Record<string, number>?, operations: number?}
Type: {paginationConfig: PaginationConfig, withoutSynchronize: boolean?, blacklistedTokenIds: Array<string>?}
paginationConfig
PaginationConfigwithoutSynchronize
boolean?blacklistedTokenIds
Array<string>?Type: {date: Date, value: number}
Type: Array<BalanceHistoryData>
Type: Array<any>
Type: {percentage: (number | null | undefined), value: number}
Type: {history: BalanceHistoryWithCountervalue, countervalueAvailable: boolean, countervalueReceiveSum: number, countervalueSendSum: number, cryptoChange: ValueChange, countervalueChange: ValueChange}
history
BalanceHistoryWithCountervaluecountervalueAvailable
booleancountervalueReceiveSum
numbercountervalueSendSum
numbercryptoChange
ValueChangecountervalueChange
ValueChangeType: {history: BalanceHistoryWithCountervalue, countervalueAvailable: boolean, histories: Array<BalanceHistoryWithCountervalue>, accounts: AccountLikeArray, cryptoChange: ValueChange, range: PortfolioRange, countervalueChange: ValueChange}
history
BalanceHistoryWithCountervaluecountervalueAvailable
booleanhistories
Array<BalanceHistoryWithCountervalue>accounts
AccountLikeArraycryptoChange
ValueChangerange
PortfolioRangecountervalueChange
ValueChangeType: {balanceHistory: BalanceHistory, balanceAvailable: boolean, availableAccounts: Array<AccountLike>, unavailableCurrencies: Array<(CryptoCurrency | TokenCurrency)>, accounts: Array<AccountLike>, range: PortfolioRange, histories: Array<BalanceHistoryWithCountervalue>, countervalueReceiveSum: number, countervalueSendSum: number, countervalueChange: ValueChange}
balanceHistory
BalanceHistorybalanceAvailable
booleanavailableAccounts
Array<AccountLike>unavailableCurrencies
Array<(CryptoCurrency | TokenCurrency)>accounts
Array<AccountLike>range
PortfolioRangehistories
Array<BalanceHistoryWithCountervalue>countervalueReceiveSum
numbercountervalueSendSum
numbercountervalueChange
ValueChangeType: {count: number?, granularityId: GranularityId, startOf: function (arg0: Date): Date, increment: number}
Type: ("all"
| "year"
| "month"
| "week"
| "day"
)
Type: {isAvailable: boolean, list: Array<DistributionItem>, showFirst: number, sum: number}
Unique identifier of a post onboarding action.
Navigation params when the user presses the button for this action
navigation.navigate(...navigationParams)
history.push(...navigationParams)
Type: Array<any>
The function to call when the user presses the button for this action
Type: function (): void
All necessary information for complete integration of a post onboarding action.
Type: any
Allow to display the action without letting the user access its flow
Type: boolean
If this action is linked to a feature that is enabled by a feature flag, use this property to identify the feature flag.
Type: FeatureId
Icon displayed for this action in the post onboarding hub.
Type: function (props: {size: number, color: string}): any
Title displayed for this action in the post onboarding hub.
Type: string
Title displayed for this action in the post onboarding hub when the action is completed.
Type: string
Description displayed for this action in the post onboarding hub.
Type: string
Tag displayed for this action in the post onboarding hub.
Type: string
Will appear in an success alert at the bottom of the post-onboarding hub after completing this action.
Type: string
Value to use in the "button" property of the event sent when the user triggers the action by pressing the button in the post onboarding hub.
Type: string
State of a post onboarding action.
Type: {completed: boolean}
completed
booleanWhether the user has completed this action. This will be reflected in the UI of the post onboarding hub.
Type: boolean
To be used for a redux reducer. Keeps all necessary information about the state of the post onboarding hub and can be persisted in storage.
Type: {deviceModelId: (DeviceModelId | null), walletEntryPointDismissed: boolean, actionsToComplete: Array<PostOnboardingActionId>, actionsCompleted: any, lastActionCompleted: (PostOnboardingActionId | null)}
deviceModelId
(DeviceModelId | null)walletEntryPointDismissed
booleanactionsToComplete
Array<PostOnboardingActionId>actionsCompleted
anylastActionCompleted
(PostOnboardingActionId | null)Model Id of the device for which the post onboarding was started.
Type: (DeviceModelId | null)
Did the user dismiss the post onboarding entry point on the wallet page.
Type: boolean
List of all actions that have to be completed in this post onboarding (whether they are completed or). This is used to populate the list of actions in the post onboarding hub UI.
Type: Array<PostOnboardingActionId>
"completed" state for each action.
Type: any
Last action that the user has completed.
This is used to display potentially different content in the post onboarding hub UI depending on the last action that was completed.
Type: (PostOnboardingActionId | null)
Digest of the store & list of actions into something directly consumable by UI. (All UI data will be in there).
Type: {deviceModelId: (DeviceModelId | null), lastActionCompleted: (PostOnboardingAction | null), actionsState: Array<any>}
deviceModelId
(DeviceModelId | null)lastActionCompleted
(PostOnboardingAction | null)actionsState
Array<any>Type: {provider: string, swapId: string, status: string, receiverAccountId: string, tokenId: string?, operationId: string, fromAmount: BigNumber, toAmount: BigNumber}
provider
stringswapId
stringstatus
stringreceiverAccountId
stringtokenId
string?operationId
stringfromAmount
BigNumbertoAmount
BigNumberType: {provider: string, swapId: string, status: string, receiverAccountId: string, tokenId: string?, operationId: string, fromAmount: string, toAmount: string}
provider
stringswapId
stringstatus
stringreceiverAccountId
stringtokenId
string?operationId
stringfromAmount
stringtoAmount
stringType: {operation: Operation, signature: string, signatureRaw: Record<string, any>?, expirationDate: (Date | null | undefined)}
operation
Operationsignature
stringsignatureRaw
Record<string, any>?expirationDate
(Date | null | undefined)Type: {operation: OperationRaw, signature: string, signatureRaw: Record<string, any>?, expirationDate: (string | null | undefined)}
operation
OperationRawsignature
stringsignatureRaw
Record<string, any>?expirationDate
(string | null | undefined)Type: ({type: "device-streaming"
, progress: number, index: number, total: number} | {type: "device-signature-requested"
} | {type: "device-signature-granted"
} | {type: "signed"
, signedOperation: SignedOperation})
Type: ({type: "device-streaming"
, progress: number, index: number, total: number} | {type: "device-signature-requested"
} | {type: "device-signature-granted"
} | {type: "signed"
, signedOperation: SignedOperationRaw})
Transaction is a generic object that holds all state for all transactions there are generic fields and coin specific fields. That's why almost all fields are optionals
Type: {amount: BigNumber, recipient: string, recipientDomain: DomainServiceResolution?, useAllAmount: boolean?, subAccountId: (string | null | undefined)?, feesStrategy: ("slow"
| "medium"
| "fast"
| "custom"
| null)?}
amount
BigNumberrecipient
stringrecipientDomain
DomainServiceResolution?useAllAmount
boolean?subAccountId
(string | null | undefined)?feesStrategy
("slow"
| "medium"
| "fast"
| "custom"
| null)?Type: {amount: string, recipient: string, recipientDomain: DomainServiceResolution?, useAllAmount: boolean?, subAccountId: (string | null | undefined)?, feesStrategy: ("slow"
| "medium"
| "fast"
| "custom"
| null)?}
amount
stringrecipient
stringrecipientDomain
DomainServiceResolution?useAllAmount
boolean?subAccountId
(string | null | undefined)?feesStrategy
("slow"
| "medium"
| "fast"
| "custom"
| null)?User can have 3 differents choice for their fee Most of the time mid is low * 1.25 and high is low * 1.5 They are some exception as eth that got his own meter
Type: {amount: BigNumber, displayedAmount: BigNumber?, txParameters: FeeStrategyTxParameters?, label: string, unit: Unit?, disabled: boolean?, extra: Record<string, BigNumber>?}
amount
BigNumberdisplayedAmount
BigNumber?txParameters
FeeStrategyTxParameters?label
stringunit
Unit?disabled
boolean?extra
Record<string, BigNumber>?TransactionStatus is a view of Transaction with general info to be used on the UI and status info.
Type: {errors: Record<string, Error>, warnings: Record<string, Error>, estimatedFees: BigNumber, amount: BigNumber, totalSpent: BigNumber, recipientIsReadOnly: boolean?}
errors
Record<string, Error>warnings
Record<string, Error>estimatedFees
BigNumberamount
BigNumbertotalSpent
BigNumberrecipientIsReadOnly
boolean?Type: {errors: Record<string, string>, warnings: Record<string, string>, estimatedFees: string, amount: string, totalSpent: string, useAllAmount: boolean?, recipientIsReadOnly: boolean?}
FAQs
Ledger Live main types.
The npm package @ledgerhq/types-live receives a total of 27,860 weekly downloads. As such, @ledgerhq/types-live popularity was classified as popular.
We found that @ledgerhq/types-live demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.