Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 72
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
CreateV2Instruction
0.00% covered (danger)
0.00%
0 / 72
0.00% covered (danger)
0.00%
0 / 3
12
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 serialize
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getInstruction
0.00% covered (danger)
0.00%
0 / 68
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Attestto\SolanaPhpSdk\Programs;
4
5use Attestto\SolanaPhpSdk\Buffer;
6use Attestto\SolanaPhpSdk\PublicKey;
7use Attestto\SolanaPhpSdk\SystemProgram;
8use Attestto\SolanaPhpSdk\TransactionInstruction;
9use Attestto\SolanaPhpSdk\TokenProgramId;
10
11class CreateV2Instruction {
12    public $tag;
13    public $name;
14    public $space;
15
16    public static $schema = [
17        'struct' => [
18            'tag' => 'u8',
19            'name' => 'string',
20            'space' => 'u32',
21        ],
22    ];
23
24    public function __construct(array $obj) {
25        $this->tag = 9;
26        $this->name = $obj['name'];
27        $this->space = $obj['space'];
28    }
29
30    public function serialize(): Buffer {
31        // Implement serialization logic
32    }
33
34    public function getInstruction(
35        PublicKey $programId,
36        PublicKey $rentSysvarAccount,
37        PublicKey $nameProgramId,
38        PublicKey $rootDomain,
39        PublicKey $nameAccount,
40        PublicKey $reverseLookupAccount,
41        PublicKey $centralState,
42        PublicKey $buyer,
43        PublicKey $buyerTokenAccount,
44        PublicKey $usdcVault,
45        PublicKey $state
46    ): TransactionInstruction {
47        $data = $this->serialize();
48        $keys = [
49            [
50                'pubkey' => $rentSysvarAccount,
51                'isSigner' => false,
52                'isWritable' => false,
53            ],
54            [
55                'pubkey' => $nameProgramId,
56                'isSigner' => false,
57                'isWritable' => false,
58            ],
59            [
60                'pubkey' => $rootDomain,
61                'isSigner' => false,
62                'isWritable' => false,
63            ],
64            [
65                'pubkey' => $nameAccount,
66                'isSigner' => false,
67                'isWritable' => true,
68            ],
69            [
70                'pubkey' => $reverseLookupAccount,
71                'isSigner' => false,
72                'isWritable' => true,
73            ],
74            [
75                'pubkey' => SystemProgram::programId(),
76                'isSigner' => false,
77                'isWritable' => false,
78            ],
79            [
80                'pubkey' => $centralState,
81                'isSigner' => false,
82                'isWritable' => false,
83            ],
84            [
85                'pubkey' => $buyer,
86                'isSigner' => true,
87                'isWritable' => true,
88            ],
89            [
90                'pubkey' => $buyerTokenAccount,
91                'isSigner' => false,
92                'isWritable' => true,
93            ],
94            [
95                'pubkey' => $usdcVault,
96                'isSigner' => false,
97                'isWritable' => true,
98            ],
99            [
100                'pubkey' => TokenProgramId::programId(),
101                'isSigner' => false,
102                'isWritable' => false,
103            ],
104            [
105                'pubkey' => $state,
106                'isSigner' => false,
107                'isWritable' => false,
108            ],
109        ];
110
111        return new TransactionInstruction([
112            'keys' => $keys,
113            'programId' => $programId,
114            'data' => $data,
115        ]);
116    }
117}
118
119?>