@avalabs/avalanchejs
Version:
Avalanche Platform JS Library
48 lines (42 loc) • 1.23 kB
text/typescript
import { pack, unpack } from '../../utils/struct';
import { BaseTx } from '../avax/baseTx';
import type { Codec } from '../codec';
import { serializable } from '../common/types';
import { TypeSymbols } from '../constants';
import { Id } from '../fxs/common';
import { BigIntPr } from '../primitives';
import { PVMTx } from './abstractTx';
()
export class IncreaseL1ValidatorBalanceTx extends PVMTx {
_type = TypeSymbols.IncreaseL1ValidatorBalanceTx;
constructor(
public readonly baseTx: BaseTx,
/**
* The corresponding Validator ID.
*/
public readonly validationId: Id,
/**
* Balance <= sum of AVAX inputs - sum of AVAX outputs - Tx fee
*/
public readonly balance: BigIntPr,
) {
super();
}
static fromBytes(
bytes: Uint8Array,
codec: Codec,
): [increaseBalanceTx: IncreaseL1ValidatorBalanceTx, rest: Uint8Array] {
const [baseTx, validationId, balance, rest] = unpack(
bytes,
[BaseTx, Id, BigIntPr],
codec,
);
return [
new IncreaseL1ValidatorBalanceTx(baseTx, validationId, balance),
rest,
];
}
toBytes(codec: Codec) {
return pack([this.baseTx, this.validationId, this.balance], codec);
}
}