import { SerializedKeyPair } from 'openpgp';
import { IBaseCoin, KeychainsTriplet } from '../baseCoin';
import { BitGoBase } from '../bitgoBase';
import { Keychain, KeyType, WebauthnKeyEncryptionInfo } from '../keychain';
import { PopulatedIntent, PrebuildTransactionWithIntentOptions, TokenTransferRecipientParams } from './tss/baseTypes';
export interface MpcKeyShare {
    publicShare: string;
    privateShare: string;
    privateShareProof?: string;
    vssProof?: string;
}
export declare abstract class MpcUtils {
    protected bitgo: BitGoBase;
    protected baseCoin: IBaseCoin;
    constructor(bitgo: BitGoBase, baseCoin: IBaseCoin);
    protected decryptPrivateShare(privateShare: string, userGpgKey: SerializedKeyPair<string>): Promise<string>;
    protected createBitgoKeychainInWP(userGpgKey: SerializedKeyPair<string>, backupGpgKey: SerializedKeyPair<string>, userKeyShare: MpcKeyShare, backupKeyShare: MpcKeyShare, keyType: KeyType, enterprise?: string): Promise<Keychain>;
    /**
     * Creates User, Backup, and BitGo MPC Keychains.
     *
     * @param params.passphrase - passphrase used to encrypt signing materials created for User and Backup
     * @param params.enterprise - optional enterprise id that will be attached to the BitGo Keychain
     * @param params.originalPasscodeEncryptionCode - optional encryption code used to reset the user's password, if absent, password recovery will not work
     */
    abstract createKeychains(params: {
        passphrase: string;
        enterprise?: string;
        originalPasscodeEncryptionCode?: string;
        webauthnInfo?: WebauthnKeyEncryptionInfo;
    }): Promise<KeychainsTriplet>;
    /**
     * This function would be responsible for populating intents
     * based on the type of coin / sig scheme the coin uses
     * @param {IBaseCoin} baseCoin
     * @param {PrebuildTransactionWithIntentOptions} params
     * @returns {Record<string, unknown>}
     */
    populateIntent(baseCoin: IBaseCoin, params: PrebuildTransactionWithIntentOptions): PopulatedIntent;
    getTokenName(baseCoin: IBaseCoin, tokenData: TokenTransferRecipientParams): string | undefined;
}
//# sourceMappingURL=mpcUtils.d.ts.map