import { BaseIndexDB } from "@ocap/indexdb";
import { IIndexDB, IListAccountsResult, IListAssetsResult, IListDelegationsResult, IListFactoriesResult, IListRollupBlocksResult, IListRollupValidatorsResult, IListRollupsResult, IListStakesResult, IListTokenFactoriesResult, IListTokensResult, IListTransactionsResult, TRequestListAssets, TRequestListDelegations, TRequestListFactories, TRequestListRollupBlocks, TRequestListRollupValidators, TRequestListRollups, TRequestListStakes, TRequestListTokenFactories, TRequestListTokens, TRequestListTopAccounts, TRequestListTransactions, TSearchResult } from "@ocap/types";

//#region src/db/base.d.ts
declare class LocalBaseIndexDB extends BaseIndexDB implements IIndexDB {
  listTransactions(params?: Partial<TRequestListTransactions>): IListTransactionsResult;
  getRelatedAddresses(address: string): Promise<string[]>;
  listAssets(params?: Partial<TRequestListAssets>): Promise<IListAssetsResult>;
  listTopAccounts(params?: Partial<TRequestListTopAccounts>): Promise<IListAccountsResult>;
  listTokens(params?: Partial<TRequestListTokens>): Promise<IListTokensResult>;
  listTokenFactories(params?: Partial<TRequestListTokenFactories>): Promise<IListTokenFactoriesResult>;
  listFactories(params?: Partial<TRequestListFactories>): Promise<IListFactoriesResult>;
  listStakes(params?: Partial<TRequestListStakes>): IListStakesResult;
  listRollups(params?: Partial<TRequestListRollups>): Promise<IListRollupsResult>;
  listRollupBlocks(params?: Partial<TRequestListRollupBlocks>): IListRollupBlocksResult;
  listRollupValidators(params?: Partial<TRequestListRollupValidators>): IListRollupValidatorsResult;
  listDelegations(params?: Partial<TRequestListDelegations>): IListDelegationsResult;
  /**
   * Search entities by semantic fields (moniker, name, symbol, description)
   */
  search(keyword: string): TSearchResult[];
}
//#endregion
export { LocalBaseIndexDB as default };