///
import { AssetJSON, BinaryWriter, ECPoint, UInt160, UInt256, UInt256Hex } from '@neo-one/client-common';
import { BaseState } from '@neo-one/client-full-common';
import BN from 'bn.js';
import { AssetType } from './AssetType';
import { Equals, EquatableKey } from './Equatable';
import { DeserializeWireBaseOptions, DeserializeWireOptions, SerializableJSON, SerializableWire, SerializeJSONContext, SerializeWire } from './Serializable';
export declare const InvalidAssetError: {
new (message: string): {
readonly name: string;
readonly code: string;
message: string;
stack?: string | undefined;
};
captureStackTrace(targetObject: Object, constructorOpt?: Function | undefined): void;
prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
stackTraceLimit: number;
};
export interface AssetKey {
readonly hash: UInt256;
}
export interface AssetAdd {
readonly version?: number;
readonly hash: UInt256;
readonly type: AssetType;
readonly name: string;
readonly amount: BN;
readonly available?: BN;
readonly precision: number;
readonly feeMode?: number;
readonly fee?: BN;
readonly feeAddress?: UInt160;
readonly owner: ECPoint;
readonly admin: UInt160;
readonly issuer: UInt160;
readonly expiration: number;
readonly isFrozen?: boolean;
}
export interface AssetUpdate {
readonly available?: BN;
readonly expiration?: number;
readonly isFrozen?: boolean;
}
export declare class Asset extends BaseState implements SerializableWire, SerializableJSON, EquatableKey {
static deserializeWireBase({ reader }: DeserializeWireBaseOptions): Asset;
static deserializeWire(options: DeserializeWireOptions): Asset;
readonly hash: UInt256;
readonly hashHex: UInt256Hex;
readonly type: AssetType;
readonly name: string;
readonly amount: BN;
readonly available: BN;
readonly precision: number;
readonly feeMode: number;
readonly fee: BN;
readonly feeAddress: UInt160;
readonly owner: ECPoint;
readonly admin: UInt160;
readonly issuer: UInt160;
readonly expiration: number;
readonly isFrozen: boolean;
readonly equals: Equals;
readonly toKeyString: () => string;
readonly serializeWire: SerializeWire;
private readonly sizeInternal;
constructor({ version, hash, type, name, amount, available, precision, feeMode, fee, feeAddress, owner, admin, issuer, expiration, isFrozen, }: AssetAdd);
readonly size: number;
update({ available, expiration, isFrozen, }: AssetUpdate): Asset;
serializeWireBase(writer: BinaryWriter): void;
serializeJSON(context: SerializeJSONContext): AssetJSON;
}
export declare const verifyAsset: ({ name, type, amount, precision, }: {
readonly name: string;
readonly type: AssetType;
readonly amount: BN;
readonly precision: number;
}) => void;