import openpgp from 'openpgp';
import { BitGoBase } from '../bitgoBase';
import { TxRequestChallengeResponse } from './types';
import { RequestType, TxRequest, SignatureShareRecord, SignatureShareType, CommitmentShareRecord, EncryptedSignerShareRecord, ExchangeCommitmentResponse } from '../utils';
import { IRequestTracer } from '../../api';
export declare function getBitgoSignatureShare(signatureShares: SignatureShareRecord[], signerShareType: SignatureShareType): SignatureShareRecord;
/**
 * Gets the latest Tx Request by id
 *
 * @param {BitGoBase} bitgo - the bitgo instance
 * @param {String} walletId - the wallet id
 * @param {String} txRequestId - the txRequest id
 * @param {IRequestTracer} reqId - the request tracer request id
 * @returns {Promise<TxRequest>}
 */
export declare function getTxRequest(bitgo: BitGoBase, walletId: string, txRequestId: string, reqId?: IRequestTracer): Promise<TxRequest>;
/**
 * Sends a Signature Share
 *
 * @param {BitGoBase} bitgo - the bitgo instance
 * @param {String} walletId - the wallet id  *
 * @param {String} txRequestId - the txRequest Id
 * @param {SignatureShareRecord} signatureShare - a Signature Share
 * @param requestType - The type of request being submitted (either tx or message for signing)
 * @param signerShare
 * @param mpcAlgorithm
 * @param apiMode
 * @param {IRequestTracer} reqId - the request tracer request id
 * @returns {Promise<SignatureShareRecord>} - a Signature Share
 */
export declare function sendSignatureShare(bitgo: BitGoBase, walletId: string, txRequestId: string, signatureShare: SignatureShareRecord, requestType: RequestType, signerShare?: string, mpcAlgorithm?: 'eddsa' | 'ecdsa', apiMode?: 'full' | 'lite', userPublicGpgKey?: string, reqId?: IRequestTracer): Promise<SignatureShareRecord>;
/**
 * Sends a Signature Share using the sign txRequest route
 *
 * @param {BitGoBase} bitgo - the bitgo instance
 * @param {String} walletId - the wallet id  *
 * @param {String} txRequestId - the txRequest Id
 * @param signatureShares
 * @param requestType - The type of request being submitted (either tx or message for signing)
 * @param signerShare
 * @param mpcAlgorithm
 * @param multisigTypeVersion
 * @param signerGpgPublicKey
 * @param reqId
 * @returns {Promise<SignatureShareRecord>} - a Signature Share
 */
export declare function sendSignatureShareV2(bitgo: BitGoBase, walletId: string, txRequestId: string, signatureShares: SignatureShareRecord[], requestType: RequestType, mpcAlgorithm: 'eddsa' | 'ecdsa', signerGpgPublicKey: string, signerShare?: string, multisigTypeVersion?: 'MPCv2' | undefined, reqId?: IRequestTracer): Promise<TxRequest>;
/**
 * Sends a Transaction Request for broadcast once signing is complete
 *
 * @param {BitGoBase} bitgo - the bitgo instance
 * @param {String} walletId - the wallet id  *
 * @param {String} txRequestId - the txRequest Id
 * @param requestType - The type of request being submitted (either tx or message for signing)
 * @param {IRequestTracer} reqId - request tracer request id
 * @returns {Promise<SignatureShareRecord>} - a Signature Share
 */
export declare function sendTxRequest(bitgo: BitGoBase, walletId: string, txRequestId: string, requestType: RequestType, reqId?: IRequestTracer): Promise<TxRequest>;
/**
 * Sends the client commitment and encrypted signer share to the server, getting back the server commitment
 * @param {BitGoBase} bitgo - the bitgo instance
 * @param {string} walletId - the wallet id
 * @param {string} txRequestId - the txRequest Id
 * @param {CommitmentShareRecord} commitmentShare - the client commitment share
 * @param {EncryptedSignerShareRecord} encryptedSignerShare - the client encrypted signer share
 * @param {string} [apiMode] - the txRequest api mode (full or lite) - defaults to lite
 * @param {IRequestTracer} reqId - the request tracer request Id
 * @returns {Promise<ExchangeCommitmentResponse>} - the server commitment share
 */
export declare function exchangeEddsaCommitments(bitgo: BitGoBase, walletId: string, txRequestId: string, commitmentShare: CommitmentShareRecord, encryptedSignerShare: EncryptedSignerShareRecord, apiMode?: 'full' | 'lite', reqId?: IRequestTracer): Promise<ExchangeCommitmentResponse>;
/**
 * Verifies that a TSS wallet signature was produced with the expected key and that the signed data contains the
 * expected common keychain as well as the expected user and backup key ids
 */
export declare function commonVerifyWalletSignature(params: {
    walletSignature: openpgp.Key;
    bitgoPub: openpgp.Key;
    commonKeychain: string;
    userKeyId: string;
    backupKeyId: string;
}): Promise<{
    value: ArrayBuffer;
}[]>;
/**
 * Gets challenge for a tx request from BitGo
 * supports Message and regular Transaction
 * @param bitgo
 * @param walletId
 * @param txRequestId
 * @param index
 * @param requestType
 * @param paillierModulus
 * @param reqId
 */
export declare function getTxRequestChallenge(bitgo: BitGoBase, walletId: string, txRequestId: string, index: string, requestType: RequestType, paillierModulus: string, reqId?: IRequestTracer): Promise<TxRequestChallengeResponse>;
//# sourceMappingURL=common.d.ts.map