Skip to content

Implement some way of tying together enums and instruction parameter structs in the autogenerated code #48

@jarry-xiao

Description

@jarry-xiao

The one thing that i wish shank could do a little better on the code generation side is to allow for instruction identifiers and instruction parameters to be split up into 2 separate components. Here are 2 examples from the typescript client for Phoenix:
image

image

I had to inject logic into this function to get it to work properly. This is what one of them looks like at generation:

image

Reference:
https://github.com/Ellipsis-Labs/phoenix-sdk/blob/master/typescript/phoenix-sdk/src/instructions/Swap.ts#L58
https://github.com/Ellipsis-Labs/phoenix-sdk/blob/master/typescript/phoenix-sdk/src/instructions/CancelMultipleOrdersById.ts#L68

This minimal amount of boilerplate isn't the end of the world, but it would be nice if there was some way to have this work done for me. If I could tag the struct that I wanted to include as a parameter:

 #[parameter(instruction=0, param_index=0, name = "cancel_order_params")]

I think it should in theory be possible to group everything together.

Maybe this is more suited for Solita. I think this is an awesome tool that really doesn't try to force me into a hole when programming. I like being able to write pure Rust code without having to jump through hoops imposed by a framework.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions