///
import { ErrorObject } from "ajv";
import { HtlcLockExpirationType } from "../enums";
import { BigNumber, ByteBuffer } from "../utils";
export interface ITransaction {
readonly id: string | undefined;
readonly typeGroup: number | undefined;
readonly type: number;
readonly verified: boolean;
readonly key: string;
readonly staticFee: BigNumber;
isVerified: boolean;
data: ITransactionData;
serialized: Buffer;
timestamp: number;
serialize(options?: ISerializeOptions): ByteBuffer | undefined;
deserialize(buf: ByteBuffer): void;
verify(options?: IVerifyOptions): boolean;
verifySchema(strict?: boolean): ISchemaValidationResult;
toJson(): ITransactionJson;
hasVendorField(): boolean;
}
export interface ITransactionAsset {
[custom: string]: any;
signature?: {
publicKey: string;
};
delegate?: {
username: string;
};
votes?: string[];
multiSignatureLegacy?: IMultiSignatureLegacyAsset;
multiSignature?: IMultiSignatureAsset;
ipfs?: string;
payments?: IMultiPaymentItem[];
lock?: IHtlcLockAsset;
claim?: IHtlcClaimAsset;
refund?: IHtlcRefundAsset;
}
export interface ITransactionData {
version?: number;
network?: number;
typeGroup?: number;
type: number;
timestamp: number;
nonce?: BigNumber;
senderPublicKey: string | undefined;
fee: BigNumber;
amount: BigNumber;
expiration?: number;
recipientId?: string;
asset?: ITransactionAsset;
vendorField?: string;
id?: string;
signature?: string;
secondSignature?: string;
signSignature?: string;
signatures?: string[];
blockId?: string;
blockHeight?: number;
sequence?: number;
}
export interface ITransactionJson {
version?: number;
network?: number;
typeGroup?: number;
type: number;
timestamp?: number;
nonce?: string;
senderPublicKey: string;
fee: string;
amount: string;
expiration?: number;
recipientId?: string;
asset?: ITransactionAsset;
vendorField?: string | undefined;
id?: string;
signature?: string;
secondSignature?: string;
signSignature?: string;
signatures?: string[];
blockId?: string;
sequence?: number;
ipfsHash?: string;
}
export interface ISchemaValidationResult {
value: T | undefined;
error: any;
errors?: ErrorObject[] | undefined;
}
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 IHtlcLockAsset {
secretHash: string;
expiration: {
type: HtlcLockExpirationType;
value: number;
};
}
export interface IHtlcClaimAsset {
lockTransactionId: string;
unlockSecret: string;
}
export interface IHtlcRefundAsset {
lockTransactionId: string;
}
export interface IHtlcLock extends IHtlcLockAsset {
amount: BigNumber;
recipientId: string | undefined;
timestamp: number;
vendorField: string | undefined;
}
export declare type IHtlcLocks = Record;
export interface IHtlcExpiration {
type: HtlcLockExpirationType;
value: number;
}
export interface IDeserializeOptions {
acceptLegacyVersion?: boolean;
disableVersionCheck?: boolean;
}
export interface IVerifyOptions {
disableVersionCheck?: boolean;
}
export interface ISerializeOptions {
acceptLegacyVersion?: boolean;
disableVersionCheck?: boolean;
excludeSignature?: boolean;
excludeSecondSignature?: boolean;
excludeMultiSignature?: boolean;
addressError?: string;
}
//# sourceMappingURL=transactions.d.ts.map