wallet-storage
Version:
BRC100 conforming wallet, wallet storage and wallet signer components
176 lines • 12.2 kB
TypeScript
import { ListActionsResult, ListOutputsResult } from '@bsv/sdk';
import { sdk } from '../index.all';
import { table } from './index.all';
import { Knex } from 'knex';
import { StorageProvider, StorageProviderOptions } from './StorageProvider';
import { DBType } from './StorageReader';
export interface StorageKnexOptions extends StorageProviderOptions {
/**
* Knex database interface initialized with valid connection configuration.
*/
knex: Knex;
}
export declare class StorageKnex extends StorageProvider implements sdk.WalletStorageProvider {
knex: Knex;
constructor(options: StorageKnexOptions);
readSettings(): Promise<table.Settings>;
getProvenOrRawTx(txid: string, trx?: sdk.TrxToken): Promise<sdk.ProvenOrRawTx>;
dbTypeSubstring(source: string, fromOffset: number, forLength?: number): string;
getRawTxOfKnownValidTransaction(txid?: string, offset?: number, length?: number, trx?: sdk.TrxToken): Promise<number[] | undefined>;
getProvenTxsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder;
getProvenTxsForUser(args: sdk.FindForUserSincePagedArgs): Promise<table.ProvenTx[]>;
getProvenTxReqsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder;
getProvenTxReqsForUser(args: sdk.FindForUserSincePagedArgs): Promise<table.ProvenTxReq[]>;
getTxLabelMapsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder;
getTxLabelMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<table.TxLabelMap[]>;
getOutputTagMapsForUserQuery(args: sdk.FindForUserSincePagedArgs): Knex.QueryBuilder;
getOutputTagMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<table.OutputTagMap[]>;
listActions(auth: sdk.AuthId, vargs: sdk.ValidListActionsArgs): Promise<ListActionsResult>;
listOutputs(auth: sdk.AuthId, vargs: sdk.ValidListOutputsArgs): Promise<ListOutputsResult>;
insertProvenTx(tx: table.ProvenTx, trx?: sdk.TrxToken): Promise<number>;
insertProvenTxReq(tx: table.ProvenTxReq, trx?: sdk.TrxToken): Promise<number>;
insertUser(user: table.User, trx?: sdk.TrxToken): Promise<number>;
insertCertificateAuth(auth: sdk.AuthId, certificate: table.CertificateX): Promise<number>;
insertCertificate(certificate: table.CertificateX, trx?: sdk.TrxToken): Promise<number>;
insertCertificateField(certificateField: table.CertificateField, trx?: sdk.TrxToken): Promise<void>;
insertOutputBasket(basket: table.OutputBasket, trx?: sdk.TrxToken): Promise<number>;
insertTransaction(tx: table.Transaction, trx?: sdk.TrxToken): Promise<number>;
insertCommission(commission: table.Commission, trx?: sdk.TrxToken): Promise<number>;
insertOutput(output: table.Output, trx?: sdk.TrxToken): Promise<number>;
insertOutputTag(tag: table.OutputTag, trx?: sdk.TrxToken): Promise<number>;
insertOutputTagMap(tagMap: table.OutputTagMap, trx?: sdk.TrxToken): Promise<void>;
insertTxLabel(label: table.TxLabel, trx?: sdk.TrxToken): Promise<number>;
insertTxLabelMap(labelMap: table.TxLabelMap, trx?: sdk.TrxToken): Promise<void>;
insertMonitorEvent(event: table.MonitorEvent, trx?: sdk.TrxToken): Promise<number>;
insertSyncState(syncState: table.SyncState, trx?: sdk.TrxToken): Promise<number>;
updateCertificateField(certificateId: number, fieldName: string, update: Partial<table.CertificateField>, trx?: sdk.TrxToken): Promise<number>;
updateCertificate(id: number, update: Partial<table.Certificate>, trx?: sdk.TrxToken): Promise<number>;
updateCommission(id: number, update: Partial<table.Commission>, trx?: sdk.TrxToken): Promise<number>;
updateOutputBasket(id: number, update: Partial<table.OutputBasket>, trx?: sdk.TrxToken): Promise<number>;
updateOutput(id: number, update: Partial<table.Output>, trx?: sdk.TrxToken): Promise<number>;
updateOutputTagMap(outputId: number, tagId: number, update: Partial<table.OutputTagMap>, trx?: sdk.TrxToken): Promise<number>;
updateOutputTag(id: number, update: Partial<table.OutputTag>, trx?: sdk.TrxToken): Promise<number>;
updateProvenTxReq(id: number | number[], update: Partial<table.ProvenTxReq>, trx?: sdk.TrxToken): Promise<number>;
updateProvenTx(id: number, update: Partial<table.ProvenTx>, trx?: sdk.TrxToken): Promise<number>;
updateSyncState(id: number, update: Partial<table.SyncState>, trx?: sdk.TrxToken): Promise<number>;
updateTransaction(id: number | number[], update: Partial<table.Transaction>, trx?: sdk.TrxToken): Promise<number>;
updateTxLabelMap(transactionId: number, txLabelId: number, update: Partial<table.TxLabelMap>, trx?: sdk.TrxToken): Promise<number>;
updateTxLabel(id: number, update: Partial<table.TxLabel>, trx?: sdk.TrxToken): Promise<number>;
updateUser(id: number, update: Partial<table.User>, trx?: sdk.TrxToken): Promise<number>;
updateMonitorEvent(id: number, update: Partial<table.MonitorEvent>, trx?: sdk.TrxToken): Promise<number>;
setupQuery<T extends object>(table: string, args: sdk.FindPartialSincePagedArgs<T>): Knex.QueryBuilder;
findCertificateFieldsQuery(args: sdk.FindCertificateFieldsArgs): Knex.QueryBuilder;
findCertificatesQuery(args: sdk.FindCertificatesArgs): Knex.QueryBuilder;
findCommissionsQuery(args: sdk.FindCommissionsArgs): Knex.QueryBuilder;
findOutputBasketsQuery(args: sdk.FindOutputBasketsArgs): Knex.QueryBuilder;
findOutputsQuery(args: sdk.FindOutputsArgs, count?: boolean): Knex.QueryBuilder;
findOutputTagMapsQuery(args: sdk.FindOutputTagMapsArgs): Knex.QueryBuilder;
findOutputTagsQuery(args: sdk.FindOutputTagsArgs): Knex.QueryBuilder;
findProvenTxReqsQuery(args: sdk.FindProvenTxReqsArgs): Knex.QueryBuilder;
findProvenTxsQuery(args: sdk.FindProvenTxsArgs): Knex.QueryBuilder;
findSyncStatesQuery(args: sdk.FindSyncStatesArgs): Knex.QueryBuilder;
findTransactionsQuery(args: sdk.FindTransactionsArgs, count?: boolean): Knex.QueryBuilder;
findTxLabelMapsQuery(args: sdk.FindTxLabelMapsArgs): Knex.QueryBuilder;
findTxLabelsQuery(args: sdk.FindTxLabelsArgs): Knex.QueryBuilder;
findUsersQuery(args: sdk.FindUsersArgs): Knex.QueryBuilder;
findMonitorEventsQuery(args: sdk.FindMonitorEventsArgs): Knex.QueryBuilder;
findCertificatesAuth(auth: sdk.AuthId, args: sdk.FindCertificatesArgs): Promise<table.Certificate[]>;
findOutputBasketsAuth(auth: sdk.AuthId, args: sdk.FindOutputBasketsArgs): Promise<table.OutputBasket[]>;
findOutputsAuth(auth: sdk.AuthId, args: sdk.FindOutputsArgs): Promise<table.Output[]>;
findCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<table.CertificateField[]>;
findCertificates(args: sdk.FindCertificatesArgs): Promise<table.Certificate[]>;
findCommissions(args: sdk.FindCommissionsArgs): Promise<table.Commission[]>;
findOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<table.OutputBasket[]>;
findOutputs(args: sdk.FindOutputsArgs): Promise<table.Output[]>;
findOutputTagMaps(args: sdk.FindOutputTagMapsArgs): Promise<table.OutputTagMap[]>;
findOutputTags(args: sdk.FindOutputTagsArgs): Promise<table.OutputTag[]>;
findProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<table.ProvenTxReq[]>;
findProvenTxs(args: sdk.FindProvenTxsArgs): Promise<table.ProvenTx[]>;
findSyncStates(args: sdk.FindSyncStatesArgs): Promise<table.SyncState[]>;
findTransactions(args: sdk.FindTransactionsArgs): Promise<table.Transaction[]>;
findTxLabelMaps(args: sdk.FindTxLabelMapsArgs): Promise<table.TxLabelMap[]>;
findTxLabels(args: sdk.FindTxLabelsArgs): Promise<table.TxLabel[]>;
findUsers(args: sdk.FindUsersArgs): Promise<table.User[]>;
findMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<table.MonitorEvent[]>;
getCount<T extends object>(q: Knex.QueryBuilder<T, T[]>): Promise<number>;
countCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<number>;
countCertificates(args: sdk.FindCertificatesArgs): Promise<number>;
countCommissions(args: sdk.FindCommissionsArgs): Promise<number>;
countOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<number>;
countOutputs(args: sdk.FindOutputsArgs): Promise<number>;
countOutputTagMaps(args: sdk.FindOutputTagMapsArgs): Promise<number>;
countOutputTags(args: sdk.FindOutputTagsArgs): Promise<number>;
countProvenTxReqs(args: sdk.FindProvenTxReqsArgs): Promise<number>;
countProvenTxs(args: sdk.FindProvenTxsArgs): Promise<number>;
countSyncStates(args: sdk.FindSyncStatesArgs): Promise<number>;
countTransactions(args: sdk.FindTransactionsArgs): Promise<number>;
countTxLabelMaps(args: sdk.FindTxLabelMapsArgs): Promise<number>;
countTxLabels(args: sdk.FindTxLabelsArgs): Promise<number>;
countUsers(args: sdk.FindUsersArgs): Promise<number>;
countMonitorEvents(args: sdk.FindMonitorEventsArgs): Promise<number>;
destroy(): Promise<void>;
migrate(storageName: string, storageIdentityKey: string): Promise<string>;
dropAllData(): Promise<void>;
transaction<T>(scope: (trx: sdk.TrxToken) => Promise<T>, trx?: sdk.TrxToken): Promise<T>;
/**
* Convert the standard optional `TrxToken` parameter into either a direct knex database instance,
* or a Knex.Transaction as appropriate.
*/
toDb(trx?: sdk.TrxToken): Knex<any, any[]>;
validateRawTransaction(t: table.Transaction, trx?: sdk.TrxToken): Promise<void>;
validateOutputScript(o: table.Output, trx?: sdk.TrxToken): Promise<void>;
_verifiedReadyForDatabaseAccess: boolean;
/**
* Make sure database is ready for access:
*
* - dateScheme is known
* - foreign key constraints are enabled
*
* @param trx
*/
verifyReadyForDatabaseAccess(trx?: sdk.TrxToken): Promise<DBType>;
/**
* Helper to force uniform behavior across database engines.
* Use to process the update template for entities being updated.
*/
validatePartialForUpdate<T extends sdk.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 sdk.EntityTimeStamp>(entity: T, trx?: sdk.TrxToken, dateFields?: string[], booleanFields?: string[]): Promise<any>;
getLabelsForTransactionId(transactionId?: number, trx?: sdk.TrxToken): Promise<table.TxLabel[]>;
extendOutput(o: table.Output, includeBasket?: boolean, includeTags?: boolean, trx?: sdk.TrxToken): Promise<table.OutputX>;
getTagsForOutputId(outputId: number, trx?: sdk.TrxToken): Promise<table.OutputTag[]>;
purgeData(params: sdk.PurgeParams, trx?: sdk.TrxToken): Promise<sdk.PurgeResults>;
reviewStatus(args: {
agedLimit: Date;
trx?: sdk.TrxToken;
}): Promise<{
log: string;
}>;
/**
* Finds closest matching available change output to use as input for new transaction.
*
* Transactionally allocate the output such that
*/
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<table.Output | undefined>;
/**
* Helper to force uniform behavior across database engines.
* Use to process all individual records with time stamps retreived from database.
*/
validateEntity<T extends sdk.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 sdk.EntityTimeStamp>(entities: T[], dateFields?: string[], booleanFields?: string[]): T[];
}
//# sourceMappingURL=StorageKnex.d.ts.map