1 | import { ECPoint, UInt160 } from '@neo-one/client-common-esnext-esm';
|
2 | import { Action } from './action';
|
3 | import { Asset } from './Asset';
|
4 | import { Contract } from './Contract';
|
5 | import { InvocationResult } from './invocationResult';
|
6 | import { FeeContext, Input, InvocationTransaction, Transaction } from './transaction';
|
7 | import { TransactionData } from './TransactionData';
|
8 | import { BinaryReader } from './utils';
|
9 |
|
10 | export { SerializeWire, SerializableWire, createSerializeWire } from '@neo-one/client-common-esnext-esm';
|
11 |
|
12 | export interface DeserializeWireContext {
|
13 | readonly messageMagic: number;
|
14 | }
|
15 |
|
16 | export interface DeserializeWireBaseOptions {
|
17 | readonly context: DeserializeWireContext;
|
18 | readonly reader: BinaryReader;
|
19 | }
|
20 |
|
21 | export interface DeserializeWireOptions {
|
22 | readonly context: DeserializeWireContext;
|
23 | readonly buffer: Buffer;
|
24 | }
|
25 |
|
26 | export type DeserializeWireBase<T> = (options: DeserializeWireBaseOptions) => T;
|
27 | export type DeserializeWire<T> = (options: DeserializeWireOptions) => T;
|
28 |
|
29 | export 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 |
|
37 | export 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 |
|
47 | export 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 |
|
58 | export type SerializeJSON<TJSON> = (context: SerializeJSONContext) => TJSON | Promise<TJSON>;
|
59 |
|
60 | export interface SerializableJSON<TJSON> {
|
61 | readonly serializeJSON: SerializeJSON<TJSON>;
|
62 | }
|