///
import { BehaviorSubject } from "rxjs";
import { ByzCoinRPC, InstanceID, IStorage } from "@dedis/cothority/byzcoin";
import { IdentityDarc } from "@dedis/cothority/darc";
import { LongTermSecret } from "@dedis/cothority/calypso";
import { AddressBook } from "./addressBook";
import { CoinBS, DarcBS, DarcsBS } from "./byzcoin";
import { CredentialSignerBS, CSTypesBS } from "./credentialSignerBS";
import { CredentialInstanceMapBS, CredentialPublic, CredentialStructBS } from "./credentialStructBS";
import { KeyPair } from "./keypair";
import { User } from "./user";
/**
* Fetcher implements convenience methods to get instances needed for a credential.
* This class can retrieve different instances from a ByzCoin chain.
* All methods retrieve the information from ByzCoin.
*
* The use of `dbBase` is to allow for different users in the same IStorage.
*/
export declare class Fetcher {
bc: ByzCoinRPC;
db: IStorage;
constructor(bc: ByzCoinRPC, db: IStorage);
retrieveUser(credID: InstanceID, privBuf: Buffer, dbBase?: string): Promise;
retrieveUserByEphemeral(ephemeral: KeyPair, dbBase?: string): Promise;
retrieveUserByURL(urlStr: string, dbBase?: string): Promise;
retrieveUserByDB(dbBase?: string): Promise;
retrieveUserKeyCredID(dbBase?: string): Promise<[Buffer, Buffer]>;
retrieveAddressBook(cp: CredentialPublic): Promise;
retrieveCoinBS(coinID: BehaviorSubject | InstanceID): Promise;
retrieveCredentialSignerBS(credStructBS: CredentialStructBS): Promise;
retrieveCST(signerBS: DarcBS, cimbs: CredentialInstanceMapBS, prefix: string): Promise;
retrieveCredentialStructBS(id: InstanceID): Promise;
retrieveDarcsBS(aisbs: BehaviorSubject): Promise;
retrieveDarcBS(darcID: BehaviorSubject | InstanceID): Promise;
retrieveSignerIdentityDarc(credDarcID: InstanceID): Promise;
retrieveLTS(ltsid: InstanceID): Promise;
}