@1inch/solidity-utils 3.5.6 → 3.6.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.
- package/contracts/PermitAndCall.sol +28 -0
- package/contracts/libraries/BytesMemory.sol +70 -0
- package/contracts/libraries/BytesStorage.sol +95 -0
- package/dist/src/prelude.js +3 -0
- package/dist/src/prelude.js.map +1 -1
- package/dist/typechain-types/contracts/PermitAndCall.d.ts +35 -0
- package/dist/typechain-types/contracts/PermitAndCall.js +3 -0
- package/dist/typechain-types/contracts/PermitAndCall.js.map +1 -0
- package/dist/typechain-types/contracts/index.d.ts +1 -1
- package/dist/typechain-types/contracts/{GasChecker.d.ts → libraries/BytesMemory.d.ts} +5 -5
- package/dist/typechain-types/contracts/{GasChecker.js → libraries/BytesMemory.js} +1 -1
- package/dist/typechain-types/contracts/libraries/BytesMemory.js.map +1 -0
- package/dist/typechain-types/contracts/libraries/BytesStorage.d.ts +20 -0
- package/dist/typechain-types/contracts/libraries/BytesStorage.js +3 -0
- package/dist/typechain-types/contracts/libraries/BytesStorage.js.map +1 -0
- package/dist/typechain-types/contracts/libraries/index.d.ts +2 -0
- package/dist/typechain-types/contracts/tests/StringUtilTest.d.ts +12 -52
- package/dist/typechain-types/contracts/tests/mocks/BytesMemoryMock.d.ts +102 -0
- package/dist/typechain-types/contracts/tests/mocks/BytesMemoryMock.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/BytesMemoryMock.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/BytesStorageMock.d.ts +77 -0
- package/dist/typechain-types/contracts/tests/mocks/BytesStorageMock.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/BytesStorageMock.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/PermitAndCallMock.d.ts +72 -0
- package/dist/typechain-types/contracts/tests/mocks/PermitAndCallMock.js +3 -0
- package/dist/typechain-types/contracts/tests/mocks/PermitAndCallMock.js.map +1 -0
- package/dist/typechain-types/contracts/tests/mocks/index.d.ts +3 -0
- package/dist/typechain-types/factories/contracts/PermitAndCall__factory.d.ts +21 -0
- package/dist/typechain-types/factories/contracts/PermitAndCall__factory.js +38 -0
- package/dist/typechain-types/factories/contracts/PermitAndCall__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/index.d.ts +1 -1
- package/dist/typechain-types/factories/contracts/index.js +3 -3
- package/dist/typechain-types/factories/contracts/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/libraries/BytesMemory__factory.d.ts +26 -0
- package/dist/typechain-types/factories/contracts/{GasChecker__factory.js → libraries/BytesMemory__factory.js} +9 -20
- package/dist/typechain-types/factories/contracts/libraries/BytesMemory__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/libraries/BytesStorage__factory.d.ts +26 -0
- package/dist/typechain-types/factories/contracts/libraries/BytesStorage__factory.js +45 -0
- package/dist/typechain-types/factories/contracts/libraries/BytesStorage__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/libraries/index.d.ts +2 -0
- package/dist/typechain-types/factories/contracts/libraries/index.js +5 -1
- package/dist/typechain-types/factories/contracts/libraries/index.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/StringUtilTest__factory.d.ts +5 -33
- package/dist/typechain-types/factories/contracts/tests/StringUtilTest__factory.js +5 -41
- package/dist/typechain-types/factories/contracts/tests/StringUtilTest__factory.js.map +1 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesMemoryMock__factory.d.ts +170 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesMemoryMock__factory.js +237 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesMemoryMock__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesStorageMock__factory.d.ts +118 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesStorageMock__factory.js +166 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/BytesStorageMock__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.d.ts +63 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.js +91 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/PermitAndCallMock__factory.js.map +1 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/index.d.ts +3 -0
- package/dist/typechain-types/factories/contracts/tests/mocks/index.js +7 -1
- package/dist/typechain-types/factories/contracts/tests/mocks/index.js.map +1 -1
- package/dist/typechain-types/index.d.ts +12 -2
- package/dist/typechain-types/index.js +14 -4
- package/dist/typechain-types/index.js.map +1 -1
- package/package.json +17 -13
- package/contracts/GasChecker.sol +0 -18
- package/dist/typechain-types/contracts/GasChecker.js.map +0 -1
- package/dist/typechain-types/factories/contracts/GasChecker__factory.d.ts +0 -34
- package/dist/typechain-types/factories/contracts/GasChecker__factory.js.map +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity ^0.8.0;
|
|
4
|
+
|
|
5
|
+
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
6
|
+
import { SafeERC20 } from "./libraries/SafeERC20.sol";
|
|
7
|
+
|
|
8
|
+
abstract contract PermitAndCall {
|
|
9
|
+
using SafeERC20 for IERC20;
|
|
10
|
+
|
|
11
|
+
function permitAndCall(bytes calldata permit, bytes calldata action) external payable {
|
|
12
|
+
IERC20(address(bytes20(permit))).tryPermit(permit[20:]);
|
|
13
|
+
// solhint-disable-next-line no-inline-assembly
|
|
14
|
+
assembly ("memory-safe") {
|
|
15
|
+
let ptr := mload(0x40)
|
|
16
|
+
calldatacopy(ptr, action.offset, action.length)
|
|
17
|
+
let success := delegatecall(gas(), address(), ptr, action.length, 0, 0)
|
|
18
|
+
returndatacopy(ptr, 0, returndatasize())
|
|
19
|
+
switch success
|
|
20
|
+
case 0 {
|
|
21
|
+
revert(ptr, returndatasize())
|
|
22
|
+
}
|
|
23
|
+
default {
|
|
24
|
+
return(ptr, returndatasize())
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity ^0.8.0;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @title A library for operating on bytes memory slices without copying.
|
|
7
|
+
*/
|
|
8
|
+
library BytesMemory {
|
|
9
|
+
error OutOfBounds();
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @dev A struct representing a slice of bytes.
|
|
13
|
+
* This points directly to memory without copying the slice.
|
|
14
|
+
*/
|
|
15
|
+
struct Slice {
|
|
16
|
+
uint256 pointer; // The pointer to the location of the slice in memory.
|
|
17
|
+
uint256 length; // The length of the slice in bytes.
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @dev Creates a `Slice` from a bytes array.
|
|
22
|
+
* @param data The bytes array to create a slice from.
|
|
23
|
+
* @return ret A `Slice` struct representing the entire bytes array.
|
|
24
|
+
*/
|
|
25
|
+
function wrap(bytes memory data) internal pure returns (Slice memory ret) {
|
|
26
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
27
|
+
mstore(ret, add(data, 0x20))
|
|
28
|
+
mstore(add(ret, 0x20), mload(data))
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @dev Returns a new `Slice` representing a portion of the original.
|
|
34
|
+
* @param data The original `Slice` to take a portion from.
|
|
35
|
+
* @param offset The offset in bytes from the start of the original `Slice`.
|
|
36
|
+
* @param size The size of the new `Slice` in bytes.
|
|
37
|
+
* @return ret A new `Slice` struct representing the specified portion of the original.
|
|
38
|
+
*/
|
|
39
|
+
function slice(Slice memory data, uint256 offset, uint256 size) internal pure returns (Slice memory ret) {
|
|
40
|
+
if (offset + size > data.length) revert OutOfBounds();
|
|
41
|
+
|
|
42
|
+
unchecked {
|
|
43
|
+
ret.pointer = data.pointer + offset;
|
|
44
|
+
ret.length = size;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @dev Converts a `Slice` back into a bytes array. The bytes array is returned without copying the data.
|
|
50
|
+
* @param piece The `Slice` to convert back to a bytes array.
|
|
51
|
+
* @return ret The bytes array represented by the `Slice`.
|
|
52
|
+
*/
|
|
53
|
+
function unwrap(Slice memory piece) internal view returns (bytes memory ret) {
|
|
54
|
+
uint256 pointer = piece.pointer;
|
|
55
|
+
uint256 length = piece.length;
|
|
56
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
57
|
+
ret := mload(0x40)
|
|
58
|
+
mstore(0x40, add(ret, add(0x20, length)))
|
|
59
|
+
mstore(ret, length)
|
|
60
|
+
|
|
61
|
+
switch gt(length, 32)
|
|
62
|
+
case 0 {
|
|
63
|
+
mstore(add(ret, 0x20), mload(pointer))
|
|
64
|
+
}
|
|
65
|
+
default {
|
|
66
|
+
pop(staticcall(gas(), 0x04, pointer, length, add(ret, 0x20), length))
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity ^0.8.0;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @title A library for operating on bytes storage slices.
|
|
7
|
+
*/
|
|
8
|
+
library BytesStorage {
|
|
9
|
+
error OutOfBounds();
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @dev A struct representing a slice of bytes storage.
|
|
13
|
+
*/
|
|
14
|
+
struct Slice {
|
|
15
|
+
uint256 slot; // The storage slot where the data begins.
|
|
16
|
+
uint256 offset; // The byte offset within the slot where the data begins.
|
|
17
|
+
uint256 length; // The length of the data in bytes.
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @dev Wraps a bytes storage array into a `Slice`. For a detailed explanation,
|
|
22
|
+
* refer to https://ethereum.stackexchange.com/questions/107282/storage-and-memory-layout-of-strings/155800#155800
|
|
23
|
+
* @param data The bytes storage array to wrap.
|
|
24
|
+
* @return A `Slice` struct that refers to the storage location and length of `data`.
|
|
25
|
+
*/
|
|
26
|
+
function wrap(bytes storage data) internal view returns (Slice memory) {
|
|
27
|
+
uint256 length;
|
|
28
|
+
uint256 slot;
|
|
29
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
30
|
+
let blob := sload(data.slot)
|
|
31
|
+
|
|
32
|
+
switch and(1, blob)
|
|
33
|
+
case 0 { // Short
|
|
34
|
+
slot := data.slot
|
|
35
|
+
length := shr(1, and(blob, 0xFF))
|
|
36
|
+
}
|
|
37
|
+
default { // Long
|
|
38
|
+
mstore(0, data.slot)
|
|
39
|
+
slot := keccak256(0, 0x20)
|
|
40
|
+
length := shr(1, blob)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return Slice({
|
|
45
|
+
slot: slot,
|
|
46
|
+
offset: 0,
|
|
47
|
+
length: length
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @dev Returns a new `Slice` representing a portion of the original storage slice.
|
|
53
|
+
* @param data The original `Slice` to take a portion from.
|
|
54
|
+
* @param offset The offset in bytes from the start of the original `Slice`.
|
|
55
|
+
* @param size The size of the new `Slice` in bytes.
|
|
56
|
+
* @return A new `Slice` struct representing the specified portion of the original.
|
|
57
|
+
*/
|
|
58
|
+
function slice(Slice memory data, uint256 offset, uint256 size) internal pure returns (Slice memory) {
|
|
59
|
+
if (offset + size > data.length) revert OutOfBounds();
|
|
60
|
+
|
|
61
|
+
uint256 newOffset = data.offset + offset;
|
|
62
|
+
return Slice({
|
|
63
|
+
slot: data.slot + (newOffset >> 5),
|
|
64
|
+
offset: newOffset & 0x1f,
|
|
65
|
+
length: size
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @dev Copies a `Slice` from storage and returns it as a new bytes array.
|
|
71
|
+
* @param piece The `Slice` to copy from storage.
|
|
72
|
+
* @return ret The new bytes array containing the copied data.
|
|
73
|
+
*/
|
|
74
|
+
function copy(Slice memory piece) internal view returns (bytes memory ret) {
|
|
75
|
+
uint256 startSlot = piece.slot;
|
|
76
|
+
uint256 offset = piece.offset;
|
|
77
|
+
uint256 length = piece.length;
|
|
78
|
+
assembly ("memory-safe") { // solhint-disable-line no-inline-assembly
|
|
79
|
+
ret := mload(0x40)
|
|
80
|
+
mstore(0x40, add(ret, add(0x20, length)))
|
|
81
|
+
mstore(ret, length)
|
|
82
|
+
|
|
83
|
+
let out := add(ret, 0x20)
|
|
84
|
+
let endSlot := add(startSlot, div(add(add(length, offset), 0x1F), 0x20))
|
|
85
|
+
|
|
86
|
+
mstore(out, shl(mul(8, offset), sload(startSlot)))
|
|
87
|
+
out := add(out, sub(0x20, offset))
|
|
88
|
+
|
|
89
|
+
for { let slot := add(startSlot, 1) } lt(slot, endSlot) { slot := add(slot, 1) } {
|
|
90
|
+
mstore(out, sload(slot))
|
|
91
|
+
out := add(out, 0x20)
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
package/dist/src/prelude.js
CHANGED
|
@@ -11,6 +11,9 @@ Object.defineProperty(exports, "should", { enumerable: true, get: function () {
|
|
|
11
11
|
const ethers_1 = require("ethers");
|
|
12
12
|
const hardhat_network_helpers_1 = require("@nomicfoundation/hardhat-network-helpers");
|
|
13
13
|
Object.defineProperty(exports, "time", { enumerable: true, get: function () { return hardhat_network_helpers_1.time; } });
|
|
14
|
+
const chai_2 = require("chai");
|
|
15
|
+
const mocha_chai_jest_snapshot_1 = require("mocha-chai-jest-snapshot");
|
|
16
|
+
(0, chai_2.use)((0, mocha_chai_jest_snapshot_1.jestSnapshotPlugin)());
|
|
14
17
|
exports.constants = {
|
|
15
18
|
ZERO_ADDRESS: '0x0000000000000000000000000000000000000000',
|
|
16
19
|
EEE_ADDRESS: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE',
|
package/dist/src/prelude.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../src/prelude.ts"],"names":[],"mappings":";;;AAAA,+BAAiF;
|
|
1
|
+
{"version":3,"file":"prelude.js","sourceRoot":"","sources":["../../src/prelude.ts"],"names":[],"mappings":";;;AAAA,+BAAiF;AA6BxE,0FA7BA,gBAAS,OA6BA;AAAE,+FA7BA,qBAAc,OA6BA;AAAE,uFA7BA,aAAM,OA6BA;AAAE,uFA7BA,aAAM,OA6BA;AAAE,uFA7BA,aAAM,OA6BA;AAAE,uFA7BA,aAAM,OA6BA;AA5BlE,mCAAoC;AACpC,sFAAgE;AAoBvD,qFApBA,8BAAI,OAoBA;AAlBb,+BAA2B;AAC3B,uEAA8D;AAC9D,IAAA,UAAG,EAAC,IAAA,6CAAkB,GAAE,CAAC,CAAC;AAEb,QAAA,SAAS,GAAG;IACrB,YAAY,EAAE,4CAA4C;IAC1D,WAAW,EAAE,4CAA4C;IACzD,YAAY,EAAE,oEAAoE;IAClF,WAAW,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE;IAC5B,UAAU,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE;IAC3B,UAAU,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE;IAC1B,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC;IACzB,WAAW,EAAE,EAAE,IAAI,IAAI,GAAG,EAAE;IAC5B,UAAU,EAAE,EAAE,IAAI,GAAG,GAAG,EAAE;IAC1B,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,CAAa;CAC1C,CAAC;AAKX,SAAgB,KAAK,CAAC,CAAS;IAC3B,OAAO,IAAA,mBAAU,EAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAFD,sBAEC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { BaseContract, BytesLike, FunctionFragment, Result, Interface, ContractRunner, ContractMethod, Listener } from "ethers";
|
|
2
|
+
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../common";
|
|
3
|
+
export interface PermitAndCallInterface extends Interface {
|
|
4
|
+
getFunction(nameOrSignature: "permitAndCall"): FunctionFragment;
|
|
5
|
+
encodeFunctionData(functionFragment: "permitAndCall", values: [BytesLike, BytesLike]): string;
|
|
6
|
+
decodeFunctionResult(functionFragment: "permitAndCall", data: BytesLike): Result;
|
|
7
|
+
}
|
|
8
|
+
export interface PermitAndCall extends BaseContract {
|
|
9
|
+
connect(runner?: ContractRunner | null): PermitAndCall;
|
|
10
|
+
waitForDeployment(): Promise<this>;
|
|
11
|
+
interface: PermitAndCallInterface;
|
|
12
|
+
queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
13
|
+
queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
14
|
+
on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
15
|
+
on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
|
|
16
|
+
once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
17
|
+
once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
|
|
18
|
+
listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
|
|
19
|
+
listeners(eventName?: string): Promise<Array<Listener>>;
|
|
20
|
+
removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
|
|
21
|
+
permitAndCall: TypedContractMethod<[
|
|
22
|
+
permit: BytesLike,
|
|
23
|
+
action: BytesLike
|
|
24
|
+
], [
|
|
25
|
+
void
|
|
26
|
+
], "payable">;
|
|
27
|
+
getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
|
|
28
|
+
getFunction(nameOrSignature: "permitAndCall"): TypedContractMethod<[
|
|
29
|
+
permit: BytesLike,
|
|
30
|
+
action: BytesLike
|
|
31
|
+
], [
|
|
32
|
+
void
|
|
33
|
+
], "payable">;
|
|
34
|
+
filters: {};
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PermitAndCall.js","sourceRoot":"","sources":["../../../typechain-types/contracts/PermitAndCall.ts"],"names":[],"mappings":""}
|
|
@@ -7,5 +7,5 @@ export type { mocks };
|
|
|
7
7
|
import type * as tests from "./tests";
|
|
8
8
|
export type { tests };
|
|
9
9
|
export type { EthReceiver } from "./EthReceiver";
|
|
10
|
-
export type { GasChecker } from "./GasChecker";
|
|
11
10
|
export type { OnlyWethReceiver } from "./OnlyWethReceiver";
|
|
11
|
+
export type { PermitAndCall } from "./PermitAndCall";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { BaseContract, FunctionFragment, Interface, ContractRunner, ContractMethod, Listener } from "ethers";
|
|
2
|
-
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener } from "
|
|
3
|
-
export interface
|
|
2
|
+
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener } from "../../common";
|
|
3
|
+
export interface BytesMemoryInterface extends Interface {
|
|
4
4
|
}
|
|
5
|
-
export interface
|
|
6
|
-
connect(runner?: ContractRunner | null):
|
|
5
|
+
export interface BytesMemory extends BaseContract {
|
|
6
|
+
connect(runner?: ContractRunner | null): BytesMemory;
|
|
7
7
|
waitForDeployment(): Promise<this>;
|
|
8
|
-
interface:
|
|
8
|
+
interface: BytesMemoryInterface;
|
|
9
9
|
queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
10
10
|
queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
11
11
|
on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BytesMemory.js","sourceRoot":"","sources":["../../../../typechain-types/contracts/libraries/BytesMemory.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { BaseContract, FunctionFragment, Interface, ContractRunner, ContractMethod, Listener } from "ethers";
|
|
2
|
+
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener } from "../../common";
|
|
3
|
+
export interface BytesStorageInterface extends Interface {
|
|
4
|
+
}
|
|
5
|
+
export interface BytesStorage extends BaseContract {
|
|
6
|
+
connect(runner?: ContractRunner | null): BytesStorage;
|
|
7
|
+
waitForDeployment(): Promise<this>;
|
|
8
|
+
interface: BytesStorageInterface;
|
|
9
|
+
queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
10
|
+
queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
11
|
+
on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
12
|
+
on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
|
|
13
|
+
once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
14
|
+
once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
|
|
15
|
+
listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
|
|
16
|
+
listeners(eventName?: string): Promise<Array<Listener>>;
|
|
17
|
+
removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
|
|
18
|
+
getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
|
|
19
|
+
filters: {};
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BytesStorage.js","sourceRoot":"","sources":["../../../../typechain-types/contracts/libraries/BytesStorage.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export type { AddressArray } from "./AddressArray";
|
|
2
|
+
export type { BytesMemory } from "./BytesMemory";
|
|
3
|
+
export type { BytesStorage } from "./BytesStorage";
|
|
2
4
|
export type { RevertReasonParser } from "./RevertReasonParser";
|
|
3
5
|
export type { SafeERC20 } from "./SafeERC20";
|
|
4
6
|
export type { UniERC20 } from "./UniERC20";
|
|
@@ -2,10 +2,10 @@ import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, I
|
|
|
2
2
|
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../common";
|
|
3
3
|
export interface StringUtilTestInterface extends Interface {
|
|
4
4
|
getFunction(nameOrSignature: "toHex" | "toHexBytes" | "toHexNaive" | "toHexNaiveBytes"): FunctionFragment;
|
|
5
|
-
encodeFunctionData(functionFragment: "toHex", values: [BigNumberish
|
|
6
|
-
encodeFunctionData(functionFragment: "toHexBytes", values: [BytesLike
|
|
7
|
-
encodeFunctionData(functionFragment: "toHexNaive", values: [BigNumberish
|
|
8
|
-
encodeFunctionData(functionFragment: "toHexNaiveBytes", values: [BytesLike
|
|
5
|
+
encodeFunctionData(functionFragment: "toHex", values: [BigNumberish]): string;
|
|
6
|
+
encodeFunctionData(functionFragment: "toHexBytes", values: [BytesLike]): string;
|
|
7
|
+
encodeFunctionData(functionFragment: "toHexNaive", values: [BigNumberish]): string;
|
|
8
|
+
encodeFunctionData(functionFragment: "toHexNaiveBytes", values: [BytesLike]): string;
|
|
9
9
|
decodeFunctionResult(functionFragment: "toHex", data: BytesLike): Result;
|
|
10
10
|
decodeFunctionResult(functionFragment: "toHexBytes", data: BytesLike): Result;
|
|
11
11
|
decodeFunctionResult(functionFragment: "toHexNaive", data: BytesLike): Result;
|
|
@@ -24,54 +24,14 @@ export interface StringUtilTest extends BaseContract {
|
|
|
24
24
|
listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
|
|
25
25
|
listeners(eventName?: string): Promise<Array<Listener>>;
|
|
26
26
|
removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
|
|
27
|
-
toHex: TypedContractMethod<[
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
], [
|
|
31
|
-
string
|
|
32
|
-
], "view">;
|
|
33
|
-
toHexBytes: TypedContractMethod<[
|
|
34
|
-
data: BytesLike,
|
|
35
|
-
expectedGasCost: BigNumberish
|
|
36
|
-
], [
|
|
37
|
-
string
|
|
38
|
-
], "view">;
|
|
39
|
-
toHexNaive: TypedContractMethod<[
|
|
40
|
-
value: BigNumberish,
|
|
41
|
-
expectedGasCost: BigNumberish
|
|
42
|
-
], [
|
|
43
|
-
string
|
|
44
|
-
], "view">;
|
|
45
|
-
toHexNaiveBytes: TypedContractMethod<[
|
|
46
|
-
data: BytesLike,
|
|
47
|
-
expectedGasCost: BigNumberish
|
|
48
|
-
], [
|
|
49
|
-
string
|
|
50
|
-
], "view">;
|
|
27
|
+
toHex: TypedContractMethod<[value: BigNumberish], [string], "view">;
|
|
28
|
+
toHexBytes: TypedContractMethod<[data: BytesLike], [string], "view">;
|
|
29
|
+
toHexNaive: TypedContractMethod<[value: BigNumberish], [string], "view">;
|
|
30
|
+
toHexNaiveBytes: TypedContractMethod<[data: BytesLike], [string], "view">;
|
|
51
31
|
getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
|
|
52
|
-
getFunction(nameOrSignature: "toHex"): TypedContractMethod<[
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
], [
|
|
56
|
-
string
|
|
57
|
-
], "view">;
|
|
58
|
-
getFunction(nameOrSignature: "toHexBytes"): TypedContractMethod<[
|
|
59
|
-
data: BytesLike,
|
|
60
|
-
expectedGasCost: BigNumberish
|
|
61
|
-
], [
|
|
62
|
-
string
|
|
63
|
-
], "view">;
|
|
64
|
-
getFunction(nameOrSignature: "toHexNaive"): TypedContractMethod<[
|
|
65
|
-
value: BigNumberish,
|
|
66
|
-
expectedGasCost: BigNumberish
|
|
67
|
-
], [
|
|
68
|
-
string
|
|
69
|
-
], "view">;
|
|
70
|
-
getFunction(nameOrSignature: "toHexNaiveBytes"): TypedContractMethod<[
|
|
71
|
-
data: BytesLike,
|
|
72
|
-
expectedGasCost: BigNumberish
|
|
73
|
-
], [
|
|
74
|
-
string
|
|
75
|
-
], "view">;
|
|
32
|
+
getFunction(nameOrSignature: "toHex"): TypedContractMethod<[value: BigNumberish], [string], "view">;
|
|
33
|
+
getFunction(nameOrSignature: "toHexBytes"): TypedContractMethod<[data: BytesLike], [string], "view">;
|
|
34
|
+
getFunction(nameOrSignature: "toHexNaive"): TypedContractMethod<[value: BigNumberish], [string], "view">;
|
|
35
|
+
getFunction(nameOrSignature: "toHexNaiveBytes"): TypedContractMethod<[data: BytesLike], [string], "view">;
|
|
76
36
|
filters: {};
|
|
77
37
|
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, ContractRunner, ContractMethod, Listener } from "ethers";
|
|
2
|
+
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../../common";
|
|
3
|
+
export declare namespace BytesMemory {
|
|
4
|
+
type SliceStruct = {
|
|
5
|
+
pointer: BigNumberish;
|
|
6
|
+
length: BigNumberish;
|
|
7
|
+
};
|
|
8
|
+
type SliceStructOutput = [pointer: bigint, length: bigint] & {
|
|
9
|
+
pointer: bigint;
|
|
10
|
+
length: bigint;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface BytesMemoryMockInterface extends Interface {
|
|
14
|
+
getFunction(nameOrSignature: "slice" | "wrap" | "wrapAndUnwrap" | "wrapWithNonDefaultPointer" | "wrapWithNonDefaultPointerAndUnwrap" | "wrapWithSliceAndUnwrap"): FunctionFragment;
|
|
15
|
+
encodeFunctionData(functionFragment: "slice", values: [BytesMemory.SliceStruct, BigNumberish, BigNumberish]): string;
|
|
16
|
+
encodeFunctionData(functionFragment: "wrap", values: [BytesLike]): string;
|
|
17
|
+
encodeFunctionData(functionFragment: "wrapAndUnwrap", values: [BytesLike]): string;
|
|
18
|
+
encodeFunctionData(functionFragment: "wrapWithNonDefaultPointer", values: [BytesLike, BigNumberish]): string;
|
|
19
|
+
encodeFunctionData(functionFragment: "wrapWithNonDefaultPointerAndUnwrap", values: [BytesLike, BigNumberish]): string;
|
|
20
|
+
encodeFunctionData(functionFragment: "wrapWithSliceAndUnwrap", values: [BytesLike, BigNumberish, BigNumberish]): string;
|
|
21
|
+
decodeFunctionResult(functionFragment: "slice", data: BytesLike): Result;
|
|
22
|
+
decodeFunctionResult(functionFragment: "wrap", data: BytesLike): Result;
|
|
23
|
+
decodeFunctionResult(functionFragment: "wrapAndUnwrap", data: BytesLike): Result;
|
|
24
|
+
decodeFunctionResult(functionFragment: "wrapWithNonDefaultPointer", data: BytesLike): Result;
|
|
25
|
+
decodeFunctionResult(functionFragment: "wrapWithNonDefaultPointerAndUnwrap", data: BytesLike): Result;
|
|
26
|
+
decodeFunctionResult(functionFragment: "wrapWithSliceAndUnwrap", data: BytesLike): Result;
|
|
27
|
+
}
|
|
28
|
+
export interface BytesMemoryMock extends BaseContract {
|
|
29
|
+
connect(runner?: ContractRunner | null): BytesMemoryMock;
|
|
30
|
+
waitForDeployment(): Promise<this>;
|
|
31
|
+
interface: BytesMemoryMockInterface;
|
|
32
|
+
queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
33
|
+
queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
34
|
+
on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
35
|
+
on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
|
|
36
|
+
once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
37
|
+
once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
|
|
38
|
+
listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
|
|
39
|
+
listeners(eventName?: string): Promise<Array<Listener>>;
|
|
40
|
+
removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
|
|
41
|
+
slice: TypedContractMethod<[
|
|
42
|
+
data: BytesMemory.SliceStruct,
|
|
43
|
+
offset: BigNumberish,
|
|
44
|
+
size: BigNumberish
|
|
45
|
+
], [
|
|
46
|
+
BytesMemory.SliceStructOutput
|
|
47
|
+
], "view">;
|
|
48
|
+
wrap: TypedContractMethod<[
|
|
49
|
+
data: BytesLike
|
|
50
|
+
], [
|
|
51
|
+
BytesMemory.SliceStructOutput
|
|
52
|
+
], "view">;
|
|
53
|
+
wrapAndUnwrap: TypedContractMethod<[data: BytesLike], [string], "view">;
|
|
54
|
+
wrapWithNonDefaultPointer: TypedContractMethod<[
|
|
55
|
+
data: BytesLike,
|
|
56
|
+
n: BigNumberish
|
|
57
|
+
], [
|
|
58
|
+
BytesMemory.SliceStructOutput
|
|
59
|
+
], "view">;
|
|
60
|
+
wrapWithNonDefaultPointerAndUnwrap: TypedContractMethod<[
|
|
61
|
+
data: BytesLike,
|
|
62
|
+
n: BigNumberish
|
|
63
|
+
], [
|
|
64
|
+
string
|
|
65
|
+
], "view">;
|
|
66
|
+
wrapWithSliceAndUnwrap: TypedContractMethod<[
|
|
67
|
+
data: BytesLike,
|
|
68
|
+
offset: BigNumberish,
|
|
69
|
+
size: BigNumberish
|
|
70
|
+
], [
|
|
71
|
+
string
|
|
72
|
+
], "view">;
|
|
73
|
+
getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
|
|
74
|
+
getFunction(nameOrSignature: "slice"): TypedContractMethod<[
|
|
75
|
+
data: BytesMemory.SliceStruct,
|
|
76
|
+
offset: BigNumberish,
|
|
77
|
+
size: BigNumberish
|
|
78
|
+
], [
|
|
79
|
+
BytesMemory.SliceStructOutput
|
|
80
|
+
], "view">;
|
|
81
|
+
getFunction(nameOrSignature: "wrap"): TypedContractMethod<[
|
|
82
|
+
data: BytesLike
|
|
83
|
+
], [
|
|
84
|
+
BytesMemory.SliceStructOutput
|
|
85
|
+
], "view">;
|
|
86
|
+
getFunction(nameOrSignature: "wrapAndUnwrap"): TypedContractMethod<[data: BytesLike], [string], "view">;
|
|
87
|
+
getFunction(nameOrSignature: "wrapWithNonDefaultPointer"): TypedContractMethod<[
|
|
88
|
+
data: BytesLike,
|
|
89
|
+
n: BigNumberish
|
|
90
|
+
], [
|
|
91
|
+
BytesMemory.SliceStructOutput
|
|
92
|
+
], "view">;
|
|
93
|
+
getFunction(nameOrSignature: "wrapWithNonDefaultPointerAndUnwrap"): TypedContractMethod<[data: BytesLike, n: BigNumberish], [string], "view">;
|
|
94
|
+
getFunction(nameOrSignature: "wrapWithSliceAndUnwrap"): TypedContractMethod<[
|
|
95
|
+
data: BytesLike,
|
|
96
|
+
offset: BigNumberish,
|
|
97
|
+
size: BigNumberish
|
|
98
|
+
], [
|
|
99
|
+
string
|
|
100
|
+
], "view">;
|
|
101
|
+
filters: {};
|
|
102
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BytesMemoryMock.js","sourceRoot":"","sources":["../../../../../typechain-types/contracts/tests/mocks/BytesMemoryMock.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, ContractRunner, ContractMethod, Listener } from "ethers";
|
|
2
|
+
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../../common";
|
|
3
|
+
export declare namespace BytesStorage {
|
|
4
|
+
type SliceStruct = {
|
|
5
|
+
slot: BigNumberish;
|
|
6
|
+
offset: BigNumberish;
|
|
7
|
+
length: BigNumberish;
|
|
8
|
+
};
|
|
9
|
+
type SliceStructOutput = [
|
|
10
|
+
slot: bigint,
|
|
11
|
+
offset: bigint,
|
|
12
|
+
length: bigint
|
|
13
|
+
] & {
|
|
14
|
+
slot: bigint;
|
|
15
|
+
offset: bigint;
|
|
16
|
+
length: bigint;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface BytesStorageMockInterface extends Interface {
|
|
20
|
+
getFunction(nameOrSignature: "setData" | "wrap" | "wrapAndCopy" | "wrapAndSlice" | "wrapWithSliceAndCopy"): FunctionFragment;
|
|
21
|
+
encodeFunctionData(functionFragment: "setData", values: [BytesLike]): string;
|
|
22
|
+
encodeFunctionData(functionFragment: "wrap", values?: undefined): string;
|
|
23
|
+
encodeFunctionData(functionFragment: "wrapAndCopy", values?: undefined): string;
|
|
24
|
+
encodeFunctionData(functionFragment: "wrapAndSlice", values: [BigNumberish, BigNumberish]): string;
|
|
25
|
+
encodeFunctionData(functionFragment: "wrapWithSliceAndCopy", values: [BigNumberish, BigNumberish]): string;
|
|
26
|
+
decodeFunctionResult(functionFragment: "setData", data: BytesLike): Result;
|
|
27
|
+
decodeFunctionResult(functionFragment: "wrap", data: BytesLike): Result;
|
|
28
|
+
decodeFunctionResult(functionFragment: "wrapAndCopy", data: BytesLike): Result;
|
|
29
|
+
decodeFunctionResult(functionFragment: "wrapAndSlice", data: BytesLike): Result;
|
|
30
|
+
decodeFunctionResult(functionFragment: "wrapWithSliceAndCopy", data: BytesLike): Result;
|
|
31
|
+
}
|
|
32
|
+
export interface BytesStorageMock extends BaseContract {
|
|
33
|
+
connect(runner?: ContractRunner | null): BytesStorageMock;
|
|
34
|
+
waitForDeployment(): Promise<this>;
|
|
35
|
+
interface: BytesStorageMockInterface;
|
|
36
|
+
queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
37
|
+
queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
|
|
38
|
+
on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
39
|
+
on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
|
|
40
|
+
once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
|
|
41
|
+
once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
|
|
42
|
+
listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
|
|
43
|
+
listeners(eventName?: string): Promise<Array<Listener>>;
|
|
44
|
+
removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
|
|
45
|
+
setData: TypedContractMethod<[data: BytesLike], [void], "nonpayable">;
|
|
46
|
+
wrap: TypedContractMethod<[], [BytesStorage.SliceStructOutput], "view">;
|
|
47
|
+
wrapAndCopy: TypedContractMethod<[], [string], "view">;
|
|
48
|
+
wrapAndSlice: TypedContractMethod<[
|
|
49
|
+
offset: BigNumberish,
|
|
50
|
+
size: BigNumberish
|
|
51
|
+
], [
|
|
52
|
+
BytesStorage.SliceStructOutput
|
|
53
|
+
], "view">;
|
|
54
|
+
wrapWithSliceAndCopy: TypedContractMethod<[
|
|
55
|
+
offset: BigNumberish,
|
|
56
|
+
size: BigNumberish
|
|
57
|
+
], [
|
|
58
|
+
string
|
|
59
|
+
], "view">;
|
|
60
|
+
getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
|
|
61
|
+
getFunction(nameOrSignature: "setData"): TypedContractMethod<[data: BytesLike], [void], "nonpayable">;
|
|
62
|
+
getFunction(nameOrSignature: "wrap"): TypedContractMethod<[], [BytesStorage.SliceStructOutput], "view">;
|
|
63
|
+
getFunction(nameOrSignature: "wrapAndCopy"): TypedContractMethod<[], [string], "view">;
|
|
64
|
+
getFunction(nameOrSignature: "wrapAndSlice"): TypedContractMethod<[
|
|
65
|
+
offset: BigNumberish,
|
|
66
|
+
size: BigNumberish
|
|
67
|
+
], [
|
|
68
|
+
BytesStorage.SliceStructOutput
|
|
69
|
+
], "view">;
|
|
70
|
+
getFunction(nameOrSignature: "wrapWithSliceAndCopy"): TypedContractMethod<[
|
|
71
|
+
offset: BigNumberish,
|
|
72
|
+
size: BigNumberish
|
|
73
|
+
], [
|
|
74
|
+
string
|
|
75
|
+
], "view">;
|
|
76
|
+
filters: {};
|
|
77
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BytesStorageMock.js","sourceRoot":"","sources":["../../../../../typechain-types/contracts/tests/mocks/BytesStorageMock.ts"],"names":[],"mappings":""}
|