{
  "address": "8eiSiyHwkB3s5x4jNEWrfnPFyWULYMRApFe8ungsu9Gy",
  "metadata": {
    "name": "rwa_token",
    "version": "0.1.0",
    "spec": "0.1.0",
    "description": "RWA token program (SPL Token-2022 mint + RWA metadata PDA)"
  },
  "instructions": [
    {
      "name": "create_asset",
      "docs": [
        "Create a new RWA asset: init the Token-2022 mint (authority = TokenMeta PDA)",
        "and populate the TokenMeta PDA. Mirrors factory.deployToken(tokenParams).",
        "The caller (operator) pays; `admin` (the multisig) receives control."
      ],
      "discriminator": [
        28,
        42,
        120,
        51,
        7,
        38,
        156,
        136
      ],
      "accounts": [
        {
          "name": "payer",
          "writable": true,
          "signer": true
        },
        {
          "name": "mint",
          "docs": [
            "The new Token-2022 mint (authority = meta PDA). Created by the client/CPI."
          ],
          "writable": true
        },
        {
          "name": "meta",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  101,
                  116,
                  97
                ]
              },
              {
                "kind": "account",
                "path": "mint"
              }
            ]
          }
        },
        {
          "name": "token_program"
        },
        {
          "name": "system_program",
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "params",
          "type": {
            "defined": {
              "name": "AssetParams"
            }
          }
        }
      ]
    },
    {
      "name": "grant_automation",
      "docs": [
        "Grant the automation capability (EVM grantRole(AUTOMATION_ROLE)). Admin only."
      ],
      "discriminator": [
        91,
        140,
        175,
        157,
        206,
        235,
        210,
        58
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true
        },
        {
          "name": "meta",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  101,
                  116,
                  97
                ]
              },
              {
                "kind": "account",
                "path": "meta.mint",
                "account": "TokenMeta"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "automation",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "grant_minter",
      "docs": [
        "Grant the minter capability (EVM grantRole(MINTER_ROLE)). Admin only."
      ],
      "discriminator": [
        2,
        103,
        151,
        198,
        189,
        58,
        32,
        85
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true
        },
        {
          "name": "meta",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  101,
                  116,
                  97
                ]
              },
              {
                "kind": "account",
                "path": "meta.mint",
                "account": "TokenMeta"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "minter",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "mint_to",
      "docs": [
        "Mint `amount` (smallest units) to `to`. Caller must be admin or minter.",
        "PDA-signed CPI (mint authority = TokenMeta PDA). Mirrors token.mint()."
      ],
      "discriminator": [
        241,
        34,
        48,
        186,
        37,
        179,
        123,
        192
      ],
      "accounts": [
        {
          "name": "authority",
          "signer": true
        },
        {
          "name": "meta",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  101,
                  116,
                  97
                ]
              },
              {
                "kind": "account",
                "path": "meta.mint",
                "account": "TokenMeta"
              }
            ]
          }
        },
        {
          "name": "mint",
          "writable": true
        },
        {
          "name": "to",
          "writable": true
        },
        {
          "name": "token_program"
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "set_payout_token",
      "docs": [
        "Update the payout mint. Admin only. Mirrors setPayoutTokenOnToken()."
      ],
      "discriminator": [
        169,
        93,
        35,
        201,
        68,
        168,
        82,
        96
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true
        },
        {
          "name": "meta",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  101,
                  116,
                  97
                ]
              },
              {
                "kind": "account",
                "path": "meta.mint",
                "account": "TokenMeta"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "payout_token",
          "type": "pubkey"
        }
      ]
    },
    {
      "name": "set_vault",
      "docs": [
        "Record the vault PDA/pubkey for this asset. Admin only. Mirrors setVault()."
      ],
      "discriminator": [
        177,
        23,
        187,
        59,
        247,
        215,
        255,
        162
      ],
      "accounts": [
        {
          "name": "admin",
          "signer": true
        },
        {
          "name": "meta",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  109,
                  101,
                  116,
                  97
                ]
              },
              {
                "kind": "account",
                "path": "meta.mint",
                "account": "TokenMeta"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "vault",
          "type": "pubkey"
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "TokenMeta",
      "discriminator": [
        130,
        87,
        174,
        35,
        21,
        44,
        92,
        19
      ]
    }
  ],
  "events": [
    {
      "name": "AssetCreated",
      "discriminator": [
        206,
        193,
        252,
        254,
        207,
        185,
        154,
        4
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "Unauthorized",
      "msg": "caller is not authorized for this action"
    },
    {
      "code": 6001,
      "name": "InvalidFrequency",
      "msg": "payout frequency must be 0-5"
    },
    {
      "code": 6002,
      "name": "MintAuthorityMismatch",
      "msg": "mint authority must be the asset meta PDA"
    }
  ],
  "types": [
    {
      "name": "AssetCreated",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "admin",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "AssetParams",
      "docs": [
        "RWA asset fields — the Solana twin of the EVM tokenParams struct."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "payout_token",
            "type": "pubkey"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "issuer",
            "type": "string"
          },
          {
            "name": "deal_url",
            "type": "string"
          },
          {
            "name": "investment_type",
            "type": "u8"
          },
          {
            "name": "investment_category",
            "type": "u8"
          },
          {
            "name": "payout_frequency",
            "type": "u8"
          },
          {
            "name": "token_entity_type",
            "type": "u8"
          },
          {
            "name": "interest_rate_bps",
            "type": "u16"
          },
          {
            "name": "maturity_date",
            "type": "i64"
          },
          {
            "name": "tenor_days",
            "type": "u32"
          }
        ]
      }
    },
    {
      "name": "TokenMeta",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "pubkey"
          },
          {
            "name": "admin",
            "type": "pubkey"
          },
          {
            "name": "minter",
            "type": "pubkey"
          },
          {
            "name": "automation",
            "type": "pubkey"
          },
          {
            "name": "vault",
            "type": "pubkey"
          },
          {
            "name": "payout_token",
            "type": "pubkey"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "issuer",
            "type": "string"
          },
          {
            "name": "deal_url",
            "type": "string"
          },
          {
            "name": "investment_type",
            "type": "u8"
          },
          {
            "name": "investment_category",
            "type": "u8"
          },
          {
            "name": "payout_frequency",
            "type": "u8"
          },
          {
            "name": "token_entity_type",
            "type": "u8"
          },
          {
            "name": "interest_rate_bps",
            "type": "u16"
          },
          {
            "name": "maturity_date",
            "type": "i64"
          },
          {
            "name": "tenor_days",
            "type": "u32"
          },
          {
            "name": "decimals",
            "type": "u8"
          },
          {
            "name": "bump",
            "type": "u8"
          }
        ]
      }
    }
  ]
}