Skip to content

Commit 1ba95ee

Browse files
committed
Add support for nested user-defined struct types
1 parent 8be1949 commit 1ba95ee

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

utils/src/abi_encoder/evm_data_type_factory.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ export class Method extends MethodDataType {
8888
export class EvmDataTypeFactory implements DataTypeFactory {
8989
private static _instance: DataTypeFactory;
9090

91+
private _registeredStructs: { [structName: string]: DataType } = {};
92+
9193
public static getInstance(): DataTypeFactory {
9294
if (!EvmDataTypeFactory._instance) {
9395
EvmDataTypeFactory._instance = new EvmDataTypeFactory();
@@ -113,10 +115,15 @@ export class EvmDataTypeFactory implements DataTypeFactory {
113115
dataType = new StaticBytes(dataItem);
114116
} else if (Tuple.matchType(dataItem.type)) {
115117
dataType = new Tuple(dataItem);
118+
if (dataItem.internalType) {
119+
this._registeredStructs[dataItem.internalType] = dataType;
120+
}
116121
} else if (DynamicBytes.matchType(dataItem.type)) {
117122
dataType = new DynamicBytes(dataItem);
118123
} else if (String.matchType(dataItem.type)) {
119124
dataType = new String(dataItem);
125+
} else if (this._registeredStructs[dataItem.type]) {
126+
dataType = this._registeredStructs[dataItem.type];
120127
}
121128
// @TODO: DataTypeement Fixed/UFixed types
122129
if (dataType === undefined) {

0 commit comments

Comments
 (0)