UNPKG

@bsv/wallet-toolbox-client

Version:
179 lines 12.5 kB
import { ListActionsResult, ListOutputsResult } from '@bsv/sdk'; import { TableCertificate, TableCertificateField, TableCertificateX, TableCommission, TableMonitorEvent, TableOutput, TableOutputBasket, TableOutputTag, TableOutputTagMap, TableProvenTx, TableProvenTxReq, TableSettings, TableSyncState, TableTransaction, TableTxLabel, TableTxLabelMap, TableUser } from './schema/tables'; import { Knex } from 'knex'; import { AdminStatsResult, StorageProvider, StorageProviderOptions } from './StorageProvider'; import { DBType } from './StorageReader'; import { AuthId, FindCertificateFieldsArgs, FindCertificatesArgs, FindCommissionsArgs, FindForUserSincePagedArgs, FindMonitorEventsArgs, FindOutputBasketsArgs, FindOutputsArgs, FindOutputTagMapsArgs, FindOutputTagsArgs, FindPartialSincePagedArgs, FindProvenTxReqsArgs, FindProvenTxsArgs, FindSyncStatesArgs, FindTransactionsArgs, FindTxLabelMapsArgs, FindTxLabelsArgs, FindUsersArgs, ProvenOrRawTx, PurgeParams, PurgeResults, TrxToken, WalletStorageProvider } from '../sdk/WalletStorage.interfaces'; import { ValidListActionsArgs, ValidListOutputsArgs } from '../sdk/validationHelpers'; import { EntityTimeStamp } from '../sdk/types'; export interface StorageKnexOptions extends StorageProviderOptions { /** * Knex database interface initialized with valid connection configuration. */ knex: Knex; } export declare class StorageKnex extends StorageProvider implements WalletStorageProvider { knex: Knex; constructor(options: StorageKnexOptions); readSettings(): Promise<TableSettings>; getProvenOrRawTx(txid: string, trx?: TrxToken): Promise<ProvenOrRawTx>; dbTypeSubstring(source: string, fromOffset: number, forLength?: number): string; getRawTxOfKnownValidTransaction(txid?: string, offset?: number, length?: number, trx?: TrxToken): Promise<number[] | undefined>; getProvenTxsForUserQuery(args: FindForUserSincePagedArgs): Knex.QueryBuilder; getProvenTxsForUser(args: FindForUserSincePagedArgs): Promise<TableProvenTx[]>; getProvenTxReqsForUserQuery(args: FindForUserSincePagedArgs): Knex.QueryBuilder; getProvenTxReqsForUser(args: FindForUserSincePagedArgs): Promise<TableProvenTxReq[]>; getTxLabelMapsForUserQuery(args: FindForUserSincePagedArgs): Knex.QueryBuilder; getTxLabelMapsForUser(args: FindForUserSincePagedArgs): Promise<TableTxLabelMap[]>; getOutputTagMapsForUserQuery(args: FindForUserSincePagedArgs): Knex.QueryBuilder; getOutputTagMapsForUser(args: FindForUserSincePagedArgs): Promise<TableOutputTagMap[]>; listActions(auth: AuthId, vargs: ValidListActionsArgs): Promise<ListActionsResult>; listOutputs(auth: AuthId, vargs: ValidListOutputsArgs): Promise<ListOutputsResult>; insertProvenTx(tx: TableProvenTx, trx?: TrxToken): Promise<number>; insertProvenTxReq(tx: TableProvenTxReq, trx?: TrxToken): Promise<number>; insertUser(user: TableUser, trx?: TrxToken): Promise<number>; insertCertificateAuth(auth: AuthId, certificate: TableCertificateX): Promise<number>; insertCertificate(certificate: TableCertificateX, trx?: TrxToken): Promise<number>; insertCertificateField(certificateField: TableCertificateField, trx?: TrxToken): Promise<void>; insertOutputBasket(basket: TableOutputBasket, trx?: TrxToken): Promise<number>; insertTransaction(tx: TableTransaction, trx?: TrxToken): Promise<number>; insertCommission(commission: TableCommission, trx?: TrxToken): Promise<number>; insertOutput(output: TableOutput, trx?: TrxToken): Promise<number>; insertOutputTag(tag: TableOutputTag, trx?: TrxToken): Promise<number>; insertOutputTagMap(tagMap: TableOutputTagMap, trx?: TrxToken): Promise<void>; insertTxLabel(label: TableTxLabel, trx?: TrxToken): Promise<number>; insertTxLabelMap(labelMap: TableTxLabelMap, trx?: TrxToken): Promise<void>; insertMonitorEvent(event: TableMonitorEvent, trx?: TrxToken): Promise<number>; insertSyncState(syncState: TableSyncState, trx?: TrxToken): Promise<number>; updateCertificateField(certificateId: number, fieldName: string, update: Partial<TableCertificateField>, trx?: TrxToken): Promise<number>; updateCertificate(id: number, update: Partial<TableCertificate>, trx?: TrxToken): Promise<number>; updateCommission(id: number, update: Partial<TableCommission>, trx?: TrxToken): Promise<number>; updateOutputBasket(id: number, update: Partial<TableOutputBasket>, trx?: TrxToken): Promise<number>; updateOutput(id: number, update: Partial<TableOutput>, trx?: TrxToken): Promise<number>; updateOutputTagMap(outputId: number, tagId: number, update: Partial<TableOutputTagMap>, trx?: TrxToken): Promise<number>; updateOutputTag(id: number, update: Partial<TableOutputTag>, trx?: TrxToken): Promise<number>; updateProvenTxReq(id: number | number[], update: Partial<TableProvenTxReq>, trx?: TrxToken): Promise<number>; updateProvenTx(id: number, update: Partial<TableProvenTx>, trx?: TrxToken): Promise<number>; updateSyncState(id: number, update: Partial<TableSyncState>, trx?: TrxToken): Promise<number>; updateTransaction(id: number | number[], update: Partial<TableTransaction>, trx?: TrxToken): Promise<number>; updateTxLabelMap(transactionId: number, txLabelId: number, update: Partial<TableTxLabelMap>, trx?: TrxToken): Promise<number>; updateTxLabel(id: number, update: Partial<TableTxLabel>, trx?: TrxToken): Promise<number>; updateUser(id: number, update: Partial<TableUser>, trx?: TrxToken): Promise<number>; updateMonitorEvent(id: number, update: Partial<TableMonitorEvent>, trx?: TrxToken): Promise<number>; setupQuery<T extends object>(table: string, args: FindPartialSincePagedArgs<T>): Knex.QueryBuilder; findCertificateFieldsQuery(args: FindCertificateFieldsArgs): Knex.QueryBuilder; findCertificatesQuery(args: FindCertificatesArgs): Knex.QueryBuilder; findCommissionsQuery(args: FindCommissionsArgs): Knex.QueryBuilder; findOutputBasketsQuery(args: FindOutputBasketsArgs): Knex.QueryBuilder; findOutputsQuery(args: FindOutputsArgs, count?: boolean): Knex.QueryBuilder; findOutputTagMapsQuery(args: FindOutputTagMapsArgs): Knex.QueryBuilder; findOutputTagsQuery(args: FindOutputTagsArgs): Knex.QueryBuilder; findProvenTxReqsQuery(args: FindProvenTxReqsArgs): Knex.QueryBuilder; findProvenTxsQuery(args: FindProvenTxsArgs): Knex.QueryBuilder; findSyncStatesQuery(args: FindSyncStatesArgs): Knex.QueryBuilder; findTransactionsQuery(args: FindTransactionsArgs, count?: boolean): Knex.QueryBuilder; findTxLabelMapsQuery(args: FindTxLabelMapsArgs): Knex.QueryBuilder; findTxLabelsQuery(args: FindTxLabelsArgs): Knex.QueryBuilder; findUsersQuery(args: FindUsersArgs): Knex.QueryBuilder; findMonitorEventsQuery(args: FindMonitorEventsArgs): Knex.QueryBuilder; findCertificatesAuth(auth: AuthId, args: FindCertificatesArgs): Promise<TableCertificateX[]>; findOutputBasketsAuth(auth: AuthId, args: FindOutputBasketsArgs): Promise<TableOutputBasket[]>; findOutputsAuth(auth: AuthId, args: FindOutputsArgs): Promise<TableOutput[]>; findCertificateFields(args: FindCertificateFieldsArgs): Promise<TableCertificateField[]>; findCertificates(args: FindCertificatesArgs): Promise<TableCertificateX[]>; findCommissions(args: FindCommissionsArgs): Promise<TableCommission[]>; findOutputBaskets(args: FindOutputBasketsArgs): Promise<TableOutputBasket[]>; findOutputs(args: FindOutputsArgs): Promise<TableOutput[]>; findOutputTagMaps(args: FindOutputTagMapsArgs): Promise<TableOutputTagMap[]>; findOutputTags(args: FindOutputTagsArgs): Promise<TableOutputTag[]>; findProvenTxReqs(args: FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>; findProvenTxs(args: FindProvenTxsArgs): Promise<TableProvenTx[]>; findSyncStates(args: FindSyncStatesArgs): Promise<TableSyncState[]>; findTransactions(args: FindTransactionsArgs): Promise<TableTransaction[]>; findTxLabelMaps(args: FindTxLabelMapsArgs): Promise<TableTxLabelMap[]>; findTxLabels(args: FindTxLabelsArgs): Promise<TableTxLabel[]>; findUsers(args: FindUsersArgs): Promise<TableUser[]>; findMonitorEvents(args: FindMonitorEventsArgs): Promise<TableMonitorEvent[]>; getCount<T extends object>(q: Knex.QueryBuilder<T, T[]>): Promise<number>; countCertificateFields(args: FindCertificateFieldsArgs): Promise<number>; countCertificates(args: FindCertificatesArgs): Promise<number>; countCommissions(args: FindCommissionsArgs): Promise<number>; countOutputBaskets(args: FindOutputBasketsArgs): Promise<number>; countOutputs(args: FindOutputsArgs): Promise<number>; countOutputTagMaps(args: FindOutputTagMapsArgs): Promise<number>; countOutputTags(args: FindOutputTagsArgs): Promise<number>; countProvenTxReqs(args: FindProvenTxReqsArgs): Promise<number>; countProvenTxs(args: FindProvenTxsArgs): Promise<number>; countSyncStates(args: FindSyncStatesArgs): Promise<number>; countTransactions(args: FindTransactionsArgs): Promise<number>; countTxLabelMaps(args: FindTxLabelMapsArgs): Promise<number>; countTxLabels(args: FindTxLabelsArgs): Promise<number>; countUsers(args: FindUsersArgs): Promise<number>; countMonitorEvents(args: FindMonitorEventsArgs): Promise<number>; destroy(): Promise<void>; migrate(storageName: string, storageIdentityKey: string): Promise<string>; dropAllData(): Promise<void>; transaction<T>(scope: (trx: TrxToken) => Promise<T>, trx?: TrxToken): Promise<T>; /** * Convert the standard optional `TrxToken` parameter into either a direct knex database instance, * or a Knex.Transaction as appropriate. */ toDb(trx?: TrxToken): Knex<any, any[]>; validateRawTransaction(t: TableTransaction, trx?: TrxToken): Promise<void>; _verifiedReadyForDatabaseAccess: boolean; /** * Make sure database is ready for access: * * - dateScheme is known * - foreign key constraints are enabled * * @param trx */ verifyReadyForDatabaseAccess(trx?: TrxToken): Promise<DBType>; /** * Helper to force uniform behavior across database engines. * Use to process the update template for entities being updated. */ validatePartialForUpdate<T extends EntityTimeStamp>(update: Partial<T>, dateFields?: string[], booleanFields?: string[]): Partial<T>; /** * Helper to force uniform behavior across database engines. * Use to process new entities being inserted into the database. */ validateEntityForInsert<T extends EntityTimeStamp>(entity: T, trx?: TrxToken, dateFields?: string[], booleanFields?: string[]): Promise<any>; getLabelsForTransactionId(transactionId?: number, trx?: TrxToken): Promise<TableTxLabel[]>; getTagsForOutputId(outputId: number, trx?: TrxToken): Promise<TableOutputTag[]>; purgeData(params: PurgeParams, trx?: TrxToken): Promise<PurgeResults>; reviewStatus(args: { agedLimit: Date; trx?: TrxToken; }): Promise<{ log: string; }>; /** * Counts the outputs for userId in basketId that are spendable: true * AND whose transaction status is one of: * - completed * - unproven * - sending (if excludeSending is false) */ countChangeInputs(userId: number, basketId: number, excludeSending: boolean): Promise<number>; /** * Finds closest matching available change output to use as input for new transaction. * * Transactionally allocate the output such that */ allocateChangeInput(userId: number, basketId: number, targetSatoshis: number, exactSatoshis: number | undefined, excludeSending: boolean, transactionId: number): Promise<TableOutput | undefined>; /** * Helper to force uniform behavior across database engines. * Use to process all individual records with time stamps retreived from database. */ validateEntity<T extends EntityTimeStamp>(entity: T, dateFields?: string[], booleanFields?: string[]): T; /** * Helper to force uniform behavior across database engines. * Use to process all arrays of records with time stamps retreived from database. * @returns input `entities` array with contained values validated. */ validateEntities<T extends EntityTimeStamp>(entities: T[], dateFields?: string[], booleanFields?: string[]): T[]; adminStats(adminIdentityKey: string): Promise<AdminStatsResult>; } //# sourceMappingURL=StorageKnex.d.ts.map