UNPKG

2.34 kBPlain TextView Raw
1import { ECPoint, UInt160 } from '@neo-one/client-common-esnext-esm';
2import { Action } from './action';
3import { Asset } from './Asset';
4import { Contract } from './Contract';
5import { InvocationResult } from './invocationResult';
6import { FeeContext, Input, InvocationTransaction, Transaction } from './transaction';
7import { TransactionData } from './TransactionData';
8import { BinaryReader } from './utils';
9
10export { SerializeWire, SerializableWire, createSerializeWire } from '@neo-one/client-common-esnext-esm';
11
12export interface DeserializeWireContext {
13 readonly messageMagic: number;
14}
15
16export interface DeserializeWireBaseOptions {
17 readonly context: DeserializeWireContext;
18 readonly reader: BinaryReader;
19}
20
21export interface DeserializeWireOptions {
22 readonly context: DeserializeWireContext;
23 readonly buffer: Buffer;
24}
25
26export type DeserializeWireBase<T> = (options: DeserializeWireBaseOptions) => T;
27export type DeserializeWire<T> = (options: DeserializeWireOptions) => T;
28
29export function createDeserializeWire<T>(deserializeWireBase: DeserializeWireBase<T>): DeserializeWire<T> {
30 return (options) =>
31 deserializeWireBase({
32 context: options.context,
33 reader: new BinaryReader(options.buffer),
34 });
35}
36
37export interface SerializableInvocationData {
38 readonly asset: Asset | undefined;
39 readonly contracts: ReadonlyArray<Contract>;
40 readonly deletedContractHashes: ReadonlyArray<UInt160>;
41 readonly migratedContractHashes: ReadonlyArray<[UInt160, UInt160]>;
42 readonly voteUpdates: ReadonlyArray<[UInt160, ReadonlyArray<ECPoint>]>;
43 readonly result: InvocationResult;
44 readonly actions: ReadonlyArray<Action>;
45}
46
47export interface SerializeJSONContext {
48 readonly addressVersion: number;
49 readonly feeContext: FeeContext;
50 readonly tryGetInvocationData: (
51 transaction: InvocationTransaction,
52 ) => Promise<SerializableInvocationData | undefined>;
53 readonly tryGetTransactionData: (transaction: Transaction) => Promise<TransactionData | undefined>;
54 readonly getUnclaimed: (hash: UInt160) => Promise<ReadonlyArray<Input>>;
55 readonly getUnspent: (hash: UInt160) => Promise<ReadonlyArray<Input>>;
56}
57
58export type SerializeJSON<TJSON> = (context: SerializeJSONContext) => TJSON | Promise<TJSON>;
59
60export interface SerializableJSON<TJSON> {
61 readonly serializeJSON: SerializeJSON<TJSON>;
62}