import { Address, PublicKey } from '../../crypto';
import { DDOAttribute } from '../../transaction/ddo';
import { Transaction } from '../../transaction/transaction';
import Group from './ontid/group';
import { Signer } from './ontid/signer';
/**
 * Address of ONT ID contract
 */
export declare const ONTID_CONTRACT = "0000000000000000000000000000000000000003";
/**
 * Registers Identity.
 *
 * Register ontid with public key
 *
 * @param ontid User's ONT ID
 * @param publicKey Public key
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRegIDWithPublicKeyTx(ontid: string, publicKey: PublicKey, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Registers Identity.
 *
 * Register ontid with public key
 *
 * @param ontid User's ONT ID
 * @param publicKey Public key
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRegisterOntidTx(ontid: string, publicKey: PublicKey, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Register with multi controller
 *
 * The tx needs the signatures of: signer of the ontid, the controller, payer
 *
 * @param ontid User's ONT ID
 * @param controllers Multi controllers
 * @param signers Signer of controllers
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildRegIdWithMultiControllerTx(ontid: string, controllers: Group, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Revoke ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param index Index of pubkey
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildMakeRevokeIdTx(ontid: string, index: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Revoke ONT ID by multi controller
 * This tx needs the signature of the multi controlers
 *
 * @param ontid User's ONT ID
 * @param signers Signer of controllers
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildRevokeIdByMultiController(ontid: string, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Remove controller
 * This tx needs the signature of pk with the given index
 *
 * @param ontid User's ONT ID
 * @param index Index of controller's pk
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildRemoveControllerTx(ontid: string, index: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Registers Identity with initial attributes.
 *
 * @param ontid User's ONT ID
 * @param attributes Array of DDOAttributes
 * @param publicKey User's public key
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRegIdWithAttributesTx(ontid: string, attributes: DDOAttribute[], publicKey: PublicKey, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Adds attributes to ONT ID.
 *
 * @param ontid User's ONT ID
 * @param attributes Array of DDOAttributes
 * @param publicKey User's public key
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildAddAttributeTx(ontid: string, attributes: DDOAttribute[], publicKey: PublicKey, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Removes attribute from ONT ID.
 *
 * @param ontid User's ONT ID
 * @param key Key of attribute to remove
 * @param publicKey User's public key
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 *
 */
