InitializeComponent.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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.FindCpiAuthPda(),
  28. Payer = payer,
  29. Entity = entity,
  30. Data = componentPda,
  31. ComponentProgram = componentId,
  32. Authority = authority ?? new PublicKey(WorldProgram.ID),
  33. Buffer = WorldProgram.FindBufferPda(componentPda)
  34. };
  35. var instruction = WorldProgram.InitializeComponent(initializeComponent);
  36. return new InitializeComponentInstruction() {
  37. Pda = componentPda,
  38. Instruction = instruction
  39. };
  40. }
  41. }
  42. }