This is the full developer documentation for Privatefolio # Start here > The AI Wealth Manager - A free* and open-source toolkit for financial empowerment

Privatefolio Logo

Privatefolio

The AI Wealth Manager - A free\* and open-source toolkit for financial empowerment
[![X Follow](https://img.shields.io/twitter/follow/PrivatefolioApp)](https://twitter.com/PrivatefolioApp) [![Discord](https://img.shields.io/discord/1200080531581321246?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/YHHu9nK8VD)
[![GitHub downloads](https://img.shields.io/github/downloads/privatefolio/privatefolio/total.svg?style=flat)](https://GitHub.com/privatefolio/privatefolio/releases/) ![Visitors](https://api.visitorbadge.io/api/visitors?path=privatefolio%2Fprivatefolio%20&style=flat) [![GitHub last commit](https://img.shields.io/github/last-commit/privatefolio/privatefolio?style=flat)](https://github.com/privatefolio/privatefolio/commits/main) [![GitHub commits](https://img.shields.io/github/commit-activity/t/privatefolio/privatefolio)](https://GitHub.com/privatefolio/privatefolio/commit/) [![GitHub contributors](https://img.shields.io/github/contributors/privatefolio/privatefolio.svg?style=flat)](https://github.com/privatefolio/privatefolio/graphs/contributors) [![GitHub forks](https://img.shields.io/github/forks/privatefolio/privatefolio?style=flat)](https://github.com/privatefolio/privatefolio/forks) [![GitHub stars](https://img.shields.io/github/stars/privatefolio/privatefolio?style=flat)](https://github.com/privatefolio/privatefolio/stargazers)
## Installation To install the Privatefolio desktop app, you can either download the apps from [privatefolio.xyz/apps](https://privatefolio.xyz/apps) or from [GitHub releases](https://github.com/privatefolio/privatefolio/releases). Each release contains the binaries for Windows, Linux and Mac. On Windows, you can run the `Privatefolio-.Setup.exe` executable directly. On Linux, you can run `sudo dpkg -i privatefolio__amd64.deb` to install the package. On Mac, download the dmg for your platform and run the installer. ## What is it? **Privatefolio is a tool you own**. It allows you to collect, analyze and visualize your financial data. You can use it in conjunction with LLMs and AI agents to gain a deeper understanding of where you are at, and to plan for the future. Privatefolio is for: 1) Investment portfolios, 2) Accounting, 3) Tax reporting & planning, 4) Financial intelligence, 5) Privacy, 6) AI workflows, 7) Expense tracking, 8) Budgeting, 9) Cashflow predictions, 10) Retirement planning, 11) FIRE, 12) Volatility simulations, 13) Risk management and much more. ## Features
Privatefolio screenshot
- Time travel through trades to surface the strengths and weaknesses of your portfolio - Inspect and compare your historical net worth with no limitations - Use advanced TradingView features on your data like indicators, drawing tools, etc. - Prepare your tax report or feed data into your AI assistant - Extend the project under the AGPL-3.0 license
## License Privatefolio is licensed under **GNU AGPL-3.0**, a copyleft license. In summary, this license gives you the following freedoms: - **Freedom to Use**: You can use the software for any purpose, including commercial use. - **Freedom to Study and Modify**: You can study how the program works and modify it to suit your needs, including for commercial purposes. - **Freedom to Distribute Copies**: You can redistribute copies of the original program. - **Freedom to Distribute Modified Versions**: You are allowed to distribute your modified versions, including for profit. However, if you run a modified version of the software on a server and allow others to interact with it, you must provide the source code of the modified version to those users. See the [LICENSE](https://github.com/privatefolio/privatefolio/blob/main/LICENSE) file for more details. ## For Developers [![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=flat&logo=typescript&logoColor=white)](https://typescriptlang.org/) [![React](https://img.shields.io/badge/React-20232A.svg?style=flat&logo=react&logoColor=61DAFB)](https://reactjs.org/) [![Electron](https://img.shields.io/badge/Electron-2B2E3A?style=flat&logo=electron&logoColor=9FEAF9)](https://electronjs.org/) [![Lerna](https://img.shields.io/badge/Lerna-blueviolet?style=flat&logo=lerna&logoColor=white)](https://lerna.js.org/) [![Prettier](https://img.shields.io/badge/Prettier-1A2C34?style=flat&logo=prettier&logoColor=F7BA3E)](https://prettier.io/) Privatefolio is built with modern technologies like TypeScript, React, Bun (Node.js) and SQLite, making it familiar for open-source developers to contribute to the project. For detailed setup instructions, architecture blueprints and more, please refer to [docs.privatefolio.app](https://docs.privatefolio.app). ### How to Contribute 1. Fork the repository and clone it locally. 2. Install dependencies using `yarn` and build the project using `yarn build`. 3. Use `yarn dev` to start the development environment. 4. Check [open issues](https://github.com/privatefolio/privatefolio/issues) or `TODO` comments in the codebase to find tasks to work on. 5. Join our [Discord community](https://discord.gg/YHHu9nK8VD) to discuss development and get help. 6. When you are ready, commit your changes and submit a pull request. For a complete example of adding a new feature, check out [PR #46](https://github.com/privatefolio/privatefolio/pull/46) which demonstrates how to add a new price API extension. For deployment steps, please refer to [docs.privatefolio.app](https://docs.privatefolio.app). ### Key Technologies - **Frontend:** React, Vite, Material-UI - **Backend:** Node.js, Bun runtime, SQLite - **Desktop apps:** Electron - **Mobile apps:** Expo (React Native) - **Deployment:** Docker Feel free to open issues for bugs or feature requests! # API Reference Overview ## Packages - [@privatefolio/commons](/api/privatefolio/commons/) - [@privatefolio/commons-node](/api/privatefolio/commons-node/) - [privatefolio-backend](/api/privatefolio-backend/) # privatefolio-backend [API Reference](/api/) / privatefolio-backend ## Modules - [api/api](/api/privatefolio-backend/api/api/) - [interfaces](/api/privatefolio-backend/interfaces/) # api/api [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / api/api ## Type Aliases - [Api](/api/privatefolio-backend/api/api/type-aliases/api) ## Variables - [api](/api/privatefolio-backend/api/api/variables/api) # Api [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [api/api](/api/privatefolio-backend/api/api/) / Api > **Api** = *typeof* [`api`](/api/privatefolio-backend/api/api/variables/api) Defined in: [api/api.ts:66](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/api/api.ts#L66) # api [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [api/api](/api/privatefolio-backend/api/api/) / api > `const` **api**: `object` Defined in: [api/api.ts:34](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/api/api.ts#L34) ## Type Declaration ### getExtension() > **getExtension**: (`id`) => `Promise`\<[`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension)\> #### Parameters ##### id `string` #### Returns `Promise`\<[`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension)\> ### getExtensions() > **getExtensions**: (`documentedOnly`) => `Promise`\<[`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension)[]\> #### Parameters ##### documentedOnly `boolean` = `false` #### Returns `Promise`\<[`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension)[]\> ### getLivePricesForAsset() > **getLivePricesForAsset**: (`assetId`, `priceApiId`, `limit`, `timeInterval`, `since?`, `until?`) => `Promise`\<[`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata)[]\> #### Parameters ##### assetId `string` ##### priceApiId `"coinbase"` | `"binance"` | `"defi-llama"` | `"alchemy"` | `"yahoo"` ##### limit `number` = `PRICE_API_PAGINATION` ##### timeInterval [`ResolutionString`](/api/privatefolio-backend/interfaces/type-aliases/resolutionstring) = `...` ##### since? `number` ##### until? `number` #### Returns `Promise`\<[`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata)[]\> ### getTradesFullQuery() > **getTradesFullQuery**: () => `Promise`\<`string`\> #### Returns `Promise`\<`string`\> ### addPushDevice() > **addPushDevice**(`accountName`, `subscription`, `deviceId`, `userAgent?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### subscription `PushSubscription` ##### deviceId `string` ##### userAgent? `string` #### Returns `Promise`\<`void`\> ### addTransaction() > **addTransaction**(`transaction`, `accountName`, `groupId?`): `Promise`\<`void`\> #### Parameters ##### transaction `Omit`\<[`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction), `"id"` \| `"_rev"` \| `"importId"` \| `"importIndex"`\> ##### accountName `string` ##### groupId? `string` #### Returns `Promise`\<`void`\> ### assignTagToAuditLog() > **assignTagToAuditLog**(`accountName`, `auditLogId`, `tagName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### auditLogId `string` ##### tagName `string` #### Returns `Promise`\<`void`\> ### assignTagToTrade() > **assignTagToTrade**(`accountName`, `tradeId`, `tagName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### tradeId `string` ##### tagName `string` #### Returns `Promise`\<`void`\> ### assignTagToTransaction() > **assignTagToTransaction**(`accountName`, `transactionId`, `tagName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### transactionId `string` ##### tagName `string` #### Returns `Promise`\<`void`\> ### autoMergeTransactions() > **autoMergeTransactions**(`accountName`, `progress`, `signal?`): `Promise`\<`void`\> This only applies to Etherscan transactions #### Parameters ##### accountName `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### signal? `AbortSignal` #### Returns `Promise`\<`void`\> ### backup() > **backup**(`accountName`, `progress`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> #### Parameters ##### accountName `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> ### cancelTask() > **cancelTask**(`accountName`, `taskId`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### taskId `number` #### Returns `Promise`\<`void`\> ### cleanupOldServerHealthMetrics() > **cleanupOldServerHealthMetrics**(`olderThanTimestamp`): `Promise`\<`number`\> #### Parameters ##### olderThanTimestamp `number` #### Returns `Promise`\<`number`\> ### computeActiveConnections() > **computeActiveConnections**(): `Promise`\<`number`\> #### Returns `Promise`\<`number`\> ### computeBalances() > **computeBalances**(`accountName`, `request`, `progress`, `signal?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### request `ComputeBalancesRequest` = `{}` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### signal? `AbortSignal` #### Returns `Promise`\<`void`\> ### computeGenesis() > **computeGenesis**(`accountName`): `Promise`\<`number`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`number`\> ### computeLastTx() > **computeLastTx**(`accountName`): `Promise`\<`number`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`number`\> ### computeNetworth() > **computeNetworth**(`accountName`, `since?`, `progress?`, `signal?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### since? `number` ##### progress? [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### signal? `AbortSignal` #### Returns `Promise`\<`void`\> ### computePnl() > **computePnl**(`accountName`, `progress`, `trades`, `since?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### trades [`Trade`](/api/privatefolio-backend/interfaces/interfaces/trade)[] ##### since? `number` #### Returns `Promise`\<`void`\> ### computeTrades() > **computeTrades**(`accountName`, `progress`, `request`, `signal?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### request `ComputeTradesRequest` = `{}` ##### signal? `AbortSignal` #### Returns `Promise`\<`void`\> ### countAuditLogs() > **countAuditLogs**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM audit_logs"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countChatMessages() > **countChatMessages**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM chat_history"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countConnections() > **countConnections**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM connections"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countConversations() > **countConversations**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(DISTINCT conversationId) FROM chat_history"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countFileImports() > **countFileImports**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM file_imports"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countNotifications() > **countNotifications**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM notifications"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countServerFiles() > **countServerFiles**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM server_files"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countServerTasks() > **countServerTasks**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM server_tasks"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countTrades() > **countTrades**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM trades"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### countTransactions() > **countTransactions**(`accountName`, `query`, `params?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT COUNT(*) FROM transactions"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`number`\> ### createAccount() > **createAccount**(`accountName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`void`\> ### createAndPushNotification() > **createAndPushNotification**(`accountName`, `title`, `text`, `metadata?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### title `string` ##### text `string` ##### metadata? `Record`\<`string`, `unknown`\> #### Returns `Promise`\<`void`\> ### deleteAccount() > **deleteAccount**(`accountName`, `keepAccount`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### keepAccount `boolean` = `false` #### Returns `Promise`\<`void`\> ### deleteAssetPreferences() > **deleteAssetPreferences**(`accountName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`void`\> ### deleteBalances() > **deleteBalances**(`accountName`, `since`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### since `number` = `0` #### Returns `Promise`\<`void`\> ### deleteChatHistoryByConversation() > **deleteChatHistoryByConversation**(`accountName`, `conversationId`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### conversationId `string` #### Returns `Promise`\<`void`\> ### deleteChatMessage() > **deleteChatMessage**(`accountName`, `id`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `string` #### Returns `Promise`\<`void`\> ### deleteConnection() > **deleteConnection**(`accountName`, `connectionId`, `progress`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### connectionId `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) #### Returns `Promise`\<`number`\> ### deleteDailyPrices() > **deleteDailyPrices**(`accountName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`void`\> ### deleteFileImport() > **deleteFileImport**(`accountName`, `fileImport`, `progress`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### fileImport [`FileImport`](/api/privatefolio-backend/interfaces/interfaces/fileimport) ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` #### Returns `Promise`\<`number`\> ### deleteNetworth() > **deleteNetworth**(`accountName`, `since`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### since `number` = `0` #### Returns `Promise`\<`void`\> ### deleteTag() > **deleteTag**(`accountName`, `id`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `number` #### Returns `Promise`\<`void`\> ### deleteTrades() > **deleteTrades**(`accountName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`void`\> ### deleteTransaction() > **deleteTransaction**(`accountName`, `transactionId`, `progress`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### transactionId `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` #### Returns `Promise`\<`void`\> ### detectSpamTransactions() > **detectSpamTransactions**(`accountName`, `progress`, `signal?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### signal? `AbortSignal` #### Returns `Promise`\<`void`\> ### disconnectAccount() > **disconnectAccount**(`accountName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`void`\> ### enqueueAutoMerge() > **enqueueAutoMerge**(`accountName`, `trigger`, `groupId?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### groupId? `string` #### Returns `Promise`\<`number`\> ### enqueueBackup() > **enqueueBackup**(`accountName`, `trigger`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> ### enqueueDeleteAssetPreferences() > **enqueueDeleteAssetPreferences**(`accountName`, `trigger`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<`number`\> ### enqueueDeleteAssetPrices() > **enqueueDeleteAssetPrices**(`accountName`, `trigger`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<`number`\> ### enqueueDeleteBalances() > **enqueueDeleteBalances**(`accountName`, `trigger`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<`number`\> ### enqueueDeleteConnection() > **enqueueDeleteConnection**(`accountName`, `trigger`, `connectionId`, `onCompletion?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### connectionId `string` ##### onCompletion? [`TaskCompletionCallback`](/api/privatefolio-backend/interfaces/type-aliases/taskcompletioncallback) #### Returns `Promise`\<`number`\> ### enqueueDeleteTransaction() > **enqueueDeleteTransaction**(`accountName`, `trigger`, `transactionId`, `onCompletion?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### transactionId `string` ##### onCompletion? [`TaskCompletionCallback`](/api/privatefolio-backend/interfaces/type-aliases/taskcompletioncallback) #### Returns `Promise`\<`number`\> ### enqueueDetectSpamTransactions() > **enqueueDetectSpamTransactions**(`accountName`, `trigger`, `groupId?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### groupId? `string` #### Returns `Promise`\<`number`\> ### enqueueExportAuditLogs() > **enqueueExportAuditLogs**(`accountName`, `trigger`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> ### enqueueExportChatHistory() > **enqueueExportChatHistory**(`accountName`, `trigger`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> ### enqueueExportTransactions() > **enqueueExportTransactions**(`accountName`, `trigger`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> ### enqueueFetchPrices() > **enqueueFetchPrices**(`accountName`, `trigger`, `groupId?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### groupId? `string` #### Returns `Promise`\<`number`\> ### enqueueImportFile() > **enqueueImportFile**(`accountName`, `trigger`, `fileId`, `parserContext?`, `groupId?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### fileId `number` ##### parserContext? `Record`\<`string`, `unknown`\> ##### groupId? `string` #### Returns `Promise`\<`number`\> ### enqueueRecomputeBalances() > **enqueueRecomputeBalances**(`accountName`, `trigger`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<`number`\> ### enqueueRecomputeNetworth() > **enqueueRecomputeNetworth**(`accountName`, `trigger`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<`number`\> ### enqueueRecomputeTrades() > **enqueueRecomputeTrades**(`accountName`, `trigger`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<`number`\> ### enqueueRefetchAssets() > **enqueueRefetchAssets**(`accountName`, `trigger`, `onlyIfNeeded`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### onlyIfNeeded `boolean` = `false` #### Returns `Promise`\<`number`\> ### enqueueRefetchPlatforms() > **enqueueRefetchPlatforms**(`accountName`, `trigger`, `onlyIfNeeded`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### onlyIfNeeded `boolean` = `false` #### Returns `Promise`\<`number`\> ### enqueueRefreshBalances() > **enqueueRefreshBalances**(`accountName`, `trigger`, `groupId?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### groupId? `string` #### Returns `Promise`\<`number`\> ### enqueueRefreshNetworth() > **enqueueRefreshNetworth**(`accountName`, `trigger`, `groupId?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### groupId? `string` #### Returns `Promise`\<`number`\> ### enqueueRefreshTrades() > **enqueueRefreshTrades**(`accountName`, `trigger`, `groupId?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### groupId? `string` #### Returns `Promise`\<`number`\> ### enqueueRemoveFileImport() > **enqueueRemoveFileImport**(`accountName`, `trigger`, `fileImportId`, `onCompletion?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### fileImportId `string` ##### onCompletion? [`TaskCompletionCallback`](/api/privatefolio-backend/interfaces/type-aliases/taskcompletioncallback) #### Returns `Promise`\<`number`\> ### enqueueResetAllConnections() > **enqueueResetAllConnections**(`accountName`, `trigger`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<`void`\> ### enqueueResetConnection() > **enqueueResetConnection**(`accountName`, `trigger`, `connectionId`, `onCompletion?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### connectionId `string` ##### onCompletion? [`TaskCompletionCallback`](/api/privatefolio-backend/interfaces/type-aliases/taskcompletioncallback) #### Returns `Promise`\<`number`\> ### enqueueRestore() > **enqueueRestore**(`accountName`, `trigger`, `file`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### file [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile) #### Returns `Promise`\<`number`\> ### enqueueSleep() > **enqueueSleep**(`accountName`, `seconds`, `step`, `wasteCpu`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### seconds `number` ##### step `number` = `1` ##### wasteCpu `boolean` = `false` #### Returns `Promise`\<`number`\> ### enqueueSyncAllConnections() > **enqueueSyncAllConnections**(`accountName`, `trigger`, `debugMode?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### debugMode? `boolean` #### Returns `Promise`\<`void`\> ### enqueueSyncConnection() > **enqueueSyncConnection**(`accountName`, `trigger`, `connectionId`, `debugMode?`, `onCompletion?`, `groupId?`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) ##### connectionId `string` ##### debugMode? `boolean` ##### onCompletion? [`TaskCompletionCallback`](/api/privatefolio-backend/interfaces/type-aliases/taskcompletioncallback) ##### groupId? `string` #### Returns `Promise`\<`number`\> ### enqueueTask() > **enqueueTask**(`accountName`, `task`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### task `Omit`\<`QueuedTask`, `"id"` \| `"startedAt"` \| `"abortController"` \| `"status"` \| `"createdAt"`\> #### Returns `Promise`\<`number`\> ### enqueueVerifyBalances() > **enqueueVerifyBalances**(`accountName`, `trigger`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### trigger [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) #### Returns `Promise`\<`number`\> ### ensureSystemInfo() > **ensureSystemInfo**(): `Promise`\<[`SystemInfo`](/api/privatefolio-backend/interfaces/interfaces/systeminfo)\> #### Returns `Promise`\<[`SystemInfo`](/api/privatefolio-backend/interfaces/interfaces/systeminfo)\> ### executeSql() > **executeSql**(`accountName`, `query`, `params?`): `Promise`\<`SQLiteCompatibleType`[][]\> #### Parameters ##### accountName `string` ##### query `string` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`SQLiteCompatibleType`[][]\> ### fetchDailyPrices() > **fetchDailyPrices**(`accountName`, `assetsParam?`, `progress?`, `signal?`, `options?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### assetsParam? [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset)[] ##### progress? [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### signal? `AbortSignal` ##### options? `FetchDailyPricesOptions` = `{}` #### Returns `Promise`\<`void`\> ### findAssets() > **findAssets**(`accountName`, `query`, `limit`, `strict`, `searchSet`): `Promise`\<[`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset)[]\> #### Parameters ##### accountName `string` ##### query `string` ##### limit `number` = `5` ##### strict `boolean` = `false` ##### searchSet `"all-assets"` | `"my-assets"` #### Returns `Promise`\<[`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset)[]\> ### findExtensions() > **findExtensions**(`query`, `limit`): `Promise`\<[`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension)[]\> #### Parameters ##### query `string` ##### limit `number` = `5` #### Returns `Promise`\<[`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension)[]\> ### findPlatforms() > **findPlatforms**(`accountName`, `query`, `limit`, `strict`, `searchSet`): `Promise`\<[`FindPlatformsResult`](/api/privatefolio-backend/interfaces/type-aliases/findplatformsresult)\> #### Parameters ##### accountName `string` ##### query `string` ##### limit `number` = `5` ##### strict `boolean` = `false` ##### searchSet `"coingecko"` | `"my-platforms"` #### Returns `Promise`\<[`FindPlatformsResult`](/api/privatefolio-backend/interfaces/type-aliases/findplatformsresult)\> ### getAccount() > **getAccount**(`accountName`, `createIfNeeded`): `Promise`\<`Account`\> Get a database connection for the given account. There is a 1:1 relationship between an account and a database (single-tenant). #### Parameters ##### accountName `string` ##### createIfNeeded `boolean` = `false` #### Returns `Promise`\<`Account`\> ### getAccountNames() > **getAccountNames**(): `Promise`\<`string`[]\> #### Returns `Promise`\<`string`[]\> ### getAccountPnL() > **getAccountPnL**(`accountName`, `start?`, `end?`): `Promise`\<[`AccountPnL`](/api/privatefolio-backend/interfaces/interfaces/accountpnl)[]\> #### Parameters ##### accountName `string` ##### start? `number` ##### end? `number` #### Returns `Promise`\<[`AccountPnL`](/api/privatefolio-backend/interfaces/interfaces/accountpnl)[]\> ### getAccountWithAssets() > **getAccountWithAssets**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithAuditLogs() > **getAccountWithAuditLogs**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithBalances() > **getAccountWithBalances**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithChatHistory() > **getAccountWithChatHistory**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithConnections() > **getAccountWithConnections**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithDailyPrices() > **getAccountWithDailyPrices**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithFileImports() > **getAccountWithFileImports**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithKeyValue() > **getAccountWithKeyValue**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithNetworth() > **getAccountWithNetworth**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithNotifications() > **getAccountWithNotifications**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithServerFiles() > **getAccountWithServerFiles**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithServerTasks() > **getAccountWithServerTasks**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithTags() > **getAccountWithTags**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithTaskQueue() > **getAccountWithTaskQueue**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithTrades() > **getAccountWithTrades**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAccountWithTransactions() > **getAccountWithTransactions**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### getAllPlatforms() > **getAllPlatforms**(): `Promise`\<([`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain) \| [`DataPlatform`](/api/privatefolio-backend/interfaces/interfaces/dataplatform))[]\> #### Returns `Promise`\<([`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain) \| [`DataPlatform`](/api/privatefolio-backend/interfaces/interfaces/dataplatform))[]\> ### getAsset() > **getAsset**(`accountName`, `id`): `Promise`\<[`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset)\> #### Parameters ##### accountName `string` ##### id `string` #### Returns `Promise`\<[`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset)\> ### getAssetPriceMap() > **getAssetPriceMap**(`accountName`, `timestamp`): `Promise`\<`Record`\<`string`, [`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata)\>\> #### Parameters ##### accountName `string` ##### timestamp `number` = `...` #### Returns `Promise`\<`Record`\<`string`, [`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata)\>\> ### getAssets() > **getAssets**(): `Promise`\<[`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset)[]\> #### Returns `Promise`\<[`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset)[]\> ### getAssetsByPlatform() > **getAssetsByPlatform**(`platformId`): `Promise`\<[`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset)[]\> #### Parameters ##### platformId `string` #### Returns `Promise`\<[`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset)[]\> ### getAuditLog() > **getAuditLog**(`accountName`, `id`): `Promise`\<[`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)\> #### Parameters ##### accountName `string` ##### id `string` #### Returns `Promise`\<[`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)\> ### getAuditLogOrderQuery() > **getAuditLogOrderQuery**(`ascending`): `Promise`\<`"ORDER BY timestamp ASC, changeN ASC, id ASC"` \| `"ORDER BY timestamp DESC, changeN DESC, id DESC"`\> #### Parameters ##### ascending `boolean` = `false` #### Returns `Promise`\<`"ORDER BY timestamp ASC, changeN ASC, id ASC"` \| `"ORDER BY timestamp DESC, changeN DESC, id DESC"`\> ### getAuditLogs() > **getAuditLogs**(`accountName`, `query`, `params?`): `Promise`\<[`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM audit_logs ORDER BY timestamp DESC, changeN DESC, id DESC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)[]\> ### getAuditLogsByTxId() > **getAuditLogsByTxId**(`accountName`, `txId`): `Promise`\<[`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)[]\> #### Parameters ##### accountName `string` ##### txId `string` #### Returns `Promise`\<[`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)[]\> ### getBalances() > **getBalances**(`accountName`, `query`, `params?`): `Promise`\<[`BalanceMap`](/api/privatefolio-backend/interfaces/interfaces/balancemap)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM balances ORDER BY timestamp ASC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`BalanceMap`](/api/privatefolio-backend/interfaces/interfaces/balancemap)[]\> ### getBalancesAt() > **getBalancesAt**(`accountName`, `cursor`): `Promise`\<[`Balance`](/api/privatefolio-backend/interfaces/interfaces/balance)[]\> #### Parameters ##### accountName `string` ##### cursor `number` = `-1` #### Returns `Promise`\<[`Balance`](/api/privatefolio-backend/interfaces/interfaces/balance)[]\> ### getBlockchainById() > **getBlockchainById**(`id`): `Promise`\<[`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)\> #### Parameters ##### id `string` #### Returns `Promise`\<[`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)\> ### getBlockchains() > **getBlockchains**(): `Promise`\<[`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)[]\> #### Returns `Promise`\<[`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)[]\> ### getBreakdownChartData() > **getBreakdownChartData**(`accountName`, `interval`): `Promise`\<`object`[]\> #### Parameters ##### accountName `string` ##### interval `string` #### Returns `Promise`\<`object`[]\> ### getChatHistory() > **getChatHistory**(`accountName`, `query`, `params?`): `Promise`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM chat_history ORDER BY timestamp DESC, id DESC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)[]\> ### getChatHistoryByConversation() > **getChatHistoryByConversation**(`accountName`, `conversationId`): `Promise`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)[]\> #### Parameters ##### accountName `string` ##### conversationId `string` #### Returns `Promise`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)[]\> ### getChatHistoryOrderQuery() > **getChatHistoryOrderQuery**(`ascending`): `Promise`\<`"ORDER BY timestamp ASC, id ASC"` \| `"ORDER BY timestamp DESC, id DESC"`\> #### Parameters ##### ascending `boolean` = `false` #### Returns `Promise`\<`"ORDER BY timestamp ASC, id ASC"` \| `"ORDER BY timestamp DESC, id DESC"`\> ### getChatMessage() > **getChatMessage**(`accountName`, `id`): `Promise`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)\> #### Parameters ##### accountName `string` ##### id `string` #### Returns `Promise`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)\> ### getChatRoles() > **getChatRoles**(`accountName`, `query`, `params?`): `Promise`\<`string`[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT DISTINCT role FROM chat_history ORDER BY role ASC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`string`[]\> ### getConnection() > **getConnection**(`accountName`, `id`): `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)\> #### Parameters ##### accountName `string` ##### id `string` #### Returns `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)\> ### getConnections() > **getConnections**(`accountName`, `query`, `params?`): `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM connections"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)[]\> ### getConversationIds() > **getConversationIds**(`accountName`, `query`, `params?`): `Promise`\<`string`[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT DISTINCT conversationId FROM chat_history ORDER BY conversationId ASC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`string`[]\> ### getConversationSummaries() > **getConversationSummaries**(`accountName`, `query`, `params?`): `Promise`\<[`ChatConversation`](/api/privatefolio-backend/interfaces/interfaces/chatconversation)[]\> #### Parameters ##### accountName `string` ##### query `string` = `...` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`ChatConversation`](/api/privatefolio-backend/interfaces/interfaces/chatconversation)[]\> ### getCurrentSystemMetrics() > **getCurrentSystemMetrics**(): `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)\> #### Returns `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)\> ### getDataPlatforms() > **getDataPlatforms**(): `Promise`\<[`DataPlatform`](/api/privatefolio-backend/interfaces/interfaces/dataplatform)[]\> #### Returns `Promise`\<[`DataPlatform`](/api/privatefolio-backend/interfaces/interfaces/dataplatform)[]\> ### getDiskUsage() > **getDiskUsage**(`accountName`): `Promise`\<`number`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`number`\> ### getExchangeById() > **getExchangeById**(`id`): `Promise`\<[`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)\> #### Parameters ##### id `string` #### Returns `Promise`\<[`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)\> ### getExchanges() > **getExchanges**(): `Promise`\<[`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)[]\> #### Returns `Promise`\<[`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)[]\> ### getExtensionsByType() > **getExtensionsByType**(`type`): `Promise`\<[`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension)[]\> #### Parameters ##### type [`ExtensionType`](/api/privatefolio-backend/interfaces/type-aliases/extensiontype) #### Returns `Promise`\<[`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension)[]\> ### getFileImport() > **getFileImport**(`accountName`, `id`): `Promise`\<\{ `id`: `string`; `lastModified`: `number`; `meta`: `any`; `name`: `string`; `size`: `number`; `timestamp`: `number`; \}\> #### Parameters ##### accountName `string` ##### id `string` #### Returns `Promise`\<\{ `id`: `string`; `lastModified`: `number`; `meta`: `any`; `name`: `string`; `size`: `number`; `timestamp`: `number`; \}\> ### getFileImportRequirements() > **getFileImportRequirements**(`accountName`, `fileRecord`): `Promise`\<[`ParserRequirement`](/api/privatefolio-backend/interfaces/type-aliases/parserrequirement)[]\> #### Parameters ##### accountName `string` ##### fileRecord [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile) #### Returns `Promise`\<[`ParserRequirement`](/api/privatefolio-backend/interfaces/type-aliases/parserrequirement)[]\> ### getFileImports() > **getFileImports**(`accountName`, `query`, `params?`): `Promise`\<`object`[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM file_imports ORDER BY timestamp DESC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`object`[]\> ### getHealthStats() > **getHealthStats**(`fromTimestamp?`, `toTimestamp?`): `Promise`\<\{ `avgCpuUsage`: `number`; `avgMemoryUsage`: `number`; `count`: `number`; `maxCpuUsage`: `number`; `maxMemoryUsage`: `number`; `minCpuUsage`: `number`; `minMemoryUsage`: `number`; \}\> #### Parameters ##### fromTimestamp? `number` ##### toTimestamp? `number` #### Returns `Promise`\<\{ `avgCpuUsage`: `number`; `avgMemoryUsage`: `number`; `count`: `number`; `maxCpuUsage`: `number`; `maxMemoryUsage`: `number`; `minCpuUsage`: `number`; `minMemoryUsage`: `number`; \}\> ### getLatestHealthMetric() > **getLatestHealthMetric**(): `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)\> #### Returns `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)\> ### getLatestServerHealthMetric() > **getLatestServerHealthMetric**(): `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)\> #### Returns `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)\> ### getMyAssets() > **getMyAssets**(`accountName`, `query`, `params?`): `Promise`\<[`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset)[]\> #### Parameters ##### accountName `string` ##### query `string` = `...` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset)[]\> ### getMyPlatformIds() > **getMyPlatformIds**(`accountName`, `query`, `params?`): `Promise`\<`string`[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT DISTINCT platformId FROM audit_logs ORDER BY platformId ASC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`string`[]\> ### getMyPlatforms() > **getMyPlatforms**(`accountName`): `Promise`\<[`Platform`](/api/privatefolio-backend/interfaces/type-aliases/platform)[]\> #### Parameters ##### accountName `string` #### Returns `Promise`\<[`Platform`](/api/privatefolio-backend/interfaces/type-aliases/platform)[]\> ### getNetworth() > **getNetworth**(`accountName`, `query`): `Promise`\<[`Networth`](/api/privatefolio-backend/interfaces/interfaces/networth)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM networth"` #### Returns `Promise`\<[`Networth`](/api/privatefolio-backend/interfaces/interfaces/networth)[]\> ### getNotification() > **getNotification**(`accountName`, `id`): `Promise`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)\> #### Parameters ##### accountName `string` ##### id `number` #### Returns `Promise`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)\> ### getNotifications() > **getNotifications**(`accountName`, `query`, `params?`): `Promise`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM notifications ORDER BY createdAt DESC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)[]\> ### getOperations() > **getOperations**(`accountName`, `query`, `params?`): `Promise`\<[`AuditLogOperation`](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT DISTINCT operation FROM audit_logs ORDER BY operation ASC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`AuditLogOperation`](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation)[]\> ### getPlatform() > **getPlatform**(`id`): `Promise`\<[`Platform`](/api/privatefolio-backend/interfaces/type-aliases/platform)\> #### Parameters ##### id `string` #### Returns `Promise`\<[`Platform`](/api/privatefolio-backend/interfaces/type-aliases/platform)\> ### getPlatformsByIds() > **getPlatformsByIds**(`ids`): `Promise`\<[`Platform`](/api/privatefolio-backend/interfaces/type-aliases/platform)[]\> #### Parameters ##### ids `string`[] #### Returns `Promise`\<[`Platform`](/api/privatefolio-backend/interfaces/type-aliases/platform)[]\> ### getPriceCursor() > **getPriceCursor**(`accountName`, `assetId`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### assetId `string` #### Returns `Promise`\<`number`\> ### getPricesForAsset() > **getPricesForAsset**(`accountName`, `assetId`, `timestamp?`, `start?`, `end?`): `Promise`\<[`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata)[]\> #### Parameters ##### accountName `string` ##### assetId `string` ##### timestamp? `number` ##### start? `number` ##### end? `number` #### Returns `Promise`\<[`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata)[]\> ### getPushDevices() > **getPushDevices**(`accountName`): `Promise`\<[`PushDevice`](/api/privatefolio-backend/interfaces/interfaces/pushdevice)[]\> #### Parameters ##### accountName `string` #### Returns `Promise`\<[`PushDevice`](/api/privatefolio-backend/interfaces/interfaces/pushdevice)[]\> ### getRecentChatHistory() > **getRecentChatHistory**(`accountName`, `limit`): `Promise`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)[]\> #### Parameters ##### accountName `string` ##### limit `number` = `50` #### Returns `Promise`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)[]\> ### getServerDatabase() > **getServerDatabase**(): `Promise`\<`QueryExecutor`\> #### Returns `Promise`\<`QueryExecutor`\> ### getServerDatabaseWithHealthMetrics() > **getServerDatabaseWithHealthMetrics**(): `Promise`\<`QueryExecutor`\> #### Returns `Promise`\<`QueryExecutor`\> ### getServerDatabaseWithKeyValue() > **getServerDatabaseWithKeyValue**(): `Promise`\<`QueryExecutor`\> #### Returns `Promise`\<`QueryExecutor`\> ### getServerFile() > **getServerFile**(`accountName`, `id`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> #### Parameters ##### accountName `string` ##### id `number` #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> ### getServerFiles() > **getServerFiles**(`accountName`, `query`, `params?`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM server_files ORDER BY id DESC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)[]\> ### getServerHealth() > **getServerHealth**(`query`, `params?`): `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)[]\> #### Parameters ##### query `string` = `"SELECT * FROM health_metrics ORDER BY timestamp DESC LIMIT 100"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)[]\> ### getServerHealthStats() > **getServerHealthStats**(`fromTimestamp?`, `toTimestamp?`): `Promise`\<\{ `avgCpuUsage`: `number`; `avgMemoryUsage`: `number`; `count`: `number`; `maxCpuUsage`: `number`; `maxMemoryUsage`: `number`; `minCpuUsage`: `number`; `minMemoryUsage`: `number`; \}\> #### Parameters ##### fromTimestamp? `number` ##### toTimestamp? `number` #### Returns `Promise`\<\{ `avgCpuUsage`: `number`; `avgMemoryUsage`: `number`; `count`: `number`; `maxCpuUsage`: `number`; `maxMemoryUsage`: `number`; `minCpuUsage`: `number`; `minMemoryUsage`: `number`; \}\> ### getServerSettings() > **getServerSettings**(): `Promise`\<`ServerSettings`\> #### Returns `Promise`\<`ServerSettings`\> ### getServerTask() > **getServerTask**(`accountName`, `id`): `Promise`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)\> #### Parameters ##### accountName `string` ##### id `number` #### Returns `Promise`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)\> ### getServerTaskLog() > **getServerTaskLog**(`accountName`, `taskId`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### taskId `number` #### Returns `Promise`\<`string`\> ### getServerTasks() > **getServerTasks**(`accountName`, `query`, `params?`): `Promise`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM server_tasks ORDER BY id DESC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)[]\> ### getServerValue() > **getServerValue**\<`T`\>(`key`, `defaultValue`): `Promise`\<`T` *extends* `Serializable` ? `T`\<`T`\> : `null`\> #### Type Parameters ##### T `T` #### Parameters ##### key `string` ##### defaultValue `T` *extends* `Serializable` ? `T`\<`T`\> : `null` = `null` #### Returns `Promise`\<`T` *extends* `Serializable` ? `T`\<`T`\> : `null`\> ### getSettings() > **getSettings**(`accountName`): `Promise`\<`Settings`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Settings`\> ### getSystemInfo() > **getSystemInfo**(): `Promise`\<[`SystemInfo`](/api/privatefolio-backend/interfaces/interfaces/systeminfo)\> #### Returns `Promise`\<[`SystemInfo`](/api/privatefolio-backend/interfaces/interfaces/systeminfo)\> ### getTag() > **getTag**(`accountName`, `id`): `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)\> Retrieves a single tag by its id. #### Parameters ##### accountName `string` ##### id `number` #### Returns `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)\> ### getTags() > **getTags**(`accountName`, `query`, `params?`): `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> Retrieves tags based on the given query and parameters. #### Parameters ##### accountName `string` ##### query `string` = `"SELECT id, name FROM tags ORDER BY id ASC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> ### getTagsForAuditLog() > **getTagsForAuditLog**(`accountName`, `auditLogId`): `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> #### Parameters ##### accountName `string` ##### auditLogId `string` #### Returns `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> ### getTagsForTrade() > **getTagsForTrade**(`accountName`, `tradeId`): `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> #### Parameters ##### accountName `string` ##### tradeId `string` #### Returns `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> ### getTagsForTransaction() > **getTagsForTransaction**(`accountName`, `transactionId`): `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> #### Parameters ##### accountName `string` ##### transactionId `string` #### Returns `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> ### getTrade() > **getTrade**(`accountName`, `id`): `Promise`\<[`Trade`](/api/privatefolio-backend/interfaces/interfaces/trade)\> #### Parameters ##### accountName `string` ##### id `string` #### Returns `Promise`\<[`Trade`](/api/privatefolio-backend/interfaces/interfaces/trade)\> ### getTradeAuditLogs() > **getTradeAuditLogs**(`accountName`, `tradeId`): `Promise`\<`string`[]\> #### Parameters ##### accountName `string` ##### tradeId `string` #### Returns `Promise`\<`string`[]\> ### getTradePnL() > **getTradePnL**(`accountName`, `tradeId`, `query`, `params`): `Promise`\<[`TradePnL`](/api/privatefolio-backend/interfaces/interfaces/tradepnl)[]\> #### Parameters ##### accountName `string` ##### tradeId `string` ##### query `string` = `"SELECT * FROM trade_pnl WHERE trade_id = ? ORDER BY timestamp ASC"` ##### params [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] = `...` #### Returns `Promise`\<[`TradePnL`](/api/privatefolio-backend/interfaces/interfaces/tradepnl)[]\> ### getTrades() > **getTrades**(`accountName`, `query`, `params?`): `Promise`\<[`Trade`](/api/privatefolio-backend/interfaces/interfaces/trade)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM trades ORDER BY createdAt DESC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`Trade`](/api/privatefolio-backend/interfaces/interfaces/trade)[]\> ### getTradeTransactions() > **getTradeTransactions**(`accountName`, `tradeId`): `Promise`\<`string`[]\> #### Parameters ##### accountName `string` ##### tradeId `string` #### Returns `Promise`\<`string`[]\> ### getTransaction() > **getTransaction**(`accountName`, `id`): `Promise`\<[`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)\> #### Parameters ##### accountName `string` ##### id `string` #### Returns `Promise`\<[`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)\> ### getTransactions() > **getTransactions**(`accountName`, `query`, `params?`): `Promise`\<[`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT * FROM transactions ORDER BY timestamp DESC, incomingN DESC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<[`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)[]\> ### getTransactionsByTxHash() > **getTransactionsByTxHash**(`accountName`, `txHash`): `Promise`\<[`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)[]\> #### Parameters ##### accountName `string` ##### txHash `string` #### Returns `Promise`\<[`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)[]\> ### getTriggers() > **getTriggers**(`accountName`, `query`, `params`): `Promise`\<`string`[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT DISTINCT trigger FROM server_tasks ORDER BY trigger ASC"` ##### params [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] = `[]` #### Returns `Promise`\<`string`[]\> ### getValue() > **getValue**\<`T`\>(`accountName`, `key`, `defaultValue`): `Promise`\<`T` *extends* `Serializable` ? `T`\<`T`\> : `null`\> #### Type Parameters ##### T `T` #### Parameters ##### accountName `string` ##### key `string` ##### defaultValue `T` *extends* `Serializable` ? `T`\<`T`\> : `null` = `null` #### Returns `Promise`\<`T` *extends* `Serializable` ? `T`\<`T`\> : `null`\> ### getVapidPublicKey() > **getVapidPublicKey**(): `Promise`\<`string`\> #### Returns `Promise`\<`string`\> ### getWallets() > **getWallets**(`accountName`, `query`, `params?`): `Promise`\<`string`[]\> #### Parameters ##### accountName `string` ##### query `string` = `"SELECT DISTINCT wallet FROM audit_logs ORDER BY wallet ASC"` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`string`[]\> ### importFile() > **importFile**(`accountName`, `fileRecord`, `parserContext`, `progress`, `groupId?`): `Promise`\<[`FileImport`](/api/privatefolio-backend/interfaces/interfaces/fileimport)\> #### Parameters ##### accountName `string` ##### fileRecord [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile) ##### parserContext `Record`\<`string`, `unknown`\> = `{}` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### groupId? `string` #### Returns `Promise`\<[`FileImport`](/api/privatefolio-backend/interfaces/interfaces/fileimport)\> ### invalidateBalances() > **invalidateBalances**(`accountName`, `newValue`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### newValue `number` #### Returns `Promise`\<`void`\> ### invalidateNetworth() > **invalidateNetworth**(`accountName`, `newValue`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### newValue `number` #### Returns `Promise`\<`void`\> ### invalidateTradePnl() > **invalidateTradePnl**(`accountName`, `newValue`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### newValue `number` #### Returns `Promise`\<`void`\> ### invalidateTrades() > **invalidateTrades**(`accountName`, `newValue`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### newValue `number` #### Returns `Promise`\<`void`\> ### logUiError() > **logUiError**(`message`, `properties`): `Promise`\<`void`\> #### Parameters ##### message `string` ##### properties `Record`\<`string`, `unknown`\> #### Returns `Promise`\<`void`\> ### migrateServerDatabase() > **migrateServerDatabase**(): `Promise`\<`void`\> #### Returns `Promise`\<`void`\> ### migrateTables() > **migrateTables**(`accountName`): `Promise`\<`void`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`void`\> ### monitorServerHealth() > **monitorServerHealth**(): `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)\> #### Returns `Promise`\<[`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric)\> ### patchAsset() > **patchAsset**(`accountName`, `id`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `string` ##### patch `Partial`\<[`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset)\> #### Returns `Promise`\<`void`\> ### patchAuditLog() > **patchAuditLog**(`accountName`, `id`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `string` ##### patch `Partial`\<[`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)\> #### Returns `Promise`\<`void`\> ### patchChatMessage() > **patchChatMessage**(`accountName`, `id`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `string` ##### patch `Partial`\<[`ChatMessage`](/api/privatefolio-backend/interfaces/interfaces/chatmessage)\> #### Returns `Promise`\<`void`\> ### patchNotification() > **patchNotification**(`accountName`, `id`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `number` ##### patch `Partial`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)\> #### Returns `Promise`\<`void`\> ### patchNotifications() > **patchNotifications**(`accountName`, `ids`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### ids `number`[] ##### patch `Partial`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)\> #### Returns `Promise`\<`void`\> ### patchServerFile() > **patchServerFile**(`accountName`, `id`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `number` ##### patch `Partial`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> #### Returns `Promise`\<`void`\> ### patchServerTask() > **patchServerTask**(`accountName`, `id`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `number` ##### patch `Partial`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)\> #### Returns `Promise`\<`void`\> ### patchTrade() > **patchTrade**(`accountName`, `id`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `string` ##### patch `Partial`\<[`Trade`](/api/privatefolio-backend/interfaces/interfaces/trade)\> #### Returns `Promise`\<`void`\> ### patchTransaction() > **patchTransaction**(`accountName`, `id`, `patch`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `string` ##### patch `Partial`\<[`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)\> #### Returns `Promise`\<`void`\> ### ping() > **ping**(): `Promise`\<`string`\> #### Returns `Promise`\<`string`\> ### pingAccount() > **pingAccount**(`accountName`): `Promise`\<`SQLiteCompatibleType`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`SQLiteCompatibleType`\> ### queryServerLogs() > **queryServerLogs**(`filters`, `rowsPerPage`, `page`, `order`, `orderBy`, `date`): `Promise`\<\[[`ServerLog`](/api/privatefolio-backend/interfaces/interfaces/serverlog)[], `number`\]\> #### Parameters ##### filters `Record`\<`string`, `string` \| `number`\> = `{}` ##### rowsPerPage `number` = `25` ##### page `number` = `0` ##### order `"asc"` | `"desc"` ##### orderBy keyof [`ServerLog`](/api/privatefolio-backend/interfaces/interfaces/serverlog) = `"timestamp"` ##### date `string` = `...` #### Returns `Promise`\<\[[`ServerLog`](/api/privatefolio-backend/interfaces/interfaces/serverlog)[], `number`\]\> ### readSql() > **readSql**(`accountName`, `query`, `params?`): `Promise`\<`SQLiteCompatibleType`[][]\> #### Parameters ##### accountName `string` ##### query `string` ##### params? [`SqlParam`](/api/privatefolio-backend/interfaces/type-aliases/sqlparam)[] #### Returns `Promise`\<`SQLiteCompatibleType`[][]\> ### reconnectAccount() > **reconnectAccount**(`accountName`): `Promise`\<`Account`\> #### Parameters ##### accountName `string` #### Returns `Promise`\<`Account`\> ### refetchAssetsIfNeeded() > **refetchAssetsIfNeeded**(): `Promise`\<[`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset)[]\> #### Returns `Promise`\<[`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset)[]\> ### refetchPlatformsIfNeeded() > **refetchPlatformsIfNeeded**(): `Promise`\<\[[`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)[], [`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)[]\] \| \{ `blockchains`: [`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)[]; `exchanges`: [`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)[]; \}\> #### Returns `Promise`\<\[[`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)[], [`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)[]\] \| \{ `blockchains`: [`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)[]; `exchanges`: [`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)[]; \}\> ### refreshSystemInfo() > **refreshSystemInfo**(): `Promise`\<[`SystemInfo`](/api/privatefolio-backend/interfaces/interfaces/systeminfo)\> #### Returns `Promise`\<[`SystemInfo`](/api/privatefolio-backend/interfaces/interfaces/systeminfo)\> ### removePushDevice() > **removePushDevice**(`accountName`, `endpoint`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### endpoint `string` #### Returns `Promise`\<`void`\> ### removeTagFromAuditLog() > **removeTagFromAuditLog**(`accountName`, `auditLogId`, `tagId`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### auditLogId `string` ##### tagId `number` #### Returns `Promise`\<`void`\> ### removeTagFromTrade() > **removeTagFromTrade**(`accountName`, `tradeId`, `tagId`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### tradeId `string` ##### tagId `number` #### Returns `Promise`\<`void`\> ### removeTagFromTransaction() > **removeTagFromTransaction**(`accountName`, `transactionId`, `tagId`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### transactionId `string` ##### tagId `number` #### Returns `Promise`\<`void`\> ### resetAccount() > **resetAccount**(`accountName`): `Promise`\<`void`\> Resets an account while preserving the account object reference. This function: 1. Clears the task queue and aborts any pending tasks 2. Preserves the account reference in the accounts object 3. Deletes the database file and logs (with keepAccount=true) 4. Creates a new database connection 5. Updates the existing account object with the new database connection 6. Emits Reset events for all subscription channels #### Parameters ##### accountName `string` #### Returns `Promise`\<`void`\> ### resetConnection() > **resetConnection**(`accountName`, `connectionId`, `progress`): `Promise`\<`number`\> #### Parameters ##### accountName `string` ##### connectionId `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) #### Returns `Promise`\<`number`\> ### restore() > **restore**(`accountName`, `fileRecord`, `progress`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### fileRecord [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile) ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` #### Returns `Promise`\<`void`\> ### saveServerHealthMetric() > **saveServerHealthMetric**(`metrics`): `Promise`\<`void`\> #### Parameters ##### metrics [`ServerHealthMetric`](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric) #### Returns `Promise`\<`void`\> ### setEncryptedValue() > **setEncryptedValue**(`accountName`, `key`, `value`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### key `string` ##### value `string` #### Returns `Promise`\<`void`\> ### setServerValue() > **setServerValue**(`key`, `value`): `Promise`\<`void`\> #### Parameters ##### key `string` ##### value `unknown` #### Returns `Promise`\<`void`\> ### setSystemInfo() > **setSystemInfo**(`systemInfo`): `Promise`\<`void`\> #### Parameters ##### systemInfo [`SystemInfo`](/api/privatefolio-backend/interfaces/interfaces/systeminfo) #### Returns `Promise`\<`void`\> ### setValue() > **setValue**(`accountName`, `key`, `value`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### key `string` ##### value `unknown` #### Returns `Promise`\<`void`\> ### subscribeToAccounts() > **subscribeToAccounts**(`callback`): `Promise`\<`string`\> #### Parameters ##### callback (`cause`, `accountName`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToAuditLogs() > **subscribeToAuditLogs**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback (`cause`, `oldestTimestamp?`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToChatHistory() > **subscribeToChatHistory**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback (`cause`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToConnections() > **subscribeToConnections**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback (`cause`, `connection`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToDailyPrices() > **subscribeToDailyPrices**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToFileImports() > **subscribeToFileImports**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback (`cause`, `fileImport`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToKV() > **subscribeToKV**\<`T`\>(`accountName`, `key`, `callback`): `Promise`\<`string`\> #### Type Parameters ##### T `T` #### Parameters ##### accountName `string` ##### key `string` ##### callback (`value`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToMetadata() > **subscribeToMetadata**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToNetworth() > **subscribeToNetworth**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToNotifications() > **subscribeToNotifications**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToPnl() > **subscribeToPnl**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback (`cause`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToServerFiles() > **subscribeToServerFiles**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToServerHealth() > **subscribeToServerHealth**(`callback`): `Promise`\<`string`\> #### Parameters ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToServerKV() > **subscribeToServerKV**\<`T`\>(`key`, `callback`): `Promise`\<`string`\> #### Type Parameters ##### T `T` #### Parameters ##### key `string` ##### callback (`value`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToServerLog() > **subscribeToServerLog**(`callback`): `Promise`\<`string`\> #### Parameters ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToServerSettings() > **subscribeToServerSettings**(`callback`): `Promise`\<`string`\> #### Parameters ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToServerSettingsProperty() > **subscribeToServerSettingsProperty**(`property`, `callback`): `Promise`\<`string`\> #### Parameters ##### property keyof `ServerSettings` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToServerTaskProgress() > **subscribeToServerTaskProgress**(`accountName`, `id`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### id `number` ##### callback (`logEntry`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToServerTasks() > **subscribeToServerTasks**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToSettings() > **subscribeToSettings**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToSettingsProperty() > **subscribeToSettingsProperty**(`accountName`, `property`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### property keyof `Settings` ##### callback () => `void` #### Returns `Promise`\<`string`\> ### subscribeToTags() > **subscribeToTags**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback (`cause`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToTrades() > **subscribeToTrades**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback (`cause`) => `void` #### Returns `Promise`\<`string`\> ### subscribeToTransactions() > **subscribeToTransactions**(`accountName`, `callback`): `Promise`\<`string`\> #### Parameters ##### accountName `string` ##### callback (`cause`) => `void` #### Returns `Promise`\<`string`\> ### syncConnection() > **syncConnection**(`progress`, `connectionId`, `accountName`, `debugMode`, `since?`, `until?`, `signal?`, `groupId?`): `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)\> #### Parameters ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### connectionId `string` ##### accountName `string` ##### debugMode `boolean` = `false` ##### since? `number` ##### until? `number` ##### signal? `AbortSignal` ##### groupId? `string` #### Returns `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)\> ### throwTestError() > **throwTestError**(): `Promise`\<`void`\> #### Returns `Promise`\<`void`\> ### unsubscribe() > **unsubscribe**(`subscriptionId`, `throwOnError`): `Promise`\<`void`\> #### Parameters ##### subscriptionId `string` ##### throwOnError `boolean` = `true` #### Returns `Promise`\<`void`\> ### updateServerSettings() > **updateServerSettings**(`settings`): `Promise`\<`ServerSettings`\> #### Parameters ##### settings `Partial`\<`ServerSettings`\> #### Returns `Promise`\<`ServerSettings`\> ### updateSettings() > **updateSettings**(`accountName`, `settings`): `Promise`\<`Settings`\> #### Parameters ##### accountName `string` ##### settings `Partial`\<`Settings`\> #### Returns `Promise`\<`Settings`\> ### updateTag() > **updateTag**(`accountName`, `id`, `name`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### id `number` ##### name `string` #### Returns `Promise`\<`void`\> ### upsertAsset() > **upsertAsset**(`accountName`, `record`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### record [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset) #### Returns `Promise`\<`void`\> ### upsertAssets() > **upsertAssets**(`accountName`, `records`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### records [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset)[] #### Returns `Promise`\<`void`\> ### upsertAuditLog() > **upsertAuditLog**(`accountName`, `record`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### record [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog) #### Returns `Promise`\<`void`\> ### upsertAuditLogs() > **upsertAuditLogs**(`accountName`, `records`, `groupId?`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### records [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)[] ##### groupId? `string` #### Returns `Promise`\<`void`\> ### upsertChatMessage() > **upsertChatMessage**(`accountName`, `record`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### record `NewChatMessage` #### Returns `Promise`\<`void`\> ### upsertChatMessages() > **upsertChatMessages**(`accountName`, `records`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### records `NewChatMessage`[] #### Returns `Promise`\<`void`\> ### upsertConnection() > **upsertConnection**(`accountName`, `record`): `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)\> #### Parameters ##### accountName `string` ##### record `NewConnection` #### Returns `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)\> ### upsertConnections() > **upsertConnections**(`accountName`, `records`): `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)[]\> Beware: do not add single connections asynchronously, it will fail. #### Parameters ##### accountName `string` ##### records `NewConnection`[] #### Returns `Promise`\<[`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection)[]\> ### upsertDailyPrice() > **upsertDailyPrice**(`accountName`, `record`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### record [`DailyPrice`](/api/privatefolio-backend/interfaces/interfaces/dailyprice) | `NewDailyPrice` #### Returns `Promise`\<`void`\> ### upsertDailyPrices() > **upsertDailyPrices**(`accountName`, `records`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### records [`DailyPrice`](/api/privatefolio-backend/interfaces/interfaces/dailyprice)[] | `NewDailyPrice`[] #### Returns `Promise`\<`void`\> ### upsertNotification() > **upsertNotification**(`accountName`, `notification`): `Promise`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)\> #### Parameters ##### accountName `string` ##### notification [`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification) | [`NewNotification`](/api/privatefolio-backend/interfaces/type-aliases/newnotification) #### Returns `Promise`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)\> ### upsertNotifications() > **upsertNotifications**(`accountName`, `records`): `Promise`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)[]\> #### Parameters ##### accountName `string` ##### records ([`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification) \| [`NewNotification`](/api/privatefolio-backend/interfaces/type-aliases/newnotification))[] #### Returns `Promise`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification)[]\> ### upsertServerFile() > **upsertServerFile**(`accountName`, `record`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> #### Parameters ##### accountName `string` ##### record [`NewServerFile`](/api/privatefolio-backend/interfaces/interfaces/newserverfile) #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)\> ### upsertServerFiles() > **upsertServerFiles**(`accountName`, `records`): `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)[]\> #### Parameters ##### accountName `string` ##### records [`NewServerFile`](/api/privatefolio-backend/interfaces/interfaces/newserverfile)[] #### Returns `Promise`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile)[]\> ### upsertServerTask() > **upsertServerTask**(`accountName`, `record`): `Promise`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)\> #### Parameters ##### accountName `string` ##### record [`NewServerTask`](/api/privatefolio-backend/interfaces/interfaces/newservertask) #### Returns `Promise`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)\> ### upsertServerTasks() > **upsertServerTasks**(`accountName`, `records`): `Promise`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)[]\> #### Parameters ##### accountName `string` ##### records [`NewServerTask`](/api/privatefolio-backend/interfaces/interfaces/newservertask)[] #### Returns `Promise`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask)[]\> ### upsertTag() > **upsertTag**(`accountName`, `tag`): `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)\> Inserts a single tag (using upsertTags) and returns it. #### Parameters ##### accountName `string` ##### tag `string` #### Returns `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)\> ### upsertTags() > **upsertTags**(`accountName`, `tags`): `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> Inserts multiple tags (ignoring duplicates) and returns the inserted or existing tags. #### Parameters ##### accountName `string` ##### tags `string`[] #### Returns `Promise`\<[`Tag`](/api/privatefolio-backend/interfaces/interfaces/tag)[]\> ### upsertTrade() > **upsertTrade**(`accountName`, `trade`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### trade [`Trade`](/api/privatefolio-backend/interfaces/interfaces/trade) #### Returns `Promise`\<`void`\> ### upsertTradePnl() > **upsertTradePnl**(`accountName`, `tradePnl`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### tradePnl [`TradePnL`](/api/privatefolio-backend/interfaces/interfaces/tradepnl) #### Returns `Promise`\<`void`\> ### upsertTradePnls() > **upsertTradePnls**(`accountName`, `tradePnls`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### tradePnls [`TradePnL`](/api/privatefolio-backend/interfaces/interfaces/tradepnl)[] #### Returns `Promise`\<`void`\> ### upsertTrades() > **upsertTrades**(`accountName`, `trades`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### trades [`Trade`](/api/privatefolio-backend/interfaces/interfaces/trade)[] #### Returns `Promise`\<`void`\> ### upsertTransaction() > **upsertTransaction**(`accountName`, `record`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### record [`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction) #### Returns `Promise`\<`void`\> ### upsertTransactions() > **upsertTransactions**(`accountName`, `records`): `Promise`\<`void`\> #### Parameters ##### accountName `string` ##### records [`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)[] #### Returns `Promise`\<`void`\> ### verifyBalances() > **verifyBalances**(`accountName`, `progress`, `signal?`): `Promise`\<`object`[]\> Checks on-chain balances for all wallets/assets and compares to stored balances. Returns a list of discrepancies: { wallet, assetId, onChain, stored } #### Parameters ##### accountName `string` ##### progress [`ProgressCallback`](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) = `noop` ##### signal? `AbortSignal` #### Returns `Promise`\<`object`[]\> # interfaces [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / interfaces ## Enumerations - [EventCause](/api/privatefolio-backend/interfaces/enumerations/eventcause) - [SubscriptionChannel](/api/privatefolio-backend/interfaces/enumerations/subscriptionchannel) - [TaskPriority](/api/privatefolio-backend/interfaces/enumerations/taskpriority) - [TaskStatus](/api/privatefolio-backend/interfaces/enumerations/taskstatus) ## Interfaces - [AccountPnL](/api/privatefolio-backend/interfaces/interfaces/accountpnl) - [Asset](/api/privatefolio-backend/interfaces/interfaces/asset) - [AssetMetadata](/api/privatefolio-backend/interfaces/interfaces/assetmetadata) - [AssetWithPrice](/api/privatefolio-backend/interfaces/interfaces/assetwithprice) - [AuditLog](/api/privatefolio-backend/interfaces/interfaces/auditlog) - [Balance](/api/privatefolio-backend/interfaces/interfaces/balance) - [BalanceMap](/api/privatefolio-backend/interfaces/interfaces/balancemap) - [BinanceAuditLog](/api/privatefolio-backend/interfaces/interfaces/binanceauditlog) - [Blockchain](/api/privatefolio-backend/interfaces/interfaces/blockchain) - [ChatConversation](/api/privatefolio-backend/interfaces/interfaces/chatconversation) - [ChatMessage](/api/privatefolio-backend/interfaces/interfaces/chatmessage) - [CoingeckoExMetadataFull](/api/privatefolio-backend/interfaces/interfaces/coingeckoexmetadatafull) - [CoingeckoMetadataFull](/api/privatefolio-backend/interfaces/interfaces/coingeckometadatafull) - [Connection](/api/privatefolio-backend/interfaces/interfaces/connection) - [DailyPrice](/api/privatefolio-backend/interfaces/interfaces/dailyprice) - [DataPlatform](/api/privatefolio-backend/interfaces/interfaces/dataplatform) - [EtherscanMetadata](/api/privatefolio-backend/interfaces/interfaces/etherscanmetadata) - [Exchange](/api/privatefolio-backend/interfaces/interfaces/exchange) - [Extension](/api/privatefolio-backend/interfaces/interfaces/extension) - [FileImport](/api/privatefolio-backend/interfaces/interfaces/fileimport) - [HealthStats](/api/privatefolio-backend/interfaces/interfaces/healthstats) - [MyAsset](/api/privatefolio-backend/interfaces/interfaces/myasset) - [Networth](/api/privatefolio-backend/interfaces/interfaces/networth) - [NewServerFile](/api/privatefolio-backend/interfaces/interfaces/newserverfile) - [NewServerTask](/api/privatefolio-backend/interfaces/interfaces/newservertask) - [Notification](/api/privatefolio-backend/interfaces/interfaces/notification) - [PlatformMetadata](/api/privatefolio-backend/interfaces/interfaces/platformmetadata) - [PushDevice](/api/privatefolio-backend/interfaces/interfaces/pushdevice) - [RichExtension](/api/privatefolio-backend/interfaces/interfaces/richextension) - [ServerFile](/api/privatefolio-backend/interfaces/interfaces/serverfile) - [ServerHealthMetric](/api/privatefolio-backend/interfaces/interfaces/serverhealthmetric) - [ServerLog](/api/privatefolio-backend/interfaces/interfaces/serverlog) - [ServerTask](/api/privatefolio-backend/interfaces/interfaces/servertask) - [Subscription](/api/privatefolio-backend/interfaces/interfaces/subscription) - [SystemInfo](/api/privatefolio-backend/interfaces/interfaces/systeminfo) - [Tag](/api/privatefolio-backend/interfaces/interfaces/tag) - [Trade](/api/privatefolio-backend/interfaces/interfaces/trade) - [TradePnL](/api/privatefolio-backend/interfaces/interfaces/tradepnl) - [Transaction](/api/privatefolio-backend/interfaces/interfaces/transaction) ## Type Aliases - [AddressBook](/api/privatefolio-backend/interfaces/type-aliases/addressbook) - [AlchemyPrice](/api/privatefolio-backend/interfaces/type-aliases/alchemyprice) - [AssetId](/api/privatefolio-backend/interfaces/type-aliases/assetid) - [AuditLogOperation](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation) - [BinanceConnection](/api/privatefolio-backend/interfaces/type-aliases/binanceconnection) - [BinanceConnectionOptions](/api/privatefolio-backend/interfaces/type-aliases/binanceconnectionoptions) - [BinanceKline](/api/privatefolio-backend/interfaces/type-aliases/binancekline) - [BlockchainMeta](/api/privatefolio-backend/interfaces/type-aliases/blockchainmeta) - [BlockNumber](/api/privatefolio-backend/interfaces/type-aliases/blocknumber) - [ChartData](/api/privatefolio-backend/interfaces/type-aliases/chartdata) - [CoinbaseBucket](/api/privatefolio-backend/interfaces/type-aliases/coinbasebucket) - [CoingeckoTickerData](/api/privatefolio-backend/interfaces/type-aliases/coingeckotickerdata) - [CoinstatsConnection](/api/privatefolio-backend/interfaces/type-aliases/coinstatsconnection) - [ConnectionOptions](/api/privatefolio-backend/interfaces/type-aliases/connectionoptions) - [ConnectionStatus](/api/privatefolio-backend/interfaces/type-aliases/connectionstatus) - [ConnectionStatusCallback](/api/privatefolio-backend/interfaces/type-aliases/connectionstatuscallback) - [CsvData](/api/privatefolio-backend/interfaces/type-aliases/csvdata) - [CsvParseFn](/api/privatefolio-backend/interfaces/type-aliases/csvparsefn) - [CsvParser](/api/privatefolio-backend/interfaces/type-aliases/csvparser) - [EtherscanConnection](/api/privatefolio-backend/interfaces/type-aliases/etherscanconnection) - [EtherscanTransaction](/api/privatefolio-backend/interfaces/type-aliases/etherscantransaction) - [EvmParser](/api/privatefolio-backend/interfaces/type-aliases/evmparser) - [ExtensionType](/api/privatefolio-backend/interfaces/type-aliases/extensiontype) - [FilterOptionsMap](/api/privatefolio-backend/interfaces/type-aliases/filteroptionsmap) - [FindPlatformsResult](/api/privatefolio-backend/interfaces/type-aliases/findplatformsresult) - [LabeledAddress](/api/privatefolio-backend/interfaces/type-aliases/labeledaddress) - [LlamaPrice](/api/privatefolio-backend/interfaces/type-aliases/llamaprice) - [LocalServerStatus](/api/privatefolio-backend/interfaces/type-aliases/localserverstatus) - [NewNotification](/api/privatefolio-backend/interfaces/type-aliases/newnotification) - [Nominal](/api/privatefolio-backend/interfaces/type-aliases/nominal) - [ParserRequirement](/api/privatefolio-backend/interfaces/type-aliases/parserrequirement) - [ParserRequirementType](/api/privatefolio-backend/interfaces/type-aliases/parserrequirementtype) - [ParserResult](/api/privatefolio-backend/interfaces/type-aliases/parserresult) - [Platform](/api/privatefolio-backend/interfaces/type-aliases/platform) - [ProgressCallback](/api/privatefolio-backend/interfaces/type-aliases/progresscallback) - [ProgressLog](/api/privatefolio-backend/interfaces/type-aliases/progresslog) - [ProgressUpdate](/api/privatefolio-backend/interfaces/type-aliases/progressupdate) - [PushSub](/api/privatefolio-backend/interfaces/type-aliases/pushsub) - [QueryRequest](/api/privatefolio-backend/interfaces/type-aliases/queryrequest) - [ResolutionString](/api/privatefolio-backend/interfaces/type-aliases/resolutionstring) - [SecTicker](/api/privatefolio-backend/interfaces/type-aliases/secticker) - [SourceCode](/api/privatefolio-backend/interfaces/type-aliases/sourcecode) - [SqlParam](/api/privatefolio-backend/interfaces/type-aliases/sqlparam) - [StackedAreaData](/api/privatefolio-backend/interfaces/type-aliases/stackedareadata) - [SubscriptionId](/api/privatefolio-backend/interfaces/type-aliases/subscriptionid) - [SubscriptionListener](/api/privatefolio-backend/interfaces/type-aliases/subscriptionlistener) - [SyncResult](/api/privatefolio-backend/interfaces/type-aliases/syncresult) - [TaskCompletionCallback](/api/privatefolio-backend/interfaces/type-aliases/taskcompletioncallback) - [TaskTrigger](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) - [Time](/api/privatefolio-backend/interfaces/type-aliases/time) - [Timestamp](/api/privatefolio-backend/interfaces/type-aliases/timestamp) - [TradeCost](/api/privatefolio-backend/interfaces/type-aliases/tradecost) - [TradeProceeds](/api/privatefolio-backend/interfaces/type-aliases/tradeproceeds) - [TradeStatus](/api/privatefolio-backend/interfaces/type-aliases/tradestatus) - [TradeType](/api/privatefolio-backend/interfaces/type-aliases/tradetype) - [TradeValue](/api/privatefolio-backend/interfaces/type-aliases/tradevalue) - [TransactionRole](/api/privatefolio-backend/interfaces/type-aliases/transactionrole) - [TransactionSide](/api/privatefolio-backend/interfaces/type-aliases/transactionside) - [TransactionType](/api/privatefolio-backend/interfaces/type-aliases/transactiontype) - [Web3Address](/api/privatefolio-backend/interfaces/type-aliases/web3address) ## Variables - [DEFAULT\_POLLING\_INTERVAL](/api/privatefolio-backend/interfaces/variables/default_polling_interval) - [MANUAL\_TX\_TYPES](/api/privatefolio-backend/interfaces/variables/manual_tx_types) - [TRADE\_TYPES](/api/privatefolio-backend/interfaces/variables/trade_types) - [TRANSACTIONS\_TYPES](/api/privatefolio-backend/interfaces/variables/transactions_types) # EventCause [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / EventCause Defined in: [interfaces.ts:830](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L830) ## Enumeration Members ### Created > **Created**: `"created"` Defined in: [interfaces.ts:831](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L831) *** ### Deleted > **Deleted**: `"deleted"` Defined in: [interfaces.ts:833](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L833) *** ### Reset > **Reset**: `"reset"` Defined in: [interfaces.ts:834](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L834) *** ### Updated > **Updated**: `"updated"` Defined in: [interfaces.ts:832](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L832) # SubscriptionChannel [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / SubscriptionChannel Defined in: [interfaces.ts:797](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L797) ## Enumeration Members ### Accounts > **Accounts**: `"accounts"` Defined in: [interfaces.ts:798](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L798) *** ### AuditLogs > **AuditLogs**: `"audit-logs"` Defined in: [interfaces.ts:807](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L807) *** ### Balances > **Balances**: `"balances"` Defined in: [interfaces.ts:814](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L814) *** ### ChatHistory > **ChatHistory**: `"chat-history"` Defined in: [interfaces.ts:808](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L808) *** ### Connections > **Connections**: `"connections"` Defined in: [interfaces.ts:812](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L812) *** ### DailyPrices > **DailyPrices**: `"daily-prices"` Defined in: [interfaces.ts:810](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L810) *** ### FileImports > **FileImports**: `"file-imports"` Defined in: [interfaces.ts:811](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L811) *** ### KeyValue > **KeyValue**: `"key-value"` Defined in: [interfaces.ts:806](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L806) *** ### Metadata > **Metadata**: `"metadata"` Defined in: [interfaces.ts:813](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L813) *** ### Networth > **Networth**: `"networth"` Defined in: [interfaces.ts:809](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L809) *** ### Notifications > **Notifications**: `"notifications"` Defined in: [interfaces.ts:819](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L819) *** ### ServerFiles > **ServerFiles**: `"server-files"` Defined in: [interfaces.ts:801](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L801) *** ### ServerHealth > **ServerHealth**: `"server-health"` Defined in: [interfaces.ts:805](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L805) *** ### ServerKeyValue > **ServerKeyValue**: `"server-key-value"` Defined in: [interfaces.ts:802](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L802) *** ### ServerLogs > **ServerLogs**: `"server-logs"` Defined in: [interfaces.ts:804](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L804) *** ### ServerSettings > **ServerSettings**: `"server-settings"` Defined in: [interfaces.ts:803](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L803) *** ### ServerTaskProgress > **ServerTaskProgress**: `"server-task-progress"` Defined in: [interfaces.ts:800](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L800) *** ### ServerTasks > **ServerTasks**: `"server-tasks"` Defined in: [interfaces.ts:799](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L799) *** ### Tags > **Tags**: `"tags"` Defined in: [interfaces.ts:816](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L816) *** ### TradePnl > **TradePnl**: `"trade-pnl"` Defined in: [interfaces.ts:818](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L818) *** ### Trades > **Trades**: `"trades"` Defined in: [interfaces.ts:817](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L817) *** ### Transactions > **Transactions**: `"transactions"` Defined in: [interfaces.ts:815](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L815) # TaskPriority [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TaskPriority Defined in: [interfaces.ts:838](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L838) ## Enumeration Members ### High > **High**: `7` Defined in: [interfaces.ts:845](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L845) *** ### Highest > **Highest**: `9` Defined in: [interfaces.ts:847](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L847) *** ### Low > **Low**: `3` Defined in: [interfaces.ts:841](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L841) *** ### Lowest > **Lowest**: `1` Defined in: [interfaces.ts:839](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L839) *** ### Medium > **Medium**: `5` Defined in: [interfaces.ts:843](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L843) *** ### MediumHigh > **MediumHigh**: `6` Defined in: [interfaces.ts:844](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L844) *** ### MediumLow > **MediumLow**: `4` Defined in: [interfaces.ts:842](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L842) *** ### VeryHigh > **VeryHigh**: `8` Defined in: [interfaces.ts:846](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L846) *** ### VeryLow > **VeryLow**: `2` Defined in: [interfaces.ts:840](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L840) # TaskStatus [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TaskStatus Defined in: [interfaces.ts:762](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L762) ## Enumeration Members ### Aborted > **Aborted**: `"aborted"` Defined in: [interfaces.ts:766](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L766) *** ### Cancelled > **Cancelled**: `"cancelled"` Defined in: [interfaces.ts:767](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L767) *** ### Completed > **Completed**: `"completed"` Defined in: [interfaces.ts:765](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L765) *** ### Failed > **Failed**: `"failed"` Defined in: [interfaces.ts:768](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L768) *** ### Queued > **Queued**: `"queued"` Defined in: [interfaces.ts:763](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L763) *** ### Running > **Running**: `"running"` Defined in: [interfaces.ts:764](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L764) # AccountPnL [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / AccountPnL Defined in: [interfaces.ts:992](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L992) ## Properties ### cost > **cost**: `string` Defined in: [interfaces.ts:993](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L993) *** ### deposits > **deposits**: `string` Defined in: [interfaces.ts:994](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L994) *** ### fees > **fees**: `string` Defined in: [interfaces.ts:995](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L995) *** ### pnl > **pnl**: `string` Defined in: [interfaces.ts:996](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L996) *** ### positionValue > **positionValue**: `string` Defined in: [interfaces.ts:997](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L997) *** ### proceeds > **proceeds**: `string` Defined in: [interfaces.ts:998](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L998) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:999](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L999) # Asset [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Asset Defined in: [interfaces.ts:730](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L730) ## Extends - `Partial`\<[`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata)\> ## Extended by - [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset) ## Properties ### coingeckoId? > `optional` **coingeckoId**: `string` Defined in: [interfaces.ts:722](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L722) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`coingeckoId`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#coingeckoid) *** ### id > **id**: `string` Defined in: [interfaces.ts:731](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L731) *** ### logoUrl? > `optional` **logoUrl**: `string` Defined in: [interfaces.ts:723](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L723) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`logoUrl`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#logourl) *** ### marketCapRank? > `optional` **marketCapRank**: `number` Defined in: [interfaces.ts:724](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L724) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`marketCapRank`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#marketcaprank) *** ### name? > `optional` **name**: `string` Defined in: [interfaces.ts:725](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L725) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`name`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#name) *** ### platforms? > `optional` **platforms**: `Record`\<`string`, `string`\> Defined in: [interfaces.ts:726](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L726) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`platforms`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#platforms) *** ### symbol > **symbol**: `string` Defined in: [interfaces.ts:732](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L732) #### Overrides [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`symbol`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#symbol) # AssetMetadata [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / AssetMetadata Defined in: [interfaces.ts:721](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L721) ## Properties ### coingeckoId? > `optional` **coingeckoId**: `string` Defined in: [interfaces.ts:722](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L722) *** ### logoUrl > **logoUrl**: `string` Defined in: [interfaces.ts:723](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L723) *** ### marketCapRank? > `optional` **marketCapRank**: `number` Defined in: [interfaces.ts:724](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L724) *** ### name > **name**: `string` Defined in: [interfaces.ts:725](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L725) *** ### platforms? > `optional` **platforms**: `Record`\<`string`, `string`\> Defined in: [interfaces.ts:726](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L726) *** ### symbol? > `optional` **symbol**: `string` Defined in: [interfaces.ts:727](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L727) # AssetWithPrice [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / AssetWithPrice Defined in: [interfaces.ts:742](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L742) ## Extends - [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset) ## Properties ### coingeckoId? > `optional` **coingeckoId**: `string` Defined in: [interfaces.ts:722](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L722) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`coingeckoId`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#coingeckoid) *** ### favorite? > `optional` **favorite**: `boolean` Defined in: [interfaces.ts:736](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L736) #### Inherited from [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset).[`favorite`](/api/privatefolio-backend/interfaces/interfaces/myasset#favorite) *** ### firstOwnedAt? > `optional` **firstOwnedAt**: `number` Defined in: [interfaces.ts:737](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L737) #### Inherited from [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset).[`firstOwnedAt`](/api/privatefolio-backend/interfaces/interfaces/myasset#firstownedat) *** ### id > **id**: `string` Defined in: [interfaces.ts:731](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L731) #### Inherited from [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset).[`id`](/api/privatefolio-backend/interfaces/interfaces/myasset#id) *** ### lastOwnedAt? > `optional` **lastOwnedAt**: `number` Defined in: [interfaces.ts:738](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L738) #### Inherited from [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset).[`lastOwnedAt`](/api/privatefolio-backend/interfaces/interfaces/myasset#lastownedat) *** ### logoUrl? > `optional` **logoUrl**: `string` Defined in: [interfaces.ts:723](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L723) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`logoUrl`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#logourl) *** ### marketCapRank? > `optional` **marketCapRank**: `number` Defined in: [interfaces.ts:724](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L724) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`marketCapRank`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#marketcaprank) *** ### name? > `optional` **name**: `string` Defined in: [interfaces.ts:725](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L725) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`name`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#name) *** ### platforms? > `optional` **platforms**: `Record`\<`string`, `string`\> Defined in: [interfaces.ts:726](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L726) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`platforms`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#platforms) *** ### price? > `optional` **price**: [`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata) Defined in: [interfaces.ts:743](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L743) *** ### priceApiId? > `optional` **priceApiId**: `"coinbase"` \| `"binance"` \| `"defi-llama"` \| `"alchemy"` \| `"yahoo"` Defined in: [interfaces.ts:739](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L739) #### Inherited from [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset).[`priceApiId`](/api/privatefolio-backend/interfaces/interfaces/myasset#priceapiid) *** ### symbol > **symbol**: `string` Defined in: [interfaces.ts:732](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L732) #### Inherited from [`MyAsset`](/api/privatefolio-backend/interfaces/interfaces/myasset).[`symbol`](/api/privatefolio-backend/interfaces/interfaces/myasset#symbol) # AuditLog [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / AuditLog Defined in: [interfaces.ts:172](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L172) ## Extended by - [`BinanceAuditLog`](/api/privatefolio-backend/interfaces/interfaces/binanceauditlog) ## Properties ### assetId > **assetId**: `string` Defined in: [interfaces.ts:173](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L173) *** ### balance? > `optional` **balance**: `string` Defined in: [interfaces.ts:177](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L177) Cumulative balance of all wallets *** ### balanceWallet? > `optional` **balanceWallet**: `string` Defined in: [interfaces.ts:181](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L181) Balance of the wallet *** ### change > **change**: `string` Defined in: [interfaces.ts:182](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L182) *** ### connectionId? > `optional` **connectionId**: `string` Defined in: [interfaces.ts:183](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L183) *** ### fileImportId? > `optional` **fileImportId**: `string` Defined in: [interfaces.ts:184](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L184) *** ### id > **id**: `string` Defined in: [interfaces.ts:185](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L185) *** ### importIndex > **importIndex**: `number` Defined in: [interfaces.ts:186](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L186) *** ### operation > **operation**: [`AuditLogOperation`](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation) Defined in: [interfaces.ts:187](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L187) *** ### platformId > **platformId**: `string` Defined in: [interfaces.ts:188](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L188) *** ### tags? > `optional` **tags**: `number`[] Defined in: [interfaces.ts:189](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L189) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:190](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L190) *** ### txId? > `optional` **txId**: `string` Defined in: [interfaces.ts:191](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L191) *** ### wallet > **wallet**: `string` Defined in: [interfaces.ts:192](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L192) # Balance [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Balance Defined in: [interfaces.ts:238](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L238) ## Properties ### assetId > **assetId**: `string` Defined in: [interfaces.ts:239](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L239) *** ### balance > **balance**: `string` Defined in: [interfaces.ts:240](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L240) *** ### balanceN > **balanceN**: `number` Defined in: [interfaces.ts:241](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L241) *** ### id > **id**: `string` Defined in: [interfaces.ts:242](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L242) *** ### price? > `optional` **price**: [`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata) Defined in: [interfaces.ts:243](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L243) *** ### value? > `optional` **value**: `number` Defined in: [interfaces.ts:244](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L244) # BalanceMap [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / BalanceMap Defined in: [interfaces.ts:293](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L293) ## Indexable \[`assetId`: `string`\]: `string` \| `number` always a string, only timestamp is a number ## Properties ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:298](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L298) # BinanceAuditLog [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / BinanceAuditLog Defined in: [interfaces.ts:195](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L195) ## Extends - [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog) ## Properties ### account > **account**: `string` Defined in: [interfaces.ts:196](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L196) *** ### assetId > **assetId**: `string` Defined in: [interfaces.ts:173](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L173) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`assetId`](/api/privatefolio-backend/interfaces/interfaces/auditlog#assetid) *** ### balance? > `optional` **balance**: `string` Defined in: [interfaces.ts:177](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L177) Cumulative balance of all wallets #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`balance`](/api/privatefolio-backend/interfaces/interfaces/auditlog#balance) *** ### balanceWallet? > `optional` **balanceWallet**: `string` Defined in: [interfaces.ts:181](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L181) Balance of the wallet #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`balanceWallet`](/api/privatefolio-backend/interfaces/interfaces/auditlog#balancewallet) *** ### change > **change**: `string` Defined in: [interfaces.ts:182](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L182) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`change`](/api/privatefolio-backend/interfaces/interfaces/auditlog#change) *** ### coin > **coin**: `string` Defined in: [interfaces.ts:197](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L197) *** ### connectionId? > `optional` **connectionId**: `string` Defined in: [interfaces.ts:183](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L183) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`connectionId`](/api/privatefolio-backend/interfaces/interfaces/auditlog#connectionid) *** ### fileImportId? > `optional` **fileImportId**: `string` Defined in: [interfaces.ts:184](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L184) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`fileImportId`](/api/privatefolio-backend/interfaces/interfaces/auditlog#fileimportid) *** ### id > **id**: `string` Defined in: [interfaces.ts:185](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L185) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`id`](/api/privatefolio-backend/interfaces/interfaces/auditlog#id) *** ### importIndex > **importIndex**: `number` Defined in: [interfaces.ts:186](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L186) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`importIndex`](/api/privatefolio-backend/interfaces/interfaces/auditlog#importindex) *** ### operation > **operation**: [`AuditLogOperation`](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation) Defined in: [interfaces.ts:187](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L187) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`operation`](/api/privatefolio-backend/interfaces/interfaces/auditlog#operation) *** ### platformId > **platformId**: `string` Defined in: [interfaces.ts:188](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L188) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`platformId`](/api/privatefolio-backend/interfaces/interfaces/auditlog#platformid) *** ### remark > **remark**: `string` Defined in: [interfaces.ts:198](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L198) *** ### tags? > `optional` **tags**: `number`[] Defined in: [interfaces.ts:189](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L189) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`tags`](/api/privatefolio-backend/interfaces/interfaces/auditlog#tags) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:190](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L190) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`timestamp`](/api/privatefolio-backend/interfaces/interfaces/auditlog#timestamp) *** ### txId? > `optional` **txId**: `string` Defined in: [interfaces.ts:191](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L191) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`txId`](/api/privatefolio-backend/interfaces/interfaces/auditlog#txid) *** ### userId > **userId**: `string` Defined in: [interfaces.ts:199](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L199) *** ### utcTime > **utcTime**: `string` Defined in: [interfaces.ts:200](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L200) *** ### wallet > **wallet**: `string` Defined in: [interfaces.ts:192](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L192) #### Inherited from [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog).[`wallet`](/api/privatefolio-backend/interfaces/interfaces/auditlog#wallet) # Blockchain [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Blockchain Defined in: [interfaces.ts:149](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L149) ## Extends - [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata) ## Properties ### chainId > **chainId**: `number` Defined in: [interfaces.ts:153](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L153) EVM chainId *** ### extensionsIds? > `optional` **extensionsIds**: `string`[] Defined in: [interfaces.ts:131](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L131) #### Inherited from [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata).[`extensionsIds`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata#extensionsids) *** ### id > **id**: `string` Defined in: [interfaces.ts:154](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L154) *** ### image > **image**: `string` Defined in: [interfaces.ts:155](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L155) *** ### name > **name**: `string` Defined in: [interfaces.ts:156](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L156) *** ### nativeCoinId > **nativeCoinId**: `string` Defined in: [interfaces.ts:160](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L160) coingeckoId of the native coin *** ### supported? > `optional` **supported**: `boolean` Defined in: [interfaces.ts:132](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L132) #### Inherited from [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata).[`supported`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata#supported) # ChatConversation [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ChatConversation Defined in: [interfaces.ts:1013](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1013) ## Properties ### firstMessage > **firstMessage**: `string` Defined in: [interfaces.ts:1014](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1014) *** ### id > **id**: `string` Defined in: [interfaces.ts:1015](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1015) *** ### lastTime > **lastTime**: `number` Defined in: [interfaces.ts:1016](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1016) *** ### messageCount > **messageCount**: `number` Defined in: [interfaces.ts:1017](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1017) *** ### model? > `optional` **model**: `string` Defined in: [interfaces.ts:1018](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1018) *** ### startTime > **startTime**: `number` Defined in: [interfaces.ts:1019](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1019) # ChatMessage [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ChatMessage Defined in: [interfaces.ts:1002](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1002) ## Properties ### conversationId > **conversationId**: `string` Defined in: [interfaces.ts:1003](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1003) *** ### id > **id**: `string` Defined in: [interfaces.ts:1004](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1004) *** ### message > **message**: `string` Defined in: [interfaces.ts:1005](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1005) *** ### metadata? > `optional` **metadata**: `string` Defined in: [interfaces.ts:1006](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1006) *** ### parts? > `optional` **parts**: `string` Defined in: [interfaces.ts:1007](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1007) *** ### role > **role**: `"system"` \| `"user"` \| `"assistant"` Defined in: [interfaces.ts:1008](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1008) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:1009](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1009) *** ### tokens? > `optional` **tokens**: `number` Defined in: [interfaces.ts:1010](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1010) # CoingeckoExMetadataFull [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / CoingeckoExMetadataFull Defined in: [interfaces.ts:695](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L695) ## Properties ### alert\_notice? > `optional` **alert\_notice**: `string` Defined in: [interfaces.ts:696](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L696) *** ### centralized > **centralized**: `boolean` Defined in: [interfaces.ts:697](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L697) *** ### coins > **coins**: `number` Defined in: [interfaces.ts:698](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L698) *** ### country > **country**: `string` Defined in: [interfaces.ts:699](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L699) *** ### description > **description**: `string` Defined in: [interfaces.ts:700](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L700) *** ### facebook\_url? > `optional` **facebook\_url**: `string` Defined in: [interfaces.ts:701](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L701) *** ### has\_trading\_incentive > **has\_trading\_incentive**: `boolean` Defined in: [interfaces.ts:702](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L702) *** ### image > **image**: `string` Defined in: [interfaces.ts:703](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L703) *** ### name > **name**: `string` Defined in: [interfaces.ts:704](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L704) *** ### other\_url\_1? > `optional` **other\_url\_1**: `string` Defined in: [interfaces.ts:705](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L705) *** ### other\_url\_2? > `optional` **other\_url\_2**: `string` Defined in: [interfaces.ts:706](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L706) *** ### pairs > **pairs**: `number` Defined in: [interfaces.ts:707](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L707) *** ### public\_notice? > `optional` **public\_notice**: `string` Defined in: [interfaces.ts:708](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L708) *** ### reddit\_url? > `optional` **reddit\_url**: `string` Defined in: [interfaces.ts:709](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L709) *** ### slack\_url? > `optional` **slack\_url**: `string` Defined in: [interfaces.ts:710](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L710) *** ### telegram\_url? > `optional` **telegram\_url**: `string` Defined in: [interfaces.ts:711](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L711) *** ### tickers? > `optional` **tickers**: [`CoingeckoTickerData`](/api/privatefolio-backend/interfaces/type-aliases/coingeckotickerdata)[] Defined in: [interfaces.ts:712](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L712) *** ### trade\_volume\_24h\_btc > **trade\_volume\_24h\_btc**: `number` Defined in: [interfaces.ts:713](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L713) *** ### trust\_score > **trust\_score**: `number` Defined in: [interfaces.ts:714](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L714) *** ### trust\_score\_rank > **trust\_score\_rank**: `number` Defined in: [interfaces.ts:715](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L715) *** ### twitter\_handle? > `optional` **twitter\_handle**: `string` Defined in: [interfaces.ts:716](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L716) *** ### url > **url**: `string` Defined in: [interfaces.ts:717](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L717) *** ### year\_established > **year\_established**: `number` Defined in: [interfaces.ts:718](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L718) # CoingeckoMetadataFull [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / CoingeckoMetadataFull Defined in: [interfaces.ts:546](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L546) ## Properties ### additional\_notices? > `optional` **additional\_notices**: `string`[] Defined in: [interfaces.ts:547](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L547) *** ### asset\_platform\_id? > `optional` **asset\_platform\_id**: `string` Defined in: [interfaces.ts:548](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L548) *** ### block\_time\_in\_minutes > **block\_time\_in\_minutes**: `number` Defined in: [interfaces.ts:549](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L549) *** ### categories > **categories**: `string`[] Defined in: [interfaces.ts:550](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L550) *** ### community\_data? > `optional` **community\_data**: `object` Defined in: [interfaces.ts:551](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L551) #### facebook\_likes? > `optional` **facebook\_likes**: `number` #### reddit\_accounts\_active\_48h? > `optional` **reddit\_accounts\_active\_48h**: `number` #### reddit\_average\_comments\_48h? > `optional` **reddit\_average\_comments\_48h**: `number` #### reddit\_average\_posts\_48h? > `optional` **reddit\_average\_posts\_48h**: `number` #### reddit\_subscribers? > `optional` **reddit\_subscribers**: `number` #### telegram\_channel\_user\_count? > `optional` **telegram\_channel\_user\_count**: `number` #### twitter\_followers? > `optional` **twitter\_followers**: `number` *** ### country\_origin > **country\_origin**: `string` Defined in: [interfaces.ts:560](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L560) *** ### description > **description**: `Record`\<`Language`, `string`\> Defined in: [interfaces.ts:561](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L561) *** ### detail\_platforms > **detail\_platforms**: `Record`\<`string`, \{ `contract_address`: `string`; `decimal_place`: `number` \| `null`; \}\> Defined in: [interfaces.ts:562](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L562) *** ### developer\_data? > `optional` **developer\_data**: `object` Defined in: [interfaces.ts:569](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L569) #### closed\_issues > **closed\_issues**: `number` #### code\_additions\_deletions\_4\_weeks > **code\_additions\_deletions\_4\_weeks**: `object` ##### code\_additions\_deletions\_4\_weeks.additions > **additions**: `number` ##### code\_additions\_deletions\_4\_weeks.deletions > **deletions**: `number` #### commit\_count\_4\_weeks > **commit\_count\_4\_weeks**: `number` #### forks > **forks**: `number` #### last\_4\_weeks\_commit\_activity\_series > **last\_4\_weeks\_commit\_activity\_series**: `number`[] #### pull\_request\_contributors > **pull\_request\_contributors**: `number` #### pull\_requests\_merged > **pull\_requests\_merged**: `number` #### stars > **stars**: `number` #### subscribers > **subscribers**: `number` #### total\_issues > **total\_issues**: `number` *** ### genesis\_date? > `optional` **genesis\_date**: `string` Defined in: [interfaces.ts:584](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L584) *** ### hashing\_algorithm > **hashing\_algorithm**: `string` Defined in: [interfaces.ts:585](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L585) *** ### ico\_data? > `optional` **ico\_data**: `object` Defined in: [interfaces.ts:586](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L586) #### accepting\_currencies? > `optional` **accepting\_currencies**: `string` #### amount\_for\_sale? > `optional` **amount\_for\_sale**: `number` #### base\_pre\_sale\_amount? > `optional` **base\_pre\_sale\_amount**: `number` #### base\_public\_sale\_amount? > `optional` **base\_public\_sale\_amount**: `number` #### bounty\_detail\_url? > `optional` **bounty\_detail\_url**: `string` #### hardcap\_amount? > `optional` **hardcap\_amount**: `number` #### hardcap\_currency? > `optional` **hardcap\_currency**: `string` #### ico\_start\_date? > `optional` **ico\_start\_date**: `string` #### kyc\_required? > `optional` **kyc\_required**: `boolean` #### pre\_sale\_available? > `optional` **pre\_sale\_available**: `boolean` #### pre\_sale\_ended? > `optional` **pre\_sale\_ended**: `boolean` #### quote\_pre\_sale\_amount? > `optional` **quote\_pre\_sale\_amount**: `number` #### quote\_pre\_sale\_currency? > `optional` **quote\_pre\_sale\_currency**: `string` #### quote\_public\_sale\_currency? > `optional` **quote\_public\_sale\_currency**: `string` #### short\_description? > `optional` **short\_description**: `string` #### softcap\_amount? > `optional` **softcap\_amount**: `number` #### softcap\_currency? > `optional` **softcap\_currency**: `string` #### total\_raised? > `optional` **total\_raised**: `number` #### total\_raised\_currency? > `optional` **total\_raised\_currency**: `string` #### whitelist\_available? > `optional` **whitelist\_available**: `boolean` #### whitelist\_end\_date? > `optional` **whitelist\_end\_date**: `string` #### whitelist\_start\_date? > `optional` **whitelist\_start\_date**: `string` *** ### id > **id**: `string` Defined in: [interfaces.ts:610](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L610) *** ### image > **image**: `object` Defined in: [interfaces.ts:611](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L611) #### large > **large**: `string` #### small > **small**: `string` #### thumb > **thumb**: `string` *** ### last\_updated > **last\_updated**: `string` Defined in: [interfaces.ts:616](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L616) *** ### links > **links**: `object` Defined in: [interfaces.ts:617](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L617) #### announcement\_url > **announcement\_url**: `string`[] #### bitcointalk\_thread\_identifier? > `optional` **bitcointalk\_thread\_identifier**: `number` #### blockchain\_site > **blockchain\_site**: `string`[] #### chat\_url > **chat\_url**: `string`[] #### facebook\_username? > `optional` **facebook\_username**: `string` #### homepage > **homepage**: `string`[] #### official\_forum\_url > **official\_forum\_url**: `string`[] #### repos\_url > **repos\_url**: `object` ##### repos\_url.bitbucket > **bitbucket**: `string`[] ##### repos\_url.github > **github**: `string`[] #### snapshot\_url? > `optional` **snapshot\_url**: `string` #### subreddit\_url? > `optional` **subreddit\_url**: `string` #### telegram\_channel\_identifier? > `optional` **telegram\_channel\_identifier**: `string` #### twitter\_screen\_name? > `optional` **twitter\_screen\_name**: `string` #### whitepaper? > `optional` **whitepaper**: `string` *** ### market\_cap\_rank? > `optional` **market\_cap\_rank**: `number` Defined in: [interfaces.ts:635](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L635) *** ### market\_data? > `optional` **market\_data**: `object` Defined in: [interfaces.ts:636](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L636) #### ath? > `optional` **ath**: `Record`\<`string`, `number`\> #### ath\_change\_percentage? > `optional` **ath\_change\_percentage**: `Record`\<`string`, `number`\> #### ath\_date? > `optional` **ath\_date**: `Record`\<`string`, `string`\> #### atl? > `optional` **atl**: `Record`\<`string`, `number`\> #### atl\_change\_percentage? > `optional` **atl\_change\_percentage**: `Record`\<`string`, `number`\> #### atl\_date? > `optional` **atl\_date**: `Record`\<`string`, `string`\> #### circulating\_supply? > `optional` **circulating\_supply**: `number` #### current\_price? > `optional` **current\_price**: `Record`\<`string`, `number`\> #### fdv\_to\_tvl\_ratio? > `optional` **fdv\_to\_tvl\_ratio**: `number` #### fully\_diluted\_valuation? > `optional` **fully\_diluted\_valuation**: `Record`\<`string`, `number`\> #### high\_24h? > `optional` **high\_24h**: `Record`\<`string`, `number`\> #### last\_updated? > `optional` **last\_updated**: `string` #### low\_24h? > `optional` **low\_24h**: `Record`\<`string`, `number`\> #### market\_cap? > `optional` **market\_cap**: `Record`\<`string`, `number`\> #### market\_cap\_change\_24h? > `optional` **market\_cap\_change\_24h**: `number` #### market\_cap\_change\_24h\_in\_currency? > `optional` **market\_cap\_change\_24h\_in\_currency**: `Record`\<`string`, `number`\> #### market\_cap\_change\_percentage\_24h? > `optional` **market\_cap\_change\_percentage\_24h**: `number` #### market\_cap\_change\_percentage\_24h\_in\_currency? > `optional` **market\_cap\_change\_percentage\_24h\_in\_currency**: `Record`\<`string`, `number`\> #### market\_cap\_fdv\_ratio? > `optional` **market\_cap\_fdv\_ratio**: `number` #### market\_cap\_rank? > `optional` **market\_cap\_rank**: `number` #### max\_supply? > `optional` **max\_supply**: `number` #### max\_supply\_infinite? > `optional` **max\_supply\_infinite**: `boolean` #### mcap\_to\_tvl\_ratio? > `optional` **mcap\_to\_tvl\_ratio**: `number` #### price\_change\_24h? > `optional` **price\_change\_24h**: `number` #### price\_change\_24h\_in\_currency? > `optional` **price\_change\_24h\_in\_currency**: `Record`\<`string`, `number`\> #### price\_change\_percentage\_14d? > `optional` **price\_change\_percentage\_14d**: `number` #### price\_change\_percentage\_14d\_in\_currency? > `optional` **price\_change\_percentage\_14d\_in\_currency**: `Record`\<`string`, `number`\> #### price\_change\_percentage\_1h\_in\_currency? > `optional` **price\_change\_percentage\_1h\_in\_currency**: `Record`\<`string`, `number`\> #### price\_change\_percentage\_1y? > `optional` **price\_change\_percentage\_1y**: `number` #### price\_change\_percentage\_1y\_in\_currency? > `optional` **price\_change\_percentage\_1y\_in\_currency**: `Record`\<`string`, `number`\> #### price\_change\_percentage\_200d? > `optional` **price\_change\_percentage\_200d**: `number` #### price\_change\_percentage\_200d\_in\_currency? > `optional` **price\_change\_percentage\_200d\_in\_currency**: `Record`\<`string`, `number`\> #### price\_change\_percentage\_24h? > `optional` **price\_change\_percentage\_24h**: `number` #### price\_change\_percentage\_24h\_in\_currency? > `optional` **price\_change\_percentage\_24h\_in\_currency**: `Record`\<`string`, `number`\> #### price\_change\_percentage\_30d? > `optional` **price\_change\_percentage\_30d**: `number` #### price\_change\_percentage\_30d\_in\_currency? > `optional` **price\_change\_percentage\_30d\_in\_currency**: `Record`\<`string`, `number`\> #### price\_change\_percentage\_60d? > `optional` **price\_change\_percentage\_60d**: `number` #### price\_change\_percentage\_60d\_in\_currency? > `optional` **price\_change\_percentage\_60d\_in\_currency**: `Record`\<`string`, `number`\> #### price\_change\_percentage\_7d? > `optional` **price\_change\_percentage\_7d**: `number` #### price\_change\_percentage\_7d\_in\_currency? > `optional` **price\_change\_percentage\_7d\_in\_currency**: `Record`\<`string`, `number`\> #### roi? > `optional` **roi**: `Record`\<`string`, `unknown`\> #### total\_supply? > `optional` **total\_supply**: `number` #### total\_value\_locked? > `optional` **total\_value\_locked**: `number` #### total\_volume? > `optional` **total\_volume**: `Record`\<`string`, `number`\> *** ### name > **name**: `string` Defined in: [interfaces.ts:682](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L682) *** ### platforms > **platforms**: `Record`\<`string`, `string`\> Defined in: [interfaces.ts:683](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L683) *** ### preview\_listing > **preview\_listing**: `boolean` Defined in: [interfaces.ts:684](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L684) *** ### public\_notice? > `optional` **public\_notice**: `string` Defined in: [interfaces.ts:685](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L685) *** ### sentiment\_votes\_down\_percentage? > `optional` **sentiment\_votes\_down\_percentage**: `number` Defined in: [interfaces.ts:686](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L686) *** ### sentiment\_votes\_up\_percentage? > `optional` **sentiment\_votes\_up\_percentage**: `number` Defined in: [interfaces.ts:687](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L687) *** ### status\_updates? > `optional` **status\_updates**: `unknown`[] Defined in: [interfaces.ts:688](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L688) *** ### symbol > **symbol**: `string` Defined in: [interfaces.ts:689](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L689) *** ### tickers? > `optional` **tickers**: [`CoingeckoTickerData`](/api/privatefolio-backend/interfaces/type-aliases/coingeckotickerdata)[] Defined in: [interfaces.ts:690](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L690) *** ### watchlist\_portfolio\_users? > `optional` **watchlist\_portfolio\_users**: `number` Defined in: [interfaces.ts:691](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L691) *** ### web\_slug > **web\_slug**: `string` Defined in: [interfaces.ts:692](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L692) # Connection [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Connection Defined in: [interfaces.ts:441](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L441) ## Properties ### address? > `optional` **address**: `string` Defined in: [interfaces.ts:442](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L442) *** ### apiKey? > `optional` **apiKey**: `string` Defined in: [interfaces.ts:443](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L443) *** ### connectionNumber > **connectionNumber**: `number` Defined in: [interfaces.ts:444](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L444) *** ### extensionId > **extensionId**: `string` Defined in: [interfaces.ts:445](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L445) *** ### id > **id**: `string` Defined in: [interfaces.ts:446](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L446) *** ### meta? > `optional` **meta**: `object` Defined in: [interfaces.ts:447](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L447) #### assetIds > **assetIds**: `string`[] #### logs > **logs**: `number` #### operations > **operations**: [`AuditLogOperation`](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation)[] #### rows > **rows**: `number` #### transactions > **transactions**: `number` #### wallets > **wallets**: `string`[] *** ### options? > `optional` **options**: [`ConnectionOptions`](/api/privatefolio-backend/interfaces/type-aliases/connectionoptions) \| [`BinanceConnectionOptions`](/api/privatefolio-backend/interfaces/type-aliases/binanceconnectionoptions) Defined in: [interfaces.ts:455](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L455) *** ### platformId > **platformId**: `string` Defined in: [interfaces.ts:456](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L456) *** ### syncedAt? > `optional` **syncedAt**: `number` Defined in: [interfaces.ts:457](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L457) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:461](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L461) createdAt # DailyPrice [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / DailyPrice Defined in: [interfaces.ts:309](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L309) ## Properties ### assetId > **assetId**: `string` Defined in: [interfaces.ts:310](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L310) *** ### id > **id**: `string` Defined in: [interfaces.ts:311](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L311) *** ### pair? > `optional` **pair**: `string` Defined in: [interfaces.ts:312](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L312) *** ### price > **price**: [`ChartData`](/api/privatefolio-backend/interfaces/type-aliases/chartdata) Defined in: [interfaces.ts:313](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L313) *** ### priceApiId? > `optional` **priceApiId**: `"coinbase"` \| `"binance"` \| `"defi-llama"` \| `"alchemy"` \| `"yahoo"` Defined in: [interfaces.ts:314](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L314) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:315](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L315) # DataPlatform [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / DataPlatform Defined in: [interfaces.ts:163](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L163) ## Extends - [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata) ## Properties ### extensionsIds? > `optional` **extensionsIds**: `string`[] Defined in: [interfaces.ts:131](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L131) #### Inherited from [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata).[`extensionsIds`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata#extensionsids) *** ### id > **id**: `string` Defined in: [interfaces.ts:164](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L164) *** ### image > **image**: `string` Defined in: [interfaces.ts:165](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L165) *** ### name > **name**: `string` Defined in: [interfaces.ts:166](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L166) *** ### supported? > `optional` **supported**: `boolean` Defined in: [interfaces.ts:132](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L132) #### Inherited from [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata).[`supported`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata#supported) *** ### url? > `optional` **url**: `string` Defined in: [interfaces.ts:167](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L167) # EtherscanMetadata [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / EtherscanMetadata Defined in: [interfaces.ts:61](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L61) ## Properties ### contractAddress? > `optional` **contractAddress**: `string` Defined in: [interfaces.ts:62](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L62) *** ### failed? > `optional` **failed**: `boolean` Defined in: [interfaces.ts:63](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L63) *** ### from? > `optional` **from**: `string` Defined in: [interfaces.ts:64](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L64) *** ### method? > `optional` **method**: `string` Defined in: [interfaces.ts:65](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L65) *** ### txHash > **txHash**: `string` Defined in: [interfaces.ts:66](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L66) # Exchange [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Exchange Defined in: [interfaces.ts:135](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L135) ## Extends - [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata) ## Properties ### coingeckoTrustRank? > `optional` **coingeckoTrustRank**: `number` Defined in: [interfaces.ts:136](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L136) *** ### coingeckoTrustScore > **coingeckoTrustScore**: `number` Defined in: [interfaces.ts:140](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L140) 0-10 *** ### country? > `optional` **country**: `string` Defined in: [interfaces.ts:141](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L141) *** ### extensionsIds? > `optional` **extensionsIds**: `string`[] Defined in: [interfaces.ts:131](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L131) #### Inherited from [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata).[`extensionsIds`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata#extensionsids) *** ### id > **id**: `string` Defined in: [interfaces.ts:142](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L142) *** ### image > **image**: `string` Defined in: [interfaces.ts:143](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L143) *** ### name > **name**: `string` Defined in: [interfaces.ts:144](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L144) *** ### supported? > `optional` **supported**: `boolean` Defined in: [interfaces.ts:132](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L132) #### Inherited from [`PlatformMetadata`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata).[`supported`](/api/privatefolio-backend/interfaces/interfaces/platformmetadata#supported) *** ### url > **url**: `string` Defined in: [interfaces.ts:145](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L145) *** ### year > **year**: `number` Defined in: [interfaces.ts:146](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L146) # Extension [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Extension Defined in: [interfaces.ts:942](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L942) ## Extended by - [`RichExtension`](/api/privatefolio-backend/interfaces/interfaces/richextension) ## Properties ### authorGithub > **authorGithub**: `string` Defined in: [interfaces.ts:943](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L943) *** ### description > **description**: `string` Defined in: [interfaces.ts:944](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L944) *** ### extensionLogoUrl > **extensionLogoUrl**: `string` Defined in: [interfaces.ts:945](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L945) *** ### extensionName > **extensionName**: `string` Defined in: [interfaces.ts:946](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L946) *** ### extensionType > **extensionType**: [`ExtensionType`](/api/privatefolio-backend/interfaces/type-aliases/extensiontype) Defined in: [interfaces.ts:947](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L947) *** ### extensionVersion > **extensionVersion**: `string` Defined in: [interfaces.ts:948](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L948) *** ### githubUrl > **githubUrl**: `string` Defined in: [interfaces.ts:949](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L949) *** ### howTo? > `optional` **howTo**: `string` Defined in: [interfaces.ts:950](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L950) *** ### id > **id**: `string` Defined in: [interfaces.ts:951](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L951) *** ### platformIds? > `optional` **platformIds**: `string`[] Defined in: [interfaces.ts:952](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L952) *** ### priceUsd? > `optional` **priceUsd**: `number` Defined in: [interfaces.ts:953](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L953) *** ### publishedAt > **publishedAt**: `number` Defined in: [interfaces.ts:954](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L954) *** ### sources? > `optional` **sources**: [`SourceCode`](/api/privatefolio-backend/interfaces/type-aliases/sourcecode)[] Defined in: [interfaces.ts:955](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L955) *** ### updatedAt > **updatedAt**: `number` Defined in: [interfaces.ts:956](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L956) # FileImport [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / FileImport Defined in: [interfaces.ts:203](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L203) ## Properties ### id > **id**: `string` Defined in: [interfaces.ts:204](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L204) *** ### lastModified > **lastModified**: `number` Defined in: [interfaces.ts:205](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L205) *** ### meta? > `optional` **meta**: `object` Defined in: [interfaces.ts:206](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L206) #### assetIds > **assetIds**: `string`[] #### extensionId > **extensionId**: `string` #### logs > **logs**: `number` #### operations > **operations**: [`AuditLogOperation`](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation)[] #### parserId > **parserId**: `string` #### platformId > **platformId**: `string` #### rows > **rows**: `number` #### transactions > **transactions**: `number` #### wallets > **wallets**: `string`[] *** ### name > **name**: `string` Defined in: [interfaces.ts:217](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L217) *** ### size > **size**: `number` Defined in: [interfaces.ts:218](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L218) *** ### timestamp? > `optional` **timestamp**: `number` Defined in: [interfaces.ts:219](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L219) # HealthStats [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / HealthStats Defined in: [interfaces.ts:1079](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1079) ## Properties ### avgCpuUsage > **avgCpuUsage**: `number` Defined in: [interfaces.ts:1080](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1080) *** ### avgMemoryUsage > **avgMemoryUsage**: `number` Defined in: [interfaces.ts:1081](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1081) *** ### count > **count**: `number` Defined in: [interfaces.ts:1082](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1082) *** ### maxCpuUsage > **maxCpuUsage**: `number` Defined in: [interfaces.ts:1083](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1083) *** ### maxMemoryUsage > **maxMemoryUsage**: `number` Defined in: [interfaces.ts:1084](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1084) *** ### minCpuUsage > **minCpuUsage**: `number` Defined in: [interfaces.ts:1085](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1085) *** ### minMemoryUsage > **minMemoryUsage**: `number` Defined in: [interfaces.ts:1086](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1086) # MyAsset [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / MyAsset Defined in: [interfaces.ts:735](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L735) ## Extends - [`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset) ## Extended by - [`AssetWithPrice`](/api/privatefolio-backend/interfaces/interfaces/assetwithprice) ## Properties ### coingeckoId? > `optional` **coingeckoId**: `string` Defined in: [interfaces.ts:722](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L722) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`coingeckoId`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#coingeckoid) *** ### favorite? > `optional` **favorite**: `boolean` Defined in: [interfaces.ts:736](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L736) *** ### firstOwnedAt? > `optional` **firstOwnedAt**: `number` Defined in: [interfaces.ts:737](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L737) *** ### id > **id**: `string` Defined in: [interfaces.ts:731](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L731) #### Inherited from [`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset).[`id`](/api/privatefolio-backend/interfaces/interfaces/asset#id) *** ### lastOwnedAt? > `optional` **lastOwnedAt**: `number` Defined in: [interfaces.ts:738](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L738) *** ### logoUrl? > `optional` **logoUrl**: `string` Defined in: [interfaces.ts:723](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L723) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`logoUrl`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#logourl) *** ### marketCapRank? > `optional` **marketCapRank**: `number` Defined in: [interfaces.ts:724](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L724) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`marketCapRank`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#marketcaprank) *** ### name? > `optional` **name**: `string` Defined in: [interfaces.ts:725](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L725) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`name`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#name) *** ### platforms? > `optional` **platforms**: `Record`\<`string`, `string`\> Defined in: [interfaces.ts:726](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L726) #### Inherited from [`AssetMetadata`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata).[`platforms`](/api/privatefolio-backend/interfaces/interfaces/assetmetadata#platforms) *** ### priceApiId? > `optional` **priceApiId**: `"coinbase"` \| `"binance"` \| `"defi-llama"` \| `"alchemy"` \| `"yahoo"` Defined in: [interfaces.ts:739](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L739) *** ### symbol > **symbol**: `string` Defined in: [interfaces.ts:732](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L732) #### Inherited from [`Asset`](/api/privatefolio-backend/interfaces/interfaces/asset).[`symbol`](/api/privatefolio-backend/interfaces/interfaces/asset#symbol) # Networth [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Networth Defined in: [interfaces.ts:301](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L301) ## Properties ### change > **change**: `number` Defined in: [interfaces.ts:302](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L302) *** ### changePercentage > **changePercentage**: `number` Defined in: [interfaces.ts:303](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L303) *** ### time > **time**: `number` Defined in: [interfaces.ts:304](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L304) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:305](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L305) *** ### value > **value**: `number` Defined in: [interfaces.ts:306](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L306) # NewServerFile [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / NewServerFile Defined in: [interfaces.ts:871](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L871) ## Extends - `Omit`\<[`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile), `"id"`\> ## Properties ### completedAt? > `optional` **completedAt**: `number` Defined in: [interfaces.ts:851](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L851) #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`completedAt`](/api/privatefolio-backend/interfaces/interfaces/serverfile#completedat) *** ### createdBy > **createdBy**: `"system"` \| `"user"` Defined in: [interfaces.ts:852](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L852) #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`createdBy`](/api/privatefolio-backend/interfaces/interfaces/serverfile#createdby) *** ### deletedAt? > `optional` **deletedAt**: `number` Defined in: [interfaces.ts:853](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L853) #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`deletedAt`](/api/privatefolio-backend/interfaces/interfaces/serverfile#deletedat) *** ### description? > `optional` **description**: `string` Defined in: [interfaces.ts:854](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L854) #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`description`](/api/privatefolio-backend/interfaces/interfaces/serverfile#description) *** ### id? > `optional` **id**: `number` Defined in: [interfaces.ts:872](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L872) *** ### metadata > **metadata**: `object` Defined in: [interfaces.ts:856](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L856) #### lastModified > **lastModified**: `number` #### size > **size**: `number` #### type > **type**: `string` #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`metadata`](/api/privatefolio-backend/interfaces/interfaces/serverfile#metadata) *** ### name > **name**: `string` Defined in: [interfaces.ts:861](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L861) #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`name`](/api/privatefolio-backend/interfaces/interfaces/serverfile#name) *** ### progress? > `optional` **progress**: `number` Defined in: [interfaces.ts:865](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L865) From 0 to 100 #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`progress`](/api/privatefolio-backend/interfaces/interfaces/serverfile#progress) *** ### scheduledAt > **scheduledAt**: `number` Defined in: [interfaces.ts:866](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L866) #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`scheduledAt`](/api/privatefolio-backend/interfaces/interfaces/serverfile#scheduledat) *** ### startedAt? > `optional` **startedAt**: `number` Defined in: [interfaces.ts:867](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L867) #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`startedAt`](/api/privatefolio-backend/interfaces/interfaces/serverfile#startedat) *** ### status > **status**: `"completed"` \| `"aborted"` \| `"deleted"` \| `"scheduled"` \| `"uploading"` \| `"creating"` Defined in: [interfaces.ts:868](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L868) #### Inherited from [`ServerFile`](/api/privatefolio-backend/interfaces/interfaces/serverfile).[`status`](/api/privatefolio-backend/interfaces/interfaces/serverfile#status) # NewServerTask [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / NewServerTask Defined in: [interfaces.ts:897](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L897) ## Extends - `Omit`\<[`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask), `"id"`\> ## Properties ### completedAt? > `optional` **completedAt**: `number` Defined in: [interfaces.ts:876](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L876) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`completedAt`](/api/privatefolio-backend/interfaces/interfaces/servertask#completedat) *** ### createdAt > **createdAt**: `number` Defined in: [interfaces.ts:877](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L877) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`createdAt`](/api/privatefolio-backend/interfaces/interfaces/servertask#createdat) *** ### description > **description**: `string` Defined in: [interfaces.ts:878](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L878) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`description`](/api/privatefolio-backend/interfaces/interfaces/servertask#description) *** ### determinate? > `optional` **determinate**: `boolean` Defined in: [interfaces.ts:882](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L882) #### Default ```ts false ``` #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`determinate`](/api/privatefolio-backend/interfaces/interfaces/servertask#determinate) *** ### duration? > `optional` **duration**: `number` Defined in: [interfaces.ts:886](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L886) In milliseconds #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`duration`](/api/privatefolio-backend/interfaces/interfaces/servertask#duration) *** ### errorMessage? > `optional` **errorMessage**: `string` Defined in: [interfaces.ts:887](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L887) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`errorMessage`](/api/privatefolio-backend/interfaces/interfaces/servertask#errormessage) *** ### groupId? > `optional` **groupId**: `string` Defined in: [interfaces.ts:888](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L888) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`groupId`](/api/privatefolio-backend/interfaces/interfaces/servertask#groupid) *** ### id? > `optional` **id**: `number` Defined in: [interfaces.ts:898](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L898) *** ### name > **name**: `string` Defined in: [interfaces.ts:890](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L890) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`name`](/api/privatefolio-backend/interfaces/interfaces/servertask#name) *** ### priority > **priority**: [`TaskPriority`](/api/privatefolio-backend/interfaces/enumerations/taskpriority) Defined in: [interfaces.ts:891](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L891) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`priority`](/api/privatefolio-backend/interfaces/interfaces/servertask#priority) *** ### startedAt? > `optional` **startedAt**: `number` Defined in: [interfaces.ts:892](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L892) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`startedAt`](/api/privatefolio-backend/interfaces/interfaces/servertask#startedat) *** ### status > **status**: [`TaskStatus`](/api/privatefolio-backend/interfaces/enumerations/taskstatus) Defined in: [interfaces.ts:893](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L893) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`status`](/api/privatefolio-backend/interfaces/interfaces/servertask#status) *** ### trigger > **trigger**: [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) Defined in: [interfaces.ts:894](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L894) #### Inherited from [`ServerTask`](/api/privatefolio-backend/interfaces/interfaces/servertask).[`trigger`](/api/privatefolio-backend/interfaces/interfaces/servertask#trigger) # Notification [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Notification Defined in: [interfaces.ts:1024](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1024) ## Properties ### createdAt > **createdAt**: `number` Defined in: [interfaces.ts:1025](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1025) *** ### id > **id**: `number` Defined in: [interfaces.ts:1026](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1026) *** ### metadata? > `optional` **metadata**: `Record`\<`string`, `unknown`\> Defined in: [interfaces.ts:1027](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1027) *** ### status? > `optional` **status**: `number` Defined in: [interfaces.ts:1031](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1031) 0 = unread, 1 = read, 2 = archived *** ### text > **text**: `string` Defined in: [interfaces.ts:1032](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1032) *** ### title > **title**: `string` Defined in: [interfaces.ts:1033](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1033) # PlatformMetadata [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / PlatformMetadata Defined in: [interfaces.ts:130](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L130) ## Extended by - [`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange) - [`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain) - [`DataPlatform`](/api/privatefolio-backend/interfaces/interfaces/dataplatform) ## Properties ### extensionsIds? > `optional` **extensionsIds**: `string`[] Defined in: [interfaces.ts:131](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L131) *** ### supported? > `optional` **supported**: `boolean` Defined in: [interfaces.ts:132](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L132) # PushDevice [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / PushDevice Defined in: [interfaces.ts:1040](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1040) ## Properties ### createdAt > **createdAt**: `number` Defined in: [interfaces.ts:1041](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1041) *** ### deviceId > **deviceId**: `string` Defined in: [interfaces.ts:1042](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1042) *** ### subscription > **subscription**: `PushSubscription` Defined in: [interfaces.ts:1043](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1043) *** ### userAgent? > `optional` **userAgent**: `string` Defined in: [interfaces.ts:1044](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1044) # RichExtension [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / RichExtension Defined in: [interfaces.ts:959](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L959) ## Extends - [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension) ## Properties ### authorGithub > **authorGithub**: `string` Defined in: [interfaces.ts:943](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L943) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`authorGithub`](/api/privatefolio-backend/interfaces/interfaces/extension#authorgithub) *** ### description > **description**: `string` Defined in: [interfaces.ts:944](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L944) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`description`](/api/privatefolio-backend/interfaces/interfaces/extension#description) *** ### extensionLogoUrl > **extensionLogoUrl**: `string` Defined in: [interfaces.ts:945](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L945) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`extensionLogoUrl`](/api/privatefolio-backend/interfaces/interfaces/extension#extensionlogourl) *** ### extensionName > **extensionName**: `string` Defined in: [interfaces.ts:946](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L946) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`extensionName`](/api/privatefolio-backend/interfaces/interfaces/extension#extensionname) *** ### extensionType > **extensionType**: [`ExtensionType`](/api/privatefolio-backend/interfaces/type-aliases/extensiontype) Defined in: [interfaces.ts:947](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L947) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`extensionType`](/api/privatefolio-backend/interfaces/interfaces/extension#extensiontype) *** ### extensionVersion > **extensionVersion**: `string` Defined in: [interfaces.ts:948](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L948) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`extensionVersion`](/api/privatefolio-backend/interfaces/interfaces/extension#extensionversion) *** ### githubUrl > **githubUrl**: `string` Defined in: [interfaces.ts:949](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L949) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`githubUrl`](/api/privatefolio-backend/interfaces/interfaces/extension#githuburl) *** ### howTo? > `optional` **howTo**: `string` Defined in: [interfaces.ts:950](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L950) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`howTo`](/api/privatefolio-backend/interfaces/interfaces/extension#howto) *** ### id > **id**: `string` Defined in: [interfaces.ts:951](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L951) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`id`](/api/privatefolio-backend/interfaces/interfaces/extension#id) *** ### platformIds? > `optional` **platformIds**: `string`[] Defined in: [interfaces.ts:952](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L952) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`platformIds`](/api/privatefolio-backend/interfaces/interfaces/extension#platformids) *** ### platforms? > `optional` **platforms**: [`Platform`](/api/privatefolio-backend/interfaces/type-aliases/platform)[] Defined in: [interfaces.ts:960](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L960) *** ### priceUsd? > `optional` **priceUsd**: `number` Defined in: [interfaces.ts:953](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L953) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`priceUsd`](/api/privatefolio-backend/interfaces/interfaces/extension#priceusd) *** ### publishedAt > **publishedAt**: `number` Defined in: [interfaces.ts:954](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L954) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`publishedAt`](/api/privatefolio-backend/interfaces/interfaces/extension#publishedat) *** ### sources? > `optional` **sources**: [`SourceCode`](/api/privatefolio-backend/interfaces/type-aliases/sourcecode)[] Defined in: [interfaces.ts:955](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L955) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`sources`](/api/privatefolio-backend/interfaces/interfaces/extension#sources) *** ### updatedAt > **updatedAt**: `number` Defined in: [interfaces.ts:956](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L956) #### Inherited from [`Extension`](/api/privatefolio-backend/interfaces/interfaces/extension).[`updatedAt`](/api/privatefolio-backend/interfaces/interfaces/extension#updatedat) # ServerFile [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ServerFile Defined in: [interfaces.ts:850](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L850) ## Properties ### completedAt? > `optional` **completedAt**: `number` Defined in: [interfaces.ts:851](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L851) *** ### createdBy > **createdBy**: `"system"` \| `"user"` Defined in: [interfaces.ts:852](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L852) *** ### deletedAt? > `optional` **deletedAt**: `number` Defined in: [interfaces.ts:853](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L853) *** ### description? > `optional` **description**: `string` Defined in: [interfaces.ts:854](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L854) *** ### id > **id**: `number` Defined in: [interfaces.ts:855](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L855) *** ### metadata > **metadata**: `object` Defined in: [interfaces.ts:856](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L856) #### lastModified > **lastModified**: `number` #### size > **size**: `number` #### type > **type**: `string` *** ### name > **name**: `string` Defined in: [interfaces.ts:861](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L861) *** ### progress? > `optional` **progress**: `number` Defined in: [interfaces.ts:865](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L865) From 0 to 100 *** ### scheduledAt > **scheduledAt**: `number` Defined in: [interfaces.ts:866](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L866) *** ### startedAt? > `optional` **startedAt**: `number` Defined in: [interfaces.ts:867](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L867) *** ### status > **status**: `"completed"` \| `"aborted"` \| `"deleted"` \| `"scheduled"` \| `"uploading"` \| `"creating"` Defined in: [interfaces.ts:868](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L868) # ServerHealthMetric [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ServerHealthMetric Defined in: [interfaces.ts:1056](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1056) ## Properties ### cpuUsage > **cpuUsage**: `number` Defined in: [interfaces.ts:1057](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1057) *** ### diskTotal? > `optional` **diskTotal**: `number` Defined in: [interfaces.ts:1058](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1058) *** ### diskUsage? > `optional` **diskUsage**: `number` Defined in: [interfaces.ts:1059](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1059) *** ### diskUsed? > `optional` **diskUsed**: `number` Defined in: [interfaces.ts:1060](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1060) *** ### id? > `optional` **id**: `number` Defined in: [interfaces.ts:1061](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1061) *** ### memoryTotal > **memoryTotal**: `number` Defined in: [interfaces.ts:1062](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1062) *** ### memoryUsage > **memoryUsage**: `number` Defined in: [interfaces.ts:1063](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1063) *** ### memoryUsed > **memoryUsed**: `number` Defined in: [interfaces.ts:1064](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1064) *** ### processCount? > `optional` **processCount**: `number` Defined in: [interfaces.ts:1065](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1065) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:1066](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1066) *** ### uptime > **uptime**: `number` Defined in: [interfaces.ts:1067](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1067) # ServerLog [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ServerLog Defined in: [interfaces.ts:1070](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1070) ## Properties ### categories > **categories**: `string`[] Defined in: [interfaces.ts:1071](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1071) *** ### id > **id**: `string` Defined in: [interfaces.ts:1072](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1072) *** ### level > **level**: `"error"` \| `"warn"` \| `"info"` \| `"trace"` \| `"debug"` \| `"fatal"` Defined in: [interfaces.ts:1073](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1073) *** ### message > **message**: `string` Defined in: [interfaces.ts:1074](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1074) *** ### properties > **properties**: `Record`\<`string`, `unknown`\> Defined in: [interfaces.ts:1075](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1075) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:1076](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1076) # ServerTask [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ServerTask Defined in: [interfaces.ts:875](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L875) ## Properties ### completedAt? > `optional` **completedAt**: `number` Defined in: [interfaces.ts:876](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L876) *** ### createdAt > **createdAt**: `number` Defined in: [interfaces.ts:877](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L877) *** ### description > **description**: `string` Defined in: [interfaces.ts:878](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L878) *** ### determinate? > `optional` **determinate**: `boolean` Defined in: [interfaces.ts:882](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L882) #### Default ```ts false ``` *** ### duration? > `optional` **duration**: `number` Defined in: [interfaces.ts:886](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L886) In milliseconds *** ### errorMessage? > `optional` **errorMessage**: `string` Defined in: [interfaces.ts:887](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L887) *** ### groupId? > `optional` **groupId**: `string` Defined in: [interfaces.ts:888](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L888) *** ### id > **id**: `number` Defined in: [interfaces.ts:889](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L889) *** ### name > **name**: `string` Defined in: [interfaces.ts:890](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L890) *** ### priority > **priority**: [`TaskPriority`](/api/privatefolio-backend/interfaces/enumerations/taskpriority) Defined in: [interfaces.ts:891](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L891) *** ### startedAt? > `optional` **startedAt**: `number` Defined in: [interfaces.ts:892](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L892) *** ### status > **status**: [`TaskStatus`](/api/privatefolio-backend/interfaces/enumerations/taskstatus) Defined in: [interfaces.ts:893](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L893) *** ### trigger > **trigger**: [`TaskTrigger`](/api/privatefolio-backend/interfaces/type-aliases/tasktrigger) Defined in: [interfaces.ts:894](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L894) # Subscription [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Subscription Defined in: [interfaces.ts:824](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L824) ## Properties ### accountName? > `optional` **accountName**: `string` Defined in: [interfaces.ts:825](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L825) *** ### channel > **channel**: [`SubscriptionChannel`](/api/privatefolio-backend/interfaces/enumerations/subscriptionchannel) Defined in: [interfaces.ts:826](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L826) *** ### listener > **listener**: [`SubscriptionListener`](/api/privatefolio-backend/interfaces/type-aliases/subscriptionlistener) Defined in: [interfaces.ts:827](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L827) # SystemInfo [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / SystemInfo Defined in: [interfaces.ts:1047](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1047) ## Properties ### cpuCores > **cpuCores**: `number` Defined in: [interfaces.ts:1048](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1048) *** ### cpuModel > **cpuModel**: `string` Defined in: [interfaces.ts:1049](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1049) *** ### memory > **memory**: `number` Defined in: [interfaces.ts:1050](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1050) *** ### nodeVersion > **nodeVersion**: `string` Defined in: [interfaces.ts:1051](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1051) *** ### platform > **platform**: `string` Defined in: [interfaces.ts:1052](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1052) *** ### version > **version**: `string` Defined in: [interfaces.ts:1053](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1053) # Tag [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Tag Defined in: [interfaces.ts:925](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L925) ## Properties ### id > **id**: `number` Defined in: [interfaces.ts:926](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L926) *** ### name > **name**: `string` Defined in: [interfaces.ts:927](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L927) # Trade [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Trade Defined in: [interfaces.ts:273](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L273) ## Properties ### amount > **amount**: `number` Defined in: [interfaces.ts:274](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L274) *** ### assetId > **assetId**: `string` Defined in: [interfaces.ts:275](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L275) *** ### auditLogIds? > `optional` **auditLogIds**: `string`[] Defined in: [interfaces.ts:276](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L276) *** ### balance > **balance**: `number` Defined in: [interfaces.ts:277](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L277) *** ### closedAt? > `optional` **closedAt**: `number` Defined in: [interfaces.ts:278](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L278) *** ### cost > **cost**: [`TradeCost`](/api/privatefolio-backend/interfaces/type-aliases/tradecost)[] Defined in: [interfaces.ts:279](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L279) *** ### createdAt > **createdAt**: `number` Defined in: [interfaces.ts:280](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L280) *** ### deposits > **deposits**: [`TradeValue`](/api/privatefolio-backend/interfaces/type-aliases/tradevalue)[] Defined in: [interfaces.ts:281](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L281) *** ### duration? > `optional` **duration**: `number` Defined in: [interfaces.ts:282](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L282) *** ### fees > **fees**: [`TradeValue`](/api/privatefolio-backend/interfaces/type-aliases/tradevalue)[] Defined in: [interfaces.ts:283](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L283) *** ### id > **id**: `string` Defined in: [interfaces.ts:284](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L284) *** ### proceeds > **proceeds**: [`TradeProceeds`](/api/privatefolio-backend/interfaces/type-aliases/tradeproceeds)[] Defined in: [interfaces.ts:285](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L285) *** ### tags? > `optional` **tags**: `number`[] Defined in: [interfaces.ts:286](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L286) *** ### tradeNumber > **tradeNumber**: `number` Defined in: [interfaces.ts:287](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L287) *** ### tradeStatus > **tradeStatus**: `"open"` \| `"closed"` Defined in: [interfaces.ts:288](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L288) *** ### tradeType > **tradeType**: `"Long"` \| `"Short"` Defined in: [interfaces.ts:289](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L289) *** ### txIds? > `optional` **txIds**: `string`[] Defined in: [interfaces.ts:290](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L290) # TradePnL [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TradePnL Defined in: [interfaces.ts:977](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L977) ## Properties ### cost > **cost**: `string` Defined in: [interfaces.ts:978](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L978) *** ### deposits > **deposits**: `string` Defined in: [interfaces.ts:979](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L979) *** ### fees > **fees**: `string` Defined in: [interfaces.ts:980](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L980) *** ### id > **id**: `string` Defined in: [interfaces.ts:981](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L981) *** ### pnl > **pnl**: `string` Defined in: [interfaces.ts:985](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L985) Formula: positionValue + cost + proceeds + fees - deposits *** ### positionValue > **positionValue**: `string` Defined in: [interfaces.ts:986](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L986) *** ### proceeds > **proceeds**: `string` Defined in: [interfaces.ts:987](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L987) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:988](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L988) *** ### tradeId > **tradeId**: `string` Defined in: [interfaces.ts:989](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L989) # Transaction [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Transaction Defined in: [interfaces.ts:69](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L69) ## Properties ### connectionId? > `optional` **connectionId**: `string` Defined in: [interfaces.ts:70](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L70) *** ### fee? > `optional` **fee**: `string` Defined in: [interfaces.ts:71](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L71) *** ### feeAsset? > `optional` **feeAsset**: `string` Defined in: [interfaces.ts:72](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L72) *** ### fileImportId? > `optional` **fileImportId**: `string` Defined in: [interfaces.ts:73](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L73) *** ### id > **id**: `string` Defined in: [interfaces.ts:74](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L74) *** ### importIndex > **importIndex**: `number` Defined in: [interfaces.ts:75](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L75) *** ### incoming? > `optional` **incoming**: `string` Defined in: [interfaces.ts:76](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L76) *** ### incomingAsset? > `optional` **incomingAsset**: `string` Defined in: [interfaces.ts:77](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L77) *** ### metadata > **metadata**: [`EtherscanMetadata`](/api/privatefolio-backend/interfaces/interfaces/etherscanmetadata) \| `Record`\<`string`, `unknown`\> Defined in: [interfaces.ts:78](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L78) *** ### notes? > `optional` **notes**: `string` Defined in: [interfaces.ts:79](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L79) *** ### outgoing? > `optional` **outgoing**: `string` Defined in: [interfaces.ts:80](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L80) *** ### outgoingAsset? > `optional` **outgoingAsset**: `string` Defined in: [interfaces.ts:81](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L81) *** ### platformId > **platformId**: `string` Defined in: [interfaces.ts:82](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L82) *** ### price? > `optional` **price**: `string` Defined in: [interfaces.ts:86](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L86) outgoing / incoming *** ### role? > `optional` **role**: [`TransactionRole`](/api/privatefolio-backend/interfaces/type-aliases/transactionrole) Defined in: [interfaces.ts:87](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L87) *** ### tags? > `optional` **tags**: `number`[] Defined in: [interfaces.ts:88](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L88) *** ### timestamp > **timestamp**: `number` Defined in: [interfaces.ts:89](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L89) *** ### type > **type**: `"Buy"` \| `"Sell"` \| `"Swap"` \| `"Deposit"` \| `"Withdraw"` \| `"Unknown"` \| `"Reward"` \| `"Unwrap"` \| `"Wrap"` \| `"Approve"` \| `"Stake"` \| `"Unstake"` \| `"Gift"` \| `"Other"` Defined in: [interfaces.ts:90](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L90) *** ### wallet > **wallet**: `string` Defined in: [interfaces.ts:91](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L91) # AddressBook [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / AddressBook > **AddressBook** = [`LabeledAddress`](/api/privatefolio-backend/interfaces/type-aliases/labeledaddress)[] Defined in: [interfaces.ts:923](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L923) # AlchemyPrice [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / AlchemyPrice > **AlchemyPrice** = `object` Defined in: [interfaces.ts:408](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L408) ## Example ```ts { * "value": "105384.7422814993", * "timestamp": "2025-06-14T02:50:30Z" * } ``` ## Properties ### timestamp > **timestamp**: `string` Defined in: [interfaces.ts:409](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L409) *** ### value > **value**: `string` Defined in: [interfaces.ts:410](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L410) # AssetId [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / AssetId > **AssetId** = `string` Defined in: [interfaces.ts:793](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L793) # AuditLogOperation [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / AuditLogOperation > **AuditLogOperation** = `"Deposit"` \| `"Buy"` \| `"Buy with Credit Card"` \| `"Sell"` \| `"Fee"` \| `"Withdraw"` \| `"Funding Fee"` \| `"Commission"` \| `"Conversion"` \| `"Insurance Fund"` \| `"Transfer"` \| `"Smart Contract"` \| `"Realized Profit and Loss"` \| `"Reward"` \| `"Margin Loan"` \| `"Margin Repayment"` \| `"Liquidation Repayment"` \| `"API Rebate"` \| `"Delivered Settelment"` \| `"Referrer Rebates"` \| `"Commission Rebate"` \| `"Options Fee"` \| `"Options Purchase"` \| `"Auto Exchange"` \| `"Increase Fee"` \| `"Unknown"` \| `"Mint"` \| `"Wrap"` \| `"Stake"` \| `"Unstake"` Defined in: [interfaces.ts:98](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L98) # BinanceConnection [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / BinanceConnection > **BinanceConnection** = [`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection) & `object` Defined in: [interfaces.ts:467](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L467) ## Type Declaration ### key > **key**: `string` ### options > **options**: [`BinanceConnectionOptions`](/api/privatefolio-backend/interfaces/type-aliases/binanceconnectionoptions) # BinanceConnectionOptions [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / BinanceConnectionOptions > **BinanceConnectionOptions** = [`ConnectionOptions`](/api/privatefolio-backend/interfaces/type-aliases/connectionoptions) & `object` Defined in: [interfaces.ts:436](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L436) ## Type Declaration ### symbols? > `optional` **symbols**: `BinancePair`[] ### wallets > **wallets**: `Record`\<`BinanceWalletId`, `boolean`\> # BinanceKline [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / BinanceKline > **BinanceKline** = \[[`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp), `string`, `string`, `string`, `string`, `string`\] Defined in: [interfaces.ts:368](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L368) [ 1499040000000, / Kline open time "0.01634790", / Open price "0.80000000", / High price "0.01575800", / Low price "0.01577100", / Close price "148976.11427815", / Volume 1499644799999, / Kline Close time "2434.19055334", / Quote asset volume 308, / Number of trades "1756.87402397", / Taker buy base asset volume "28.46694368", / Taker buy quote asset volume "0" / Unused field, ignore. ] # BlockchainMeta [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / BlockchainMeta > **BlockchainMeta** = `object` Defined in: [interfaces.ts:968](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L968) ## Properties ### blockExplorer? > `optional` **blockExplorer**: `object` Defined in: [interfaces.ts:969](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L969) #### name > **name**: `string` #### url > **url**: `string` *** ### chainId? > `optional` **chainId**: `number` Defined in: [interfaces.ts:973](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L973) *** ### nativeAssetId? > `optional` **nativeAssetId**: `string` Defined in: [interfaces.ts:974](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L974) # BlockNumber [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / BlockNumber > **BlockNumber** = `number` Defined in: [interfaces.ts:1022](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1022) # ChartData [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ChartData > **ChartData** = `object` Defined in: [interfaces.ts:222](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L222) ## Properties ### close? > `optional` **close**: `number` Defined in: [interfaces.ts:223](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L223) *** ### high? > `optional` **high**: `number` Defined in: [interfaces.ts:224](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L224) *** ### low? > `optional` **low**: `number` Defined in: [interfaces.ts:225](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L225) *** ### open? > `optional` **open**: `number` Defined in: [interfaces.ts:226](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L226) *** ### time > **time**: [`Time`](/api/privatefolio-backend/interfaces/type-aliases/time) Defined in: [interfaces.ts:227](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L227) *** ### value > **value**: `number` Defined in: [interfaces.ts:228](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L228) *** ### volume? > `optional` **volume**: `number` Defined in: [interfaces.ts:229](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L229) # CoinbaseBucket [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / CoinbaseBucket > **CoinbaseBucket** = \[[`Time`](/api/privatefolio-backend/interfaces/type-aliases/time), `number`, `number`, `number`, `number`, `number`\] Defined in: [interfaces.ts:387](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L387) [ 1696564320, / time - bucket start time 27557.89, / low - lowest price during the bucket interval 27567.36, / high - highest price during the bucket interval 27566.42, / open - opening price (first trade) in the bucket interval 27562.16, / close - closing price (last trade) in the bucket interval 4.15468916 / volume - volume of trading activity during the bucket interval ] # CoingeckoTickerData [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / CoingeckoTickerData > **CoingeckoTickerData** = `object` Defined in: [interfaces.ts:522](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L522) ## Properties ### base > **base**: `string` Defined in: [interfaces.ts:523](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L523) *** ### bid\_ask\_spread\_percentage? > `optional` **bid\_ask\_spread\_percentage**: `number` Defined in: [interfaces.ts:524](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L524) *** ### coin\_id > **coin\_id**: `string` Defined in: [interfaces.ts:525](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L525) *** ### converted\_last > **converted\_last**: `Record`\<`string`, `number`\> Defined in: [interfaces.ts:526](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L526) *** ### converted\_volume > **converted\_volume**: `Record`\<`string`, `number`\> Defined in: [interfaces.ts:527](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L527) *** ### is\_anomaly > **is\_anomaly**: `boolean` Defined in: [interfaces.ts:528](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L528) *** ### is\_stale > **is\_stale**: `boolean` Defined in: [interfaces.ts:529](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L529) *** ### last > **last**: `number` Defined in: [interfaces.ts:530](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L530) *** ### last\_fetch\_at? > `optional` **last\_fetch\_at**: `string` Defined in: [interfaces.ts:531](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L531) *** ### last\_traded\_at? > `optional` **last\_traded\_at**: `string` Defined in: [interfaces.ts:532](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L532) *** ### market > **market**: `object` Defined in: [interfaces.ts:533](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L533) #### has\_trading\_incentive > **has\_trading\_incentive**: `boolean` #### identifier > **identifier**: `string` #### name > **name**: `string` *** ### target > **target**: `string` Defined in: [interfaces.ts:538](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L538) *** ### target\_coin\_id? > `optional` **target\_coin\_id**: `string` Defined in: [interfaces.ts:539](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L539) *** ### timestamp? > `optional` **timestamp**: `string` Defined in: [interfaces.ts:540](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L540) *** ### token\_info\_url? > `optional` **token\_info\_url**: `string` \| `null` Defined in: [interfaces.ts:541](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L541) *** ### trade\_url? > `optional` **trade\_url**: `string` Defined in: [interfaces.ts:542](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L542) *** ### trust\_score? > `optional` **trust\_score**: `"green"` \| `"yellow"` \| `"red"` Defined in: [interfaces.ts:543](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L543) # CoinstatsConnection [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / CoinstatsConnection > **CoinstatsConnection** = [`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection) & `object` Defined in: [interfaces.ts:472](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L472) ## Type Declaration ### apiKey > **apiKey**: `string` # ConnectionOptions [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ConnectionOptions > **ConnectionOptions** = `object` Defined in: [interfaces.ts:431](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L431) ## Properties ### sinceLimit? > `optional` **sinceLimit**: [`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp) Defined in: [interfaces.ts:432](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L432) *** ### untilLimit? > `optional` **untilLimit**: [`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp) Defined in: [interfaces.ts:433](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L433) # ConnectionStatus [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ConnectionStatus > **ConnectionStatus** = `"connected"` \| `"closed"` Defined in: [interfaces.ts:1089](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1089) # ConnectionStatusCallback [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ConnectionStatusCallback > **ConnectionStatusCallback** = (`status`, `errorMessage?`) => `void` Defined in: [interfaces.ts:913](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L913) ## Parameters ### status `"closed"` | `"connected"` ### errorMessage? `string` ## Returns `void` # CsvData [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / CsvData > **CsvData** = (`string` \| `number` \| `undefined` \| `boolean` \| `object`)[][] Defined in: [interfaces.ts:760](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L760) # CsvParseFn [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / CsvParseFn > **CsvParseFn** = (`csvRow`, `index`, `fileImportId`, `parserContext`, `header`) => [`ParserResult`](/api/privatefolio-backend/interfaces/type-aliases/parserresult) Defined in: [interfaces.ts:485](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L485) ## Parameters ### csvRow `string` ### index `number` ### fileImportId `string` ### parserContext `Record`\<`string`, `unknown`\> ### header `string` ## Returns [`ParserResult`](/api/privatefolio-backend/interfaces/type-aliases/parserresult) # CsvParser [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / CsvParser > **CsvParser** = `object` Defined in: [interfaces.ts:493](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L493) ## Properties ### extensionId > **extensionId**: `string` Defined in: [interfaces.ts:494](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L494) *** ### parse > **parse**: [`CsvParseFn`](/api/privatefolio-backend/interfaces/type-aliases/csvparsefn) Defined in: [interfaces.ts:495](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L495) *** ### parserId > **parserId**: `string` Defined in: [interfaces.ts:496](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L496) *** ### platformId? > `optional` **platformId**: `string` Defined in: [interfaces.ts:497](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L497) *** ### requirements? > `optional` **requirements**: [`ParserRequirement`](/api/privatefolio-backend/interfaces/type-aliases/parserrequirement)[] Defined in: [interfaces.ts:498](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L498) # EtherscanConnection [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / EtherscanConnection > **EtherscanConnection** = [`Connection`](/api/privatefolio-backend/interfaces/interfaces/connection) & `object` Defined in: [interfaces.ts:464](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L464) ## Type Declaration ### address > **address**: `string` # EtherscanTransaction [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / EtherscanTransaction > **EtherscanTransaction** = [`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction) & `object` Defined in: [interfaces.ts:94](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L94) ## Type Declaration ### metadata > **metadata**: [`EtherscanMetadata`](/api/privatefolio-backend/interfaces/interfaces/etherscanmetadata) # EvmParser [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / EvmParser > **EvmParser** = (`row`, `index`, `connectionId`) => [`ParserResult`](/api/privatefolio-backend/interfaces/type-aliases/parserresult) Defined in: [interfaces.ts:501](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L501) ## Parameters ### row `NormalTransaction` | `InternalTransaction` | `Erc20Transaction` ### index `number` ### connectionId `string` ## Returns [`ParserResult`](/api/privatefolio-backend/interfaces/type-aliases/parserresult) # ExtensionType [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ExtensionType > **ExtensionType** = `"file-import"` \| `"connection"` \| `"price-api"` \| `"metadata"` \| `"manual-import"` Defined in: [interfaces.ts:930](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L930) # FilterOptionsMap [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / FilterOptionsMap > **FilterOptionsMap** = `object` Defined in: [interfaces.ts:771](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L771) ## Properties ### assetId > **assetId**: `string`[] Defined in: [interfaces.ts:772](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L772) *** ### capabilities > **capabilities**: `ModelCapability`[] Defined in: [interfaces.ts:773](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L773) *** ### createdBy > **createdBy**: `string`[] Defined in: [interfaces.ts:774](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L774) *** ### exchangeType > **exchangeType**: `string`[] Defined in: [interfaces.ts:775](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L775) *** ### extensionType > **extensionType**: `string`[] Defined in: [interfaces.ts:776](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L776) *** ### family > **family**: `ModelFamily`[] Defined in: [interfaces.ts:777](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L777) *** ### feeAsset > **feeAsset**: `string`[] Defined in: [interfaces.ts:778](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L778) *** ### incomingAsset > **incomingAsset**: `string`[] Defined in: [interfaces.ts:779](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L779) *** ### level > **level**: `string`[] Defined in: [interfaces.ts:780](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L780) *** ### operation > **operation**: [`AuditLogOperation`](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation)[] Defined in: [interfaces.ts:781](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L781) *** ### outgoingAsset > **outgoingAsset**: `string`[] Defined in: [interfaces.ts:782](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L782) *** ### platformId > **platformId**: `string`[] Defined in: [interfaces.ts:783](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L783) *** ### status > **status**: [`TaskStatus`](/api/privatefolio-backend/interfaces/enumerations/taskstatus)[] Defined in: [interfaces.ts:784](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L784) *** ### tags > **tags**: `number`[] Defined in: [interfaces.ts:785](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L785) *** ### tradeStatus > **tradeStatus**: `string`[] Defined in: [interfaces.ts:786](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L786) *** ### tradeType > **tradeType**: readonly [`TradeType`](/api/privatefolio-backend/interfaces/type-aliases/tradetype)[] Defined in: [interfaces.ts:787](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L787) *** ### trigger > **trigger**: `string`[] Defined in: [interfaces.ts:788](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L788) *** ### type > **type**: readonly [`TransactionType`](/api/privatefolio-backend/interfaces/type-aliases/transactiontype)[] Defined in: [interfaces.ts:789](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L789) *** ### wallet > **wallet**: `string`[] Defined in: [interfaces.ts:790](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L790) # FindPlatformsResult [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / FindPlatformsResult > **FindPlatformsResult** = `object` Defined in: [interfaces.ts:963](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L963) ## Properties ### blockchains > **blockchains**: [`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain)[] Defined in: [interfaces.ts:964](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L964) *** ### exchanges > **exchanges**: [`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange)[] Defined in: [interfaces.ts:965](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L965) # LabeledAddress [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / LabeledAddress > **LabeledAddress** = `object` Defined in: [interfaces.ts:918](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L918) ## Properties ### id > **id**: `string` Defined in: [interfaces.ts:919](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L919) *** ### label > **label**: `string` Defined in: [interfaces.ts:920](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L920) # LlamaPrice [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / LlamaPrice > **LlamaPrice** = `object` Defined in: [interfaces.ts:396](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L396) ## Properties ### price > **price**: `number` Defined in: [interfaces.ts:397](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L397) *** ### timestamp > **timestamp**: [`Time`](/api/privatefolio-backend/interfaces/type-aliases/time) Defined in: [interfaces.ts:398](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L398) # LocalServerStatus [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / LocalServerStatus > **LocalServerStatus** = `"needs setup"` \| `"needs login"` \| `"running"` \| `"errored"` Defined in: [interfaces.ts:1091](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1091) # NewNotification [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / NewNotification > **NewNotification** = `Omit`\<[`Notification`](/api/privatefolio-backend/interfaces/interfaces/notification), `"id"`\> Defined in: [interfaces.ts:1036](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1036) # Nominal [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Nominal > **Nominal**\<`T`, `Name`\> = `T` & `object` Defined in: [interfaces.ts:331](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L331) This is the generic type useful for declaring a nominal type, which does not structurally matches with the base type and the other types declared over the same base type Usage: ## Type Declaration ### \[species\] > **\[species\]**: `Name` ## Type Parameters ### T `T` ### Name `Name` *extends* `string` ## Examples ```ts type Index = Nominal; / let i: Index = 42; / this fails to compile let i: Index = 42 as Index; / OK ``` ```ts type TagName = Nominal; ``` # ParserRequirement [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ParserRequirement > **ParserRequirement** = `object` Defined in: [interfaces.ts:480](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L480) ## Properties ### name > **name**: `string` Defined in: [interfaces.ts:481](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L481) *** ### type > **type**: [`ParserRequirementType`](/api/privatefolio-backend/interfaces/type-aliases/parserrequirementtype) Defined in: [interfaces.ts:482](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L482) # ParserRequirementType [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ParserRequirementType > **ParserRequirementType** = `"platform"` \| `"asset"` \| `"address"` \| `"text"` Defined in: [interfaces.ts:478](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L478) # ParserResult [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ParserResult > **ParserResult** = `object` Defined in: [interfaces.ts:476](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L476) ## Properties ### logs > **logs**: [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)[] Defined in: [interfaces.ts:476](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L476) *** ### txns? > `optional` **txns**: [`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)[] Defined in: [interfaces.ts:476](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L476) # Platform [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Platform > **Platform** = [`Exchange`](/api/privatefolio-backend/interfaces/interfaces/exchange) \| [`Blockchain`](/api/privatefolio-backend/interfaces/interfaces/blockchain) \| [`DataPlatform`](/api/privatefolio-backend/interfaces/interfaces/dataplatform) Defined in: [interfaces.ts:170](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L170) # ProgressCallback [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ProgressCallback > **ProgressCallback** = (`state`) => `Promise`\<`unknown`\> Defined in: [interfaces.ts:907](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L907) ## Parameters ### state [`ProgressUpdate`](/api/privatefolio-backend/interfaces/type-aliases/progressupdate) ## Returns `Promise`\<`unknown`\> # ProgressLog [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ProgressLog > **ProgressLog** = \[[`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp), [`ProgressUpdate`](/api/privatefolio-backend/interfaces/type-aliases/progressupdate)\] Defined in: [interfaces.ts:909](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L909) # ProgressUpdate [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ProgressUpdate > **ProgressUpdate** = \[\] \| \[`number`\] \| \[`number` \| `undefined`, `string`\] Defined in: [interfaces.ts:906](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L906) First value represents a percentage (0-100), second value is a message # PushSub [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / PushSub > **PushSub** = `PushSubscription` Defined in: [interfaces.ts:1038](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L1038) # QueryRequest [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / QueryRequest > **QueryRequest** = `object` Defined in: [interfaces.ts:413](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L413) ## Properties ### limit? > `optional` **limit**: `number` Defined in: [interfaces.ts:417](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L417) #### Default ```ts 900 (PRICE_API_PAGINATION) ``` *** ### pair > **pair**: `string` Defined in: [interfaces.ts:418](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L418) *** ### since? > `optional` **since**: [`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp) Defined in: [interfaces.ts:422](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L422) #### Warning If `until` is undefined, this is ignored too *** ### timeInterval > **timeInterval**: [`ResolutionString`](/api/privatefolio-backend/interfaces/type-aliases/resolutionstring) Defined in: [interfaces.ts:423](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L423) *** ### until? > `optional` **until**: [`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp) Defined in: [interfaces.ts:427](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L427) #### Warning If `since` is undefined, this is ignored too # ResolutionString [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / ResolutionString > **ResolutionString** = [`Nominal`](/api/privatefolio-backend/interfaces/type-aliases/nominal)\<`string`, `"ResolutionString"`\> Defined in: [interfaces.ts:350](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L350) Resolution or time interval is a time period of one bar. Advanced Charts supports tick, intraday (seconds, minutes, hours), and DWM (daily, weekly, monthly) resolutions. The table below describes how to specify different types of resolutions: Resolution | Format | Example ---------|----------|--------- Ticks | `xT` | `1T` β€” one tick Seconds | `xS` | `1S` β€” one second Minutes | `x` | `1` β€” one minute Hours | `x` minutes | `60` β€” one hour Days | `xD` | `1D` β€” one day Weeks | `xW` | `1W` β€” one week Months | `xM` | `1M` β€” one month Years | `xM` months | `12M` β€” one year Refer to [Resolution](https://www.tradingview.com/charting-library-docs/latest/core_concepts/Resolution) for more information. # SecTicker [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / SecTicker > **SecTicker** = `object` Defined in: [interfaces.ts:746](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L746) ## Properties ### cik\_str > **cik\_str**: `number` Defined in: [interfaces.ts:750](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L750) Central Index Key *** ### ticker > **ticker**: `string` Defined in: [interfaces.ts:751](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L751) *** ### title > **title**: `string` Defined in: [interfaces.ts:752](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L752) # SourceCode [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / SourceCode > **SourceCode** = `object` Defined in: [interfaces.ts:937](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L937) ## Properties ### tags > **tags**: `string`[] Defined in: [interfaces.ts:938](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L938) *** ### url > **url**: `string` Defined in: [interfaces.ts:939](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L939) # SqlParam [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / SqlParam > **SqlParam** = `boolean` \| `string` \| `number` \| `null` \| `Uint8Array` Defined in: [interfaces.ts:911](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L911) # StackedAreaData [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / StackedAreaData > **StackedAreaData** = `object` Defined in: [interfaces.ts:232](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L232) ## Properties ### assets > **assets**: `string`[] Defined in: [interfaces.ts:233](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L233) *** ### time > **time**: [`Time`](/api/privatefolio-backend/interfaces/type-aliases/time) Defined in: [interfaces.ts:234](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L234) *** ### values > **values**: `number`[] Defined in: [interfaces.ts:235](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L235) # SubscriptionId [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / SubscriptionId > **SubscriptionId** = `string` Defined in: [interfaces.ts:795](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L795) # SubscriptionListener [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / SubscriptionListener > **SubscriptionListener** = (...`args`) => `void` Defined in: [interfaces.ts:822](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L822) ## Parameters ### args ...`unknown`[] ## Returns `void` # SyncResult [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / SyncResult > **SyncResult** = `object` Defined in: [interfaces.ts:507](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L507) ## Properties ### assetMap > **assetMap**: `Record`\<`string`, `boolean`\> Defined in: [interfaces.ts:508](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L508) *** ### logMap > **logMap**: `Record`\<`string`, [`AuditLog`](/api/privatefolio-backend/interfaces/interfaces/auditlog)\> Defined in: [interfaces.ts:509](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L509) *** ### newCursor > **newCursor**: `number` Defined in: [interfaces.ts:513](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L513) blockNumber or timestamp *** ### operationMap > **operationMap**: `Partial`\<`Record`\<[`AuditLogOperation`](/api/privatefolio-backend/interfaces/type-aliases/auditlogoperation), `boolean`\>\> Defined in: [interfaces.ts:514](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L514) *** ### rows > **rows**: `number` Defined in: [interfaces.ts:515](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L515) *** ### txMap > **txMap**: `Record`\<`string`, [`Transaction`](/api/privatefolio-backend/interfaces/interfaces/transaction)\> Defined in: [interfaces.ts:516](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L516) *** ### walletMap > **walletMap**: `Record`\<`string`, `boolean`\> Defined in: [interfaces.ts:517](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L517) # TaskCompletionCallback [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TaskCompletionCallback > **TaskCompletionCallback** = (`error`) => `void` Defined in: [interfaces.ts:901](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L901) ## Parameters ### error `string` | `undefined` ## Returns `void` # TaskTrigger [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TaskTrigger > **TaskTrigger** = `"system"` \| `"user"` \| `"cron"` \| `"side-effect"` Defined in: [interfaces.ts:837](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L837) # Time [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Time > **Time** = `number` Defined in: [interfaces.ts:59](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L59) Timestamp in seconds, used in lightweight-charts ## Examples ```ts 161213760 ``` ```ts asUTC(Date.now()) / 1000 ``` # Timestamp [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Timestamp > **Timestamp** = `number` Defined in: [interfaces.ts:51](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L51) Timestamp in milliseconds ## Examples ```ts 1612137600000 ``` ```ts asUTC(Date.now()) ``` # TradeCost [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TradeCost > **TradeCost** = \[`string`, `string`, `string`, `string`, `string`, [`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp)\] Defined in: [interfaces.ts:247](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L247) # TradeProceeds [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TradeProceeds > **TradeProceeds** = \[`string`, `string`, `string`, `string`, `string`, [`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp)\] Defined in: [interfaces.ts:256](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L256) # TradeStatus [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TradeStatus > **TradeStatus** = `"open"` \| `"closed"` Defined in: [interfaces.ts:41](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L41) # TradeType [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TradeType > **TradeType** = *typeof* [`TRADE_TYPES`](/api/privatefolio-backend/interfaces/variables/trade_types)\[`number`\] Defined in: [interfaces.ts:40](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L40) # TradeValue [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TradeValue > **TradeValue** = \[`string`, `string`, `string`, `string`, [`Timestamp`](/api/privatefolio-backend/interfaces/type-aliases/timestamp)\] Defined in: [interfaces.ts:265](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L265) # TransactionRole [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TransactionRole > **TransactionRole** = `"Maker"` \| `"Taker"` Defined in: [interfaces.ts:13](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L13) # TransactionSide [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TransactionSide > **TransactionSide** = `"BUY"` \| `"SELL"` Defined in: [interfaces.ts:14](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L14) # TransactionType [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TransactionType > **TransactionType** = *typeof* [`TRANSACTIONS_TYPES`](/api/privatefolio-backend/interfaces/variables/transactions_types)\[`number`\] Defined in: [interfaces.ts:31](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L31) # Web3Address [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / Web3Address > **Web3Address** = `string` Defined in: [interfaces.ts:758](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L758) Example: `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` (WETH) # DEFAULT_POLLING_INTERVAL [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / DEFAULT\_POLLING\_INTERVAL > `const` **DEFAULT\_POLLING\_INTERVAL**: `2000` = `2_000` Defined in: [interfaces.ts:429](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L429) # MANUAL_TX_TYPES [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / MANUAL\_TX\_TYPES > `const` **MANUAL\_TX\_TYPES**: [`TransactionType`](/api/privatefolio-backend/interfaces/type-aliases/transactiontype)[] Defined in: [interfaces.ts:33](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L33) # TRADE_TYPES [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TRADE\_TYPES > `const` **TRADE\_TYPES**: readonly \[`"Long"`, `"Short"`\] Defined in: [interfaces.ts:35](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L35) # TRANSACTIONS_TYPES [API Reference](/api/) / [privatefolio-backend](/api/privatefolio-backend/) / [interfaces](/api/privatefolio-backend/interfaces/) / TRANSACTIONS\_TYPES > `const` **TRANSACTIONS\_TYPES**: readonly \[`"Buy"`, `"Sell"`, `"Swap"`, `"Deposit"`, `"Withdraw"`, `"Unknown"`, `"Reward"`, `"Unwrap"`, `"Wrap"`, `"Approve"`, `"Stake"`, `"Unstake"`, `"Gift"`, `"Other"`\] Defined in: [interfaces.ts:15](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/backend/src/interfaces.ts#L15) # @privatefolio/commons [API Reference](/api/) / @privatefolio/commons ## Variables - [ONE\_DAY](/api/privatefolio/commons/variables/one_day) - [ONE\_DAY\_MIN](/api/privatefolio/commons/variables/one_day_min) - [ONE\_DAY\_TIME](/api/privatefolio/commons/variables/one_day_time) - [ONE\_HOUR](/api/privatefolio/commons/variables/one_hour) ## Functions - [randomUUID](/api/privatefolio/commons/functions/randomuuid) # @privatefolio/commons-node [API Reference](/api/) / @privatefolio/commons-node ## Modules - [environment-utils](/api/privatefolio/commons-node/environment-utils/) - [logger](/api/privatefolio/commons-node/logger/) - [logger-memory](/api/privatefolio/commons-node/logger-memory/) - [telemetry](/api/privatefolio/commons-node/telemetry/) - [utils](/api/privatefolio/commons-node/utils/) # environment-utils [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / environment-utils ## Variables - [environment](/api/privatefolio/commons-node/environment-utils/variables/environment) - [isBunWorker](/api/privatefolio/commons-node/environment-utils/variables/isbunworker) - [isDevelopment](/api/privatefolio/commons-node/environment-utils/variables/isdevelopment) - [isNode](/api/privatefolio/commons-node/environment-utils/variables/isnode) - [isProduction](/api/privatefolio/commons-node/environment-utils/variables/isproduction) - [isServer](/api/privatefolio/commons-node/environment-utils/variables/isserver) - [isTestEnvironment](/api/privatefolio/commons-node/environment-utils/variables/istestenvironment) - [isWebWorker](/api/privatefolio/commons-node/environment-utils/variables/iswebworker) - [runtime](/api/privatefolio/commons-node/environment-utils/variables/runtime) - [useBunSqlite](/api/privatefolio/commons-node/environment-utils/variables/usebunsqlite) - [writesAllowed](/api/privatefolio/commons-node/environment-utils/variables/writesallowed) # environment [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / environment > `const` **environment**: `"development"` \| `"test"` \| `"production"` Defined in: [packages/commons-node/src/environment-utils.ts:23](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L23) # isBunWorker [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / isBunWorker > `const` **isBunWorker**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:8](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L8) # isDevelopment [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / isDevelopment > `const` **isDevelopment**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:20](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L20) Environment variables # isNode [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / isNode > `const` **isNode**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:5](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L5) # isProduction [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / isProduction > `const` **isProduction**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:22](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L22) # isServer [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / isServer > `const` **isServer**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:4](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L4) Runtime detection # isTestEnvironment [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / isTestEnvironment > `const` **isTestEnvironment**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:21](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L21) # isWebWorker [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / isWebWorker > `const` **isWebWorker**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:7](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L7) # runtime [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / runtime > `const` **runtime**: `"browser"` \| `"web worker"` \| `"bun worker"` \| `"bun"` Defined in: [packages/commons-node/src/environment-utils.ts:9](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L9) # useBunSqlite [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / useBunSqlite > `const` **useBunSqlite**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:29](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L29) # writesAllowed [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [environment-utils](/api/privatefolio/commons-node/environment-utils/) / writesAllowed > `const` **writesAllowed**: `boolean` Defined in: [packages/commons-node/src/environment-utils.ts:28](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/environment-utils.ts#L28) Feature flags # logger [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / logger ## Variables - [FLUSH\_INTERVAL](/api/privatefolio/commons-node/logger/variables/flush_interval) ## Functions - [configureLogger](/api/privatefolio/commons-node/logger/functions/configurelogger) - [getLatestLogFilename](/api/privatefolio/commons-node/logger/functions/getlatestlogfilename) - [getLogger](/api/privatefolio/commons-node/logger/functions/getlogger) - [getOldLogs](/api/privatefolio/commons-node/logger/functions/getoldlogs) - [msUntilMidnight](/api/privatefolio/commons-node/logger/functions/msuntilmidnight) # logger-memory [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / logger-memory ## Functions - [configureMemoryLogger](/api/privatefolio/commons-node/logger-memory/functions/configurememorylogger) - [getInMemoryRecords](/api/privatefolio/commons-node/logger-memory/functions/getinmemoryrecords) # configureMemoryLogger [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [logger-memory](/api/privatefolio/commons-node/logger-memory/) / configureMemoryLogger > **configureMemoryLogger**(`lowestLevel`): `void` Defined in: [packages/commons-node/src/logger-memory.ts:5](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/logger-memory.ts#L5) ## Parameters ### lowestLevel `"trace"` | `"debug"` | `"info"` | `"warning"` | `"error"` | `"fatal"` ## Returns `void` # getInMemoryRecords [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [logger-memory](/api/privatefolio/commons-node/logger-memory/) / getInMemoryRecords > **getInMemoryRecords**(): `LogRecord`[] Defined in: [packages/commons-node/src/logger-memory.ts:28](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/logger-memory.ts#L28) ## Returns `LogRecord`[] # configureLogger [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [logger](/api/privatefolio/commons-node/logger/) / configureLogger > **configureLogger**(`logsDirectory`, `logFileName`, `lowestLevel`): `Promise`\<`void`\> Defined in: [packages/commons-node/src/logger.ts:19](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/logger.ts#L19) ## Parameters ### logsDirectory `string` ### logFileName `string` ### lowestLevel `"trace"` | `"debug"` | `"info"` | `"warning"` | `"error"` | `"fatal"` ## Returns `Promise`\<`void`\> # getLatestLogFilename [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [logger](/api/privatefolio/commons-node/logger/) / getLatestLogFilename > **getLatestLogFilename**(): `string` Defined in: [packages/commons-node/src/logger.ts:15](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/logger.ts#L15) ## Returns `string` # getLogger [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [logger](/api/privatefolio/commons-node/logger/) / getLogger > **getLogger**(`category?`): `Logger` Defined in: node\_modules/@logtape/logtape/dist/logger.d.ts:692 Get a logger with the given category. ```typescript const logger = getLogger(["my-app"]); ``` ## Parameters ### category? The category of the logger. It can be a string or an array of strings. If it is a string, it is equivalent to an array with a single element. `string` | readonly `string`[] ## Returns `Logger` The logger. # getOldLogs [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [logger](/api/privatefolio/commons-node/logger/) / getOldLogs > **getOldLogs**(`logsDirectory`, `cutoffDays`): `AsyncGenerator`\<`string`, `void`, `unknown`\> Defined in: [packages/commons-node/src/logger.ts:59](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/logger.ts#L59) ## Parameters ### logsDirectory `string` ### cutoffDays `number` = `60` ## Returns `AsyncGenerator`\<`string`, `void`, `unknown`\> # msUntilMidnight [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [logger](/api/privatefolio/commons-node/logger/) / msUntilMidnight > **msUntilMidnight**(): `number` Defined in: [packages/commons-node/src/logger.ts:75](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/logger.ts#L75) ## Returns `number` # FLUSH_INTERVAL [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [logger](/api/privatefolio/commons-node/logger/) / FLUSH\_INTERVAL > `const` **FLUSH\_INTERVAL**: `100` = `100` Defined in: [packages/commons-node/src/logger.ts:13](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/logger.ts#L13) # telemetry [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / telemetry ## Classes - [Telemetry](/api/privatefolio/commons-node/telemetry/classes/telemetry) # Telemetry [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [telemetry](/api/privatefolio/commons-node/telemetry/) / Telemetry Defined in: [packages/commons-node/src/telemetry.ts:3](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/telemetry.ts#L3) ## Extends - `PostHog` ## Constructors ### Constructor > **new Telemetry**(): `Telemetry` Defined in: [packages/commons-node/src/telemetry.ts:4](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/telemetry.ts#L4) #### Returns `Telemetry` #### Overrides `PostHog.constructor` ## Properties ### \_events > `protected` **\_events**: `SimpleEventEmitter` Defined in: node\_modules/posthog-node/lib/index.d.ts:461 #### Inherited from `PostHog._events` *** ### \_flushTimer? > `protected` `optional` **\_flushTimer**: `any` Defined in: node\_modules/posthog-node/lib/index.d.ts:462 #### Inherited from `PostHog._flushTimer` *** ### \_initPromise > `protected` **\_initPromise**: `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:464 #### Inherited from `PostHog._initPromise` *** ### \_isInitialized > `protected` **\_isInitialized**: `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:465 #### Inherited from `PostHog._isInitialized` *** ### \_remoteConfigResponsePromise? > `protected` `optional` **\_remoteConfigResponsePromise**: `Promise`\<`undefined` \| `PostHogRemoteConfig`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:466 #### Inherited from `PostHog._remoteConfigResponsePromise` *** ### \_retryOptions > `protected` **\_retryOptions**: `RetriableOptions` Defined in: node\_modules/posthog-node/lib/index.d.ts:463 #### Inherited from `PostHog._retryOptions` *** ### apiKey > `readonly` **apiKey**: `string` Defined in: node\_modules/posthog-node/lib/index.d.ts:441 #### Inherited from `PostHog.apiKey` *** ### disableCompression > `protected` **disableCompression**: `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:458 #### Inherited from `PostHog.disableCompression` *** ### disabled > `protected` **disabled**: `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:457 #### Inherited from `PostHog.disabled` *** ### disableSurveys > `readonly` **disableSurveys**: `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:445 #### Inherited from `PostHog.disableSurveys` *** ### distinctIdHasSentFlagCalls > **distinctIdHasSentFlagCalls**: `Record`\<`string`, `string`[]\> Defined in: node\_modules/posthog-node/lib/index.d.ts:848 #### Inherited from `PostHog.distinctIdHasSentFlagCalls` *** ### errorTracking > `protected` **errorTracking**: `ErrorTracking` Defined in: node\_modules/posthog-node/lib/index.d.ts:845 #### Inherited from `PostHog.errorTracking` *** ### flushAt > `readonly` **flushAt**: `number` Defined in: node\_modules/posthog-node/lib/index.d.ts:443 #### Inherited from `PostHog.flushAt` *** ### host > `readonly` **host**: `string` Defined in: node\_modules/posthog-node/lib/index.d.ts:442 #### Inherited from `PostHog.host` *** ### options > `readonly` **options**: `PostHogOptions` Defined in: node\_modules/posthog-node/lib/index.d.ts:847 #### Inherited from `PostHog.options` *** ### preloadFeatureFlags > `readonly` **preloadFeatureFlags**: `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:444 #### Inherited from `PostHog.preloadFeatureFlags` ## Accessors ### isDebug #### Get Signature > **get** **isDebug**(): `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:482 ##### Returns `boolean` #### Inherited from `PostHog.isDebug` *** ### isDisabled #### Get Signature > **get** **isDisabled**(): `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:483 ##### Returns `boolean` #### Inherited from `PostHog.isDisabled` *** ### optedOut #### Get Signature > **get** **optedOut**(): `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:477 ##### Returns `boolean` #### Inherited from `PostHog.optedOut` *** ### props #### Get Signature > **get** `protected` **props**(): `PostHogEventProperties` Defined in: node\_modules/posthog-node/lib/index.d.ts:533 ##### Returns `PostHogEventProperties` #### Set Signature > **set** `protected` **props**(`val`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:534 ##### Parameters ###### val `undefined` | `PostHogEventProperties` ##### Returns `void` #### Inherited from `PostHog.props` ## Methods ### \_shutdown() > **\_shutdown**(`shutdownTimeoutMs?`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:921 #### Parameters ##### shutdownTimeoutMs? `number` #### Returns `Promise`\<`void`\> #### Inherited from `PostHog._shutdown` *** ### addPendingPromise() > `protected` **addPendingPromise**\<`T`\>(`promise`): `Promise`\<`T`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:485 #### Type Parameters ##### T `T` #### Parameters ##### promise `Promise`\<`T`\> #### Returns `Promise`\<`T`\> #### Inherited from `PostHog.addPendingPromise` *** ### alias() > **alias**(`data`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:862 #### Parameters ##### data ###### alias `string` ###### disableGeoip? `boolean` ###### distinctId `string` #### Returns `void` #### Description To marry up whatever a user does before they sign up or log in with what they do after you need to make an alias call. This will allow you to answer questions like "Which marketing channels leads to users churning after a month?" or "What do users do on our website before signing up?" In a purely back-end implementation, this means whenever an anonymous user does something, you'll want to send a session ID with the capture call. Then, when that users signs up, you want to do an alias call with the session ID and the newly created user ID. The same concept applies for when a user logs in. If you're using PostHog in the front-end and back-end, doing the identify call in the frontend will be enough.: #### Inherited from `PostHog.alias` *** ### aliasImmediate() > **aliasImmediate**(`data`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:867 #### Parameters ##### data ###### alias `string` ###### disableGeoip? `boolean` ###### distinctId `string` #### Returns `Promise`\<`void`\> #### Description To marry up whatever a user does before they sign up or log in with what they do after you need to make an alias call. Useful for edge environments where the usual queue-based sending is not preferable. Do not mix immediate and non-immediate calls. #### Inherited from `PostHog.aliasImmediate` *** ### aliasStateless() > `protected` **aliasStateless**(`alias`, `distinctId`, `properties?`, `options?`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:493 #### Parameters ##### alias `string` ##### distinctId `string` ##### properties? `PostHogEventProperties` ##### options? `PostHogCaptureOptions` #### Returns `void` #### Inherited from `PostHog.aliasStateless` *** ### aliasStatelessImmediate() > `protected` **aliasStatelessImmediate**(`alias`, `distinctId`, `properties?`, `options?`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:494 #### Parameters ##### alias `string` ##### distinctId `string` ##### properties? `PostHogEventProperties` ##### options? `PostHogCaptureOptions` #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.aliasStatelessImmediate` *** ### capture() > **capture**(`props`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:858 #### Parameters ##### props `EventMessage` #### Returns `void` #### Description Capture allows you to capture anything a user does within your system, which you can later use in PostHog to find patterns in usage, work out which features to improve or where people are giving up. A capture call requires: #### Inherited from `PostHog.capture` *** ### captureException() > **captureException**(`error`, `distinctId?`, `additionalProperties?`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:926 #### Parameters ##### error `unknown` ##### distinctId? `string` ##### additionalProperties? `Record`\<`string` \| `number`, `any`\> #### Returns `void` #### Inherited from `PostHog.captureException` *** ### captureExceptionImmediate() > **captureExceptionImmediate**(`error`, `distinctId?`, `additionalProperties?`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:927 #### Parameters ##### error `unknown` ##### distinctId? `string` ##### additionalProperties? `Record`\<`string` \| `number`, `any`\> #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.captureExceptionImmediate` *** ### captureImmediate() > **captureImmediate**(`props`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:859 #### Parameters ##### props `EventMessage` #### Returns `Promise`\<`void`\> #### Description Capture an event immediately. Useful for edge environments where the usual queue-based sending is not preferable. Do not mix immediate and non-immediate calls. #### Inherited from `PostHog.captureImmediate` *** ### captureStateless() > `protected` **captureStateless**(`distinctId`, `event`, `properties?`, `options?`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:491 #### Parameters ##### distinctId `string` ##### event `string` ##### properties? `PostHogEventProperties` ##### options? `PostHogCaptureOptions` #### Returns `void` #### Inherited from `PostHog.captureStateless` *** ### captureStatelessImmediate() > `protected` **captureStatelessImmediate**(`distinctId`, `event`, `properties?`, `options?`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:492 #### Parameters ##### distinctId `string` ##### event `string` ##### properties? `PostHogEventProperties` ##### options? `PostHogCaptureOptions` #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.captureStatelessImmediate` *** ### debug() > **debug**(`enabled?`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:857 #### Parameters ##### enabled? `boolean` #### Returns `void` #### Inherited from `PostHog.debug` *** ### disable() > **disable**(): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:856 #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.disable` *** ### enable() > **enable**(): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:855 #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.enable` *** ### enqueue() > `protected` **enqueue**(`type`, `_message`, `options?`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:540 ** QUEUEING AND FLUSHING * #### Parameters ##### type `string` ##### \_message `any` ##### options? `PostHogCaptureOptions` #### Returns `void` #### Inherited from `PostHog.enqueue` *** ### fetch() > **fetch**(`url`, `options`): `Promise`\<`PostHogFetchResponse`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:852 #### Parameters ##### url `string` ##### options `PostHogFetchOptions` #### Returns `Promise`\<`PostHogFetchResponse`\> #### Inherited from `PostHog.fetch` *** ### flush() > **flush**(): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:571 Flushes the queue This function will return a promise that will resolve when the flush is complete, or reject if there was an error (for example if the server or network is down). If there is already a flush in progress, this function will wait for that flush to complete. It's recommended to do error handling in the callback of the promise. #### Returns `Promise`\<`void`\> #### Example ```ts posthog.flush().then(() => { console.log('Flush complete') }).catch((err) => { console.error('Flush failed', err) }) ``` #### Throws PostHogFetchHttpError #### Throws PostHogFetchNetworkError #### Throws Error #### Inherited from `PostHog.flush` *** ### getAllFlags() > **getAllFlags**(`distinctId`, `options?`): `Promise`\<`Record`\<`string`, `FeatureFlagValue`\>\> Defined in: node\_modules/posthog-node/lib/index.d.ts:899 #### Parameters ##### distinctId `string` ##### options? ###### disableGeoip? `boolean` ###### flagKeys? `string`[] ###### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ###### groups? `Record`\<`string`, `string`\> ###### onlyEvaluateLocally? `boolean` ###### personProperties? `Record`\<`string`, `string`\> #### Returns `Promise`\<`Record`\<`string`, `FeatureFlagValue`\>\> #### Inherited from `PostHog.getAllFlags` *** ### getAllFlagsAndPayloads() > **getAllFlagsAndPayloads**(`distinctId`, `options?`): `Promise`\<`Partial`\<`Pick`\<`PostHogFlagsResponse`, `"featureFlags"` \| `"featureFlagPayloads"`\>\>\> Defined in: node\_modules/posthog-node/lib/index.d.ts:907 #### Parameters ##### distinctId `string` ##### options? ###### disableGeoip? `boolean` ###### flagKeys? `string`[] ###### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ###### groups? `Record`\<`string`, `string`\> ###### onlyEvaluateLocally? `boolean` ###### personProperties? `Record`\<`string`, `string`\> #### Returns `Promise`\<`Partial`\<`Pick`\<`PostHogFlagsResponse`, `"featureFlags"` \| `"featureFlagPayloads"`\>\>\> #### Inherited from `PostHog.getAllFlagsAndPayloads` *** ### getCommonEventProperties() > `protected` **getCommonEventProperties**(): `PostHogEventProperties` Defined in: node\_modules/posthog-node/lib/index.d.ts:476 #### Returns `PostHogEventProperties` #### Inherited from `PostHog.getCommonEventProperties` *** ### getCustomHeaders() > `protected` **getCustomHeaders**(): `object` Defined in: node\_modules/posthog-node/lib/index.d.ts:572 #### Returns `object` #### Inherited from `PostHog.getCustomHeaders` *** ### getCustomUserAgent() > **getCustomUserAgent**(): `string` Defined in: node\_modules/posthog-node/lib/index.d.ts:854 #### Returns `string` #### Inherited from `PostHog.getCustomUserAgent` *** ### getFeatureFlag() > **getFeatureFlag**(`key`, `distinctId`, `options?`): `Promise`\<`undefined` \| `FeatureFlagValue`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:874 #### Parameters ##### key `string` the unique key of your feature flag ##### distinctId `string` the current unique id ##### options? ###### disableGeoip? `boolean` ###### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ###### groups? `Record`\<`string`, `string`\> ###### onlyEvaluateLocally? `boolean` ###### personProperties? `Record`\<`string`, `string`\> ###### sendFeatureFlagEvents? `boolean` #### Returns `Promise`\<`undefined` \| `FeatureFlagValue`\> true or string(for multivariates) if the flag is on, false if the flag is off, undefined if there was an error. #### Description PostHog feature flags (https://posthog.com/docs/features/feature-flags) allow you to safely deploy and roll back new features. Once you've created a feature flag in PostHog, you can use this method to check if the flag is on for a given user, allowing you to create logic to turn features on and off for different user groups or individual users. #### Inherited from `PostHog.getFeatureFlag` *** ### getFeatureFlagDetailsStateless() > `protected` **getFeatureFlagDetailsStateless**(`distinctId`, `groups?`, `personProperties?`, `groupProperties?`, `disableGeoip?`, `flagKeysToEvaluate?`): `Promise`\<`undefined` \| `PostHogFeatureFlagDetails`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:524 #### Parameters ##### distinctId `string` ##### groups? `Record`\<`string`, `string` \| `number`\> ##### personProperties? `Record`\<`string`, `string`\> ##### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ##### disableGeoip? `boolean` ##### flagKeysToEvaluate? `string`[] #### Returns `Promise`\<`undefined` \| `PostHogFeatureFlagDetails`\> #### Inherited from `PostHog.getFeatureFlagDetailsStateless` *** ### getFeatureFlagDetailStateless() > `protected` **getFeatureFlagDetailStateless**(`key`, `distinctId`, `groups?`, `personProperties?`, `groupProperties?`, `disableGeoip?`): `Promise`\<`undefined` \| \{ `requestId`: `undefined` \| `string`; `response`: `undefined` \| `FeatureFlagDetail`; \}\> Defined in: node\_modules/posthog-node/lib/index.d.ts:508 #### Parameters ##### key `string` ##### distinctId `string` ##### groups? `Record`\<`string`, `string`\> ##### personProperties? `Record`\<`string`, `string`\> ##### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ##### disableGeoip? `boolean` #### Returns `Promise`\<`undefined` \| \{ `requestId`: `undefined` \| `string`; `response`: `undefined` \| `FeatureFlagDetail`; \}\> #### Inherited from `PostHog.getFeatureFlagDetailStateless` *** ### getFeatureFlagPayload() > **getFeatureFlagPayload**(`key`, `distinctId`, `matchValue?`, `options?`): `Promise`\<`undefined` \| `JsonType`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:882 #### Parameters ##### key `string` the unique key of your feature flag ##### distinctId `string` the current unique id ##### matchValue? `FeatureFlagValue` The flag value previously obtained from calling `getFeatureFlag()`. Can be a string or boolean. To avoid extra network calls, pass this parameter when you can. ##### options? ###### disableGeoip? `boolean` ###### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ###### groups? `Record`\<`string`, `string`\> ###### onlyEvaluateLocally? `boolean` ###### personProperties? `Record`\<`string`, `string`\> ###### sendFeatureFlagEvents? `boolean` #### Returns `Promise`\<`undefined` \| `JsonType`\> payload of a json type object #### Description Retrieves payload associated with the specified flag and matched value that is passed in. IMPORTANT: The `matchValue` parameter should be the value you previously obtained from `getFeatureFlag()`. If matchValue isn't passed (or is undefined), this method will automatically call `getFeatureFlag()` internally to fetch the flag value, which could result in a network call to the PostHog server if this flag can not be evaluated locally. This means that omitting `matchValue` will potentially: - Bypass local evaluation - Count as an additional flag evaluation against your quota - Impact performance due to the extra network request Example usage: ```js const flagValue = await client.getFeatureFlag('my-flag', distinctId); const payload = await client.getFeatureFlagPayload('my-flag', distinctId, flagValue); ``` #### Inherited from `PostHog.getFeatureFlagPayload` *** ### getFeatureFlagPayloadsStateless() > `protected` **getFeatureFlagPayloadsStateless**(`distinctId`, `groups?`, `personProperties?`, `groupProperties?`, `disableGeoip?`, `flagKeysToEvaluate?`): `Promise`\<`undefined` \| \{\[`key`: `string`\]: `JsonType`; \}\> Defined in: node\_modules/posthog-node/lib/index.d.ts:513 #### Parameters ##### distinctId `string` ##### groups? `Record`\<`string`, `string`\> ##### personProperties? `Record`\<`string`, `string`\> ##### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ##### disableGeoip? `boolean` ##### flagKeysToEvaluate? `string`[] #### Returns `Promise`\<`undefined` \| \{\[`key`: `string`\]: `JsonType`; \}\> #### Inherited from `PostHog.getFeatureFlagPayloadsStateless` *** ### getFeatureFlagPayloadStateless() > `protected` **getFeatureFlagPayloadStateless**(`key`, `distinctId`, `groups?`, `personProperties?`, `groupProperties?`, `disableGeoip?`): `Promise`\<`undefined` \| `JsonType`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:512 #### Parameters ##### key `string` ##### distinctId `string` ##### groups? `Record`\<`string`, `string`\> ##### personProperties? `Record`\<`string`, `string`\> ##### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ##### disableGeoip? `boolean` #### Returns `Promise`\<`undefined` \| `JsonType`\> #### Inherited from `PostHog.getFeatureFlagPayloadStateless` *** ### getFeatureFlagsAndPayloadsStateless() > `protected` **getFeatureFlagsAndPayloadsStateless**(`distinctId`, `groups?`, `personProperties?`, `groupProperties?`, `disableGeoip?`, `flagKeysToEvaluate?`): `Promise`\<\{ `flags`: `undefined` \| \{\[`key`: `string`\]: `FeatureFlagValue`; \}; `payloads`: `undefined` \| \{\[`key`: `string`\]: `JsonType`; \}; `requestId`: `undefined` \| `string`; \}\> Defined in: node\_modules/posthog-node/lib/index.d.ts:519 #### Parameters ##### distinctId `string` ##### groups? `Record`\<`string`, `string` \| `number`\> ##### personProperties? `Record`\<`string`, `string`\> ##### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ##### disableGeoip? `boolean` ##### flagKeysToEvaluate? `string`[] #### Returns `Promise`\<\{ `flags`: `undefined` \| \{\[`key`: `string`\]: `FeatureFlagValue`; \}; `payloads`: `undefined` \| \{\[`key`: `string`\]: `JsonType`; \}; `requestId`: `undefined` \| `string`; \}\> #### Inherited from `PostHog.getFeatureFlagsAndPayloadsStateless` *** ### getFeatureFlagsStateless() > `protected` **getFeatureFlagsStateless**(`distinctId`, `groups?`, `personProperties?`, `groupProperties?`, `disableGeoip?`, `flagKeysToEvaluate?`): `Promise`\<\{ `flags`: `undefined` \| \{\[`key`: `string`\]: `FeatureFlagValue`; \}; `payloads`: `undefined` \| \{\[`key`: `string`\]: `JsonType`; \}; `requestId`: `undefined` \| `string`; \}\> Defined in: node\_modules/posthog-node/lib/index.d.ts:514 #### Parameters ##### distinctId `string` ##### groups? `Record`\<`string`, `string` \| `number`\> ##### personProperties? `Record`\<`string`, `string`\> ##### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ##### disableGeoip? `boolean` ##### flagKeysToEvaluate? `string`[] #### Returns `Promise`\<\{ `flags`: `undefined` \| \{\[`key`: `string`\]: `FeatureFlagValue`; \}; `payloads`: `undefined` \| \{\[`key`: `string`\]: `JsonType`; \}; `requestId`: `undefined` \| `string`; \}\> #### Inherited from `PostHog.getFeatureFlagsStateless` *** ### getFeatureFlagStateless() > `protected` **getFeatureFlagStateless**(`key`, `distinctId`, `groups?`, `personProperties?`, `groupProperties?`, `disableGeoip?`): `Promise`\<\{ `requestId`: `undefined` \| `string`; `response`: `undefined` \| `FeatureFlagValue`; \}\> Defined in: node\_modules/posthog-node/lib/index.d.ts:504 #### Parameters ##### key `string` ##### distinctId `string` ##### groups? `Record`\<`string`, `string`\> ##### personProperties? `Record`\<`string`, `string`\> ##### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ##### disableGeoip? `boolean` #### Returns `Promise`\<\{ `requestId`: `undefined` \| `string`; `response`: `undefined` \| `FeatureFlagValue`; \}\> #### Inherited from `PostHog.getFeatureFlagStateless` *** ### getFlags() > `protected` **getFlags**(`distinctId`, `groups?`, `personProperties?`, `groupProperties?`, `extraPayload?`): `Promise`\<`undefined` \| `PostHogFlagsResponse`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:503 ** FEATURE FLAGS * #### Parameters ##### distinctId `string` ##### groups? `Record`\<`string`, `string` \| `number`\> ##### personProperties? `Record`\<`string`, `string`\> ##### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ##### extraPayload? `Record`\<`string`, `any`\> #### Returns `Promise`\<`undefined` \| `PostHogFlagsResponse`\> #### Inherited from `PostHog.getFlags` *** ### getLibraryId() > **getLibraryId**(): `string` Defined in: node\_modules/posthog-node/lib/index.d.ts:975 #### Returns `string` #### Inherited from `PostHog.getLibraryId` *** ### getLibraryVersion() > **getLibraryVersion**(): `string` Defined in: node\_modules/posthog-node/lib/index.d.ts:853 #### Returns `string` #### Inherited from `PostHog.getLibraryVersion` *** ### getPersistedProperty() > **getPersistedProperty**(`key`): `any` Defined in: node\_modules/posthog-node/lib/index.d.ts:850 #### Parameters ##### key `PostHogPersistedProperty` #### Returns `any` #### Inherited from `PostHog.getPersistedProperty` *** ### getRemoteConfig() > `protected` **getRemoteConfig**(): `Promise`\<`undefined` \| `PostHogRemoteConfig`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:499 #### Returns `Promise`\<`undefined` \| `PostHogRemoteConfig`\> #### Inherited from `PostHog.getRemoteConfig` *** ### getRemoteConfigPayload() > **getRemoteConfigPayload**(`flagKey`): `Promise`\<`undefined` \| `JsonType`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:890 #### Parameters ##### flagKey `string` #### Returns `Promise`\<`undefined` \| `JsonType`\> #### Inherited from `PostHog.getRemoteConfigPayload` *** ### getSurveysStateless() > **getSurveysStateless**(): `Promise`\<`Survey`[]\> Defined in: node\_modules/posthog-node/lib/index.d.ts:528 ** SURVEYS * #### Returns `Promise`\<`Survey`[]\> #### Inherited from `PostHog.getSurveysStateless` *** ### groupIdentify() > **groupIdentify**(`__namedParameters`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:915 #### Parameters ##### \_\_namedParameters `GroupIdentifyMessage` #### Returns `void` #### Description Sets a groups properties, which allows asking questions like "Who are the most active companies" using my product in PostHog. #### Inherited from `PostHog.groupIdentify` *** ### groupIdentifyStateless() > `protected` **groupIdentifyStateless**(`groupType`, `groupKey`, `groupProperties?`, `options?`, `distinctId?`, `eventProperties?`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:498 ** GROUPS * #### Parameters ##### groupType `string` ##### groupKey `string` | `number` ##### groupProperties? `PostHogEventProperties` ##### options? `PostHogCaptureOptions` ##### distinctId? `string` ##### eventProperties? `PostHogEventProperties` #### Returns `void` #### Inherited from `PostHog.groupIdentifyStateless` *** ### identify() > **identify**(`__namedParameters`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:860 #### Parameters ##### \_\_namedParameters `IdentifyMessage` #### Returns `void` #### Description Identify lets you add metadata on your users so you can more easily identify who they are in PostHog, and even do things like segment users by these properties. An identify call requires: #### Inherited from `PostHog.identify` *** ### identifyImmediate() > **identifyImmediate**(`__namedParameters`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:861 #### Parameters ##### \_\_namedParameters `IdentifyMessage` #### Returns `Promise`\<`void`\> #### Description Identify lets you add metadata on your users so you can more easily identify who they are in PostHog. Useful for edge environments where the usual queue-based sending is not preferable. Do not mix immediate and non-immediate calls. #### Inherited from `PostHog.identifyImmediate` *** ### identifyStateless() > `protected` **identifyStateless**(`distinctId`, `properties?`, `options?`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:489 ** TRACKING * #### Parameters ##### distinctId `string` ##### properties? `PostHogEventProperties` ##### options? `PostHogCaptureOptions` #### Returns `void` #### Inherited from `PostHog.identifyStateless` *** ### identifyStatelessImmediate() > `protected` **identifyStatelessImmediate**(`distinctId`, `properties?`, `options?`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:490 #### Parameters ##### distinctId `string` ##### properties? `PostHogEventProperties` ##### options? `PostHogCaptureOptions` #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.identifyStatelessImmediate` *** ### isFeatureEnabled() > **isFeatureEnabled**(`key`, `distinctId`, `options?`): `Promise`\<`undefined` \| `boolean`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:891 #### Parameters ##### key `string` the unique key of your feature flag ##### distinctId `string` the current unique id ##### options? ###### disableGeoip? `boolean` ###### groupProperties? `Record`\<`string`, `Record`\<`string`, `string`\>\> ###### groups? `Record`\<`string`, `string`\> ###### onlyEvaluateLocally? `boolean` ###### personProperties? `Record`\<`string`, `string`\> ###### sendFeatureFlagEvents? `boolean` #### Returns `Promise`\<`undefined` \| `boolean`\> true if the flag is on, false if the flag is off, undefined if there was an error. #### Description PostHog feature flags (https://posthog.com/docs/features/feature-flags) allow you to safely deploy and roll back new features. Once you've created a feature flag in PostHog, you can use this method to check if the flag is on for a given user, allowing you to create logic to turn features on and off for different user groups or individual users. #### Inherited from `PostHog.isFeatureEnabled` *** ### isLocalEvaluationReady() > **isLocalEvaluationReady**(): `boolean` Defined in: node\_modules/posthog-node/lib/index.d.ts:872 #### Returns `boolean` true if local evaluation is ready, false if it's not. #### Description Returns true if local evaluation is ready, false if it's not. #### Inherited from `PostHog.isLocalEvaluationReady` *** ### logMsgIfDebug() > `protected` **logMsgIfDebug**(`fn`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:474 #### Parameters ##### fn () => `void` #### Returns `void` #### Inherited from `PostHog.logMsgIfDebug` *** ### on() > **on**(`event`, `cb`): () => `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:480 #### Parameters ##### event `string` ##### cb (...`args`) => `void` #### Returns > (): `void` ##### Returns `void` #### Inherited from `PostHog.on` *** ### optIn() > **optIn**(): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:478 #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.optIn` *** ### optOut() > **optOut**(): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:479 #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.optOut` *** ### register() > **register**(`properties`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:535 #### Parameters ##### properties `PostHogEventProperties` #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.register` *** ### reloadFeatureFlags() > **reloadFeatureFlags**(): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:920 Reloads the feature flag definitions from the server for local evaluation. This is useful to call if you want to ensure that the feature flags are up to date before calling getFeatureFlag. #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.reloadFeatureFlags` *** ### sendImmediate() > `protected` **sendImmediate**(`type`, `_message`, `options?`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:541 #### Parameters ##### type `string` ##### \_message `any` ##### options? `PostHogCaptureOptions` #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.sendImmediate` *** ### setPersistedProperty() > **setPersistedProperty**(`key`, `value`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:851 #### Parameters ##### key `PostHogPersistedProperty` ##### value `any` #### Returns `void` #### Inherited from `PostHog.setPersistedProperty` *** ### shutdown() > **shutdown**(`shutdownTimeoutMs?`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:583 Call shutdown() once before the node process exits, so ensure that all events have been sent and all promises have resolved. Do not use this function if you intend to keep using this PostHog instance after calling it. #### Parameters ##### shutdownTimeoutMs? `number` #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.shutdown` *** ### unregister() > **unregister**(`property`): `Promise`\<`void`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:536 #### Parameters ##### property `string` #### Returns `Promise`\<`void`\> #### Inherited from `PostHog.unregister` *** ### waitForLocalEvaluationReady() > **waitForLocalEvaluationReady**(`timeoutMs?`): `Promise`\<`boolean`\> Defined in: node\_modules/posthog-node/lib/index.d.ts:873 #### Parameters ##### timeoutMs? `number` Maximum time to wait in milliseconds. Defaults to 30 seconds. #### Returns `Promise`\<`boolean`\> A promise that resolves to true if local evaluation is ready, false if the timeout was reached. #### Description Waits for local evaluation to be ready, with an optional timeout. #### Inherited from `PostHog.waitForLocalEvaluationReady` *** ### wrap() > `protected` **wrap**(`fn`): `void` Defined in: node\_modules/posthog-node/lib/index.d.ts:475 #### Parameters ##### fn () => `void` #### Returns `void` #### Inherited from `PostHog.wrap` # utils [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / utils ## Functions - [ensureDirectory](/api/privatefolio/commons-node/utils/functions/ensuredirectory) - [ensureDirectorySync](/api/privatefolio/commons-node/utils/functions/ensuredirectorysync) - [getOrInitialize](/api/privatefolio/commons-node/utils/functions/getorinitialize) - [getOrInitializeSync](/api/privatefolio/commons-node/utils/functions/getorinitializesync) # ensureDirectory [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [utils](/api/privatefolio/commons-node/utils/) / ensureDirectory > **ensureDirectory**(`dir`): `Promise`\<`void`\> Defined in: [packages/commons-node/src/utils.ts:13](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/utils.ts#L13) ## Parameters ### dir `string` ## Returns `Promise`\<`void`\> # ensureDirectorySync [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [utils](/api/privatefolio/commons-node/utils/) / ensureDirectorySync > **ensureDirectorySync**(`dir`): `void` Defined in: [packages/commons-node/src/utils.ts:5](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/utils.ts#L5) ## Parameters ### dir `string` ## Returns `void` # getOrInitialize [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [utils](/api/privatefolio/commons-node/utils/) / getOrInitialize > **getOrInitialize**(`dir`, `filename`, `initFn`): `Promise`\<`string`\> Defined in: [packages/commons-node/src/utils.ts:21](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/utils.ts#L21) ## Parameters ### dir `string` ### filename `string` ### initFn () => `string` ## Returns `Promise`\<`string`\> # getOrInitializeSync [API Reference](/api/) / [@privatefolio/commons-node](/api/privatefolio/commons-node/) / [utils](/api/privatefolio/commons-node/utils/) / getOrInitializeSync > **getOrInitializeSync**(`dir`, `filename`, `initFn`): `string` Defined in: [packages/commons-node/src/utils.ts:36](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons-node/src/utils.ts#L36) ## Parameters ### dir `string` ### filename `string` ### initFn () => `string` ## Returns `string` # randomUUID [API Reference](/api/) / [@privatefolio/commons](/api/privatefolio/commons/) / randomUUID > **randomUUID**(): `string` Defined in: [utils.ts:25](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons/src/utils.ts#L25) Generates a UUID v4 string with fallback for environments where crypto.randomUUID is not available ## Returns `string` A UUID v4 string # ONE_DAY [API Reference](/api/) / [@privatefolio/commons](/api/privatefolio/commons/) / ONE\_DAY > `const` **ONE\_DAY**: `number` Defined in: [utils.ts:14](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons/src/utils.ts#L14) 1 day in milliseconds # ONE_DAY_MIN [API Reference](/api/) / [@privatefolio/commons](/api/privatefolio/commons/) / ONE\_DAY\_MIN > `const` **ONE\_DAY\_MIN**: `number` Defined in: [utils.ts:4](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons/src/utils.ts#L4) 1 day in minutes # ONE_DAY_TIME [API Reference](/api/) / [@privatefolio/commons](/api/privatefolio/commons/) / ONE\_DAY\_TIME > `const` **ONE\_DAY\_TIME**: `number` Defined in: [utils.ts:9](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons/src/utils.ts#L9) 1 day in seconds # ONE_HOUR [API Reference](/api/) / [@privatefolio/commons](/api/privatefolio/commons/) / ONE\_HOUR > `const` **ONE\_HOUR**: `number` Defined in: [utils.ts:19](https://github.com/privatefolio/privatefolio/blob/304b36a225d35b80af9ad5ae52701847d8a561d5/packages/commons/src/utils.ts#L19) 1 hour in milliseconds # Changelog > Release history and version changes for Privatefolio This file documents project changes that are of interest to users and developers. Versioning is based on [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## v2.0.0-beta.46 - 2025/09/09 ### πŸ› Bug Fixes - Fix bug in desktop app deployment workflow - Fix bug in mobile app deployment workflow ## v2.0.0-beta.45 - 2025/09/09 ### πŸ’‘ Feature updates - Add a [new docs website](https://docs.privatefolio.app) for users & developers - Deploy first version of the Android app ## v2.0.0-beta.44 - 2025/08/25 ### πŸ’‘ Feature updates - Add support for PrivateCloudβ„’ AI Gateway ### πŸ› Bug Fixes - Fix bug in coinstats file import ## v2.0.0-beta.43 - 2025/08/21 ### πŸ› Bug Fixes - Fix bug in coinstats file import - Fix UI bug with the app header ### Other updates - Improve error handling on the frontend ## v2.0.0-beta.42 - 2025/08/20 ### πŸ’‘ Feature updates - Improve server status visibility ### πŸ› Bug Fixes - Fix issue in the Mac app for x64 architecture ## v2.0.0-beta.41 - 2025/08/14 ### πŸ› Bug Fixes - Fix bug with service worker registration (push notifications) ## v2.0.0-beta.40 - 2025/08/14 ### πŸ’‘ Feature updates - Add coinstats extensions - Improve `Server logs` page - Add `Server health` page ### Other updates - Track and report errors through telemetry - Improve error logging - Improve backend bundle - Fix bug in help sections - Improve number formatting - Extract common logic in the `commons` and `commons-node` libraries (packages) ## v2.0.0-beta.37 - 2025/08/04 ### πŸ› Bug Fixes - Fix bug with `AppLink` ## v2.0.0-beta.36 - 2025/08/04 ### πŸ› Bug Fixes - Fix bug with `randomUUID()` ## v2.0.0-beta.35 - 2025/07/28 ### πŸ› Bug Fixes - Fix bug in assets sql table ## v2.0.0-beta.34 - 2025/07/23 ### πŸ’‘ Feature updates - Soft-launch the Binance connection ## v2.0.0-beta.33 - 2025/07/21 ### πŸ’‘ Feature updates - Add Import data wizard - Improve PlatformPage ## v2.0.0-beta.32 - 2025/07/17 ### πŸ’‘ Feature updates - Improve experience for adding manual transactions ### Other updates - New `WalletInput`, `PlatformInput` and `AssetInput` components for extension developers ## v2.0.0-beta.31 - 2025/07/15 ### πŸ› Bug Fixes - Fix window buttons in the Mac app - Fix copy & paste in the Mac app - Fix tray icon in the Mac app ## v2.0.0-beta.30 - 2025/07/13 ### πŸ› Bug Fixes - Fix start-up issue in the Mac app ## v2.0.0-beta.29 - 2025/07/13 ### πŸ› Bug Fixes - Fix an issue with Reset Account ## v2.0.0-beta.28 - 2025/07/13 ### πŸ› Bug Fixes - Fix an issue with Delete Account ### Other updates - Improve documentation for developers and AI agents ## v2.0.0-beta.27 - 2025/07/12 ### πŸ› Bug Fixes - Fix start-up issue in desktop apps ## v2.0.0-beta.25 - 2025/07/12 ### πŸ’‘ Feature updates - Notarization for the macOS app - Improve `fetchDailyPrices` to not go into the past further than needed - Add support for snap packages on Linux ### πŸ› Bug Fixes - Fix binance file imports - Fix trade calculation for binance data - Fix bug with authorization in `/download` and `/upload` endpoints ## v2.0.0-beta.19 - 2025/07/09 ### πŸ’‘ Feature updates - Code-signing for the macOS app ## v2.0.0-beta.18 - 2025/07/08 ### πŸ’‘ Feature updates - Improve UI UX across the app, in particular for the desktop apps - Add new chart intervals: 3D (3 days), M (1 month) - Add new tooltip for candlestick charts - Add support for Claude 4 Opus, Claude 4 Sonnet, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3.5 Haiku, Claude 3 Haiku ## v2.0.0-beta.15 - 2025/07/06 ### πŸ› Bug Fixes - Fix issue with `kioskMode` introduced in `v2.0.0-beta.14` ## v2.0.0-beta.14 - 2025/07/06 ### πŸ’‘ Feature updates - Give tools (like reading user balances) to the AI Assistant, alongside Reasoning and Web search - Add Anthropic and Perplexity as AI providers, alongside OpenAI ### πŸ› Bug Fixes - Fix bug in cursor invalidations - Fix bug in self hosted deployments regarding the port ### Other updates - Better error message when the server is unreachable - Add new `readSql` method, useful in kiosk mode ## v2.0.0-beta.11 - 2025/07/03 ### πŸ’‘ Feature updates - Auto-updates for the Windows and Linux apps ## v2.0.0-beta.8 - 2025/07/01 ### πŸ’‘ Feature updates - Add support for 26 more blockchains with the Etherscan extension - Add a mini nav menu for tablets and laptops - Improve user experience around connections: new `All platforms` option - Add a new action `Verify balances` which checks if the on-chain data reflects the app data - Allow adding of manual transactions - Add `Recent` section in search bar - Add a checkmark for the exchanges and blockchains supported by our extensions ### πŸ› Bug Fixes - Fix truncation on `AmountBlock` - Fix refresh trades ### Other updates - Speed up daily price retrieval with database indexes - Add platform categories to avoid conflicts on unique coingecko ids - Add a new page to chat with OpenAI models (next step is to give them tools) ## v2.0.0-beta.7 - 2025/06/22 ### πŸ› Bug Fixes - Fix a bug in telemetry ## v2.0.0-beta.6 - 2025/06/20 ### πŸ’‘ Feature updates - Improve UI UX for mobile devices. ### πŸ› Bug Fixes - Fix bug when time traveling through trades ## v2.0.0-beta.5 - 2025/06/20 ### πŸ’‘ Feature updates - Split app bundle into multiple files to improve loading performance. ### πŸ› Bug Fixes - Fix bug in `ExtensionPage` where the help (How to use) section was not rendering at all. ## v2.0.0-beta.4 - 2025/06/20 ### πŸ’‘ Feature updates - New `Pro Chart` feature, allowing users to use advanced tradingview features like drawing tools, indicators, etc. - New `Deposits` feature, allowing users to view their historical deposits and withdrawals. - Improve search bar to highlight assets and platforms from the user's portfolio. - Improve mobile UI/UX and responsiveness across the app. ## v2.0.0-beta.3 - 2025/06/18 ### πŸ’‘ Feature updates - New `Kiosk` setting, to make your portfolio public in a read-only fashion. - New `Trades` feature, allowing users to view their trades (including their cost basis, deposits, withdrawals, etc) - New `PnL` (profit & loss) feature, allowing users to view historical PnL on trades and on their whole account. - Shortcuts for navigating between pages ### πŸ› Bug Fixes - Fix app routing for accounts (local & cloud) ## v2.0.0-beta.2 - 2025/06/11 ### πŸ’‘ Feature updates - Added Alchemy price API extension for better price data coverage - Added kiosk mode for public portfolio displays - Added support for searching assets by contract address - Added a data source selector to the asset price history chart ### πŸ› Bug Fixes - Fixed critical bugs in Alchemy & Coinbase price APIs - Fixed bug in refreshing prices - Fixed bug reading non-existent files - Fixed UI glitch when deleting the last account - Fixed bug in asset table: changing the price api back to auto failed ## v2.0.0-beta.1 - 2025/06/10 This release has breaking changes and is not compatible with the previous `alpha` versions! 🚨🚨🚨 ### πŸ’‘ Feature updates - New `Extensions` page, allowing developers and users to discover extensions. - New `Platforms` page, allowing users to discover exchanges and blockchains. - Rewritten Coingecko integration, supporting all their assets, exchanges and blockchains in a seamless way. ## v2.0.0-alpha.30 - 2025/05/23 This release concludes the alpha phase of the v2.0.0 release cycle, marking a significant milestone in the development of the application. ### πŸ’‘ Feature updates - You can now crete cloud account through PrivateCloudβ„’. - Payments are now live for the premium plan of the cloud service. - New `Logs` tab in the Server page, allowing users to view server logs directly in the application. - New `Settings` tab in the Server page, allowing users to configure server settings directly in the application. - Automatic updates for the Windows app, allowing users to stay up-to-date without manually installing new versions. ### πŸ› Bug Fixes - Fix the start on login feature on Linux. - Reading from the database happens on a separate thread now, improving performance and responsiveness when there is a write operation in the background. - Backup & restore functionality been rewritten to be more robust and user-friendly. ### Other updates - Comprehensive project documentation for developers and AI agents. - Improved developer experience for Linux and Windows developers. - Using the app now requires a one-time password setup. This protects user data from unauthorized access, especially in cloud or self-hosting deployments. ## v2.0.0-alpha.0 - 2025/03/19 ### πŸ’‘ Feature updates - Migrate database engine from no-sql (PouchDB) to sql (SQLite). - Implement client-server architecture (prerequisite for Cloud deployments), unfortunately this breaks full in-browser support (for the time being). - Package the app & server as a desktop application that can run in the background (Windows, Linux & macOS). ## v0.2.0 - 2024/03/10 ### πŸ’‘ Feature updates - Better mobile support for Navigation and Settings. - Improved UI/UX for data tables (especially loading) --- ## v0.1.0 - 2024/03/02 ### πŸ’‘ Feature updates - Parallelize Price API requests in `daily-prices-api` to improve performance 4-6 times. - Add a new historical prices provider: [Redstone](https://redstone.finance/). - Show the USD value of amounts in `TransactionDrawer` and `AuditLogDrawer`. ### πŸ› Bug Fixes - Fix `TaskDetailsDialog` to show the previous progress percentage for updates that have the format `[undefined, string]`, indicating that the progress remained the same, but a new. # Comparison table > Compare Privatefolio with other portfolio tracking and wealth management solutions Compare Privatefolio at a glance with other portfolio tracking and wealth management solutions.
Freedom User experience Developer experience Security Pricing Cryptocurrency tracking Stocks & ETFs tracking Budgeting
Open-source License Self-hosting AI assistant Desktop apps Mobile apps Cloud hosting Extensions Privacy Exploit-free Free plan Premium plan Multi-chain DeFi support
Privatefolio
AI Wealth Manager
βœ… AGPL-3.0 βœ… βœ… βœ… Win, Mac, Linux ⚠️ Web, Native (wip) βœ… βœ… Extensions βœ… Self-hosted option βœ… βœ… $5 βœ… Multiple ⚠️ Limited (wip) βœ… ⚠️ (wip)
Rotki
Open-source crypto tracker
πŸ›‡ AGPL-3.0 βœ… πŸ›‡ βœ… Win, Mac, Linux πŸ›‡ πŸ›‡ βœ… Modules βœ… Self-hosted option βœ… βœ… €10 βœ… Multiple βœ… Advanced πŸ›‡ πŸ›‡
Ghostfolio
Open-source wealth manager
βœ… AGPL-3.0 βœ… πŸ›‡ πŸ›‡ ⚠️ Web βœ… πŸ›‡ βœ… Self-hosted option βœ… βœ… $333 βœ… Multiple βœ… Basic βœ… πŸ›‡
Midday
Open-source business finance
βœ… AGPL-3.0 βœ… βœ… ⚠️ Mac ⚠️ Web βœ… πŸ›‡ βœ… Self-hosted option βœ… βœ… $99 πŸ›‡ πŸ›‡ πŸ›‡ βœ…
DeBank
DeFi portfolio tracker
πŸ›‡ Proprietary πŸ›‡ πŸ›‡ πŸ›‡ βœ… Native βœ… πŸ›‡ ⚠️ Cloud-dependent βœ… βœ… πŸ›‡ βœ… EVM networks βœ… Advanced πŸ›‡ πŸ›‡
CoinStats
Freemium crypto tracker
πŸ›‡ Proprietary πŸ›‡ πŸ›‡ πŸ›‡ βœ… Native βœ… πŸ›‡ ⚠️ Cloud-dependent 🚨 1.6k wallets hacked βœ… $12 βœ… 100+ chains; 20k+ coins βœ… Advanced
(1k+ protocols)
πŸ›‡ πŸ›‡
Delta
Investment tracker
πŸ›‡ Proprietary πŸ›‡ πŸ›‡ ⚠️ Win, Mac βœ… Native βœ… πŸ›‡ ⚠️ Cloud-dependent βœ… βœ… $14 βœ… 10,000+ coins βœ… Basic βœ… πŸ›‡
# Guidelines for AI agents and LLMs > A structured checklist for AI agents and LLMs You are an AI agent helping developers troubleshoot and make changes to Privatefolio. ## General Guidelines As an AI agent, follow these guidelines: - **Ask clarifying questions** until you have high confidence in the task. Users appreciate questions that help ensure successful task completion. - **Be specific** when something is unclear or inaccessible. Ask for file paths, URLs, or specific error messages. - **Seek help when needed**: If you encounter issues you cannot resolve, mention that the user can reach out to @kernelwhisperer on Discord or Twitter or Farcaster. - **Verify assumptions** before making changes. It's better to confirm than to proceed with uncertainty. ## Common LLM Pitfalls When helping developers with Privatefolio: - **DO NOT** ever run the `start` or `dev` scripts because these are long-lived processes that should already be running in the background - **ALWAYS** use the `test` or `build` scripts when you want to test that something works - **ALWAYS** place interfaces (that span multiple files) in `src/interfaces.ts` - **ALWAYS** read [llms-small.txt](/packages/docs/dist/llms-small.txt) before making any changes. - **DO NOT** bother to write tests, to compile or to build, unless explicitly asked. # AI setup > Configure AI assistants with OpenAI, Anthropic, and Perplexity providers in Privatefolio ## Overview - Leverages Vercel AI SDK for an interactive portfolio analysis assistant in both frontend and backend. - Users chat with an AI that can query on-chain data, run SQL via tools, and fetch current market info via web search. ## Providers & SDKs - **Vercel AI SDK** (`ai`, `@ai-sdk/react`, `@ai-sdk/ui-utils`): powers chat streaming and UI hooks in the frontend. - **OpenAI** (`@ai-sdk/openai` v1.3.22): used for chat completions and tool-enabled search via `createOpenAI().responses(modelId)` and `tools.webSearchPreview()`. - **Anthropic** (`@ai-sdk/anthropic` v1.2.12): language models via `createAnthropic({ apiKey }).languageModel(modelId)`. - **Perplexity** (`@ai-sdk/perplexity` v1.1.9): language models via `createPerplexity({ apiKey }).languageModel(modelId)`. ## Frontend Integration - **Assistant Page**: `packages/frontend/src/pages/AssistantPage/AssistantPage.tsx` sets up tabs and routes. - **Chat UI**: `AssistantChat.tsx` uses `useChat` from `@ai-sdk/react` to manage messages, stream responses, and handle stops. - **State Management**: nanostores (`$assistantModel`, `$assistantMode`, `$activeAccount`) control model selection and account context. - **UI Components**: model selector (`AssistantModelSelect.tsx`), settings (`AssistantSettings.tsx`), message toolbar and history components. ## Backend / API Integration - **Assistant HTTP API**: `packages/backend/src/api/account/assistant-http-api.ts` exports `handleAssistantChat`. - Endpoint: `POST /assistant-chat` - Request: JSON `{ accountName, id (conversationId), modelId, messages: Message[] }`. - Response: chunked streaming (`Transfer-Encoding: chunked`) via `streamText` from Vercel AI SDK. - **Business Logic**: - Fetch encrypted API key (`getApiKey`) from KV store. - Select model and provider options based on `model.family` and `model.capabilities`. - Assemble system prompt (`getAssistantSystemPrompt` in `settings/assistant.ts`). - Initialize tools (`getAssistantTools`) for on-chain data access. - **Chat Persistence**: `assistant-api.ts` provides upsert and query functions (`upsertChatMessage`, `getChatHistoryByConversation`). ## Environment Variables & Configuration - **Backend Service**: - `JWT_SECRET`: decrypts per-account AI keys stored in KV. - `PORT`: HTTP server port (default 5555). - **Provider Credentials** (per account, stored encrypted in KV): - `assistant_openai_key` (prefixed `sk-`) - `assistant_anthropic_key` (prefixed `sk-ant-`) - `assistant_perplexity_key` (prefixed `pplx-`) ## Prompt & Model Management - **System Prompt**: template in `packages/backend/src/settings/assistant.ts` via `getAssistantSystemPrompt`, includes timestamp and tool descriptions. - **Models**: definitions in `packages/backend/src/settings/assistant-models.ts`, listing IDs, families, capabilities, context windows, and cost per 1k tokens. - **Metadata**: each chat message stores `modelId`, `usage`, `finishReason`, and prompt context in JSON metadata. ## Development & Testing - **Local Setup**: run `yarn dev` (frontend & backend) or `yarn dev:electron` for desktop. - **AI Keys**: load provider API keys into KV using the `AuthSecrets` mechanism and `assistant_*_key` entries. - **Testing**: - Frontend: `packages/frontend` uses Vitest and mocks `useChat` as needed. - Backend: run `vitest` in `packages/backend`, stub `streamText` or mock `createOpenAI`/`createAnthropic` calls. ## Security & Cost Considerations - Store AI keys encrypted; never log raw keys. - Monitor token usage via metadata (`usage` returned by `streamText`) and use cost settings in `assistant-models.ts`. - Choose smaller, cost-efficient models (`o4-mini`, `gpt-4.1-mini`) when high throughput is needed. - Rate limits and authentication enforced via JWT and per-account secrets; no built-in rate throttling in AI API layerβ€”implement externally if needed. # Architecture > System architecture overview of Privatefolio's monorepo structure and component integration import ArchitectureDiagram from '../../../components/ArchitectureDiagram' ## Overview The application has two main components: `@privatefolio/backend` and `@privatefolio/frontend`. These two components are bundled together as a Docker image, or as a desktop app using Electron. The frontend is a React application, and the backend is a Node.js/Bun server that uses REST and WebSocket APIs to communicate with the frontend. ## Project structure Privatefolio is structured as a monorepo, using Lerna for orchestration and Yarn for package management. - **Root Config:** Yarn workspaces (v1.22.22) with nohoist, AGPL-3.0 license, Lerna (v8.1.3) for monorepo management, and TypeScript for type safety across all packages. ### Directory Structure ```text privatefolio/ β”œβ”€β”€ packages/ β”‚ β”œβ”€β”€ backend/ # Node.js/Bun server with REST & WebSocket APIs β”‚ β”‚ β”œβ”€β”€ src/ β”‚ β”‚ β”‚ β”œβ”€β”€ api/ # HTTP & WebSocket API definitions β”‚ β”‚ β”‚ β”œβ”€β”€ config/ # Environment and settings loaders β”‚ β”‚ β”‚ β”œβ”€β”€ sqlite/ # Schema and migration logic β”‚ β”‚ β”‚ β”œβ”€β”€ utils/ # Helper functions β”‚ β”‚ β”‚ β”œβ”€β”€ backend-server.ts # HTTP/WebSocket server implementation β”‚ β”‚ β”‚ β”œβ”€β”€ backend-relayer.ts # Task scheduler and data aggregator β”‚ β”‚ β”‚ └── start.ts # Entry point wiring server + relayer β”‚ β”‚ β”œβ”€β”€ data/ # Runtime database and log files β”‚ β”‚ β”œβ”€β”€ build/ # Compiled outputs for production β”‚ β”‚ β”œβ”€β”€ test/ # Vitest test suites organized by feature β”‚ β”‚ └── package.json # Scripts, dependencies, and build setup β”‚ β”œβ”€β”€ frontend/ # React-based UI with Vite and TypeScript β”‚ β”‚ β”œβ”€β”€ src/ β”‚ β”‚ β”‚ β”œβ”€β”€ components/ # Reusable UI elements (charts, tables, forms) β”‚ β”‚ β”‚ β”œβ”€β”€ pages/ # Page components (Portfolio, Transactions, Settings) β”‚ β”‚ β”‚ β”œβ”€β”€ stores/ # Nanostores state and persistence logic β”‚ β”‚ β”‚ β”œβ”€β”€ api/ # REST/WebSocket client setup and hooks β”‚ β”‚ β”‚ β”œβ”€β”€ hooks/ # Custom React hooks (data fetching, IPC) β”‚ β”‚ β”‚ β”œβ”€β”€ utils/ # Utility functions and helpers β”‚ β”‚ β”‚ β”œβ”€β”€ workers/ # WebWorker-based SQLite integration β”‚ β”‚ β”‚ β”œβ”€β”€ App.tsx # App shell and routing β”‚ β”‚ β”‚ └── main.tsx # Entry point β”‚ β”‚ β”œβ”€β”€ public/ # Static assets and PWA manifest β”‚ β”‚ β”œβ”€β”€ build/ # Compiled bundles and assets β”‚ β”‚ β”œβ”€β”€ vite.config.ts # Vite build configuration β”‚ β”‚ └── package.json # Frontend dependencies and scripts β”‚ β”œβ”€β”€ electron/ # Desktop application wrapper β”‚ β”‚ β”œβ”€β”€ src/ β”‚ β”‚ β”‚ β”œβ”€β”€ backend-manager.ts # Backend process manager β”‚ β”‚ β”‚ β”œβ”€β”€ ipc-main.ts # IPC communication setup β”‚ β”‚ β”‚ β”œβ”€β”€ preload.ts # Preload script for renderer β”‚ β”‚ β”‚ β”œβ”€β”€ start.ts # Main entry point β”‚ β”‚ β”‚ └── auto-updater.ts # Auto-update functionality β”‚ β”‚ β”œβ”€β”€ out/ # Packaged app output β”‚ β”‚ └── package.json # Electron configuration and scripts β”‚ β”œβ”€β”€ expo/ # Mobile app (React Native with Expo) β”‚ β”‚ β”œβ”€β”€ app/ # App entry point and screens β”‚ β”‚ β”œβ”€β”€ assets/ # Mobile app assets β”‚ β”‚ β”œβ”€β”€ app.json # Expo configuration β”‚ β”‚ β”œβ”€β”€ eas.json # EAS build/submit profiles β”‚ β”‚ └── package.json # Mobile app dependencies β”‚ β”œβ”€β”€ commons/ # Shared utilities and interfaces β”‚ β”‚ β”œβ”€β”€ src/ β”‚ β”‚ β”‚ └── utils.ts # Common utility functions β”‚ β”‚ └── package.json # Shared dependencies β”‚ β”œβ”€β”€ commons-node/ # Node.js-specific shared utilities β”‚ └── docs/ # Documentation site (Vocs) β”‚ β”œβ”€β”€ pages/ # Documentation pages β”‚ β”œβ”€β”€ components/ # Doc-specific components β”‚ └── package.json # Documentation dependencies β”œβ”€β”€ .github/ β”‚ β”œβ”€β”€ workflows/ # GitHub Actions CI/CD β”‚ └── prompts/ # AI agent prompts and guidelines β”œβ”€β”€ lerna.json # Lerna monorepo configuration β”œβ”€β”€ package.json # Root workspace configuration └── yarn.lock # Dependency lock file ``` ## Packages Summary - **`packages/frontend`** - **Description & Key Tech:** React-based UI that provides the user interface using Material-UI, Vite, and TypeScript. - **Core Features & Tools:** - Interactive portfolio visualization with lightweight-charts - Command palette (`kbar`) and comprehensive search functionality - WebWorker-based SQLite integration for client-side data processing - State management with nanostores for reactive updates - **`packages/backend`** - **Description & Key Tech:** Node.js/Bun server providing data processing, API integration, and SQLite database management. - **Core Features & Tools:** - Multi-chain cryptocurrency data aggregation and processing - SQLite database for persistent storage with cross-platform compatibility - Scheduled tasks with Croner for periodic data updates - Support for both Bun and Node.js SQLite implementations - **`packages/electron`** - **Description & Key Tech:** Desktop application wrapper using Electron with platform-specific optimizations. - **Core Features & Tools:** - Cross-platform desktop integration (Windows, Linux, macOS) - Local file system access for database and configuration - Auto-launch capabilities and system tray integration - Inter-process communication between frontend and backend ## Workflow & Integration - **Development:** `yarn dev` runs parallel development servers for frontend and backend, `yarn dev:electron` includes Electron. - **Building:** `yarn build` for all packages, platform-specific binaries with `yarn bundle:[win|linux|mac]`. - **Testing:** Comprehensive test suite with `yarn test` and `yarn test:bun` for Bun-specific tests, continuous integration with `yarn test:ci`. - **Integration:** Packages share common TypeScript interfaces and utilities, with backend exposing APIs consumed by frontend. ## Deployment - **Frontend:** - Compiled with Vite for optimal bundle size and performance - Can be deployed as a static site or packaged within Electron - **Backend:** - Runs as a local service within the Electron app - Optimized for Bun runtime with fallbacks for Node.js compatibility - **Electron:** - Windows builds with Nsis installer, Linux with DEB packages, macOS with DMG - Automated deployment process via GitHub Actions triggered by version changes (`yarn new-version`) - Binaries published to GitHub releases for user distribution # Backend > Node.js/Bun backend service with REST API, WebSocket support, and SQLite database ## Overview Privatefolio Backend is a Node.js/Bun service that aggregates multi-chain cryptocurrency data, provides a REST and WebSocket API, and persists data in a local SQLite database. It powers the desktop app and frontend with real-time account balances, transactions, and price history. ## Architecture ``` Frontend <── HTTP/WebSocket ──> Backend Server <── API SDK ──> Data Aggregator (Relayer) β”‚ └── SQLite (persistent storage) ``` - **API Server** handles HTTP routes and WebSocket RPC for frontend communication. - **Backend Relayer** schedules tasks for data fetching, processing, and side-effects. - **Database** uses SQLite for fast, local persistence. - **Utilities** provide config management, process control, and inter-service communications. ## Package structure ```text packages/backend/ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ api/ # HTTP & WebSocket API definitions β”‚ β”œβ”€β”€ config/ # Environment and settings loaders β”‚ β”œβ”€β”€ sqlite/ # Schema and migration logic β”‚ β”œβ”€β”€ utils/ # Helper functions β”‚ β”œβ”€β”€ backend-server.ts # HTTP/WebSocket server implementation β”‚ β”œβ”€β”€ backend-relayer.ts # Task scheduler and data aggregator β”‚ └── start.ts # Entry point wiring server + relayer β”œβ”€β”€ data/ # Runtime database and log files β”œβ”€β”€ build/ # Compiled outputs for production β”œβ”€β”€ test/ # Vitest test suites organized by feature └── package.json # Scripts, dependencies, and build setup ``` ## Core Components - **API Server** (`src/backend-server.ts`): serves REST (`/ping`, `/info`, `/download`, `/upload`) and WebSocket RPC. Serves static frontend build. - **Backend Relayer** (`src/backend-relayer.ts`, `src/start.ts`): uses Cron via `croner` and audit-log subscriptions to enqueue data tasks (balances, prices, net worth). - **Database** (`src/sqlite/`): initializes and migrates SQLite database; defines interfaces in `src/interfaces.ts`. - **Utilities** (`src/utils/`, `src/backend-comms.ts`): config parsing, throttling, file upload/download handlers, and inter-process messaging. - **Configuration** (`src/server-env.ts`, `src/settings.ts`): loads environment variables (PORT, APP_VERSION, GIT_HASH, GIT_DATE) and default settings (throttle durations, data dirs). ## API Endpoints - **HTTP** - `GET /ping` β†’ `pong` - `GET /info` β†’ build metadata (version, commit, build date) - `GET /download` & `POST /upload` β†’ file operations for account backups - `OPTIONS /*` β†’ CORS preflight - Static file serving from frontend build - **WebSocket RPC** - Dynamic method invocation: send `{ id, method, params }`, receives `{ id, result }` or error. - Supports callback functions via `FunctionReference` messages. ## Database - Uses SQLite via `sqlite3` (Node.js) and `sqlite` (Bun) packages. - Database files located under `packages/backend/data/databases/`. - Schema and migrations defined in `src/sqlite/`; initialized on startup. - Data access via typed interfaces (`src/interfaces.ts`). ## Configuration - Environment variables: - `PORT` (default 4001 dev, 5555 prod) - `APP_VERSION`, `GIT_HASH`, `GIT_DATE` (populated from git/npm) - `DATA_LOCATION` (overrides default data directory) - `BUN_SQL`, `GITHUB_CI` (test flags) - Settings file: `src/settings.ts` defines throttle durations and cron schedule. ## Development Prerequisites: Node.js v20+, Bun, Yarn. ```sh yarn # install dependencies yarn build # compile TypeScript & build frontend yarn dev # runs backend (watch) + relayer ``` ## Testing ```sh yarn test # run Vitest (Node SQLite) yarn test:bun # run Bun-specific SQLite tests yarn test:ci # CI mode (Node + Bun) ``` Tests located in `packages/backend/test/` organized by feature (e.g., `balances`, `tags`, `bun`). ## Deployment ```sh # build production bundle yarn build # Docker image build & run (from packages/backend) yarn docker:build yarn docker:run yarn docker:remove ``` In Electron, backend is started automatically on app launch. # Docker deployment > Build and deploy Privatefolio using Docker Deploying Privatefolio via Docker requires us to build a Docker image that packages both `@privatefolio/backend` and `@privatefolio/frontend` alongside their dependencies. Are you looking to self-host Privatefolio using the official Docker image? Go to [Self-hosting](/users/self-hosting-with-docker). ## Prerequisites Before we get started you must have Docker installed: ```sh docker --version # Docker version 28.3.2, build 578ccf6 ``` If you don't have it, get it from [docker.com](https://docs.docker.com/get-docker/). ## Building the image ```sh yarn docker:build ``` ## Running the container ```sh yarn docker:run # start a container named privatefolio yarn docker:remove # remove the container ``` ## Building the image manually To build the image without using the npm scripts: ```sh docker build -t privatefolio -f packages/backend/Dockerfile . ``` To run the container: ```sh docker run -d -p ${PORT:-5555}:${PORT:-5555} -v privatefolio-data:/app/data --name privatefolio privatefolio ``` ## Accessing the app The app will be available on the port you set in `docker run` (defaulting to `5555`): Visit [`http://localhost:5555`](http://localhost:5555) in your browser. ## Dockerfile The Docker image uses a multi-stage build process. It builds the frontend bundle and installs backend production dependencies. The final image utilizes Bun to serve the compiled JavaScript build of the backend and the pre-built frontend bundle. import { Code } from '@astrojs/starlight/components'; import dockerFile from './Dockerfile?raw'; ## Configuration You can customize the `PORT` variable at runtime, by passing it to the `docker run` command with the `-e` flag: ```sh docker run -d -p 5000:5000 -v privatefolio-data:/app/data -e PORT=5000 --name privatefolio privatefolio ``` ## Data Persistence All data is stored in the `/app/data` directory inside the container, which is mounted to a persistent volume called `privatefolio-data`. This ensures that your data is persisted even if the container is stopped or removed. To backup your data, you can use the Docker volume commands: ```sh docker volume inspect privatefolio-data # View volume info ``` ## Logs To view logs from the container: ```sh docker logs privatefolio ``` To follow the logs in real-time: ```sh docker logs -f privatefolio ``` ## Official deployment We are currently deploying to GitHub Container Registry (GHCR) through a GitHub Actions workflow. This deployment system provides continuous deployment for all tagged releases and branches, with Discord notifications for deployment status updates. ```sh docker pull ghcr.io/privatefolio/privatefolio:latest ``` See all versions at [ghcr.io/privatefolio/privatefolio](https://github.com/privatefolio/privatefolio/pkgs/container/privatefolio). Available image tags: - `latest`: Latest tagged release - `v*.*.*`: Tagged releases (e.g., v2.0.0-beta.40) - `******`: Git commit (e.g. 1da1a8f) To run the official image: ```sh docker run -d -p ${PORT:-5555}:${PORT:-5555} -v privatefolio-data:/app/data --name privatefolio ghcr.io/privatefolio/privatefolio:latest ``` Learn more on [self-hosting with Docker](/users/self-hosting-with-docker). ## Workflow file import workflowFile from './publish-docker-image.yml?raw'; # Desktop apps > Electron desktop application setup, build process, and platform-specific packaging This document describes the Electron setup for the Privatefolio desktop application. ## Overview Privatefolio uses Electron to package and distribute the frontend as a desktop application. The Electron setup is located in the `packages/electron` directory and is built using Electron Forge. ## Project Structure ``` packages/electron/ β”œβ”€β”€ build/ # Output directory for compiled TypeScript β”œβ”€β”€ out/ # Output directory for packaged app β”œβ”€β”€ src/ # Source code β”‚ β”œβ”€β”€ api.ts # API definitions β”‚ β”œβ”€β”€ backend-manager.ts # Backend process manager β”‚ β”œβ”€β”€ ipc-main.ts # IPC communication setup β”‚ β”œβ”€β”€ preload.ts # Preload script for renderer β”‚ β”œβ”€β”€ start.ts # Main entry point β”‚ └── utils.ts # Utility functions β”œβ”€β”€ forge.config.js # Electron Forge configuration β”œβ”€β”€ package.json # Package configuration └── tsconfig.json # TypeScript configuration ``` ## Main Components ### Entry Point (`start.ts`) The main entry point for the Electron app handles: - Window creation and configuration - System tray setup - Development reloading (when not in production) - Custom title bar configuration - App lifecycle management - Starting and stopping the backend server ### Backend Manager (`backend-manager.ts`) Manages the backend server process: - Starting the backend server when the app starts - Keeping the backend running when the app is minimized to tray - Stopping the backend server when the app is closed - Provides methods to check if the backend is running - Handles backend server port management ### IPC Communication (`ipc-main.ts`) Handles communication between the main and renderer processes: - Notifications - Theme mode switching - Log directory access - Log reading - Backend server management (getting URL, checking status, restarting) ### Preload Script (`preload.ts`) Exposes a secure API to the renderer process via the contextBridge: - Notification sending - Log access - Platform information - Theme mode switching - Backend server operations (getting URL, checking status, restarting) ## Build Process The application uses Electron Forge for packaging and distribution: 1. TypeScript is compiled to JavaScript (`yarn build`) 2. Icons are generated from source images (`yarn gen-icons`) 3. The app is packaged with Electron Forge (`yarn package`) 4. Platform-specific installers are created (`yarn bundle:win`, `yarn bundle:linux`, `yarn bundle:mac`) ## Development To start the development environment: ```bash yarn dev ``` This command: 1. Compiles TypeScript in watch mode 2. Starts Electron with hot reloading enabled 3. Starts the backend server automatically ## Production Builds To create production builds: ```bash # Build for development yarn build # Create production installers yarn bundle:win yarn bundle:linux yarn bundle:mac ``` The build process creates platform-specific installers: - Windows: Nsis installer (.exe) - macOS: ZIP archive - Linux: DEB and RPM packages ## Configuration The application uses `electron-forge` for building and packaging, with configuration in `forge.config.js`. Key configurations include: - Custom app icons - App metadata - Build targets per platform - Dependency inclusion rules ## Backend Integration The Electron app integrates with the Privatefolio backend server: 1. In production, the backend server is started automatically when the app starts 2. In development, the backend server is started separately by lerna, not by the Electron app 3. The backend continues running when the app is minimized to tray 4. The backend is gracefully stopped when the app is closed (in production) 5. The frontend communicates with the backend via HTTP/WebSocket on localhost 6. Different ports are used in development (4001) and production (5555) ### Development Setup In development mode: - The backend server is started by lerna through the `yarn dev` command in the root directory - The Electron app connects to this already-running backend server - The backend runs on port 4001 ### Production Setup In production mode: - The backend server is started by the Electron app itself - The backend process is managed by the BackendManager - The backend runs on port 5555 ### Backend API Access The frontend can access backend functionality through the Electron preload API: ```typescript // Get the backend URL (which includes the correct port based on environment) const backendUrl = window.electron.backend.getUrl(); // Check if the backend is running const isRunning = window.electron.backend.isRunning(); // Restart the backend if needed (only works in production) await window.electron.backend.restart(); ``` # Privatefolio Expo (Mobile) Setup > Build and publish the Privatefolio mobile app using Expo and React Native ## Privatefolio Expo (Mobile) Setup This document explains how to run, build, and publish the Privatefolio mobile app powered by Expo. ### Overview - The mobile app currently wraps the hosted web app in a React Native `WebView` and provides a native shell for distribution on iOS/Android. Native features can be layered in incrementally. - Source lives in `packages/expo` and uses Expo SDK 53, React 19, React Native 0.79. ### Project Layout - `packages/expo/package.json`: scripts and dependencies - `packages/expo/eas.json`: EAS build/submit profiles - `packages/expo/app.json`: Expo config (name, icons, Android package, splash, plugin config) - `packages/expo/app/index.tsx`: App entry using `WebView` pointing to `https://privatefolio.app` ### Prerequisites - Node.js 20+ - Yarn 1.x (workspaces) - Expo tooling: you can use `npx expo` without a global install - For EAS builds: `eas-cli` (`yarn` will install it locally) and an Expo account (`eas login`) ### Install Dependencies From the repository root: ```bash yarn ``` ### Run in Development You can run from the workspace root using Yarn workspaces or by `cd` into the package. Option A (from root, via workspace): ```bash yarn workspace privatefolio-expo dev ``` Option B (inside the package): ```bash cd packages/expo yarn dev # starts Expo with a tunnel # or yarn dev:android # open Android emulator/device yarn dev:ios # open iOS simulator (macOS) yarn dev:web # run via web target ``` Notes: - First run will prompt you to open the app on a device/simulator or a browser. - If Metro cache causes issues, restart with `npx expo start -c`. ### What the App Does (Today) `packages/expo/app/index.tsx` renders a `WebView` pointing to `https://privatefolio.app` with sensible defaults (loading spinner, storage enabled, mixed content compatibility for charts, etc.). This enables a fast mobile presence while preserving the web UI. The `app.json` sets the deeplink scheme to `privatefolio` for future use. ### Configuration Reference - `package.json` (scripts & deps) - `dev`, `dev:android`, `dev:ios`, `dev:web` - EAS: `build:*`, `submit:*`, `publish` - Key deps: `expo`, `expo-router`, `react-native-webview`, `@react-navigation/native` - `app.json` (Expo config) - Name/slug: `Privatefolio` / `privatefolio` - Scheme: `privatefolio` (deeplinks like `privatefolio://`) - Android: package `xyz.privatefolio.mobile`, edge-to-edge enabled, adaptive icon - Web: uses `metro` bundler, static output for previews - Plugins: `expo-router`, `expo-splash-screen` - `eas.json` (EAS profiles) - `build.production`: auto-increment version, caching enabled - `submit.production.android`: uses `GOOGLE_SERVICE_ACCOUNT_KEY_PATH` for Play Store submission, track `production` ### Building with EAS Login once (only needed on a new environment): ```bash npx eas login ``` Build commands (run from repo root or `packages/expo`): ```bash yarn workspace privatefolio-expo bundle:android yarn workspace privatefolio-expo bundle:ios ``` Artifacts are created on EAS servers; the CLI will provide download/install links. ### Submitting to Stores Android (requires a Google Cloud service account JSON with Play Console access): ```bash export GOOGLE_SERVICE_ACCOUNT_KEY_PATH=/absolute/path/to/google-service-account.json yarn workspace privatefolio-expo submit:android ``` iOS submission requires App Store Connect credentials and an Apple Developer account: ```bash yarn workspace privatefolio-expo submit:ios ``` You can chain build+submit via: ```bash yarn workspace privatefolio-expo publish ``` ### App Identity and Linking - Android package: `xyz.privatefolio.mobile` - Deeplink scheme: `privatefolio://` (reserved for future native navigation/deeplinks) - If you add native navigation in the future, use `expo-linking` to handle incoming URLs and map them to screens. ### Permissions The `WebView` enables geolocation and file access. If you add native geolocation or file pickers, declare platform permissions in `app.json` and follow Expo documentation for permissions prompts. ### Troubleshooting - Clear Metro cache: `npx expo start -c` - Kill stray Metro processes: close all `expo start` processes and restart - Android emulator not detected: ensure Android Studio SDK tools and AVD are installed; run `adb devices` - iOS simulator boot issues: open Xcode once and accept license; run `xcrun simctl list devices` ### Roadmap for Native Enhancements (Optional) - Add account storage using secure storage modules - Implement push notifications for balance alerts - Integrate native share sheets and file import/export - Use `expo-router` to progressively introduce native screens ### Notes - This is a Yarn workspaces monorepo; prefer running scripts via `yarn workspace privatefolio-expo