/// /// import { ErrorObject } from "ajv"; import { TransactionTypes } from "../enums"; import { BigNumber } from "../utils"; export interface ITransaction { readonly id: string; readonly type: TransactionTypes; readonly verified: boolean; isVerified: boolean; data: ITransactionData; serialized: Buffer; timestamp: number; serialize(options?: ISerializeOptions): ByteBuffer; deserialize(buf: ByteBuffer): void; verify(): boolean; verifySchema(strict?: boolean): ISchemaValidationResult; toJson(): ITransactionJson; hasVendorField(): boolean; } export interface ITransactionAsset { signature?: { publicKey: string; }; delegate?: { username: string; publicKey?: string; }; votes?: string[]; multiSignatureLegacy?: IMultiSignatureLegacyAsset; multiSignature?: IMultiSignatureAsset; ipfs?: string; payments?: any; [custom: string]: any; } export interface ITransactionData { version?: number; network?: number; type: TransactionTypes; timestamp: number; senderPublicKey: string; fee: BigNumber; amount: BigNumber; expiration?: number; recipientId?: string; asset?: ITransactionAsset; vendorField?: string; vendorFieldHex?: string; id?: string; signature?: string; secondSignature?: string; signSignature?: string; signatures?: string[]; blockId?: string; sequence?: number; timelock?: any; timelockType?: number; payments?: { [key: string]: any; }; } export interface ITransactionJson { version?: number; network?: number; type: TransactionTypes; timestamp: number; senderPublicKey: string; fee: string; amount: string; expiration?: number; recipientId?: string; asset?: ITransactionAsset; vendorField?: string; vendorFieldHex?: string; id?: string; signature?: string; secondSignature?: string; signSignature?: string; signatures?: string[]; blockId?: string; sequence?: number; timelock?: any; timelockType?: number; ipfsHash?: string; payments?: { [key: string]: any; }; } export interface ISchemaValidationResult { value: T; error: any; errors?: ErrorObject[]; } export interface IMultiPaymentItem { amount: BigNumber; recipientId: string; } export interface IMultiSignatureLegacyAsset { min: number; lifetime: number; keysgroup: string[]; } export interface IMultiSignatureAsset { min: number; publicKeys: string[]; } export interface ISerializeOptions { excludeSignature?: boolean; excludeSecondSignature?: boolean; excludeMultiSignature?: boolean; }