///
import { APIKey } from '../types/MPC';
import { SigningPayloadID } from '../payload/signingPayloadID';
import { Config, PresignConfig, PayloadSignature, BlockchainSignature, BlockchainData, ChainNoncePair } from '../types';
import { PayloadAndKind, ClientSignedState, SignStatesRequestPayload, AddMovementPayload } from '../payload';
/**
* Generates the canonical string for a given payload.
*
* The canonical string is a human-readable JSON representation of the payload
* parameters. The keys are alphabetized, and are represented in snake case.
*/
export declare const canonicalString: (a1: object) => string;
/**
* Different payload types have different preprocessing strategies. This is a
* convenience function to properly process various payloads.
*/
export declare const canonicalizePayload: (kind: SigningPayloadID, payload: object) => string;
/**
* Signs a payload using a private key. The private key should be the key
* created by initialization of the Nash Protocol. Payloads are signed via
* [ECDSA](https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm)
* using [secp256k1](https://en.bitcoin.it/wiki/Secp256k1).
*
* If the payload to be signed is for a blockchain operation, the `Config`
* object must be passed as well to create the blockchain signatures.
*
* Refer to the documentation for the `Config` interface and to `initialize.ts`.
*/
export default function signPayload(privateKey: Buffer, payloadAndKind: PayloadAndKind, config?: Config): PayloadSignature;
/**
* Presigns a payload using a apikey.
* @param {APIKey} apiKey [description]
* @param {PayloadAndKind} payloadAndKind [description]
* @param {PresignConfig} config [description]
* @return {Promise} [description]
*/
export declare function preSignPayload(apiKey: APIKey, payloadAndKind: PayloadAndKind, config: PresignConfig): Promise;
/**
* Presign blockchain data. Returns an array of signatures. Needed for operations
* such as order placement.
*
* If the operation occurs within the same blockchain origin, 1 signature is
* returned. For example, 1 signature is returned when trading NEO for GAS.
*
* If the operation is cross-chain, 2 signatures are returned. For example, two
* signatures are returned for a BTC-ETH trade.
*/
export declare function presignBlockchainData(apiKey: APIKey, config: PresignConfig, payloadAndKind: PayloadAndKind): Promise>;
/**
* Signs blockchain data. Returns an array of signatures. Needed for operations
* such as order placement.
*
* If the operation occurs within the same blockchain origin, 1 signature is
* returned. For example, 1 signature is returned when trading NEO for GAS.
*
* If the operation is cross-chain, 2 signatures are returned. For example, two
* signatures are returned for a BTC-ETH trade.
*/
export declare function signBlockchainData(config: Config, payloadAndKind: PayloadAndKind): ReadonlyArray;
/**
* @TODO Add documentation.
*/
export declare function determineSignatureNonceTuplesNeeded(assetData: Config['assetData'], blockchainData: BlockchainData): ChainNoncePair[];
/**
* @TODO Add documentation.
*/
export declare function addRawBlockchainOrderData(config: Config, payloadAndKind: PayloadAndKind): object;
export declare function addRawPresignBlockchainOrderData(apiKey: APIKey, config: PresignConfig, payloadAndKind: PayloadAndKind): object;
export declare function signStateListAndRecycledOrders(config: Config, payload: any): SignStatesRequestPayload;
export declare function signRecycledOrdersForAddMovement(config: Config, payload: AddMovementPayload): ClientSignedState[];
export declare function presignRecycledOrdersForAddMovement(apiKey: APIKey, config: PresignConfig, payload: AddMovementPayload): Promise;
export declare function preSignStateListAndRecycledOrders(apiKey: APIKey, config: PresignConfig, payload: any): Promise;
export declare function signTransactionDigestsForAddMovement(config: Config, payload: AddMovementPayload): ClientSignedState[];
export declare function presignTransactionDigestsForAddMovement(apiKey: APIKey, config: PresignConfig, payload: AddMovementPayload): Promise;
export declare function signStateList(config: Config, items: ClientSignedState[]): ClientSignedState[];
export declare function presignStateList(apiKey: APIKey, config: PresignConfig, items: ClientSignedState[]): Promise;
export declare function alterOrderPayloadForGraphql(payload: any): any;