|
7 | 7 | import Foundation |
8 | 8 | import Core |
9 | 9 |
|
10 | | -public struct EventFilter { |
11 | | - public enum Block { |
12 | | - case latest |
13 | | - case pending |
14 | | - case blockNumber(UInt) |
15 | | - |
16 | | - var encoded: String { |
17 | | - switch self { |
18 | | - case .latest: |
19 | | - return "latest" |
20 | | - case .pending: |
21 | | - return "pending" |
22 | | - case .blockNumber(let number): |
23 | | - return String(number, radix: 16).addHexPrefix() |
24 | | - } |
25 | | - } |
26 | | - } |
27 | | - |
28 | | - public init() { } |
29 | | - |
30 | | - public init(fromBlock: Block?, toBlock: Block?, |
31 | | - addresses: [EthereumAddress]? = nil, |
32 | | - parameterFilters: [[EventFilterable]?]? = nil) { |
33 | | - self.fromBlock = fromBlock |
34 | | - self.toBlock = toBlock |
35 | | - self.addresses = addresses |
36 | | - self.parameterFilters = parameterFilters |
37 | | - } |
38 | | - |
39 | | - public var fromBlock: Block? |
40 | | - public var toBlock: Block? |
41 | | - public var addresses: [EthereumAddress]? |
42 | | - public var parameterFilters: [[EventFilterable]?]? |
43 | | - |
44 | | - public func rpcPreEncode() -> EventFilterParameters { |
45 | | - var encoding = EventFilterParameters() |
46 | | - if self.fromBlock != nil { |
47 | | - encoding.fromBlock = self.fromBlock!.encoded |
48 | | - } |
49 | | - if self.toBlock != nil { |
50 | | - encoding.toBlock = self.toBlock!.encoded |
51 | | - } |
52 | | - if self.addresses != nil { |
53 | | - if self.addresses!.count == 1 { |
54 | | - encoding.address = [self.addresses![0].address] |
55 | | - } else { |
56 | | - var encodedAddresses = [String?]() |
57 | | - for addr in self.addresses! { |
58 | | - encodedAddresses.append(addr.address) |
59 | | - } |
60 | | - encoding.address = encodedAddresses |
61 | | - } |
62 | | - } |
63 | | - return encoding |
64 | | - } |
65 | | -} |
66 | | - |
67 | | -// MARK: - Internal functions |
68 | | - |
69 | 10 | public struct EventFilter { |
70 | 11 | public enum Block { |
71 | 12 | case latest |
|
0 commit comments