diff --git a/ts/packages/anchor/src/coder/borsh/instruction.ts b/ts/packages/anchor/src/coder/borsh/instruction.ts index c02aa177e6..e226563e51 100644 --- a/ts/packages/anchor/src/coder/borsh/instruction.ts +++ b/ts/packages/anchor/src/coder/borsh/instruction.ts @@ -232,7 +232,8 @@ class InstructionFormatter { .map((d: IdlField) => this.formatIdlData( { name: "", type: (idlField.type).vec }, - d + d, + types ) ) .join(", ") + @@ -303,11 +304,15 @@ class InstructionFormatter { const variants = typeDef.type.variants; const variant = Object.keys(data)[0]; const enumType = data[variant]; + const camelCaseVariant = camelCase(variant); + const enumVariant = variants.find((v) => camelCase(v.name) === camelCaseVariant); + const relevantFields = enumVariant?.fields; const namedFields = Object.keys(enumType) .map((f) => { const fieldData = enumType[f]; - const idlField = variants[variant]?.find( - (v: IdlField) => v.name === f + const camelCaseField = camelCase(f); + const idlField = relevantFields?.find( + (v): v is IdlField => camelCase((v as IdlField).name) === camelCaseField ); if (!idlField) { throw new Error("Unable to find variant");