@subsquid/evm-typegen 3.2.4 → 4.0.0

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"abi.support.js","sourceRoot":"","sources":["../src/abi.support.ts"],"names":[],"mappings":"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"}
@@ -1,120 +0,0 @@
1
- import assert from 'assert'
2
- import * as ethers from 'ethers'
3
-
4
-
5
- export interface LogRecord {
6
- topics: string[]
7
- data: string
8
- }
9
-
10
-
11
- export class LogEvent<Args> {
12
- private fragment: ethers.EventFragment
13
-
14
- constructor(private abi: ethers.Interface, public readonly topic: string) {
15
- let fragment = abi.getEvent(topic)
16
- assert(fragment != null, 'Missing fragment')
17
- this.fragment = fragment
18
- }
19
-
20
- decode(rec: LogRecord): Args {
21
- return this.abi.decodeEventLog(this.fragment, rec.data, rec.topics) as any as Args
22
- }
23
- }
24
-
25
-
26
- export class Func<Args extends any[], FieldArgs, Result> {
27
- private fragment: ethers.FunctionFragment
28
-
29
- constructor(private abi: ethers.Interface, public readonly sighash: string) {
30
- let fragment = abi.getFunction(sighash)
31
- assert(fragment != null, 'Missing fragment')
32
- this.fragment = fragment
33
- }
34
-
35
- decode(input: ethers.BytesLike): Args & FieldArgs {
36
- return this.abi.decodeFunctionData(this.fragment, input) as any as Args & FieldArgs
37
- }
38
-
39
- encode(args: Args): string {
40
- return this.abi.encodeFunctionData(this.fragment, args)
41
- }
42
-
43
- decodeResult(output: ethers.BytesLike): Result {
44
- const decoded = this.abi.decodeFunctionResult(this.fragment, output)
45
- return decoded.length > 1 ? decoded : decoded[0]
46
- }
47
-
48
- tryDecodeResult(output: ethers.BytesLike): Result | undefined {
49
- try {
50
- return this.decodeResult(output)
51
- } catch(err: any) {
52
- return undefined
53
- }
54
- }
55
- }
56
-
57
-
58
- export function isFunctionResultDecodingError(val: unknown): val is Error & {data: string} {
59
- if (!(val instanceof Error)) return false
60
- let err = val as any
61
- return err.code == 'CALL_EXCEPTION'
62
- && typeof err.data == 'string'
63
- && !err.errorArgs
64
- && !err.errorName
65
- }
66
-
67
-
68
- export interface ChainContext {
69
- _chain: Chain
70
- }
71
-
72
-
73
- export interface BlockContext {
74
- _chain: Chain
75
- block: Block
76
- }
77
-
78
-
79
- export interface Block {
80
- height: number
81
- }
82
-
83
-
84
- export interface Chain {
85
- client: {
86
- call: <T=any>(method: string, params?: unknown[]) => Promise<T>
87
- }
88
- }
89
-
90
-
91
- export class ContractBase {
92
- private readonly _chain: Chain
93
- private readonly blockHeight: number
94
- readonly address: string
95
-
96
- constructor(ctx: BlockContext, address: string)
97
- constructor(ctx: ChainContext, block: Block, address: string)
98
- constructor(ctx: BlockContext, blockOrAddress: Block | string, address?: string) {
99
- this._chain = ctx._chain
100
- if (typeof blockOrAddress === 'string') {
101
- this.blockHeight = ctx.block.height
102
- this.address = ethers.getAddress(blockOrAddress)
103
- } else {
104
- if (address == null) {
105
- throw new Error('missing contract address')
106
- }
107
- this.blockHeight = blockOrAddress.height
108
- this.address = ethers.getAddress(address)
109
- }
110
- }
111
-
112
- async eth_call<Args extends any[], FieldArgs, Result>(func: Func<Args, FieldArgs, Result>, args: Args): Promise<Result> {
113
- let data = func.encode(args)
114
- let result = await this._chain.client.call('eth_call', [
115
- {to: this.address, data},
116
- '0x'+this.blockHeight.toString(16)
117
- ])
118
- return func.decodeResult(result)
119
- }
120
- }