@sentio/sdk 2.41.3 → 2.41.4-rc.2
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/eth/builtin/internal/eacaggregatorproxy-processor.d.ts.map +1 -1
- package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js +131 -145
- package/lib/eth/builtin/internal/eacaggregatorproxy-processor.js.map +1 -1
- package/lib/eth/builtin/internal/erc1155-processor.d.ts.map +1 -1
- package/lib/eth/builtin/internal/erc1155-processor.js +44 -52
- package/lib/eth/builtin/internal/erc1155-processor.js.map +1 -1
- package/lib/eth/builtin/internal/erc20-processor.d.ts.map +1 -1
- package/lib/eth/builtin/internal/erc20-processor.js +104 -112
- package/lib/eth/builtin/internal/erc20-processor.js.map +1 -1
- package/lib/eth/builtin/internal/erc20bytes-processor.d.ts.map +1 -1
- package/lib/eth/builtin/internal/erc20bytes-processor.js +53 -55
- package/lib/eth/builtin/internal/erc20bytes-processor.js.map +1 -1
- package/lib/eth/builtin/internal/erc721-processor.d.ts.map +1 -1
- package/lib/eth/builtin/internal/erc721-processor.js +80 -88
- package/lib/eth/builtin/internal/erc721-processor.js.map +1 -1
- package/lib/eth/builtin/internal/weth9-processor.d.ts.map +1 -1
- package/lib/eth/builtin/internal/weth9-processor.js +67 -65
- package/lib/eth/builtin/internal/weth9-processor.js.map +1 -1
- package/lib/eth/codegen/function-calls.d.ts.map +1 -1
- package/lib/eth/codegen/function-calls.js +3 -5
- package/lib/eth/codegen/function-calls.js.map +1 -1
- package/lib/utils/block.d.ts +3 -0
- package/lib/utils/block.d.ts.map +1 -0
- package/lib/utils/block.js +35 -0
- package/lib/utils/block.js.map +1 -0
- package/lib/utils/block.test.d.ts +2 -0
- package/lib/utils/block.test.d.ts.map +1 -0
- package/lib/utils/block.test.js.map +1 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +1 -0
- package/lib/utils/index.js.map +1 -1
- package/package.json +3 -3
- package/src/eth/builtin/internal/eacaggregatorproxy-processor.ts +131 -168
- package/src/eth/builtin/internal/erc1155-processor.ts +44 -60
- package/src/eth/builtin/internal/erc20-processor.ts +104 -130
- package/src/eth/builtin/internal/erc20bytes-processor.ts +53 -64
- package/src/eth/builtin/internal/erc721-processor.ts +80 -102
- package/src/eth/builtin/internal/weth9-processor.ts +67 -76
- package/src/eth/codegen/function-calls.ts +3 -5
- package/src/utils/block.ts +44 -0
- package/src/utils/index.ts +1 -0
@@ -827,54 +827,53 @@ export class WETH9BoundContractView extends BoundContractView<
|
|
827
827
|
context: this.context,
|
828
828
|
|
829
829
|
name(overrides?: Overrides): EthCallParam {
|
830
|
-
|
831
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
832
|
-
const address = this.context.address;
|
833
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
830
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
834
831
|
if (overrides?.blockTag) {
|
835
|
-
|
832
|
+
blockTagWithOverride =
|
836
833
|
typeof overrides.blockTag == "string"
|
837
834
|
? overrides.blockTag
|
838
835
|
: "0x" + overrides.blockTag.toString(16);
|
839
836
|
}
|
840
837
|
|
841
|
-
return this.view.encodeCall.name({
|
838
|
+
return this.view.encodeCall.name({
|
839
|
+
chainId: this.context.chainId.toString(),
|
840
|
+
address: this.context.address,
|
841
|
+
blockTag: blockTagWithOverride,
|
842
|
+
});
|
842
843
|
},
|
843
844
|
approve(
|
844
845
|
guy: string,
|
845
846
|
wad: BigNumberish,
|
846
847
|
overrides?: Overrides
|
847
848
|
): EthCallParam {
|
848
|
-
|
849
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
850
|
-
const address = this.context.address;
|
851
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
849
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
852
850
|
if (overrides?.blockTag) {
|
853
|
-
|
851
|
+
blockTagWithOverride =
|
854
852
|
typeof overrides.blockTag == "string"
|
855
853
|
? overrides.blockTag
|
856
854
|
: "0x" + overrides.blockTag.toString(16);
|
857
855
|
}
|
858
856
|
|
859
857
|
return this.view.encodeCall.approve(guy, wad, {
|
860
|
-
chainId,
|
861
|
-
address,
|
862
|
-
blockTag,
|
858
|
+
chainId: this.context.chainId.toString(),
|
859
|
+
address: this.context.address,
|
860
|
+
blockTag: blockTagWithOverride,
|
863
861
|
});
|
864
862
|
},
|
865
863
|
totalSupply(overrides?: Overrides): EthCallParam {
|
866
|
-
|
867
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
868
|
-
const address = this.context.address;
|
869
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
864
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
870
865
|
if (overrides?.blockTag) {
|
871
|
-
|
866
|
+
blockTagWithOverride =
|
872
867
|
typeof overrides.blockTag == "string"
|
873
868
|
? overrides.blockTag
|
874
869
|
: "0x" + overrides.blockTag.toString(16);
|
875
870
|
}
|
876
871
|
|
877
|
-
return this.view.encodeCall.totalSupply({
|
872
|
+
return this.view.encodeCall.totalSupply({
|
873
|
+
chainId: this.context.chainId.toString(),
|
874
|
+
address: this.context.address,
|
875
|
+
blockTag: blockTagWithOverride,
|
876
|
+
});
|
878
877
|
},
|
879
878
|
transferFrom(
|
880
879
|
src: string,
|
@@ -882,135 +881,127 @@ export class WETH9BoundContractView extends BoundContractView<
|
|
882
881
|
wad: BigNumberish,
|
883
882
|
overrides?: Overrides
|
884
883
|
): EthCallParam {
|
885
|
-
|
886
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
887
|
-
const address = this.context.address;
|
888
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
884
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
889
885
|
if (overrides?.blockTag) {
|
890
|
-
|
886
|
+
blockTagWithOverride =
|
891
887
|
typeof overrides.blockTag == "string"
|
892
888
|
? overrides.blockTag
|
893
889
|
: "0x" + overrides.blockTag.toString(16);
|
894
890
|
}
|
895
891
|
|
896
892
|
return this.view.encodeCall.transferFrom(src, dst, wad, {
|
897
|
-
chainId,
|
898
|
-
address,
|
899
|
-
blockTag,
|
893
|
+
chainId: this.context.chainId.toString(),
|
894
|
+
address: this.context.address,
|
895
|
+
blockTag: blockTagWithOverride,
|
900
896
|
});
|
901
897
|
},
|
902
898
|
withdraw(wad: BigNumberish, overrides?: Overrides): EthCallParam {
|
903
|
-
|
904
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
905
|
-
const address = this.context.address;
|
906
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
899
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
907
900
|
if (overrides?.blockTag) {
|
908
|
-
|
901
|
+
blockTagWithOverride =
|
909
902
|
typeof overrides.blockTag == "string"
|
910
903
|
? overrides.blockTag
|
911
904
|
: "0x" + overrides.blockTag.toString(16);
|
912
905
|
}
|
913
906
|
|
914
|
-
return this.view.encodeCall.withdraw(wad, {
|
907
|
+
return this.view.encodeCall.withdraw(wad, {
|
908
|
+
chainId: this.context.chainId.toString(),
|
909
|
+
address: this.context.address,
|
910
|
+
blockTag: blockTagWithOverride,
|
911
|
+
});
|
915
912
|
},
|
916
913
|
decimals(overrides?: Overrides): EthCallParam {
|
917
|
-
|
918
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
919
|
-
const address = this.context.address;
|
920
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
914
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
921
915
|
if (overrides?.blockTag) {
|
922
|
-
|
916
|
+
blockTagWithOverride =
|
923
917
|
typeof overrides.blockTag == "string"
|
924
918
|
? overrides.blockTag
|
925
919
|
: "0x" + overrides.blockTag.toString(16);
|
926
920
|
}
|
927
921
|
|
928
|
-
return this.view.encodeCall.decimals({
|
922
|
+
return this.view.encodeCall.decimals({
|
923
|
+
chainId: this.context.chainId.toString(),
|
924
|
+
address: this.context.address,
|
925
|
+
blockTag: blockTagWithOverride,
|
926
|
+
});
|
929
927
|
},
|
930
928
|
balanceOf(arg0: string, overrides?: Overrides): EthCallParam {
|
931
|
-
|
932
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
933
|
-
const address = this.context.address;
|
934
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
929
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
935
930
|
if (overrides?.blockTag) {
|
936
|
-
|
931
|
+
blockTagWithOverride =
|
937
932
|
typeof overrides.blockTag == "string"
|
938
933
|
? overrides.blockTag
|
939
934
|
: "0x" + overrides.blockTag.toString(16);
|
940
935
|
}
|
941
936
|
|
942
937
|
return this.view.encodeCall.balanceOf(arg0, {
|
943
|
-
chainId,
|
944
|
-
address,
|
945
|
-
blockTag,
|
938
|
+
chainId: this.context.chainId.toString(),
|
939
|
+
address: this.context.address,
|
940
|
+
blockTag: blockTagWithOverride,
|
946
941
|
});
|
947
942
|
},
|
948
943
|
symbol(overrides?: Overrides): EthCallParam {
|
949
|
-
|
950
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
951
|
-
const address = this.context.address;
|
952
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
944
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
953
945
|
if (overrides?.blockTag) {
|
954
|
-
|
946
|
+
blockTagWithOverride =
|
955
947
|
typeof overrides.blockTag == "string"
|
956
948
|
? overrides.blockTag
|
957
949
|
: "0x" + overrides.blockTag.toString(16);
|
958
950
|
}
|
959
951
|
|
960
|
-
return this.view.encodeCall.symbol({
|
952
|
+
return this.view.encodeCall.symbol({
|
953
|
+
chainId: this.context.chainId.toString(),
|
954
|
+
address: this.context.address,
|
955
|
+
blockTag: blockTagWithOverride,
|
956
|
+
});
|
961
957
|
},
|
962
958
|
transfer(
|
963
959
|
dst: string,
|
964
960
|
wad: BigNumberish,
|
965
961
|
overrides?: Overrides
|
966
962
|
): EthCallParam {
|
967
|
-
|
968
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
969
|
-
const address = this.context.address;
|
970
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
963
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
971
964
|
if (overrides?.blockTag) {
|
972
|
-
|
965
|
+
blockTagWithOverride =
|
973
966
|
typeof overrides.blockTag == "string"
|
974
967
|
? overrides.blockTag
|
975
968
|
: "0x" + overrides.blockTag.toString(16);
|
976
969
|
}
|
977
970
|
|
978
971
|
return this.view.encodeCall.transfer(dst, wad, {
|
979
|
-
chainId,
|
980
|
-
address,
|
981
|
-
blockTag,
|
972
|
+
chainId: this.context.chainId.toString(),
|
973
|
+
address: this.context.address,
|
974
|
+
blockTag: blockTagWithOverride,
|
982
975
|
});
|
983
976
|
},
|
984
977
|
deposit(overrides?: Overrides): EthCallParam {
|
985
|
-
|
986
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
987
|
-
const address = this.context.address;
|
988
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
978
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
989
979
|
if (overrides?.blockTag) {
|
990
|
-
|
980
|
+
blockTagWithOverride =
|
991
981
|
typeof overrides.blockTag == "string"
|
992
982
|
? overrides.blockTag
|
993
983
|
: "0x" + overrides.blockTag.toString(16);
|
994
984
|
}
|
995
985
|
|
996
|
-
return this.view.encodeCall.deposit({
|
986
|
+
return this.view.encodeCall.deposit({
|
987
|
+
chainId: this.context.chainId.toString(),
|
988
|
+
address: this.context.address,
|
989
|
+
blockTag: blockTagWithOverride,
|
990
|
+
});
|
997
991
|
},
|
998
992
|
allowance(arg0: string, arg1: string, overrides?: Overrides): EthCallParam {
|
999
|
-
|
1000
|
-
overrides?.chainId?.toString() ?? this.context.chainId.toString();
|
1001
|
-
const address = this.context.address;
|
1002
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16);
|
993
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16);
|
1003
994
|
if (overrides?.blockTag) {
|
1004
|
-
|
995
|
+
blockTagWithOverride =
|
1005
996
|
typeof overrides.blockTag == "string"
|
1006
997
|
? overrides.blockTag
|
1007
998
|
: "0x" + overrides.blockTag.toString(16);
|
1008
999
|
}
|
1009
1000
|
|
1010
1001
|
return this.view.encodeCall.allowance(arg0, arg1, {
|
1011
|
-
chainId,
|
1012
|
-
address,
|
1013
|
-
blockTag,
|
1002
|
+
chainId: this.context.chainId.toString(),
|
1003
|
+
address: this.context.address,
|
1004
|
+
blockTag: blockTagWithOverride,
|
1014
1005
|
});
|
1015
1006
|
},
|
1016
1007
|
};
|
@@ -154,16 +154,14 @@ export function generateBoundFunctionCallEncoder(fn: FunctionDeclaration, includ
|
|
154
154
|
${declName ?? fn.name}(${generateInputTypes(fn.inputs, {
|
155
155
|
useStructs: true
|
156
156
|
})}overrides?: Overrides): EthCallParam {
|
157
|
-
|
158
|
-
const address = this.context.address
|
159
|
-
let blockTag = "0x" + this.context.blockNumber.toString(16)
|
157
|
+
let blockTagWithOverride = "0x" + this.context.blockNumber.toString(16)
|
160
158
|
if (overrides?.blockTag) {
|
161
|
-
|
159
|
+
blockTagWithOverride = typeof(overrides.blockTag) == 'string'? overrides.blockTag: "0x" + overrides.blockTag.toString(16)
|
162
160
|
}
|
163
161
|
|
164
162
|
return this.view.encodeCall.${declName}(${
|
165
163
|
fn.inputs.length > 0 ? fn.inputs.map((input, index) => input.name || `arg${index}`).join(',') + ',' : ''
|
166
|
-
}{chainId, address, blockTag})
|
164
|
+
}{chainId: this.context.chainId.toString(), address: this.context.address, blockTag: blockTagWithOverride})
|
167
165
|
}
|
168
166
|
`
|
169
167
|
]
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import { Block, Provider } from 'ethers'
|
2
|
+
|
3
|
+
async function getBlockSafely(provider: Provider, blockNumber: number | string): Promise<Block> {
|
4
|
+
const block = await provider.getBlock(blockNumber)
|
5
|
+
if (!block) {
|
6
|
+
throw new Error(`Block ${blockNumber} not found.`)
|
7
|
+
}
|
8
|
+
return block
|
9
|
+
}
|
10
|
+
|
11
|
+
export async function estimateBlockNumberAtDate(
|
12
|
+
provider: Provider,
|
13
|
+
targetDate: Date,
|
14
|
+
startBlock?: number
|
15
|
+
): Promise<number> {
|
16
|
+
// Convert the Date object to a Unix timestamp (in seconds)
|
17
|
+
const targetTimestamp = Math.floor(targetDate.getTime() / 1000)
|
18
|
+
|
19
|
+
// Step 1: Get the current block number and its timestamp
|
20
|
+
const latestBlock = await getBlockSafely(provider, 'latest')
|
21
|
+
const earliestBlockNumber = startBlock !== undefined ? startBlock : 0
|
22
|
+
const earliestBlock = await getBlockSafely(provider, earliestBlockNumber)
|
23
|
+
|
24
|
+
// Binary search initialization
|
25
|
+
let low = earliestBlock.number
|
26
|
+
let high = latestBlock.number
|
27
|
+
|
28
|
+
while (low <= high) {
|
29
|
+
const mid = Math.floor((low + high) / 2)
|
30
|
+
const midBlock = await getBlockSafely(provider, mid)
|
31
|
+
|
32
|
+
if (midBlock.timestamp === targetTimestamp) {
|
33
|
+
return midBlock.number // Exact match
|
34
|
+
} else if (midBlock.timestamp < targetTimestamp) {
|
35
|
+
low = mid + 1 // Target is in the upper half
|
36
|
+
} else {
|
37
|
+
high = mid - 1 // Target is in the lower half
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
// If exact timestamp is not found, return the closest block number
|
42
|
+
const closestBlock = await getBlockSafely(provider, high)
|
43
|
+
return closestBlock.number
|
44
|
+
}
|
package/src/utils/index.ts
CHANGED