import { Address } from "../../crypto";
import { Transaction } from "../../transaction/transaction";
import { Transfer } from "../../transaction/transfer";
import { State } from "./token";
export declare const ONT_CONTRACT = "0000000000000000000000000000000000000001";
export declare const ONG_CONTRACT = "0000000000000000000000000000000000000002";
/**
 * Get the address of native asset contract
 * @param tokenType Token type. Can only be ONT or ONG
 */
export declare function getTokenContract(tokenType: string): Address;
/**
 * Verify amount
 * @param amount Amount
 */
export declare function verifyAmount(amount: number | string): void;
/**
 * Creates transaction to transfer native assets.
 * @param tokenType ONT or ONG
 * @param from sender's address
 * @param to receiver's address
 * @param amount Amount of amount to transfer
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Address to pay for transaction's gas.
 */
export declare function makeTransferTx(tokenType: string, from: Address, to: Address, amount: number | string, gasPrice: string, gasLimit: string, payer?: Address): Transfer;
/**
 * Creates transaction to transfer native assets.
 * @param tokenType ONT or ONG
 * @param from sender's address
 * @param to receiver's address
 * @param amount Amount of amount to transfer
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 * @param payer Address to pay for transaction's gas.
 */
export declare function makeTransferTxV2(tokenType: string, from: Address, to: Address, amount: number | string, gasPrice: string, gasLimit: string, payer?: Address): Transfer;
/**
 * transfer from multiple senders to one receiver
 * this tx needs multiple senders' signature.
 * @param tokenType
 * @param from array of senders' address
 * @param to receiver's address
 * @param amounts
 */
export declare function makeTransferStateTx(tokenType: string, states: State[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * transfer from multiple senders to one receiver
 * this tx needs multiple senders' signature.
 * @param tokenType
 * @param from array of senders' address
 * @param to receiver's address
 * @param amounts
 */
export declare function makeTransferStateTxV2(tokenType: string, states: State[], gasPrice: string, gasLimit: string, payer?: Address): Transaction;
/**
 * transfer from one sender to multiple receivers
 * @param tokenType
 * @param from
 * @param to
 * @param amounts
 */
export declare function makeTransferToMany(tokenType: string, from: Address, to: Address[], amounts: string | number[], gasPrice: string, gasLimit: string): Transaction;
/**
 * transfer from one sender to multiple receivers
 * @param tokenType
 * @param from
 * @param to
 * @param amounts
 */
export declare function makeTransferToManyV2(tokenType: string, from: Address, to: Address[], amounts: string | number[], gasPrice: string, gasLimit: string): Transaction;
/**
 * Withdraw ong from sender's address and send to receiver's address
 * @param from Sender's address
 * @param to Receiver's address
 * @param amount Amount of ONG to withdraw.The value needs to multiply 1e9 to keep precision
 * @param payer Address to pay for transaction's gas
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 */
export declare function makeWithdrawOngTx(from: Address, to: Address, amount: number | string, payer: Address, gasPrice: string, gasLimit: string): Transfer;
/**
 * Withdraw ong from sender's address and send to receiver's address
 * @param from Sender's address
 * @param to Receiver's address
 * @param amount Amount of ONG to withdraw.The value needs to multiply 1e9 to keep precision
 * @param payer Address to pay for transaction's gas
 * @param gasPrice Gas price
 * @param gasLimit Gas limit
 */
export declare function makeWithdrawOngTxV2(from: Address, to: Address, amount: number | string, payer: Address, gasPrice: string, gasLimit: string): Transfer;
export declare function makeApproveTx(asset: string, from: Address, to: Address, amount: number | string, gasPrice: string, gasLimit: string): Transaction;
/**
 * Creates transaction to query allowance that can be sent from sender to receiver
 * @param asset Asset type. Only ONT or ONg.
 * @param from Sender's address
 * @param to Receiver's address
 */
export declare function makeQueryAllowanceTx(asset: string, from: Address, to: Address): Transaction;
/**
 * Creates transaction to query allowance that can be sent from sender to receiver
 * @param asset Asset type. Only ONT or ONg.
 * @param from Sender's address
 * @param to Receiver's address
 */
export declare function makeQueryAllowanceTxV2(asset: string, from: Address, to: Address): Transaction;
/**
 * Creates transaction to query balance.
 * @param asset Token type,ont or ong
 * @param address Address to query balance
 */
export declare function makeQueryBalanceTx(asset: string, address: Address): Transaction;
/**
 * Creates transaction to query balance.
 * @param asset Token type,ont or ong
 * @param address Address to query balance
 */
export declare function makeQueryBalanceTxV2(asset: string, address: Address): Transaction;
export declare function deserializeTransferTx(str: string): Transfer;
export declare function deserializeTransferTxV2(str: string): Transfer;
