///
import { Constructor } from '@neo-one/utils-esnext-esm';
import { BinaryWriter } from '../../BinaryWriter';
import { ECPoint, PrivateKey, UInt256, UInt256Hex } from '../../common';
import { SerializableWire, SerializeWire } from '../Serializable';
import { WitnessModel } from '../WitnessModel';
import { AttributeModel } from './attribute';
import { InputModel } from './InputModel';
import { OutputModel } from './OutputModel';
import { TransactionTypeModel } from './TransactionTypeModel';
export interface TransactionBaseModelAdd {
readonly version?: number;
readonly attributes?: readonly TAttribute[];
readonly inputs?: readonly TInput[];
readonly outputs?: readonly TOutput[];
readonly scripts?: readonly TWitness[];
readonly hash?: UInt256;
}
export interface TransactionBaseModelAddWithType extends TransactionBaseModelAdd {
readonly type: Type;
}
export declare const MAX_TRANSACTION_ATTRIBUTES = 16;
export declare abstract class TransactionBaseModel implements SerializableWire {
static readonly VERSION: number;
protected static readonly WitnessConstructor: Constructor;
readonly type: Type;
readonly version: number;
readonly attributes: readonly TAttribute[];
readonly inputs: readonly TInput[];
readonly outputs: readonly TOutput[];
readonly scripts: readonly TWitness[];
readonly serializeWire: SerializeWire;
readonly serializeUnsigned: SerializeWire;
private readonly hashInternal;
private readonly hashHexInternal;
private readonly messageInternal;
constructor({ version, type, attributes, inputs, outputs, scripts, hash, }: TransactionBaseModelAddWithType);
abstract clone(options: {
readonly scripts?: readonly TWitness[];
readonly attributes?: readonly TAttribute[];
readonly inputs?: readonly TInput[];
readonly outputs?: readonly TOutput[];
}): this;
get hash(): UInt256;
get hashHex(): UInt256Hex;
get message(): Buffer;
sign(key: PrivateKey): this;
signWithSignature(signature: Buffer, publicKey: ECPoint): this;
serializeExclusiveBase(_writer: BinaryWriter): void;
serializeUnsignedBase(writer: BinaryWriter): void;
serializeWireBase(writer: BinaryWriter): void;
}