InitializeComponent.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma warning disable CS1591
  2. #pragma warning disable CS1998
  3. using Solana.Unity.Rpc.Models;
  4. using Solana.Unity.Wallet;
  5. using System.Threading.Tasks;
  6. using World.Program;
  7. namespace Bolt {
  8. public partial class World {
  9. public class InitializeComponentInstruction {
  10. public PublicKey Pda { get; set; }
  11. public TransactionInstruction Instruction { get; set; }
  12. }
  13. public static async Task<InitializeComponentInstruction> InitializeComponent(PublicKey payer, PublicKey entity, PublicKey componentId, byte[] seed, PublicKey authority = null) {
  14. var componentPda = WorldProgram.FindComponentPda(componentId, entity, seed);
  15. return await InitializeComponent(payer, entity, componentId, componentPda, authority);
  16. }
  17. public static async Task<InitializeComponentInstruction> InitializeComponent(PublicKey payer, PublicKey entity, PublicKey componentId, string seed, PublicKey authority = null) {
  18. var componentPda = WorldProgram.FindComponentPda(componentId, entity, seed);
  19. return await InitializeComponent(payer, entity, componentId, componentPda, authority);
  20. }
  21. public static async Task<InitializeComponentInstruction> InitializeComponent(PublicKey payer, PublicKey entity, PublicKey componentId, PublicKey authority = null) {
  22. var componentPda = WorldProgram.FindComponentPda(componentId, entity);
  23. return await InitializeComponent(payer, entity, componentId, componentPda, authority);
  24. }
  25. public static async Task<InitializeComponentInstruction> InitializeComponent(PublicKey payer, PublicKey entity, PublicKey componentId, PublicKey componentPda, PublicKey authority = null) {
  26. var initializeComponent = new InitializeComponentAccounts() {
  27. CpiAuth = WorldProgram.CPI_AUTH_ADDRESS,
  28. Payer = payer,
  29. Entity = entity,
  30. Data = componentPda,
  31. ComponentProgram = componentId,
  32. Authority = authority ?? new PublicKey(WorldProgram.ID)
  33. };
  34. var instruction = WorldProgram.InitializeComponent(initializeComponent);
  35. return new InitializeComponentInstruction() {
  36. Pda = componentPda,
  37. Instruction = instruction
  38. };
  39. }
  40. }
  41. }