InitializeComponent.cs 2.2 KB

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