///
///
import { ContractJSON, UInt160 } from '@neo-one/client-common-browserify';
import { ContractModel } from '@neo-one/client-full-common-browserify';
import { ContractParameterType } from './contractParameter';
import { ContractPropertyState } from './ContractPropertyState';
import { Equals, EquatableKey } from './Equatable';
import { DeserializeWireBaseOptions, DeserializeWireOptions, SerializableJSON, SerializeJSONContext } from './Serializable';
export interface ContractKey {
readonly hash: UInt160;
}
export interface ContractAdd {
readonly hash?: UInt160;
readonly version?: number;
readonly script: Buffer;
readonly parameterList: readonly ContractParameterType[];
readonly returnType: ContractParameterType;
readonly contractProperties: ContractPropertyState;
readonly name: string;
readonly codeVersion: string;
readonly author: string;
readonly email: string;
readonly description: string;
}
export declare class Contract extends ContractModel implements SerializableJSON, EquatableKey {
static deserializeWireBase(options: DeserializeWireBaseOptions): Contract;
static deserializeWire(options: DeserializeWireOptions): Contract;
readonly equals: Equals;
readonly toKeyString: () => string;
private readonly contractSizeInternal;
readonly size: number;
serializeJSON(_context: SerializeJSONContext): ContractJSON;
}
export declare const sizeOfContract: ({ script, parameterList, name, codeVersion, author, email, description, publishVersion, }: {
readonly script: Buffer;
readonly parameterList: readonly ContractParameterType[];
readonly name: string;
readonly codeVersion: string;
readonly author: string;
readonly email: string;
readonly description: string;
readonly publishVersion?: number | undefined;
}) => number;
export declare const deserializeContractWireBase: ({ reader, publishVersion, }: {
readonly publishVersion?: number | undefined;
} & DeserializeWireBaseOptions) => Contract;