Skip to content

Commit 3dba024

Browse files
committed
✨ Variable number of components
1 parent 92e9f3b commit 3dba024

File tree

11 files changed

+131
-371
lines changed

11 files changed

+131
-371
lines changed

clients/bolt-sdk/idl/world.json

-254
Original file line numberDiff line numberDiff line change
@@ -125,266 +125,12 @@
125125
},
126126
{
127127
"name": "apply",
128-
"accounts": [
129-
{
130-
"name": "componentProgram",
131-
"isMut": false,
132-
"isSigner": false
133-
},
134-
{
135-
"name": "boltSystem",
136-
"isMut": false,
137-
"isSigner": false
138-
},
139-
{
140-
"name": "boltComponent",
141-
"isMut": true,
142-
"isSigner": false
143-
},
144-
{
145-
"name": "authority",
146-
"isMut": false,
147-
"isSigner": false
148-
},
149-
{
150-
"name": "instructionSysvarAccount",
151-
"isMut": false,
152-
"isSigner": false
153-
}
154-
],
155-
"args": [
156-
{
157-
"name": "args",
158-
"type": "bytes"
159-
}
160-
]
161-
},
162-
{
163-
"name": "apply2",
164128
"accounts": [
165129
{
166130
"name": "boltSystem",
167131
"isMut": false,
168132
"isSigner": false
169133
},
170-
{
171-
"name": "componentProgram1",
172-
"isMut": false,
173-
"isSigner": false
174-
},
175-
{
176-
"name": "boltComponent1",
177-
"isMut": true,
178-
"isSigner": false
179-
},
180-
{
181-
"name": "componentProgram2",
182-
"isMut": false,
183-
"isSigner": false
184-
},
185-
{
186-
"name": "boltComponent2",
187-
"isMut": true,
188-
"isSigner": false
189-
},
190-
{
191-
"name": "authority",
192-
"isMut": false,
193-
"isSigner": false
194-
},
195-
{
196-
"name": "instructionSysvarAccount",
197-
"isMut": false,
198-
"isSigner": false
199-
}
200-
],
201-
"args": [
202-
{
203-
"name": "args",
204-
"type": "bytes"
205-
}
206-
]
207-
},
208-
{
209-
"name": "apply3",
210-
"accounts": [
211-
{
212-
"name": "boltSystem",
213-
"isMut": false,
214-
"isSigner": false
215-
},
216-
{
217-
"name": "componentProgram1",
218-
"isMut": false,
219-
"isSigner": false
220-
},
221-
{
222-
"name": "boltComponent1",
223-
"isMut": true,
224-
"isSigner": false
225-
},
226-
{
227-
"name": "componentProgram2",
228-
"isMut": false,
229-
"isSigner": false
230-
},
231-
{
232-
"name": "boltComponent2",
233-
"isMut": true,
234-
"isSigner": false
235-
},
236-
{
237-
"name": "componentProgram3",
238-
"isMut": false,
239-
"isSigner": false
240-
},
241-
{
242-
"name": "boltComponent3",
243-
"isMut": true,
244-
"isSigner": false
245-
},
246-
{
247-
"name": "authority",
248-
"isMut": false,
249-
"isSigner": false
250-
},
251-
{
252-
"name": "instructionSysvarAccount",
253-
"isMut": false,
254-
"isSigner": false
255-
}
256-
],
257-
"args": [
258-
{
259-
"name": "args",
260-
"type": "bytes"
261-
}
262-
]
263-
},
264-
{
265-
"name": "apply4",
266-
"accounts": [
267-
{
268-
"name": "boltSystem",
269-
"isMut": false,
270-
"isSigner": false
271-
},
272-
{
273-
"name": "componentProgram1",
274-
"isMut": false,
275-
"isSigner": false
276-
},
277-
{
278-
"name": "boltComponent1",
279-
"isMut": true,
280-
"isSigner": false
281-
},
282-
{
283-
"name": "componentProgram2",
284-
"isMut": false,
285-
"isSigner": false
286-
},
287-
{
288-
"name": "boltComponent2",
289-
"isMut": true,
290-
"isSigner": false
291-
},
292-
{
293-
"name": "componentProgram3",
294-
"isMut": false,
295-
"isSigner": false
296-
},
297-
{
298-
"name": "boltComponent3",
299-
"isMut": true,
300-
"isSigner": false
301-
},
302-
{
303-
"name": "componentProgram4",
304-
"isMut": false,
305-
"isSigner": false
306-
},
307-
{
308-
"name": "boltComponent4",
309-
"isMut": true,
310-
"isSigner": false
311-
},
312-
{
313-
"name": "authority",
314-
"isMut": false,
315-
"isSigner": false
316-
},
317-
{
318-
"name": "instructionSysvarAccount",
319-
"isMut": false,
320-
"isSigner": false
321-
}
322-
],
323-
"args": [
324-
{
325-
"name": "args",
326-
"type": "bytes"
327-
}
328-
]
329-
},
330-
{
331-
"name": "apply5",
332-
"accounts": [
333-
{
334-
"name": "boltSystem",
335-
"isMut": false,
336-
"isSigner": false
337-
},
338-
{
339-
"name": "componentProgram1",
340-
"isMut": false,
341-
"isSigner": false
342-
},
343-
{
344-
"name": "boltComponent1",
345-
"isMut": true,
346-
"isSigner": false
347-
},
348-
{
349-
"name": "componentProgram2",
350-
"isMut": false,
351-
"isSigner": false
352-
},
353-
{
354-
"name": "boltComponent2",
355-
"isMut": true,
356-
"isSigner": false
357-
},
358-
{
359-
"name": "componentProgram3",
360-
"isMut": false,
361-
"isSigner": false
362-
},
363-
{
364-
"name": "boltComponent3",
365-
"isMut": true,
366-
"isSigner": false
367-
},
368-
{
369-
"name": "componentProgram4",
370-
"isMut": false,
371-
"isSigner": false
372-
},
373-
{
374-
"name": "boltComponent4",
375-
"isMut": true,
376-
"isSigner": false
377-
},
378-
{
379-
"name": "componentProgram5",
380-
"isMut": false,
381-
"isSigner": false
382-
},
383-
{
384-
"name": "boltComponent5",
385-
"isMut": true,
386-
"isSigner": false
387-
},
388134
{
389135
"name": "authority",
390136
"isMut": false,

clients/bolt-sdk/src/generated/idl/world.json

+8-4
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@
103103
},
104104
{
105105
"name": "authority",
106-
"writable": true,
107106
"signer": true
108107
},
109108
{
@@ -376,21 +375,26 @@
376375
},
377376
{
378377
"code": 6001,
378+
"name": "InvalidSystemOutput",
379+
"msg": "Invalid system output"
380+
},
381+
{
382+
"code": 6002,
379383
"name": "WorldAccountMismatch",
380384
"msg": "The provided world account does not match the expected PDA."
381385
},
382386
{
383-
"code": 6002,
387+
"code": 6003,
384388
"name": "TooManyAuthorities",
385389
"msg": "Exceed the maximum number of authorities."
386390
},
387391
{
388-
"code": 6003,
392+
"code": 6004,
389393
"name": "AuthorityNotFound",
390394
"msg": "The provided authority not found"
391395
},
392396
{
393-
"code": 6004,
397+
"code": 6005,
394398
"name": "SystemNotApproved",
395399
"msg": "The system is not approved in this world instance"
396400
}

clients/bolt-sdk/src/generated/types/world.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ export type World = {
8282
},
8383
{
8484
name: "authority";
85-
writable: true;
8685
signer: true;
8786
},
8887
{
@@ -274,21 +273,26 @@ export type World = {
274273
},
275274
{
276275
code: 6001;
276+
name: "invalidSystemOutput";
277+
msg: "Invalid system output";
278+
},
279+
{
280+
code: 6002;
277281
name: "worldAccountMismatch";
278282
msg: "The provided world account does not match the expected PDA.";
279283
},
280284
{
281-
code: 6002;
285+
code: 6003;
282286
name: "tooManyAuthorities";
283287
msg: "Exceed the maximum number of authorities.";
284288
},
285289
{
286-
code: 6003;
290+
code: 6004;
287291
name: "authorityNotFound";
288292
msg: "The provided authority not found";
289293
},
290294
{
291-
code: 6004;
295+
code: 6005;
292296
name: "systemNotApproved";
293297
msg: "The system is not approved in this world instance";
294298
},

crates/bolt-lang/attribute/extra-accounts/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ pub fn extra_accounts(_attr: TokenStream, item: TokenStream) -> TokenStream {
7171
let index = syn::Index::from(index); // Create a compile-time index representation
7272
quote! {
7373
fn #field_name(&self) -> Result<&'c AccountInfo<'info>> {
74-
self.remaining_accounts.get(#index).ok_or_else(|| ErrorCode::ConstraintAccountIsNone.into())
74+
self.remaining_accounts.get(Self::NUMBER_OF_COMPONENTS + #index).ok_or_else(|| ErrorCode::ConstraintAccountIsNone.into())
7575
}
7676
}
7777
});

0 commit comments

Comments
 (0)