@sentio/sdk 1.36.0 → 1.36.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/account-processor.js.map +1 -1
- package/lib/gen/processor/protos/processor.d.ts +12 -5
- package/lib/gen/processor/protos/processor.js +30 -44
- package/lib/gen/processor/protos/processor.js.map +1 -1
- package/lib/service.js +26 -8
- package/lib/service.js.map +1 -1
- package/lib/testing/test-processor-server.js +4 -6
- package/lib/testing/test-processor-server.js.map +1 -1
- package/package.json +1 -1
- package/src/core/account-processor.ts +1 -1
- package/src/gen/processor/protos/processor.ts +34 -49
- package/src/service.ts +26 -10
- package/src/testing/test-processor-server.ts +4 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account-processor.js","sourceRoot":"","sources":["../../src/core/account-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ListStateStorage } from '../state/state-storage'\nimport { ERC20__factory, ERC721__factory } from '../builtin/internal'\nimport { AddressType, DummyProvider, ProcessResult } from '@sentio/sdk'\nimport { AccountBindOptions } from './bind-options'\nimport { getNetwork } from '@ethersproject/providers'\nimport { TransferEvent as ERC20TransferEvent } from '../builtin/internal/ERC20'\nimport { TransferEvent as ERC721TransferEvent } from '../builtin/internal/ERC721'\nimport { AccountContext } from './context'\nimport { PromiseOrVoid } from '../promise-or-void'\nimport { Event, EventFilter } from '@ethersproject/contracts'\nimport { BytesLike } from '@ethersproject/bytes'\nimport { AddressOrTypeEventFilter, EventsHandler } from './base-processor'\n\nexport class AccountProcessorState extends ListStateStorage<AccountProcessor> {\n static INSTANCE = new AccountProcessorState()\n}\n\nconst ERC20_CONTRACT = ERC20__factory.connect('', DummyProvider)\nconst ERC721_CONTRACT = ERC721__factory.connect('', DummyProvider)\n\nexport class AccountProcessor {\n config: AccountBindOptions\n eventHandlers: EventsHandler[] = []\n\n static bind(config: AccountBindOptions): AccountProcessor {\n const processor = new AccountProcessor(config)\n AccountProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n protected constructor(config: AccountBindOptions) {\n this.config = config\n }\n\n public getChainId(): number {\n return getNetwork(this.config.network || 1).chainId\n }\n\n /**\n * Register custom handler function to process erc20 transfer event to this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n */\n onERC20TransferIn(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = []\n ) {\n return this.onERC20(handler, tokensAddresses, (address: string) =>\n ERC20_CONTRACT.filters.Transfer(null, this.config.address)\n )\n }\n\n /**\n * Register custom handler function to process erc20 transfer event from this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n */\n onERC20TransferOut(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = []\n ) {\n return this.onERC20(handler, tokensAddresses, (address: string) =>\n ERC20_CONTRACT.filters.Transfer(this.config.address)\n )\n }\n\n /**\n * Register custom handler function to process erc20 mint for this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n */\n onERC20Minted(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = []\n ) {\n return this.onERC20(handler, tokensAddresses, (address: string) =>\n ERC20_CONTRACT.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address)\n )\n }\n\n private onERC20(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n defaultFilter: (address: string) => AddressOrTypeEventFilter\n ) {\n return this.onERC(handler, tokensAddresses, defaultFilter, AddressType.ERC20)\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event to this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n */\n onERC721TransferIn(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[]\n ) {\n return this.onERC721(handler, collections, (address: string) =>\n ERC721_CONTRACT.filters.Transfer(null, this.config.address)\n )\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event from this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n */\n onERC721TransferOut(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[]\n ) {\n return this.onERC721(handler, collections, (address: string) =>\n ERC721_CONTRACT.filters.Transfer(this.config.address)\n )\n }\n\n /**\n * Register custom handler function to process ERC721 mint for this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n */\n onERC721Minted(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[] = []\n ) {\n return this.onERC721(handler, collections, (address: string) =>\n ERC721_CONTRACT.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address)\n )\n }\n\n private onERC721(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter\n ) {\n return this.onERC(handler, collections, defaultFilter, AddressType.ERC721)\n }\n\n private onERC(\n handler: (event: any, ctx: AccountContext) => PromiseOrVoid,\n contractAddresses: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n addressType: AddressType\n ) {\n const filters = []\n for (const token of contractAddresses) {\n const filter = defaultFilter(this.config.address)\n filter.address = token\n filters.push(filter)\n }\n if (!filters.length) {\n const filter = defaultFilter(this.config.address)\n filter.address = undefined\n filter.addressType = addressType\n filters.push(filter)\n }\n return this.onEvent(handler, filters)\n }\n\n protected onEvent(\n handler: (event: Event, ctx: AccountContext) => PromiseOrVoid,\n filter: AddressOrTypeEventFilter | AddressOrTypeEventFilter[]\n ) {\n const chainId = this.getChainId()\n\n let _filters: AddressOrTypeEventFilter[] = []\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n let hasVaildConfig = false\n for (const filter of _filters) {\n if (filter.address) {\n hasVaildConfig = true\n break\n }\n if (filter.topics && filter.topics.length) {\n hasVaildConfig = true\n break\n }\n }\n\n if (!hasVaildConfig) {\n throw Error('no valid config has been found for this account')\n }\n\n const config = this.config\n\n this.eventHandlers.push({\n filters: _filters,\n handler: async function (log) {\n const ctx = new AccountContext(chainId, config.address, undefined, log)\n // let event: Event = <Event>deepCopy(log);\n const event: Event = <Event>log\n const parsed = ERC20_CONTRACT.interface.parseLog(log)\n if (parsed) {\n event.args = parsed.args\n event.decode = (data: BytesLike, topics?: Array<any>) => {\n return ERC20_CONTRACT.interface.decodeEventLog(parsed.eventFragment, data, topics)\n }\n event.event = parsed.name\n event.eventSignature = parsed.signature\n\n // TODO fix this bug\n await handler(event, ctx)\n return ctx.getProcessResult()\n }\n return ProcessResult.fromPartial({})\n },\n })\n\n return this\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"account-processor.js","sourceRoot":"","sources":["../../src/core/account-processor.ts"],"names":[],"mappings":"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","sourcesContent":["import { ListStateStorage } from '../state/state-storage'\nimport { ERC20__factory, ERC721__factory } from '../builtin/internal'\nimport { AddressType, DummyProvider, ProcessResult } from '@sentio/sdk'\nimport { AccountBindOptions } from './bind-options'\nimport { getNetwork } from '@ethersproject/providers'\nimport { TransferEvent as ERC20TransferEvent } from '../builtin/internal/ERC20'\nimport { TransferEvent as ERC721TransferEvent } from '../builtin/internal/ERC721'\nimport { AccountContext } from './context'\nimport { PromiseOrVoid } from '../promise-or-void'\nimport { Event } from '@ethersproject/contracts'\nimport { BytesLike } from '@ethersproject/bytes'\nimport { AddressOrTypeEventFilter, EventsHandler } from './base-processor'\n\nexport class AccountProcessorState extends ListStateStorage<AccountProcessor> {\n static INSTANCE = new AccountProcessorState()\n}\n\nconst ERC20_CONTRACT = ERC20__factory.connect('', DummyProvider)\nconst ERC721_CONTRACT = ERC721__factory.connect('', DummyProvider)\n\nexport class AccountProcessor {\n config: AccountBindOptions\n eventHandlers: EventsHandler[] = []\n\n static bind(config: AccountBindOptions): AccountProcessor {\n const processor = new AccountProcessor(config)\n AccountProcessorState.INSTANCE.addValue(processor)\n return processor\n }\n\n protected constructor(config: AccountBindOptions) {\n this.config = config\n }\n\n public getChainId(): number {\n return getNetwork(this.config.network || 1).chainId\n }\n\n /**\n * Register custom handler function to process erc20 transfer event to this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n */\n onERC20TransferIn(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = []\n ) {\n return this.onERC20(handler, tokensAddresses, (address: string) =>\n ERC20_CONTRACT.filters.Transfer(null, this.config.address)\n )\n }\n\n /**\n * Register custom handler function to process erc20 transfer event from this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n */\n onERC20TransferOut(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = []\n ) {\n return this.onERC20(handler, tokensAddresses, (address: string) =>\n ERC20_CONTRACT.filters.Transfer(this.config.address)\n )\n }\n\n /**\n * Register custom handler function to process erc20 mint for this account\n * @param handler custom handler function\n * @param tokensAddresses all the erc20 token address to watch\n */\n onERC20Minted(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = []\n ) {\n return this.onERC20(handler, tokensAddresses, (address: string) =>\n ERC20_CONTRACT.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address)\n )\n }\n\n private onERC20(\n handler: (event: ERC20TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n tokensAddresses: string[] = [],\n defaultFilter: (address: string) => AddressOrTypeEventFilter\n ) {\n return this.onERC(handler, tokensAddresses, defaultFilter, AddressType.ERC20)\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event to this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n */\n onERC721TransferIn(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[]\n ) {\n return this.onERC721(handler, collections, (address: string) =>\n ERC721_CONTRACT.filters.Transfer(null, this.config.address)\n )\n }\n\n /**\n * Register custom handler function to process ERC721 transfer event from this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n */\n onERC721TransferOut(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[]\n ) {\n return this.onERC721(handler, collections, (address: string) =>\n ERC721_CONTRACT.filters.Transfer(this.config.address)\n )\n }\n\n /**\n * Register custom handler function to process ERC721 mint for this account\n * @param handler custom handler function\n * @param collections all the ERC721 token address to watch, if not provided then watch all ERC721\n */\n onERC721Minted(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[] = []\n ) {\n return this.onERC721(handler, collections, (address: string) =>\n ERC721_CONTRACT.filters.Transfer('0x0000000000000000000000000000000000000000', this.config.address)\n )\n }\n\n private onERC721(\n handler: (event: ERC721TransferEvent, ctx: AccountContext) => PromiseOrVoid,\n collections: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter\n ) {\n return this.onERC(handler, collections, defaultFilter, AddressType.ERC721)\n }\n\n private onERC(\n handler: (event: any, ctx: AccountContext) => PromiseOrVoid,\n contractAddresses: string[],\n defaultFilter: (address: string) => AddressOrTypeEventFilter,\n addressType: AddressType\n ) {\n const filters = []\n for (const token of contractAddresses) {\n const filter = defaultFilter(this.config.address)\n filter.address = token\n filters.push(filter)\n }\n if (!filters.length) {\n const filter = defaultFilter(this.config.address)\n filter.address = undefined\n filter.addressType = addressType\n filters.push(filter)\n }\n return this.onEvent(handler, filters)\n }\n\n protected onEvent(\n handler: (event: Event, ctx: AccountContext) => PromiseOrVoid,\n filter: AddressOrTypeEventFilter | AddressOrTypeEventFilter[]\n ) {\n const chainId = this.getChainId()\n\n let _filters: AddressOrTypeEventFilter[] = []\n\n if (Array.isArray(filter)) {\n _filters = filter\n } else {\n _filters.push(filter)\n }\n\n let hasVaildConfig = false\n for (const filter of _filters) {\n if (filter.address) {\n hasVaildConfig = true\n break\n }\n if (filter.topics && filter.topics.length) {\n hasVaildConfig = true\n break\n }\n }\n\n if (!hasVaildConfig) {\n throw Error('no valid config has been found for this account')\n }\n\n const config = this.config\n\n this.eventHandlers.push({\n filters: _filters,\n handler: async function (log) {\n const ctx = new AccountContext(chainId, config.address, undefined, log)\n // let event: Event = <Event>deepCopy(log);\n const event: Event = <Event>log\n const parsed = ERC20_CONTRACT.interface.parseLog(log)\n if (parsed) {\n event.args = parsed.args\n event.decode = (data: BytesLike, topics?: Array<any>) => {\n return ERC20_CONTRACT.interface.decodeEventLog(parsed.eventFragment, data, topics)\n }\n event.event = parsed.name\n event.eventSignature = parsed.signature\n\n // TODO fix this bug\n await handler(event, ctx)\n return ctx.getProcessResult()\n }\n return ProcessResult.fromPartial({})\n },\n })\n\n return this\n }\n}\n"]}
|
|
@@ -219,19 +219,26 @@ export interface Data {
|
|
|
219
219
|
aptResource?: Data_AptResource | undefined;
|
|
220
220
|
}
|
|
221
221
|
export interface Data_EthLog {
|
|
222
|
-
|
|
222
|
+
log: {
|
|
223
|
+
[key: string]: any;
|
|
224
|
+
} | undefined;
|
|
223
225
|
transaction?: Uint8Array | undefined;
|
|
224
226
|
}
|
|
225
227
|
export interface Data_EthBlock {
|
|
226
|
-
|
|
228
|
+
block: {
|
|
229
|
+
[key: string]: any;
|
|
230
|
+
} | undefined;
|
|
227
231
|
}
|
|
228
232
|
export interface Data_EthTransaction {
|
|
229
|
-
|
|
230
|
-
|
|
233
|
+
transaction: {
|
|
234
|
+
[key: string]: any;
|
|
235
|
+
} | undefined;
|
|
231
236
|
transactionReceipt?: Uint8Array | undefined;
|
|
232
237
|
}
|
|
233
238
|
export interface Data_EthTrace {
|
|
234
|
-
|
|
239
|
+
trace: {
|
|
240
|
+
[key: string]: any;
|
|
241
|
+
} | undefined;
|
|
235
242
|
transaction?: Uint8Array | undefined;
|
|
236
243
|
transactionReceipt?: Uint8Array | undefined;
|
|
237
244
|
}
|
|
@@ -2533,12 +2533,12 @@ exports.Data = {
|
|
|
2533
2533
|
},
|
|
2534
2534
|
};
|
|
2535
2535
|
function createBaseData_EthLog() {
|
|
2536
|
-
return {
|
|
2536
|
+
return { log: undefined, transaction: undefined };
|
|
2537
2537
|
}
|
|
2538
2538
|
exports.Data_EthLog = {
|
|
2539
2539
|
encode(message, writer = minimal_1.default.Writer.create()) {
|
|
2540
|
-
if (message.
|
|
2541
|
-
writer.uint32(
|
|
2540
|
+
if (message.log !== undefined) {
|
|
2541
|
+
struct_1.Struct.encode(struct_1.Struct.wrap(message.log), writer.uint32(26).fork()).ldelim();
|
|
2542
2542
|
}
|
|
2543
2543
|
if (message.transaction !== undefined) {
|
|
2544
2544
|
writer.uint32(18).bytes(message.transaction);
|
|
@@ -2552,8 +2552,8 @@ exports.Data_EthLog = {
|
|
|
2552
2552
|
while (reader.pos < end) {
|
|
2553
2553
|
const tag = reader.uint32();
|
|
2554
2554
|
switch (tag >>> 3) {
|
|
2555
|
-
case
|
|
2556
|
-
message.
|
|
2555
|
+
case 3:
|
|
2556
|
+
message.log = struct_1.Struct.unwrap(struct_1.Struct.decode(reader, reader.uint32()));
|
|
2557
2557
|
break;
|
|
2558
2558
|
case 2:
|
|
2559
2559
|
message.transaction = reader.bytes();
|
|
@@ -2567,32 +2567,31 @@ exports.Data_EthLog = {
|
|
|
2567
2567
|
},
|
|
2568
2568
|
fromJSON(object) {
|
|
2569
2569
|
return {
|
|
2570
|
-
|
|
2570
|
+
log: isObject(object.log) ? object.log : undefined,
|
|
2571
2571
|
transaction: isSet(object.transaction) ? bytesFromBase64(object.transaction) : undefined,
|
|
2572
2572
|
};
|
|
2573
2573
|
},
|
|
2574
2574
|
toJSON(message) {
|
|
2575
2575
|
const obj = {};
|
|
2576
|
-
message.
|
|
2577
|
-
(obj.data = base64FromBytes(message.data !== undefined ? message.data : new Uint8Array()));
|
|
2576
|
+
message.log !== undefined && (obj.log = message.log);
|
|
2578
2577
|
message.transaction !== undefined &&
|
|
2579
2578
|
(obj.transaction = message.transaction !== undefined ? base64FromBytes(message.transaction) : undefined);
|
|
2580
2579
|
return obj;
|
|
2581
2580
|
},
|
|
2582
2581
|
fromPartial(object) {
|
|
2583
2582
|
const message = createBaseData_EthLog();
|
|
2584
|
-
message.
|
|
2583
|
+
message.log = object.log ?? undefined;
|
|
2585
2584
|
message.transaction = object.transaction ?? undefined;
|
|
2586
2585
|
return message;
|
|
2587
2586
|
},
|
|
2588
2587
|
};
|
|
2589
2588
|
function createBaseData_EthBlock() {
|
|
2590
|
-
return {
|
|
2589
|
+
return { block: undefined };
|
|
2591
2590
|
}
|
|
2592
2591
|
exports.Data_EthBlock = {
|
|
2593
2592
|
encode(message, writer = minimal_1.default.Writer.create()) {
|
|
2594
|
-
if (message.
|
|
2595
|
-
writer.uint32(
|
|
2593
|
+
if (message.block !== undefined) {
|
|
2594
|
+
struct_1.Struct.encode(struct_1.Struct.wrap(message.block), writer.uint32(18).fork()).ldelim();
|
|
2596
2595
|
}
|
|
2597
2596
|
return writer;
|
|
2598
2597
|
},
|
|
@@ -2603,8 +2602,8 @@ exports.Data_EthBlock = {
|
|
|
2603
2602
|
while (reader.pos < end) {
|
|
2604
2603
|
const tag = reader.uint32();
|
|
2605
2604
|
switch (tag >>> 3) {
|
|
2606
|
-
case
|
|
2607
|
-
message.
|
|
2605
|
+
case 2:
|
|
2606
|
+
message.block = struct_1.Struct.unwrap(struct_1.Struct.decode(reader, reader.uint32()));
|
|
2608
2607
|
break;
|
|
2609
2608
|
default:
|
|
2610
2609
|
reader.skipType(tag & 7);
|
|
@@ -2614,30 +2613,26 @@ exports.Data_EthBlock = {
|
|
|
2614
2613
|
return message;
|
|
2615
2614
|
},
|
|
2616
2615
|
fromJSON(object) {
|
|
2617
|
-
return {
|
|
2616
|
+
return { block: isObject(object.block) ? object.block : undefined };
|
|
2618
2617
|
},
|
|
2619
2618
|
toJSON(message) {
|
|
2620
2619
|
const obj = {};
|
|
2621
|
-
message.
|
|
2622
|
-
(obj.data = base64FromBytes(message.data !== undefined ? message.data : new Uint8Array()));
|
|
2620
|
+
message.block !== undefined && (obj.block = message.block);
|
|
2623
2621
|
return obj;
|
|
2624
2622
|
},
|
|
2625
2623
|
fromPartial(object) {
|
|
2626
2624
|
const message = createBaseData_EthBlock();
|
|
2627
|
-
message.
|
|
2625
|
+
message.block = object.block ?? undefined;
|
|
2628
2626
|
return message;
|
|
2629
2627
|
},
|
|
2630
2628
|
};
|
|
2631
2629
|
function createBaseData_EthTransaction() {
|
|
2632
|
-
return {
|
|
2630
|
+
return { transaction: undefined, transactionReceipt: undefined };
|
|
2633
2631
|
}
|
|
2634
2632
|
exports.Data_EthTransaction = {
|
|
2635
2633
|
encode(message, writer = minimal_1.default.Writer.create()) {
|
|
2636
|
-
if (message.data.length !== 0) {
|
|
2637
|
-
writer.uint32(10).bytes(message.data);
|
|
2638
|
-
}
|
|
2639
2634
|
if (message.transaction !== undefined) {
|
|
2640
|
-
writer.uint32(
|
|
2635
|
+
struct_1.Struct.encode(struct_1.Struct.wrap(message.transaction), writer.uint32(34).fork()).ldelim();
|
|
2641
2636
|
}
|
|
2642
2637
|
if (message.transactionReceipt !== undefined) {
|
|
2643
2638
|
writer.uint32(26).bytes(message.transactionReceipt);
|
|
@@ -2651,11 +2646,8 @@ exports.Data_EthTransaction = {
|
|
|
2651
2646
|
while (reader.pos < end) {
|
|
2652
2647
|
const tag = reader.uint32();
|
|
2653
2648
|
switch (tag >>> 3) {
|
|
2654
|
-
case
|
|
2655
|
-
message.
|
|
2656
|
-
break;
|
|
2657
|
-
case 2:
|
|
2658
|
-
message.transaction = reader.bytes();
|
|
2649
|
+
case 4:
|
|
2650
|
+
message.transaction = struct_1.Struct.unwrap(struct_1.Struct.decode(reader, reader.uint32()));
|
|
2659
2651
|
break;
|
|
2660
2652
|
case 3:
|
|
2661
2653
|
message.transactionReceipt = reader.bytes();
|
|
@@ -2669,17 +2661,13 @@ exports.Data_EthTransaction = {
|
|
|
2669
2661
|
},
|
|
2670
2662
|
fromJSON(object) {
|
|
2671
2663
|
return {
|
|
2672
|
-
|
|
2673
|
-
transaction: isSet(object.transaction) ? bytesFromBase64(object.transaction) : undefined,
|
|
2664
|
+
transaction: isObject(object.transaction) ? object.transaction : undefined,
|
|
2674
2665
|
transactionReceipt: isSet(object.transactionReceipt) ? bytesFromBase64(object.transactionReceipt) : undefined,
|
|
2675
2666
|
};
|
|
2676
2667
|
},
|
|
2677
2668
|
toJSON(message) {
|
|
2678
2669
|
const obj = {};
|
|
2679
|
-
message.
|
|
2680
|
-
(obj.data = base64FromBytes(message.data !== undefined ? message.data : new Uint8Array()));
|
|
2681
|
-
message.transaction !== undefined &&
|
|
2682
|
-
(obj.transaction = message.transaction !== undefined ? base64FromBytes(message.transaction) : undefined);
|
|
2670
|
+
message.transaction !== undefined && (obj.transaction = message.transaction);
|
|
2683
2671
|
message.transactionReceipt !== undefined && (obj.transactionReceipt = message.transactionReceipt !== undefined
|
|
2684
2672
|
? base64FromBytes(message.transactionReceipt)
|
|
2685
2673
|
: undefined);
|
|
@@ -2687,19 +2675,18 @@ exports.Data_EthTransaction = {
|
|
|
2687
2675
|
},
|
|
2688
2676
|
fromPartial(object) {
|
|
2689
2677
|
const message = createBaseData_EthTransaction();
|
|
2690
|
-
message.data = object.data ?? new Uint8Array();
|
|
2691
2678
|
message.transaction = object.transaction ?? undefined;
|
|
2692
2679
|
message.transactionReceipt = object.transactionReceipt ?? undefined;
|
|
2693
2680
|
return message;
|
|
2694
2681
|
},
|
|
2695
2682
|
};
|
|
2696
2683
|
function createBaseData_EthTrace() {
|
|
2697
|
-
return {
|
|
2684
|
+
return { trace: undefined, transaction: undefined, transactionReceipt: undefined };
|
|
2698
2685
|
}
|
|
2699
2686
|
exports.Data_EthTrace = {
|
|
2700
2687
|
encode(message, writer = minimal_1.default.Writer.create()) {
|
|
2701
|
-
if (message.
|
|
2702
|
-
writer.uint32(
|
|
2688
|
+
if (message.trace !== undefined) {
|
|
2689
|
+
struct_1.Struct.encode(struct_1.Struct.wrap(message.trace), writer.uint32(34).fork()).ldelim();
|
|
2703
2690
|
}
|
|
2704
2691
|
if (message.transaction !== undefined) {
|
|
2705
2692
|
writer.uint32(18).bytes(message.transaction);
|
|
@@ -2716,8 +2703,8 @@ exports.Data_EthTrace = {
|
|
|
2716
2703
|
while (reader.pos < end) {
|
|
2717
2704
|
const tag = reader.uint32();
|
|
2718
2705
|
switch (tag >>> 3) {
|
|
2719
|
-
case
|
|
2720
|
-
message.
|
|
2706
|
+
case 4:
|
|
2707
|
+
message.trace = struct_1.Struct.unwrap(struct_1.Struct.decode(reader, reader.uint32()));
|
|
2721
2708
|
break;
|
|
2722
2709
|
case 2:
|
|
2723
2710
|
message.transaction = reader.bytes();
|
|
@@ -2734,15 +2721,14 @@ exports.Data_EthTrace = {
|
|
|
2734
2721
|
},
|
|
2735
2722
|
fromJSON(object) {
|
|
2736
2723
|
return {
|
|
2737
|
-
|
|
2724
|
+
trace: isObject(object.trace) ? object.trace : undefined,
|
|
2738
2725
|
transaction: isSet(object.transaction) ? bytesFromBase64(object.transaction) : undefined,
|
|
2739
2726
|
transactionReceipt: isSet(object.transactionReceipt) ? bytesFromBase64(object.transactionReceipt) : undefined,
|
|
2740
2727
|
};
|
|
2741
2728
|
},
|
|
2742
2729
|
toJSON(message) {
|
|
2743
2730
|
const obj = {};
|
|
2744
|
-
message.
|
|
2745
|
-
(obj.data = base64FromBytes(message.data !== undefined ? message.data : new Uint8Array()));
|
|
2731
|
+
message.trace !== undefined && (obj.trace = message.trace);
|
|
2746
2732
|
message.transaction !== undefined &&
|
|
2747
2733
|
(obj.transaction = message.transaction !== undefined ? base64FromBytes(message.transaction) : undefined);
|
|
2748
2734
|
message.transactionReceipt !== undefined && (obj.transactionReceipt = message.transactionReceipt !== undefined
|
|
@@ -2752,7 +2738,7 @@ exports.Data_EthTrace = {
|
|
|
2752
2738
|
},
|
|
2753
2739
|
fromPartial(object) {
|
|
2754
2740
|
const message = createBaseData_EthTrace();
|
|
2755
|
-
message.
|
|
2741
|
+
message.trace = object.trace ?? undefined;
|
|
2756
2742
|
message.transaction = object.transaction ?? undefined;
|
|
2757
2743
|
message.transactionReceipt = object.transactionReceipt ?? undefined;
|
|
2758
2744
|
return message;
|