export declare function buildRemoveAttributeTx(ontid: string, key: string, publicKey: PublicKey, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Queries attributes attached to ONT ID.
 *
 * @param ontid User's ONT ID
 */
export declare function buildGetAttributesTx(ontid: string): Transaction;
/**
 * Adds attribute to ONT ID by multi controllers.
 *
 * @param ontid User's ONT ID
 * @param attributes Attributes to add
 * @param signers Signers
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildAddAttributesByMultiControllerTx(ontid: string, attributes: DDOAttribute[], signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Adds attribute to ONT ID by pk
 *
 * @param ontid User's ONT ID
 * @param attributes Attributes to add
 * @param index Index of pk
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildAddAttributesByIndexTx(ontid: string, attributes: DDOAttribute[], index: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * remove attribute to ONT ID by multi controllers.
 *
 * @param ontid User's ONT ID
 * @param key Key of attribute to remove
 * @param signers Signers of multi controllers
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRemoveAttributesByMultiControllerTx(ontid: string, key: string, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * remove attribute to ONT ID by pk
 *
 * @param ontid User's ONT ID
 * @param key Key of attribute to remove
 * @param index Index of the pk
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRemoveAttributesByIndexTx(ontid: string, key: string, index: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Queries Description Object of ONT ID(DDO).
 *
 * @param ontid User's ONT ID
 */
export declare function buildGetDDOTx(ontid: string): Transaction;
/**
 * Adds a new public key to ONT ID.
 *
 * @param ontid User's ONT ID
 * @param newPk New public key to be added
 * @param userKey User's public key
 * @param controller Controller of new pk
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildAddPubKeyTx(ontid: string, newPk: PublicKey, userKey: PublicKey, controller: string, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Adds a new public key and its controller to ONT ID by multi controllers.
 *
 * @param ontid User's ONT ID
 * @param newPk New public key to be added
 * @param signers Singers of controllers
 * @param controller ONT ID of the new pk. Optional
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildAddKeyByMultiControllerTx(ontid: string, newPk: PublicKey, signers: Signer[], controller: string, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Adds a new public key to ONT ID by auth key.
 *
 * @param ontid User's ONT ID
 * @param newPk New public key to be added
 * @param index Index of auth key
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildAddKeyByIndexTx(ontid: string, newPk: PublicKey, index: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * remove public key of ONT ID by auth key.
 *
 * @param ontid User's ONT ID
 * @param newPk Pubkey to remove
 * @param index Index of auth key
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRemoveKeyByIndexTx(ontid: string, newPk: PublicKey, index: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Set recovery to ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param newRecovery newRecovery
 * @param index Index of new recovery
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildSetRecoveryTx(ontid: string, newRecovery: Group, index: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Update recovery to ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param recovery recovery New recovery to add
 * @param signers Signers of old recovery
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildUpdateRecoveryTx(ontid: string, recovery: Group, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Adds a new public key to ONT ID by recovery
 *
 * @param ontid User's ONT ID
 * @param newPk New public key to be added
 * @param signers Signers of recovery
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildAddKeyByRecoveryTx(ontid: string, newPk: PublicKey, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * remove a new public key to ONT ID by recovery
 *
 * @param ontid User's ONT ID
 * @param pubkeyIndex Index of pk to remove
 * @param signers Signers of recovery
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRemoveKeyByRecoveryTx(ontid: string, pubkeyIndex: number, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * remove public key of ONT ID by multi controllers.
 *
 * @param ontid User's ONT ID
 * @param pubkeyIndex Index of pubkey to be removed
 * @param signers Controllers' signers
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRemoveKeyByMultiControllerTx(ontid: string, pubkeyIndex: number, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Revokes a public key from ONT ID.
 *
 * @param ontid User's ONT ID
 * @param pk2Remove Public key to be removed
 * @param Pk(auth key) of ONT ID.
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer
 */
export declare function buildRemovePubKeyTx(ontid: string, pk2Remove: PublicKey, pk: PublicKey, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Queries public keys attached to ONT ID.
 *
 * @param ontid User's ONT ID
 */
export declare function buildGetPublicKeysTx(ontid: string): Transaction;
/**
 * Queries the state of the public key associated with ONT ID.
 *
 * @param ontid user's ONT ID
 * @param pkId User's public key Id
 */
export declare function buildGetPublicKeyStateTx(ontid: string, pkId: number): Transaction;
/**
 * Add auth key to ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param pubkey If isNewPublicKey set false, this is the new public key to set as auth key
 * @param controller ONT ID of the new auth key
 * @param signIndex Index of signer's pubkey
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildAddNewAuthKeyTx(ontid: string, pubkey: PublicKey, controller: string, signIndex: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Remove auth key of ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param index Index of the auth key to remove
 * @param signIndex Index of signer's pubkey
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildRemoveAuthKeyTx(ontid: string, index: number, signIndex: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Add new auth key to ONT ID by recovery
 *
 *
 * @param ontid User's ONT ID
 * @param pubkey Pk to add as new auth key
 * @param controller ONT ID of the new auth key
 * @param signers Signers of recovery
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildAddNewAuthKeyByRecoveryTx(ontid: string, pubkey: PublicKey, controller: string, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * remove auth key of ONT ID by recovery
 *
 *
 * @param ontid User's ONT ID
 * @param index Index of auth key to remove
 * @param signers Signers of recovery
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildRemoveAuthKeyByRecoveryTx(ontid: string, index: number, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Add new auth key to ONT ID by controller
 *
 *
 * @param ontid User's ONT ID
 * @param pubkey Pk to add as new auth key
 * @param controller ONT ID of the new auth key
 * @param signers Signers of controller
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildAddNewAuthKeyByControllerTx(ontid: string, pubkey: PublicKey, controller: string, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * remove auth key of ONT ID by controller
 *
 *
 * @param ontid User's ONT ID
 * @param index Index of auth key to remove
 * @param signers Signers of controller
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildRemoveAuthKeyByControllerTx(ontid: string, index: number, signers: Signer[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Add service to ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param serviceId Identifier of service
 * @param type Type of service
 * @param serviceEndpoint Endpoint of service
 * @param index Index of signer's pubkey
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildAddServiceTx(ontid: string, serviceId: string, type: string, serviceEndpoint: string, pkIndex: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Update service to ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param serviceId Identifier of service
 * @param type Type of service
 * @param serviceEndpoint Endpoint of service
 * @param pkIndex Index of signer's pubkey
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildUpdateServiceTx(ontid: string, serviceId: string, type: string, serviceEndpoint: string, pkIndex: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Remove service to ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param serviceId Identifier of service
 * @param pkIndex Index of signer's pubkey
 * @param gasLimit Gas limit
 * @param gasPrice Gas price
 * @param payer Payer. Optional.
 */
export declare function buildRemoveServiceTx(ontid: string, serviceId: string, pkIndex: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Add context to ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param context Context to add
 * @param pkIndex Index of pk
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildAddContextTx(ontid: string, context: string[], pkIndex: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Remove context of ONT ID
 *
 *
 * @param ontid User's ONT ID
 * @param context Context to remove
 * @param pkIndex Index of signer's pubkey
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Payer. Optional.
 */
export declare function buildRemoveContextTx(ontid: string, context: string[], pkIndex: number, gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * Verify signature
 * Tx needs contain the signature to verify
 *
 * @param ontid User's ONT ID
 * @param keyIndex Index of pubkey
 */
export declare function buildVerifySignatureTx(ontid: string, keyIndex: number): Transaction;
/**
 * Verify multi controller
 *
 *
 * @param ontid User's ONT ID
 * @param signers Signers of multi controllers
 * @param gasLimit Gas limit
 */
export declare function buildVerifyMultiControllerTx(ontid: string, signers: Signer[]): Transaction;
/**
 * Get service
 * Pre-exec this tx
 *
 * @param ontid User's ONT ID
 * @param signers Signers of multi controllers
 */
export declare function buildGetServiceTx(ontid: string, serviceId: string): Transaction;
/**
 * Get controller
 * Pre-exec this tx
 *
 * @param ontid User's ONT ID
 */
export declare function buildGetControllerTx(ontid: string): Transaction;
/**
 * Get document
 * Pre-exec this tx
 *
 * @param ontid User's ONT ID
 */
export declare function buildGetDocumentTx(ontid: string): Transaction;
export interface DocumentPubKey {
    id: string;
    type: string;
    controller: string;
    publicKeyHex: string;
}
export interface Document {
    '@context': [string];
    id: string;
    publicKey: [DocumentPubKey];
    authentication: [string];
    controller: string | null;
    recovery: string | null;
    service: [any];
    attribute: [DDOAttribute] | null;
    created: number;
    updated: number;
    proof: string;
}
export declare function getDocumentJson(ontid: string, restNode: string): Promise<Document>;
