App   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 10
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
dl 0
loc 10
rs 10
c 1
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A config() 0 3 1
1
<?php
2
3
// This file is auto-generated and is for apps only. Bundles SHOULD NOT rely on its content.
4
5
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
6
7
use Symfony\Component\Config\Loader\ParamConfigurator as Param;
8
9
/**
10
 * This class provides array-shapes for configuring the services and bundles of an application.
11
 *
12
 * Services declared with the config() method below are autowired and autoconfigured by default.
13
 *
14
 * This is for apps only. Bundles SHOULD NOT use it.
15
 *
16
 * Example:
17
 *
18
 *     ```php
19
 *     // config/services.php
20
 *     namespace Symfony\Component\DependencyInjection\Loader\Configurator;
21
 *
22
 *     return App::config([
23
 *         'services' => [
24
 *             'App\\' => [
25
 *                 'resource' => '../src/',
26
 *             ],
27
 *         ],
28
 *     ]);
29
 *     ```
30
 *
31
 * @psalm-type ImportsConfig = list<string|array{
32
 *     resource: string,
33
 *     type?: string|null,
34
 *     ignore_errors?: bool,
35
 * }>
36
 * @psalm-type ParametersConfig = array<string, scalar|\UnitEnum|array<scalar|\UnitEnum|array<mixed>|null>|null>
37
 * @psalm-type ArgumentsType = list<mixed>|array<string, mixed>
38
 * @psalm-type CallType = array<string, ArgumentsType>|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool}
39
 * @psalm-type TagsType = list<string|array<string, array<string, mixed>>> // arrays inside the list must have only one element, with the tag name as the key
40
 * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator
41
 * @psalm-type DeprecationType = array{package: string, version: string, message?: string}
42
 * @psalm-type DefaultsType = array{
43
 *     public?: bool,
44
 *     tags?: TagsType,
45
 *     resource_tags?: TagsType,
46
 *     autowire?: bool,
47
 *     autoconfigure?: bool,
48
 *     bind?: array<string, mixed>,
49
 * }
50
 * @psalm-type InstanceofType = array{
51
 *     shared?: bool,
52
 *     lazy?: bool|string,
53
 *     public?: bool,
54
 *     properties?: array<string, mixed>,
55
 *     configurator?: CallbackType,
56
 *     calls?: list<CallType>,
57
 *     tags?: TagsType,
58
 *     resource_tags?: TagsType,
59
 *     autowire?: bool,
60
 *     bind?: array<string, mixed>,
61
 *     constructor?: string,
62
 * }
63
 * @psalm-type DefinitionType = array{
64
 *     class?: string,
65
 *     file?: string,
66
 *     parent?: string,
67
 *     shared?: bool,
68
 *     synthetic?: bool,
69
 *     lazy?: bool|string,
70
 *     public?: bool,
71
 *     abstract?: bool,
72
 *     deprecated?: DeprecationType,
73
 *     factory?: CallbackType,
74
 *     configurator?: CallbackType,
75
 *     arguments?: ArgumentsType,
76
 *     properties?: array<string, mixed>,
77
 *     calls?: list<CallType>,
78
 *     tags?: TagsType,
79
 *     resource_tags?: TagsType,
80
 *     decorates?: string,
81
 *     decoration_inner_name?: string,
82
 *     decoration_priority?: int,
83
 *     decoration_on_invalid?: 'exception'|'ignore'|null,
84
 *     autowire?: bool,
85
 *     autoconfigure?: bool,
86
 *     bind?: array<string, mixed>,
87
 *     constructor?: string,
88
 *     from_callable?: CallbackType,
89
 * }
90
 * @psalm-type AliasType = string|array{
91
 *     alias: string,
92
 *     public?: bool,
93
 *     deprecated?: DeprecationType,
94
 * }
95
 * @psalm-type PrototypeType = array{
96
 *     resource: string,
97
 *     namespace?: string,
98
 *     exclude?: string|list<string>,
99
 *     parent?: string,
100
 *     shared?: bool,
101
 *     lazy?: bool|string,
102
 *     public?: bool,
103
 *     abstract?: bool,
104
 *     deprecated?: DeprecationType,
105
 *     factory?: CallbackType,
106
 *     arguments?: ArgumentsType,
107
 *     properties?: array<string, mixed>,
108
 *     configurator?: CallbackType,
109
 *     calls?: list<CallType>,
110
 *     tags?: TagsType,
111
 *     resource_tags?: TagsType,
112
 *     autowire?: bool,
113
 *     autoconfigure?: bool,
114
 *     bind?: array<string, mixed>,
115
 *     constructor?: string,
116
 * }
117
 * @psalm-type StackType = array{
118
 *     stack: list<DefinitionType|AliasType|PrototypeType|array<class-string, ArgumentsType|null>>,
119
 *     public?: bool,
120
 *     deprecated?: DeprecationType,
121
 * }
122
 * @psalm-type ServicesConfig = array{
123
 *     _defaults?: DefaultsType,
124
 *     _instanceof?: InstanceofType,
125
 *     ...<string, DefinitionType|AliasType|PrototypeType|StackType|ArgumentsType|null>
126
 * }
127
 * @psalm-type ExtensionType = array<string, mixed>
128
 * @psalm-type DoctrineConfig = array{
129
 *     dbal?: array{
130
 *         default_connection?: scalar|null|Param,
131
 *         types?: array<string, string|array{ // Default: []
132
 *             class: scalar|null|Param,
133
 *             commented?: bool|Param, // Deprecated: The doctrine-bundle type commenting features were removed; the corresponding config parameter was deprecated in 2.0 and will be dropped in 3.0.
134
 *         }>,
135
 *         driver_schemes?: array<string, scalar|null|Param>,
136
 *         connections?: array<string, array{ // Default: []
137
 *             url?: scalar|null|Param, // A URL with connection information; any parameter value parsed from this string will override explicitly set parameters
138
 *             dbname?: scalar|null|Param,
139
 *             host?: scalar|null|Param, // Defaults to "localhost" at runtime.
140
 *             port?: scalar|null|Param, // Defaults to null at runtime.
141
 *             user?: scalar|null|Param, // Defaults to "root" at runtime.
142
 *             password?: scalar|null|Param, // Defaults to null at runtime.
143
 *             override_url?: bool|Param, // Deprecated: The "doctrine.dbal.override_url" configuration key is deprecated.
144
 *             dbname_suffix?: scalar|null|Param, // Adds the given suffix to the configured database name, this option has no effects for the SQLite platform
145
 *             application_name?: scalar|null|Param,
146
 *             charset?: scalar|null|Param,
147
 *             path?: scalar|null|Param,
148
 *             memory?: bool|Param,
149
 *             unix_socket?: scalar|null|Param, // The unix socket to use for MySQL
150
 *             persistent?: bool|Param, // True to use as persistent connection for the ibm_db2 driver
151
 *             protocol?: scalar|null|Param, // The protocol to use for the ibm_db2 driver (default to TCPIP if omitted)
152
 *             service?: bool|Param, // True to use SERVICE_NAME as connection parameter instead of SID for Oracle
153
 *             servicename?: scalar|null|Param, // Overrules dbname parameter if given and used as SERVICE_NAME or SID connection parameter for Oracle depending on the service parameter.
154
 *             sessionMode?: scalar|null|Param, // The session mode to use for the oci8 driver
155
 *             server?: scalar|null|Param, // The name of a running database server to connect to for SQL Anywhere.
156
 *             default_dbname?: scalar|null|Param, // Override the default database (postgres) to connect to for PostgreSQL connexion.
157
 *             sslmode?: scalar|null|Param, // Determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server for PostgreSQL.
158
 *             sslrootcert?: scalar|null|Param, // The name of a file containing SSL certificate authority (CA) certificate(s). If the file exists, the server's certificate will be verified to be signed by one of these authorities.
159
 *             sslcert?: scalar|null|Param, // The path to the SSL client certificate file for PostgreSQL.
160
 *             sslkey?: scalar|null|Param, // The path to the SSL client key file for PostgreSQL.
161
 *             sslcrl?: scalar|null|Param, // The file name of the SSL certificate revocation list for PostgreSQL.
162
 *             pooled?: bool|Param, // True to use a pooled server with the oci8/pdo_oracle driver
163
 *             MultipleActiveResultSets?: bool|Param, // Configuring MultipleActiveResultSets for the pdo_sqlsrv driver
164
 *             use_savepoints?: bool|Param, // Use savepoints for nested transactions
165
 *             instancename?: scalar|null|Param, // Optional parameter, complete whether to add the INSTANCE_NAME parameter in the connection. It is generally used to connect to an Oracle RAC server to select the name of a particular instance.
166
 *             connectstring?: scalar|null|Param, // Complete Easy Connect connection descriptor, see https://docs.oracle.com/database/121/NETAG/naming.htm.When using this option, you will still need to provide the user and password parameters, but the other parameters will no longer be used. Note that when using this parameter, the getHost and getPort methods from Doctrine\DBAL\Connection will no longer function as expected.
167
 *             driver?: scalar|null|Param, // Default: "pdo_mysql"
168
 *             platform_service?: scalar|null|Param, // Deprecated: The "platform_service" configuration key is deprecated since doctrine-bundle 2.9. DBAL 4 will not support setting a custom platform via connection params anymore.
169
 *             auto_commit?: bool|Param,
170
 *             schema_filter?: scalar|null|Param,
171
 *             logging?: bool|Param, // Default: true
172
 *             profiling?: bool|Param, // Default: true
173
 *             profiling_collect_backtrace?: bool|Param, // Enables collecting backtraces when profiling is enabled // Default: false
174
 *             profiling_collect_schema_errors?: bool|Param, // Enables collecting schema errors when profiling is enabled // Default: true
175
 *             disable_type_comments?: bool|Param,
176
 *             server_version?: scalar|null|Param,
177
 *             idle_connection_ttl?: int|Param, // Default: 600
178
 *             driver_class?: scalar|null|Param,
179
 *             wrapper_class?: scalar|null|Param,
180
 *             keep_slave?: bool|Param, // Deprecated: The "keep_slave" configuration key is deprecated since doctrine-bundle 2.2. Use the "keep_replica" configuration key instead.
181
 *             keep_replica?: bool|Param,
182
 *             options?: array<string, mixed>,
183
 *             mapping_types?: array<string, scalar|null|Param>,
184
 *             default_table_options?: array<string, scalar|null|Param>,
185
 *             schema_manager_factory?: scalar|null|Param, // Default: "doctrine.dbal.legacy_schema_manager_factory"
186
 *             result_cache?: scalar|null|Param,
187
 *             slaves?: array<string, array{ // Default: []
188
 *                 url?: scalar|null|Param, // A URL with connection information; any parameter value parsed from this string will override explicitly set parameters
189
 *                 dbname?: scalar|null|Param,
190
 *                 host?: scalar|null|Param, // Defaults to "localhost" at runtime.
191
 *                 port?: scalar|null|Param, // Defaults to null at runtime.
192
 *                 user?: scalar|null|Param, // Defaults to "root" at runtime.
193
 *                 password?: scalar|null|Param, // Defaults to null at runtime.
194
 *                 override_url?: bool|Param, // Deprecated: The "doctrine.dbal.override_url" configuration key is deprecated.
195
 *                 dbname_suffix?: scalar|null|Param, // Adds the given suffix to the configured database name, this option has no effects for the SQLite platform
196
 *                 application_name?: scalar|null|Param,
197
 *                 charset?: scalar|null|Param,
198
 *                 path?: scalar|null|Param,
199
 *                 memory?: bool|Param,
200
 *                 unix_socket?: scalar|null|Param, // The unix socket to use for MySQL
201
 *                 persistent?: bool|Param, // True to use as persistent connection for the ibm_db2 driver
202
 *                 protocol?: scalar|null|Param, // The protocol to use for the ibm_db2 driver (default to TCPIP if omitted)
203
 *                 service?: bool|Param, // True to use SERVICE_NAME as connection parameter instead of SID for Oracle
204
 *                 servicename?: scalar|null|Param, // Overrules dbname parameter if given and used as SERVICE_NAME or SID connection parameter for Oracle depending on the service parameter.
205
 *                 sessionMode?: scalar|null|Param, // The session mode to use for the oci8 driver
206
 *                 server?: scalar|null|Param, // The name of a running database server to connect to for SQL Anywhere.
207
 *                 default_dbname?: scalar|null|Param, // Override the default database (postgres) to connect to for PostgreSQL connexion.
208
 *                 sslmode?: scalar|null|Param, // Determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server for PostgreSQL.
209
 *                 sslrootcert?: scalar|null|Param, // The name of a file containing SSL certificate authority (CA) certificate(s). If the file exists, the server's certificate will be verified to be signed by one of these authorities.
210
 *                 sslcert?: scalar|null|Param, // The path to the SSL client certificate file for PostgreSQL.
211
 *                 sslkey?: scalar|null|Param, // The path to the SSL client key file for PostgreSQL.
212
 *                 sslcrl?: scalar|null|Param, // The file name of the SSL certificate revocation list for PostgreSQL.
213
 *                 pooled?: bool|Param, // True to use a pooled server with the oci8/pdo_oracle driver
214
 *                 MultipleActiveResultSets?: bool|Param, // Configuring MultipleActiveResultSets for the pdo_sqlsrv driver
215
 *                 use_savepoints?: bool|Param, // Use savepoints for nested transactions
216
 *                 instancename?: scalar|null|Param, // Optional parameter, complete whether to add the INSTANCE_NAME parameter in the connection. It is generally used to connect to an Oracle RAC server to select the name of a particular instance.
217
 *                 connectstring?: scalar|null|Param, // Complete Easy Connect connection descriptor, see https://docs.oracle.com/database/121/NETAG/naming.htm.When using this option, you will still need to provide the user and password parameters, but the other parameters will no longer be used. Note that when using this parameter, the getHost and getPort methods from Doctrine\DBAL\Connection will no longer function as expected.
218
 *             }>,
219
 *             replicas?: array<string, array{ // Default: []
220
 *                 url?: scalar|null|Param, // A URL with connection information; any parameter value parsed from this string will override explicitly set parameters
221
 *                 dbname?: scalar|null|Param,
222
 *                 host?: scalar|null|Param, // Defaults to "localhost" at runtime.
223
 *                 port?: scalar|null|Param, // Defaults to null at runtime.
224
 *                 user?: scalar|null|Param, // Defaults to "root" at runtime.
225
 *                 password?: scalar|null|Param, // Defaults to null at runtime.
226
 *                 override_url?: bool|Param, // Deprecated: The "doctrine.dbal.override_url" configuration key is deprecated.
227
 *                 dbname_suffix?: scalar|null|Param, // Adds the given suffix to the configured database name, this option has no effects for the SQLite platform
228
 *                 application_name?: scalar|null|Param,
229
 *                 charset?: scalar|null|Param,
230
 *                 path?: scalar|null|Param,
231
 *                 memory?: bool|Param,
232
 *                 unix_socket?: scalar|null|Param, // The unix socket to use for MySQL
233
 *                 persistent?: bool|Param, // True to use as persistent connection for the ibm_db2 driver
234
 *                 protocol?: scalar|null|Param, // The protocol to use for the ibm_db2 driver (default to TCPIP if omitted)
235
 *                 service?: bool|Param, // True to use SERVICE_NAME as connection parameter instead of SID for Oracle
236
 *                 servicename?: scalar|null|Param, // Overrules dbname parameter if given and used as SERVICE_NAME or SID connection parameter for Oracle depending on the service parameter.
237
 *                 sessionMode?: scalar|null|Param, // The session mode to use for the oci8 driver
238
 *                 server?: scalar|null|Param, // The name of a running database server to connect to for SQL Anywhere.
239
 *                 default_dbname?: scalar|null|Param, // Override the default database (postgres) to connect to for PostgreSQL connexion.
240
 *                 sslmode?: scalar|null|Param, // Determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server for PostgreSQL.
241
 *                 sslrootcert?: scalar|null|Param, // The name of a file containing SSL certificate authority (CA) certificate(s). If the file exists, the server's certificate will be verified to be signed by one of these authorities.
242
 *                 sslcert?: scalar|null|Param, // The path to the SSL client certificate file for PostgreSQL.
243
 *                 sslkey?: scalar|null|Param, // The path to the SSL client key file for PostgreSQL.
244
 *                 sslcrl?: scalar|null|Param, // The file name of the SSL certificate revocation list for PostgreSQL.
245
 *                 pooled?: bool|Param, // True to use a pooled server with the oci8/pdo_oracle driver
246
 *                 MultipleActiveResultSets?: bool|Param, // Configuring MultipleActiveResultSets for the pdo_sqlsrv driver
247
 *                 use_savepoints?: bool|Param, // Use savepoints for nested transactions
248
 *                 instancename?: scalar|null|Param, // Optional parameter, complete whether to add the INSTANCE_NAME parameter in the connection. It is generally used to connect to an Oracle RAC server to select the name of a particular instance.
249
 *                 connectstring?: scalar|null|Param, // Complete Easy Connect connection descriptor, see https://docs.oracle.com/database/121/NETAG/naming.htm.When using this option, you will still need to provide the user and password parameters, but the other parameters will no longer be used. Note that when using this parameter, the getHost and getPort methods from Doctrine\DBAL\Connection will no longer function as expected.
250
 *             }>,
251
 *         }>,
252
 *     },
253
 *     orm?: array{
254
 *         default_entity_manager?: scalar|null|Param,
255
 *         auto_generate_proxy_classes?: scalar|null|Param, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false
256
 *         enable_lazy_ghost_objects?: bool|Param, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true
257
 *         enable_native_lazy_objects?: bool|Param, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false
258
 *         proxy_dir?: scalar|null|Param, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies"
259
 *         proxy_namespace?: scalar|null|Param, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies"
260
 *         controller_resolver?: bool|array{
261
 *             enabled?: bool|Param, // Default: true
262
 *             auto_mapping?: bool|null|Param, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null
263
 *             evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false
264
 *         },
265
 *         entity_managers?: array<string, array{ // Default: []
266
 *             query_cache_driver?: string|array{
267
 *                 type?: scalar|null|Param, // Default: null
268
 *                 id?: scalar|null|Param,
269
 *                 pool?: scalar|null|Param,
270
 *             },
271
 *             metadata_cache_driver?: string|array{
272
 *                 type?: scalar|null|Param, // Default: null
273
 *                 id?: scalar|null|Param,
274
 *                 pool?: scalar|null|Param,
275
 *             },
276
 *             result_cache_driver?: string|array{
277
 *                 type?: scalar|null|Param, // Default: null
278
 *                 id?: scalar|null|Param,
279
 *                 pool?: scalar|null|Param,
280
 *             },
281
 *             entity_listeners?: array{
282
 *                 entities?: array<string, array{ // Default: []
283
 *                     listeners?: array<string, array{ // Default: []
284
 *                         events?: list<array{ // Default: []
285
 *                             type?: scalar|null|Param,
286
 *                             method?: scalar|null|Param, // Default: null
287
 *                         }>,
288
 *                     }>,
289
 *                 }>,
290
 *             },
291
 *             connection?: scalar|null|Param,
292
 *             class_metadata_factory_name?: scalar|null|Param, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory"
293
 *             default_repository_class?: scalar|null|Param, // Default: "Doctrine\\ORM\\EntityRepository"
294
 *             auto_mapping?: scalar|null|Param, // Default: false
295
 *             naming_strategy?: scalar|null|Param, // Default: "doctrine.orm.naming_strategy.default"
296
 *             quote_strategy?: scalar|null|Param, // Default: "doctrine.orm.quote_strategy.default"
297
 *             typed_field_mapper?: scalar|null|Param, // Default: "doctrine.orm.typed_field_mapper.default"
298
 *             entity_listener_resolver?: scalar|null|Param, // Default: null
299
 *             fetch_mode_subselect_batch_size?: scalar|null|Param,
300
 *             repository_factory?: scalar|null|Param, // Default: "doctrine.orm.container_repository_factory"
301
 *             schema_ignore_classes?: list<scalar|null|Param>,
302
 *             report_fields_where_declared?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true
303
 *             validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false
304
 *             second_level_cache?: array{
305
 *                 region_cache_driver?: string|array{
306
 *                     type?: scalar|null|Param, // Default: null
307
 *                     id?: scalar|null|Param,
308
 *                     pool?: scalar|null|Param,
309
 *                 },
310
 *                 region_lock_lifetime?: scalar|null|Param, // Default: 60
311
 *                 log_enabled?: bool|Param, // Default: true
312
 *                 region_lifetime?: scalar|null|Param, // Default: 3600
313
 *                 enabled?: bool|Param, // Default: true
314
 *                 factory?: scalar|null|Param,
315
 *                 regions?: array<string, array{ // Default: []
316
 *                     cache_driver?: string|array{
317
 *                         type?: scalar|null|Param, // Default: null
318
 *                         id?: scalar|null|Param,
319
 *                         pool?: scalar|null|Param,
320
 *                     },
321
 *                     lock_path?: scalar|null|Param, // Default: "%kernel.cache_dir%/doctrine/orm/slc/filelock"
322
 *                     lock_lifetime?: scalar|null|Param, // Default: 60
323
 *                     type?: scalar|null|Param, // Default: "default"
324
 *                     lifetime?: scalar|null|Param, // Default: 0
325
 *                     service?: scalar|null|Param,
326
 *                     name?: scalar|null|Param,
327
 *                 }>,
328
 *                 loggers?: array<string, array{ // Default: []
329
 *                     name?: scalar|null|Param,
330
 *                     service?: scalar|null|Param,
331
 *                 }>,
332
 *             },
333
 *             hydrators?: array<string, scalar|null|Param>,
334
 *             mappings?: array<string, bool|string|array{ // Default: []
335
 *                 mapping?: scalar|null|Param, // Default: true
336
 *                 type?: scalar|null|Param,
337
 *                 dir?: scalar|null|Param,
338
 *                 alias?: scalar|null|Param,
339
 *                 prefix?: scalar|null|Param,
340
 *                 is_bundle?: bool|Param,
341
 *             }>,
342
 *             dql?: array{
343
 *                 string_functions?: array<string, scalar|null|Param>,
344
 *                 numeric_functions?: array<string, scalar|null|Param>,
345
 *                 datetime_functions?: array<string, scalar|null|Param>,
346
 *             },
347
 *             filters?: array<string, string|array{ // Default: []
348
 *                 class: scalar|null|Param,
349
 *                 enabled?: bool|Param, // Default: false
350
 *                 parameters?: array<string, mixed>,
351
 *             }>,
352
 *             identity_generation_preferences?: array<string, scalar|null|Param>,
353
 *         }>,
354
 *         resolve_target_entities?: array<string, scalar|null|Param>,
355
 *     },
356
 * }
357
 * @psalm-type FrameworkConfig = array{
358
 *     secret?: scalar|null|Param,
359
 *     http_method_override?: bool|Param, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false
360
 *     allowed_http_method_override?: list<string|Param>|null,
361
 *     trust_x_sendfile_type_header?: scalar|null|Param, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%"
362
 *     ide?: scalar|null|Param, // Default: "%env(default::SYMFONY_IDE)%"
363
 *     test?: bool|Param,
364
 *     default_locale?: scalar|null|Param, // Default: "en"
365
 *     set_locale_from_accept_language?: bool|Param, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false
366
 *     set_content_language_from_locale?: bool|Param, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false
367
 *     enabled_locales?: list<scalar|null|Param>,
368
 *     trusted_hosts?: list<scalar|null|Param>,
369
 *     trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"]
370
 *     trusted_headers?: list<scalar|null|Param>,
371
 *     error_controller?: scalar|null|Param, // Default: "error_controller"
372
 *     handle_all_throwables?: bool|Param, // HttpKernel will handle all kinds of \Throwable. // Default: true
373
 *     csrf_protection?: bool|array{
374
 *         enabled?: scalar|null|Param, // Default: null
375
 *         stateless_token_ids?: list<scalar|null|Param>,
376
 *         check_header?: scalar|null|Param, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false
377
 *         cookie_name?: scalar|null|Param, // The name of the cookie to use when using stateless protection. // Default: "csrf-token"
378
 *     },
379
 *     form?: bool|array{ // Form configuration
380
 *         enabled?: bool|Param, // Default: true
381
 *         csrf_protection?: array{
382
 *             enabled?: scalar|null|Param, // Default: null
383
 *             token_id?: scalar|null|Param, // Default: null
384
 *             field_name?: scalar|null|Param, // Default: "_token"
385
 *             field_attr?: array<string, scalar|null|Param>,
386
 *         },
387
 *     },
388
 *     http_cache?: bool|array{ // HTTP cache configuration
389
 *         enabled?: bool|Param, // Default: false
390
 *         debug?: bool|Param, // Default: "%kernel.debug%"
391
 *         trace_level?: "none"|"short"|"full"|Param,
392
 *         trace_header?: scalar|null|Param,
393
 *         default_ttl?: int|Param,
394
 *         private_headers?: list<scalar|null|Param>,
395
 *         skip_response_headers?: list<scalar|null|Param>,
396
 *         allow_reload?: bool|Param,
397
 *         allow_revalidate?: bool|Param,
398
 *         stale_while_revalidate?: int|Param,
399
 *         stale_if_error?: int|Param,
400
 *         terminate_on_cache_hit?: bool|Param,
401
 *     },
402
 *     esi?: bool|array{ // ESI configuration
403
 *         enabled?: bool|Param, // Default: false
404
 *     },
405
 *     ssi?: bool|array{ // SSI configuration
406
 *         enabled?: bool|Param, // Default: false
407
 *     },
408
 *     fragments?: bool|array{ // Fragments configuration
409
 *         enabled?: bool|Param, // Default: false
410
 *         hinclude_default_template?: scalar|null|Param, // Default: null
411
 *         path?: scalar|null|Param, // Default: "/_fragment"
412
 *     },
413
 *     profiler?: bool|array{ // Profiler configuration
414
 *         enabled?: bool|Param, // Default: false
415
 *         collect?: bool|Param, // Default: true
416
 *         collect_parameter?: scalar|null|Param, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null
417
 *         only_exceptions?: bool|Param, // Default: false
418
 *         only_main_requests?: bool|Param, // Default: false
419
 *         dsn?: scalar|null|Param, // Default: "file:%kernel.cache_dir%/profiler"
420
 *         collect_serializer_data?: bool|Param, // Enables the serializer data collector and profiler panel. // Default: false
421
 *     },
422
 *     workflows?: bool|array{
423
 *         enabled?: bool|Param, // Default: false
424
 *         workflows?: array<string, array{ // Default: []
425
 *             audit_trail?: bool|array{
426
 *                 enabled?: bool|Param, // Default: false
427
 *             },
428
 *             type?: "workflow"|"state_machine"|Param, // Default: "state_machine"
429
 *             marking_store?: array{
430
 *                 type?: "method"|Param,
431
 *                 property?: scalar|null|Param,
432
 *                 service?: scalar|null|Param,
433
 *             },
434
 *             supports?: list<scalar|null|Param>,
435
 *             definition_validators?: list<scalar|null|Param>,
436
 *             support_strategy?: scalar|null|Param,
437
 *             initial_marking?: list<scalar|null|Param>,
438
 *             events_to_dispatch?: list<string|Param>|null,
439
 *             places?: list<array{ // Default: []
440
 *                 name: scalar|null|Param,
441
 *                 metadata?: list<mixed>,
442
 *             }>,
443
 *             transitions: list<array{ // Default: []
444
 *                 name: string|Param,
445
 *                 guard?: string|Param, // An expression to block the transition.
446
 *                 from?: list<array{ // Default: []
447
 *                     place: string|Param,
448
 *                     weight?: int|Param, // Default: 1
449
 *                 }>,
450
 *                 to?: list<array{ // Default: []
451
 *                     place: string|Param,
452
 *                     weight?: int|Param, // Default: 1
453
 *                 }>,
454
 *                 weight?: int|Param, // Default: 1
455
 *                 metadata?: list<mixed>,
456
 *             }>,
457
 *             metadata?: list<mixed>,
458
 *         }>,
459
 *     },
460
 *     router?: bool|array{ // Router configuration
461
 *         enabled?: bool|Param, // Default: false
462
 *         resource: scalar|null|Param,
463
 *         type?: scalar|null|Param,
464
 *         cache_dir?: scalar|null|Param, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%"
465
 *         default_uri?: scalar|null|Param, // The default URI used to generate URLs in a non-HTTP context. // Default: null
466
 *         http_port?: scalar|null|Param, // Default: 80
467
 *         https_port?: scalar|null|Param, // Default: 443
468
 *         strict_requirements?: scalar|null|Param, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true
469
 *         utf8?: bool|Param, // Default: true
470
 *     },
471
 *     session?: bool|array{ // Session configuration
472
 *         enabled?: bool|Param, // Default: false
473
 *         storage_factory_id?: scalar|null|Param, // Default: "session.storage.factory.native"
474
 *         handler_id?: scalar|null|Param, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null.
475
 *         name?: scalar|null|Param,
476
 *         cookie_lifetime?: scalar|null|Param,
477
 *         cookie_path?: scalar|null|Param,
478
 *         cookie_domain?: scalar|null|Param,
479
 *         cookie_secure?: true|false|"auto"|Param, // Default: "auto"
480
 *         cookie_httponly?: bool|Param, // Default: true
481
 *         cookie_samesite?: null|"lax"|"strict"|"none"|Param, // Default: "lax"
482
 *         use_cookies?: bool|Param,
483
 *         gc_divisor?: scalar|null|Param,
484
 *         gc_probability?: scalar|null|Param,
485
 *         gc_maxlifetime?: scalar|null|Param,
486
 *         save_path?: scalar|null|Param, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null.
487
 *         metadata_update_threshold?: int|Param, // Seconds to wait between 2 session metadata updates. // Default: 0
488
 *         sid_length?: int|Param, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option.
489
 *         sid_bits_per_character?: int|Param, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option.
490
 *     },
491
 *     request?: bool|array{ // Request configuration
492
 *         enabled?: bool|Param, // Default: false
493
 *         formats?: array<string, string|list<scalar|null|Param>>,
494
 *     },
495
 *     assets?: bool|array{ // Assets configuration
496
 *         enabled?: bool|Param, // Default: true
497
 *         strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false
498
 *         version_strategy?: scalar|null|Param, // Default: null
499
 *         version?: scalar|null|Param, // Default: null
500
 *         version_format?: scalar|null|Param, // Default: "%%s?%%s"
501
 *         json_manifest_path?: scalar|null|Param, // Default: null
502
 *         base_path?: scalar|null|Param, // Default: ""
503
 *         base_urls?: list<scalar|null|Param>,
504
 *         packages?: array<string, array{ // Default: []
505
 *             strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false
506
 *             version_strategy?: scalar|null|Param, // Default: null
507
 *             version?: scalar|null|Param,
508
 *             version_format?: scalar|null|Param, // Default: null
509
 *             json_manifest_path?: scalar|null|Param, // Default: null
510
 *             base_path?: scalar|null|Param, // Default: ""
511
 *             base_urls?: list<scalar|null|Param>,
512
 *         }>,
513
 *     },
514
 *     asset_mapper?: bool|array{ // Asset Mapper configuration
515
 *         enabled?: bool|Param, // Default: false
516
 *         paths?: array<string, scalar|null|Param>,
517
 *         excluded_patterns?: list<scalar|null|Param>,
518
 *         exclude_dotfiles?: bool|Param, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true
519
 *         server?: bool|Param, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true
520
 *         public_prefix?: scalar|null|Param, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/"
521
 *         missing_import_mode?: "strict"|"warn"|"ignore"|Param, // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn"
522
 *         extensions?: array<string, scalar|null|Param>,
523
 *         importmap_path?: scalar|null|Param, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php"
524
 *         importmap_polyfill?: scalar|null|Param, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims"
525
 *         importmap_script_attributes?: array<string, scalar|null|Param>,
526
 *         vendor_dir?: scalar|null|Param, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor"
527
 *         precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip.
528
 *             enabled?: bool|Param, // Default: false
529
 *             formats?: list<scalar|null|Param>,
530
 *             extensions?: list<scalar|null|Param>,
531
 *         },
532
 *     },
533
 *     translator?: bool|array{ // Translator configuration
534
 *         enabled?: bool|Param, // Default: true
535
 *         fallbacks?: list<scalar|null|Param>,
536
 *         logging?: bool|Param, // Default: false
537
 *         formatter?: scalar|null|Param, // Default: "translator.formatter.default"
538
 *         cache_dir?: scalar|null|Param, // Default: "%kernel.cache_dir%/translations"
539
 *         default_path?: scalar|null|Param, // The default path used to load translations. // Default: "%kernel.project_dir%/translations"
540
 *         paths?: list<scalar|null|Param>,
541
 *         pseudo_localization?: bool|array{
542
 *             enabled?: bool|Param, // Default: false
543
 *             accents?: bool|Param, // Default: true
544
 *             expansion_factor?: float|Param, // Default: 1.0
545
 *             brackets?: bool|Param, // Default: true
546
 *             parse_html?: bool|Param, // Default: false
547
 *             localizable_html_attributes?: list<scalar|null|Param>,
548
 *         },
549
 *         providers?: array<string, array{ // Default: []
550
 *             dsn?: scalar|null|Param,
551
 *             domains?: list<scalar|null|Param>,
552
 *             locales?: list<scalar|null|Param>,
553
 *         }>,
554
 *         globals?: array<string, string|array{ // Default: []
555
 *             value?: mixed,
556
 *             message?: string|Param,
557
 *             parameters?: array<string, scalar|null|Param>,
558
 *             domain?: string|Param,
559
 *         }>,
560
 *     },
561
 *     validation?: bool|array{ // Validation configuration
562
 *         enabled?: bool|Param, // Default: true
563
 *         cache?: scalar|null|Param, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0.
564
 *         enable_attributes?: bool|Param, // Default: true
565
 *         static_method?: list<scalar|null|Param>,
566
 *         translation_domain?: scalar|null|Param, // Default: "validators"
567
 *         email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose"|Param, // Default: "html5"
568
 *         mapping?: array{
569
 *             paths?: list<scalar|null|Param>,
570
 *         },
571
 *         not_compromised_password?: bool|array{
572
 *             enabled?: bool|Param, // When disabled, compromised passwords will be accepted as valid. // Default: true
573
 *             endpoint?: scalar|null|Param, // API endpoint for the NotCompromisedPassword Validator. // Default: null
574
 *         },
575
 *         disable_translation?: bool|Param, // Default: false
576
 *         auto_mapping?: array<string, array{ // Default: []
577
 *             services?: list<scalar|null|Param>,
578
 *         }>,
579
 *     },
580
 *     annotations?: bool|array{
581
 *         enabled?: bool|Param, // Default: false
582
 *     },
583
 *     serializer?: bool|array{ // Serializer configuration
584
 *         enabled?: bool|Param, // Default: false
585
 *         enable_attributes?: bool|Param, // Default: true
586
 *         name_converter?: scalar|null|Param,
587
 *         circular_reference_handler?: scalar|null|Param,
588
 *         max_depth_handler?: scalar|null|Param,
589
 *         mapping?: array{
590
 *             paths?: list<scalar|null|Param>,
591
 *         },
592
 *         default_context?: list<mixed>,
593
 *         named_serializers?: array<string, array{ // Default: []
594
 *             name_converter?: scalar|null|Param,
595
 *             default_context?: list<mixed>,
596
 *             include_built_in_normalizers?: bool|Param, // Whether to include the built-in normalizers // Default: true
597
 *             include_built_in_encoders?: bool|Param, // Whether to include the built-in encoders // Default: true
598
 *         }>,
599
 *     },
600
 *     property_access?: bool|array{ // Property access configuration
601
 *         enabled?: bool|Param, // Default: true
602
 *         magic_call?: bool|Param, // Default: false
603
 *         magic_get?: bool|Param, // Default: true
604
 *         magic_set?: bool|Param, // Default: true
605
 *         throw_exception_on_invalid_index?: bool|Param, // Default: false
606
 *         throw_exception_on_invalid_property_path?: bool|Param, // Default: true
607
 *     },
608
 *     type_info?: bool|array{ // Type info configuration
609
 *         enabled?: bool|Param, // Default: true
610
 *         aliases?: array<string, scalar|null|Param>,
611
 *     },
612
 *     property_info?: bool|array{ // Property info configuration
613
 *         enabled?: bool|Param, // Default: true
614
 *         with_constructor_extractor?: bool|Param, // Registers the constructor extractor.
615
 *     },
616
 *     cache?: array{ // Cache configuration
617
 *         prefix_seed?: scalar|null|Param, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%"
618
 *         app?: scalar|null|Param, // App related cache pools configuration. // Default: "cache.adapter.filesystem"
619
 *         system?: scalar|null|Param, // System related cache pools configuration. // Default: "cache.adapter.system"
620
 *         directory?: scalar|null|Param, // Default: "%kernel.share_dir%/pools/app"
621
 *         default_psr6_provider?: scalar|null|Param,
622
 *         default_redis_provider?: scalar|null|Param, // Default: "redis://localhost"
623
 *         default_valkey_provider?: scalar|null|Param, // Default: "valkey://localhost"
624
 *         default_memcached_provider?: scalar|null|Param, // Default: "memcached://localhost"
625
 *         default_doctrine_dbal_provider?: scalar|null|Param, // Default: "database_connection"
626
 *         default_pdo_provider?: scalar|null|Param, // Default: null
627
 *         pools?: array<string, array{ // Default: []
628
 *             adapters?: list<scalar|null|Param>,
629
 *             tags?: scalar|null|Param, // Default: null
630
 *             public?: bool|Param, // Default: false
631
 *             default_lifetime?: scalar|null|Param, // Default lifetime of the pool.
632
 *             provider?: scalar|null|Param, // Overwrite the setting from the default provider for this adapter.
633
 *             early_expiration_message_bus?: scalar|null|Param,
634
 *             clearer?: scalar|null|Param,
635
 *         }>,
636
 *     },
637
 *     php_errors?: array{ // PHP errors handling configuration
638
 *         log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true
639
 *         throw?: bool|Param, // Throw PHP errors as \ErrorException instances. // Default: true
640
 *     },
641
 *     exceptions?: array<string, array{ // Default: []
642
 *         log_level?: scalar|null|Param, // The level of log message. Null to let Symfony decide. // Default: null
643
 *         status_code?: scalar|null|Param, // The status code of the response. Null or 0 to let Symfony decide. // Default: null
644
 *         log_channel?: scalar|null|Param, // The channel of log message. Null to let Symfony decide. // Default: null
645
 *     }>,
646
 *     web_link?: bool|array{ // Web links configuration
647
 *         enabled?: bool|Param, // Default: false
648
 *     },
649
 *     lock?: bool|string|array{ // Lock configuration
650
 *         enabled?: bool|Param, // Default: false
651
 *         resources?: array<string, string|list<scalar|null|Param>>,
652
 *     },
653
 *     semaphore?: bool|string|array{ // Semaphore configuration
654
 *         enabled?: bool|Param, // Default: false
655
 *         resources?: array<string, scalar|null|Param>,
656
 *     },
657
 *     messenger?: bool|array{ // Messenger configuration
658
 *         enabled?: bool|Param, // Default: false
659
 *         routing?: array<string, array{ // Default: []
660
 *             senders?: list<scalar|null|Param>,
661
 *         }>,
662
 *         serializer?: array{
663
 *             default_serializer?: scalar|null|Param, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer"
664
 *             symfony_serializer?: array{
665
 *                 format?: scalar|null|Param, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json"
666
 *                 context?: array<string, mixed>,
667
 *             },
668
 *         },
669
 *         transports?: array<string, string|array{ // Default: []
670
 *             dsn?: scalar|null|Param,
671
 *             serializer?: scalar|null|Param, // Service id of a custom serializer to use. // Default: null
672
 *             options?: list<mixed>,
673
 *             failure_transport?: scalar|null|Param, // Transport name to send failed messages to (after all retries have failed). // Default: null
674
 *             retry_strategy?: string|array{
675
 *                 service?: scalar|null|Param, // Service id to override the retry strategy entirely. // Default: null
676
 *                 max_retries?: int|Param, // Default: 3
677
 *                 delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000
678
 *                 multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2
679
 *                 max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0
680
 *                 jitter?: float|Param, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1
681
 *             },
682
 *             rate_limiter?: scalar|null|Param, // Rate limiter name to use when processing messages. // Default: null
683
 *         }>,
684
 *         failure_transport?: scalar|null|Param, // Transport name to send failed messages to (after all retries have failed). // Default: null
685
 *         stop_worker_on_signals?: list<scalar|null|Param>,
686
 *         default_bus?: scalar|null|Param, // Default: null
687
 *         buses?: array<string, array{ // Default: {"messenger.bus.default":{"default_middleware":{"enabled":true,"allow_no_handlers":false,"allow_no_senders":true},"middleware":[]}}
688
 *             default_middleware?: bool|string|array{
689
 *                 enabled?: bool|Param, // Default: true
690
 *                 allow_no_handlers?: bool|Param, // Default: false
691
 *                 allow_no_senders?: bool|Param, // Default: true
692
 *             },
693
 *             middleware?: list<string|array{ // Default: []
694
 *                 id: scalar|null|Param,
695
 *                 arguments?: list<mixed>,
696
 *             }>,
697
 *         }>,
698
 *     },
699
 *     scheduler?: bool|array{ // Scheduler configuration
700
 *         enabled?: bool|Param, // Default: false
701
 *     },
702
 *     disallow_search_engine_index?: bool|Param, // Enabled by default when debug is enabled. // Default: true
703
 *     http_client?: bool|array{ // HTTP Client configuration
704
 *         enabled?: bool|Param, // Default: false
705
 *         max_host_connections?: int|Param, // The maximum number of connections to a single host.
706
 *         default_options?: array{
707
 *             headers?: array<string, mixed>,
708
 *             vars?: array<string, mixed>,
709
 *             max_redirects?: int|Param, // The maximum number of redirects to follow.
710
 *             http_version?: scalar|null|Param, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version.
711
 *             resolve?: array<string, scalar|null|Param>,
712
 *             proxy?: scalar|null|Param, // The URL of the proxy to pass requests through or null for automatic detection.
713
 *             no_proxy?: scalar|null|Param, // A comma separated list of hosts that do not require a proxy to be reached.
714
 *             timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter.
715
 *             max_duration?: float|Param, // The maximum execution time for the request+response as a whole.
716
 *             bindto?: scalar|null|Param, // A network interface name, IP address, a host name or a UNIX socket to bind to.
717
 *             verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context.
718
 *             verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name.
719
 *             cafile?: scalar|null|Param, // A certificate authority file.
720
 *             capath?: scalar|null|Param, // A directory that contains multiple certificate authority files.
721
 *             local_cert?: scalar|null|Param, // A PEM formatted certificate file.
722
 *             local_pk?: scalar|null|Param, // A private key file.
723
 *             passphrase?: scalar|null|Param, // The passphrase used to encrypt the "local_pk" file.
724
 *             ciphers?: scalar|null|Param, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...)
725
 *             peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es).
726
 *                 sha1?: mixed,
727
 *                 pin-sha256?: mixed,
728
 *                 md5?: mixed,
729
 *             },
730
 *             crypto_method?: scalar|null|Param, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants.
731
 *             extra?: array<string, mixed>,
732
 *             rate_limiter?: scalar|null|Param, // Rate limiter name to use for throttling requests. // Default: null
733
 *             caching?: bool|array{ // Caching configuration.
734
 *                 enabled?: bool|Param, // Default: false
735
 *                 cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client"
736
 *                 shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true
737
 *                 max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null
738
 *             },
739
 *             retry_failed?: bool|array{
740
 *                 enabled?: bool|Param, // Default: false
741
 *                 retry_strategy?: scalar|null|Param, // service id to override the retry strategy. // Default: null
742
 *                 http_codes?: array<string, array{ // Default: []
743
 *                     code?: int|Param,
744
 *                     methods?: list<string|Param>,
745
 *                 }>,
746
 *                 max_retries?: int|Param, // Default: 3
747
 *                 delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000
748
 *                 multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2
749
 *                 max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0
750
 *                 jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1
751
 *             },
752
 *         },
753
 *         mock_response_factory?: scalar|null|Param, // The id of the service that should generate mock responses. It should be either an invokable or an iterable.
754
 *         scoped_clients?: array<string, string|array{ // Default: []
755
 *             scope?: scalar|null|Param, // The regular expression that the request URL must match before adding the other options. When none is provided, the base URI is used instead.
756
 *             base_uri?: scalar|null|Param, // The URI to resolve relative URLs, following rules in RFC 3985, section 2.
757
 *             auth_basic?: scalar|null|Param, // An HTTP Basic authentication "username:password".
758
 *             auth_bearer?: scalar|null|Param, // A token enabling HTTP Bearer authorization.
759
 *             auth_ntlm?: scalar|null|Param, // A "username:password" pair to use Microsoft NTLM authentication (requires the cURL extension).
760
 *             query?: array<string, scalar|null|Param>,
761
 *             headers?: array<string, mixed>,
762
 *             max_redirects?: int|Param, // The maximum number of redirects to follow.
763
 *             http_version?: scalar|null|Param, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version.
764
 *             resolve?: array<string, scalar|null|Param>,
765
 *             proxy?: scalar|null|Param, // The URL of the proxy to pass requests through or null for automatic detection.
766
 *             no_proxy?: scalar|null|Param, // A comma separated list of hosts that do not require a proxy to be reached.
767
 *             timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter.
768
 *             max_duration?: float|Param, // The maximum execution time for the request+response as a whole.
769
 *             bindto?: scalar|null|Param, // A network interface name, IP address, a host name or a UNIX socket to bind to.
770
 *             verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context.
771
 *             verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name.
772
 *             cafile?: scalar|null|Param, // A certificate authority file.
773
 *             capath?: scalar|null|Param, // A directory that contains multiple certificate authority files.
774
 *             local_cert?: scalar|null|Param, // A PEM formatted certificate file.
775
 *             local_pk?: scalar|null|Param, // A private key file.
776
 *             passphrase?: scalar|null|Param, // The passphrase used to encrypt the "local_pk" file.
777
 *             ciphers?: scalar|null|Param, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...).
778
 *             peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es).
779
 *                 sha1?: mixed,
780
 *                 pin-sha256?: mixed,
781
 *                 md5?: mixed,
782
 *             },
783
 *             crypto_method?: scalar|null|Param, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants.
784
 *             extra?: array<string, mixed>,
785
 *             rate_limiter?: scalar|null|Param, // Rate limiter name to use for throttling requests. // Default: null
786
 *             caching?: bool|array{ // Caching configuration.
787
 *                 enabled?: bool|Param, // Default: false
788
 *                 cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client"
789
 *                 shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true
790
 *                 max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null
791
 *             },
792
 *             retry_failed?: bool|array{
793
 *                 enabled?: bool|Param, // Default: false
794
 *                 retry_strategy?: scalar|null|Param, // service id to override the retry strategy. // Default: null
795
 *                 http_codes?: array<string, array{ // Default: []
796
 *                     code?: int|Param,
797
 *                     methods?: list<string|Param>,
798
 *                 }>,
799
 *                 max_retries?: int|Param, // Default: 3
800
 *                 delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000
801
 *                 multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2
802
 *                 max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0
803
 *                 jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1
804
 *             },
805
 *         }>,
806
 *     },
807
 *     mailer?: bool|array{ // Mailer configuration
808
 *         enabled?: bool|Param, // Default: false
809
 *         message_bus?: scalar|null|Param, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null
810
 *         dsn?: scalar|null|Param, // Default: null
811
 *         transports?: array<string, scalar|null|Param>,
812
 *         envelope?: array{ // Mailer Envelope configuration
813
 *             sender?: scalar|null|Param,
814
 *             recipients?: list<scalar|null|Param>,
815
 *             allowed_recipients?: list<scalar|null|Param>,
816
 *         },
817
 *         headers?: array<string, string|array{ // Default: []
818
 *             value?: mixed,
819
 *         }>,
820
 *         dkim_signer?: bool|array{ // DKIM signer configuration
821
 *             enabled?: bool|Param, // Default: false
822
 *             key?: scalar|null|Param, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: ""
823
 *             domain?: scalar|null|Param, // Default: ""
824
 *             select?: scalar|null|Param, // Default: ""
825
 *             passphrase?: scalar|null|Param, // The private key passphrase // Default: ""
826
 *             options?: array<string, mixed>,
827
 *         },
828
 *         smime_signer?: bool|array{ // S/MIME signer configuration
829
 *             enabled?: bool|Param, // Default: false
830
 *             key?: scalar|null|Param, // Path to key (in PEM format) // Default: ""
831
 *             certificate?: scalar|null|Param, // Path to certificate (in PEM format without the `file://` prefix) // Default: ""
832
 *             passphrase?: scalar|null|Param, // The private key passphrase // Default: null
833
 *             extra_certificates?: scalar|null|Param, // Default: null
834
 *             sign_options?: int|Param, // Default: null
835
 *         },
836
 *         smime_encrypter?: bool|array{ // S/MIME encrypter configuration
837
 *             enabled?: bool|Param, // Default: false
838
 *             repository?: scalar|null|Param, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: ""
839
 *             cipher?: int|Param, // A set of algorithms used to encrypt the message // Default: null
840
 *         },
841
 *     },
842
 *     secrets?: bool|array{
843
 *         enabled?: bool|Param, // Default: true
844
 *         vault_directory?: scalar|null|Param, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%"
845
 *         local_dotenv_file?: scalar|null|Param, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local"
846
 *         decryption_env_var?: scalar|null|Param, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET"
847
 *     },
848
 *     notifier?: bool|array{ // Notifier configuration
849
 *         enabled?: bool|Param, // Default: false
850
 *         message_bus?: scalar|null|Param, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null
851
 *         chatter_transports?: array<string, scalar|null|Param>,
852
 *         texter_transports?: array<string, scalar|null|Param>,
853
 *         notification_on_failed_messages?: bool|Param, // Default: false
854
 *         channel_policy?: array<string, string|list<scalar|null|Param>>,
855
 *         admin_recipients?: list<array{ // Default: []
856
 *             email?: scalar|null|Param,
857
 *             phone?: scalar|null|Param, // Default: ""
858
 *         }>,
859
 *     },
860
 *     rate_limiter?: bool|array{ // Rate limiter configuration
861
 *         enabled?: bool|Param, // Default: false
862
 *         limiters?: array<string, array{ // Default: []
863
 *             lock_factory?: scalar|null|Param, // The service ID of the lock factory used by this limiter (or null to disable locking). // Default: "auto"
864
 *             cache_pool?: scalar|null|Param, // The cache pool to use for storing the current limiter state. // Default: "cache.rate_limiter"
865
 *             storage_service?: scalar|null|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool". // Default: null
866
 *             policy: "fixed_window"|"token_bucket"|"sliding_window"|"compound"|"no_limit"|Param, // The algorithm to be used by this limiter.
867
 *             limiters?: list<scalar|null|Param>,
868
 *             limit?: int|Param, // The maximum allowed hits in a fixed interval or burst.
869
 *             interval?: scalar|null|Param, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent).
870
 *             rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket".
871
 *                 interval?: scalar|null|Param, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent).
872
 *                 amount?: int|Param, // Amount of tokens to add each interval. // Default: 1
873
 *             },
874
 *         }>,
875
 *     },
876
 *     uid?: bool|array{ // Uid configuration
877
 *         enabled?: bool|Param, // Default: false
878
 *         default_uuid_version?: 7|6|4|1|Param, // Default: 7
879
 *         name_based_uuid_version?: 5|3|Param, // Default: 5
880
 *         name_based_uuid_namespace?: scalar|null|Param,
881
 *         time_based_uuid_version?: 7|6|1|Param, // Default: 7
882
 *         time_based_uuid_node?: scalar|null|Param,
883
 *     },
884
 *     html_sanitizer?: bool|array{ // HtmlSanitizer configuration
885
 *         enabled?: bool|Param, // Default: false
886
 *         sanitizers?: array<string, array{ // Default: []
887
 *             allow_safe_elements?: bool|Param, // Allows "safe" elements and attributes. // Default: false
888
 *             allow_static_elements?: bool|Param, // Allows all static elements and attributes from the W3C Sanitizer API standard. // Default: false
889
 *             allow_elements?: array<string, mixed>,
890
 *             block_elements?: list<string|Param>,
891
 *             drop_elements?: list<string|Param>,
892
 *             allow_attributes?: array<string, mixed>,
893
 *             drop_attributes?: array<string, mixed>,
894
 *             force_attributes?: array<string, array<string, string|Param>>,
895
 *             force_https_urls?: bool|Param, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false
896
 *             allowed_link_schemes?: list<string|Param>,
897
 *             allowed_link_hosts?: list<string|Param>|null,
898
 *             allow_relative_links?: bool|Param, // Allows relative URLs to be used in links href attributes. // Default: false
899
 *             allowed_media_schemes?: list<string|Param>,
900
 *             allowed_media_hosts?: list<string|Param>|null,
901
 *             allow_relative_medias?: bool|Param, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false
902
 *             with_attribute_sanitizers?: list<string|Param>,
903
 *             without_attribute_sanitizers?: list<string|Param>,
904
 *             max_input_length?: int|Param, // The maximum length allowed for the sanitized input. // Default: 0
905
 *         }>,
906
 *     },
907
 *     webhook?: bool|array{ // Webhook configuration
908
 *         enabled?: bool|Param, // Default: false
909
 *         message_bus?: scalar|null|Param, // The message bus to use. // Default: "messenger.default_bus"
910
 *         routing?: array<string, array{ // Default: []
911
 *             service: scalar|null|Param,
912
 *             secret?: scalar|null|Param, // Default: ""
913
 *         }>,
914
 *     },
915
 *     remote-event?: bool|array{ // RemoteEvent configuration
916
 *         enabled?: bool|Param, // Default: false
917
 *     },
918
 *     json_streamer?: bool|array{ // JSON streamer configuration
919
 *         enabled?: bool|Param, // Default: false
920
 *     },
921
 * }
922
 * @psalm-type NelmioSecurityConfig = array{
923
 *     signed_cookie?: array{
924
 *         names?: list<scalar|null|Param>,
925
 *         secret?: scalar|null|Param, // Default: "%kernel.secret%"
926
 *         hash_algo?: scalar|null|Param,
927
 *         legacy_hash_algo?: scalar|null|Param, // Fallback algorithm to allow for frictionless hash algorithm upgrades. Use with caution and as a temporary measure as it allows for downgrade attacks. // Default: null
928
 *         separator?: scalar|null|Param, // Default: "."
929
 *     },
930
 *     clickjacking?: array{
931
 *         hosts?: list<scalar|null|Param>,
932
 *         paths?: array<string, array{ // Default: {"^/.*":{"header":"DENY"}}
933
 *             header?: scalar|null|Param, // Default: "DENY"
934
 *         }>,
935
 *         content_types?: list<scalar|null|Param>,
936
 *     },
937
 *     external_redirects?: array{
938
 *         abort?: bool|Param, // Default: false
939
 *         override?: scalar|null|Param, // Default: null
940
 *         forward_as?: scalar|null|Param, // Default: null
941
 *         log?: bool|Param, // Default: false
942
 *         allow_list?: list<scalar|null|Param>,
943
 *     },
944
 *     flexible_ssl?: bool|array{
945
 *         enabled?: bool|Param, // Default: false
946
 *         cookie_name?: scalar|null|Param, // Default: "auth"
947
 *         unsecured_logout?: bool|Param, // Default: false
948
 *     },
949
 *     forced_ssl?: bool|array{
950
 *         enabled?: bool|Param, // Default: false
951
 *         hsts_max_age?: scalar|null|Param, // Default: null
952
 *         hsts_subdomains?: bool|Param, // Default: false
953
 *         hsts_preload?: bool|Param, // Default: false
954
 *         allow_list?: list<scalar|null|Param>,
955
 *         hosts?: list<scalar|null|Param>,
956
 *         redirect_status_code?: scalar|null|Param, // Default: 302
957
 *     },
958
 *     content_type?: array{
959
 *         nosniff?: bool|Param, // Default: false
960
 *     },
961
 *     xss_protection?: array{ // Deprecated: The "xss_protection" option is deprecated, use Content Security Policy without allowing "unsafe-inline" scripts instead.
962
 *         enabled?: bool|Param, // Default: false
963
 *         mode_block?: bool|Param, // Default: false
964
 *         report_uri?: scalar|null|Param, // Default: null
965
 *     },
966
 *     csp?: bool|array{
967
 *         enabled?: bool|Param, // Default: true
968
 *         request_matcher?: scalar|null|Param, // Default: null
969
 *         hosts?: list<scalar|null|Param>,
970
 *         content_types?: list<scalar|null|Param>,
971
 *         report_endpoint?: array{
972
 *             log_channel?: scalar|null|Param, // Default: null
973
 *             log_formatter?: scalar|null|Param, // Default: "nelmio_security.csp_report.log_formatter"
974
 *             log_level?: "alert"|"critical"|"debug"|"emergency"|"error"|"info"|"notice"|"warning"|Param, // Default: "notice"
975
 *             filters?: array{
976
 *                 domains?: bool|Param, // Default: true
977
 *                 schemes?: bool|Param, // Default: true
978
 *                 browser_bugs?: bool|Param, // Default: true
979
 *                 injected_scripts?: bool|Param, // Default: true
980
 *             },
981
 *             dismiss?: list<list<"default-src"|"base-uri"|"block-all-mixed-content"|"child-src"|"connect-src"|"font-src"|"form-action"|"frame-ancestors"|"frame-src"|"img-src"|"manifest-src"|"media-src"|"object-src"|"plugin-types"|"script-src"|"style-src"|"upgrade-insecure-requests"|"report-uri"|"worker-src"|"prefetch-src"|"report-to"|"*"|Param>>,
982
 *         },
983
 *         compat_headers?: bool|Param, // Default: true
984
 *         report_logger_service?: scalar|null|Param, // Default: "logger"
985
 *         hash?: array{
986
 *             algorithm?: "sha256"|"sha384"|"sha512"|Param, // The algorithm to use for hashes // Default: "sha256"
987
 *         },
988
 *         report?: array{
989
 *             level1_fallback?: bool|Param, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true
990
 *             browser_adaptive?: bool|array{ // Do not send directives that browser do not support
991
 *                 enabled?: bool|Param, // Default: false
992
 *                 parser?: scalar|null|Param, // Default: "nelmio_security.ua_parser.ua_php"
993
 *             },
994
 *             default-src?: list<scalar|null|Param>,
995
 *             base-uri?: list<scalar|null|Param>,
996
 *             block-all-mixed-content?: bool|Param, // Default: false
997
 *             child-src?: list<scalar|null|Param>,
998
 *             connect-src?: list<scalar|null|Param>,
999
 *             font-src?: list<scalar|null|Param>,
1000
 *             form-action?: list<scalar|null|Param>,
1001
 *             frame-ancestors?: list<scalar|null|Param>,
1002
 *             frame-src?: list<scalar|null|Param>,
1003
 *             img-src?: list<scalar|null|Param>,
1004
 *             manifest-src?: list<scalar|null|Param>,
1005
 *             media-src?: list<scalar|null|Param>,
1006
 *             object-src?: list<scalar|null|Param>,
1007
 *             plugin-types?: list<scalar|null|Param>,
1008
 *             script-src?: list<scalar|null|Param>,
1009
 *             style-src?: list<scalar|null|Param>,
1010
 *             upgrade-insecure-requests?: bool|Param, // Default: false
1011
 *             report-uri?: list<scalar|null|Param>,
1012
 *             worker-src?: list<scalar|null|Param>,
1013
 *             prefetch-src?: list<scalar|null|Param>,
1014
 *             report-to?: scalar|null|Param,
1015
 *         },
1016
 *         enforce?: array{
1017
 *             level1_fallback?: bool|Param, // Provides CSP Level 1 fallback when using hash or nonce (CSP level 2) by adding 'unsafe-inline' source. See https://www.w3.org/TR/CSP2/#directive-script-src and https://www.w3.org/TR/CSP2/#directive-style-src // Default: true
1018
 *             browser_adaptive?: bool|array{ // Do not send directives that browser do not support
1019
 *                 enabled?: bool|Param, // Default: false
1020
 *                 parser?: scalar|null|Param, // Default: "nelmio_security.ua_parser.ua_php"
1021
 *             },
1022
 *             default-src?: list<scalar|null|Param>,
1023
 *             base-uri?: list<scalar|null|Param>,
1024
 *             block-all-mixed-content?: bool|Param, // Default: false
1025
 *             child-src?: list<scalar|null|Param>,
1026
 *             connect-src?: list<scalar|null|Param>,
1027
 *             font-src?: list<scalar|null|Param>,
1028
 *             form-action?: list<scalar|null|Param>,
1029
 *             frame-ancestors?: list<scalar|null|Param>,
1030
 *             frame-src?: list<scalar|null|Param>,
1031
 *             img-src?: list<scalar|null|Param>,
1032
 *             manifest-src?: list<scalar|null|Param>,
1033
 *             media-src?: list<scalar|null|Param>,
1034
 *             object-src?: list<scalar|null|Param>,
1035
 *             plugin-types?: list<scalar|null|Param>,
1036
 *             script-src?: list<scalar|null|Param>,
1037
 *             style-src?: list<scalar|null|Param>,
1038
 *             upgrade-insecure-requests?: bool|Param, // Default: false
1039
 *             report-uri?: list<scalar|null|Param>,
1040
 *             worker-src?: list<scalar|null|Param>,
1041
 *             prefetch-src?: list<scalar|null|Param>,
1042
 *             report-to?: scalar|null|Param,
1043
 *         },
1044
 *     },
1045
 *     referrer_policy?: bool|array{
1046
 *         enabled?: bool|Param, // Default: false
1047
 *         policies?: list<scalar|null|Param>,
1048
 *     },
1049
 *     permissions_policy?: bool|array{
1050
 *         enabled?: bool|Param, // Default: false
1051
 *         policies?: array{
1052
 *             accelerometer?: mixed, // Default: null
1053
 *             ambient_light_sensor?: mixed, // Default: null
1054
 *             attribution_reporting?: mixed, // Default: null
1055
 *             autoplay?: mixed, // Default: null
1056
 *             bluetooth?: mixed, // Default: null
1057
 *             browsing_topics?: mixed, // Default: null
1058
 *             camera?: mixed, // Default: null
1059
 *             captured_surface_control?: mixed, // Default: null
1060
 *             compute_pressure?: mixed, // Default: null
1061
 *             cross_origin_isolated?: mixed, // Default: null
1062
 *             deferred_fetch?: mixed, // Default: null
1063
 *             deferred_fetch_minimal?: mixed, // Default: null
1064
 *             display_capture?: mixed, // Default: null
1065
 *             encrypted_media?: mixed, // Default: null
1066
 *             fullscreen?: mixed, // Default: null
1067
 *             gamepad?: mixed, // Default: null
1068
 *             geolocation?: mixed, // Default: null
1069
 *             gyroscope?: mixed, // Default: null
1070
 *             hid?: mixed, // Default: null
1071
 *             identity_credentials_get?: mixed, // Default: null
1072
 *             idle_detection?: mixed, // Default: null
1073
 *             interest_cohort?: mixed, // Default: null
1074
 *             language_detector?: mixed, // Default: null
1075
 *             local_fonts?: mixed, // Default: null
1076
 *             magnetometer?: mixed, // Default: null
1077
 *             microphone?: mixed, // Default: null
1078
 *             midi?: mixed, // Default: null
1079
 *             otp_credentials?: mixed, // Default: null
1080
 *             payment?: mixed, // Default: null
1081
 *             picture_in_picture?: mixed, // Default: null
1082
 *             publickey_credentials_create?: mixed, // Default: null
1083
 *             publickey_credentials_get?: mixed, // Default: null
1084
 *             screen_wake_lock?: mixed, // Default: null
1085
 *             serial?: mixed, // Default: null
1086
 *             speaker_selection?: mixed, // Default: null
1087
 *             storage_access?: mixed, // Default: null
1088
 *             summarizer?: mixed, // Default: null
1089
 *             translator?: mixed, // Default: null
1090
 *             usb?: mixed, // Default: null
1091
 *             web_share?: mixed, // Default: null
1092
 *             window_management?: mixed, // Default: null
1093
 *             xr_spatial_tracking?: mixed, // Default: null
1094
 *         },
1095
 *     },
1096
 * }
1097
 * @psalm-type SurfnetStepupGatewayApiConfig = array{
1098
 *     http_basic_realm?: scalar|null|Param, // Default: "Secure Gateway API"
1099
 * }
1100
 * @psalm-type SurfnetYubikeyApiClientConfig = array{
1101
 *     credentials?: array{ // YubiKey API Credentials
1102
 *         client_id: scalar|null|Param, // Client ID for the YubiKey API
1103
 *         client_secret: scalar|null|Param, // Secret for the YubiKey API
1104
 *     },
1105
 * }
1106
 * @psalm-type SurfnetStepupConfig = array{
1107
 *     logging: array{
1108
 *         application_name: scalar|null|Param, // This is the application name that is included with each log message
1109
 *     },
1110
 *     loa_definition?: bool|array{
1111
 *         enabled?: bool|Param, // Default: true
1112
 *         loa1?: scalar|null|Param,
1113
 *         loa2?: scalar|null|Param,
1114
 *         loa3?: scalar|null|Param,
1115
 *         loa_self_asserted?: scalar|null|Param,
1116
 *     },
1117
 *     attach_request_id_injector_to?: list<scalar|null|Param>,
1118
 *     gateway_api?: bool|array{ // Gateway API configuration
1119
 *         enabled?: bool|Param, // Default: false
1120
 *         credentials?: array{ // Basic authentication credentials
1121
 *             username: scalar|null|Param, // Username for the Gateway API
1122
 *             password: scalar|null|Param, // Password for the Gateway API
1123
 *         },
1124
 *         url: scalar|null|Param, // The URL to the Gateway application (e.g. https://gateway.tld)
1125
 *     },
1126
 *     sms: bool|array{ // SMS configuration
1127
 *         enabled?: bool|Param, // Default: true
1128
 *         service?: scalar|null|Param, // The ID of the SMS service used for sending SMS messages. Must implement "Surfnet\StepupBundle\Service\SmsService". // Default: "surfnet_stepup.service.gateway_api_sms"
1129
 *         originator?: scalar|null|Param, // Originator (sender) for SMS messages
1130
 *         otp_expiry_interval?: int|Param, // After how many seconds an SMS challenge OTP expires
1131
 *         maximum_otp_requests?: int|Param, // How many challenges a user may request during a session
1132
 *     },
1133
 *     locale_cookie?: bool|array{ // Cookie settings for locale cookie
1134
 *         enabled?: bool|Param, // Default: true
1135
 *         name?: scalar|null|Param, // Name for the cookie // Default: "stepup_locale"
1136
 *         domain?: scalar|null|Param, // Domain the cookie is scoped to // Default: "example.org"
1137
 *         expire?: int|Param, // Defines a specific number of seconds for when the browser should delete the cookie. // Default: 0
1138
 *         path?: scalar|null|Param, // Path the cookie is scoped to // Default: "/"
1139
 *         secure?: bool|Param, // Only transmit cookie over secure connections? // Default: true
1140
 *         http_only?: bool|Param, // Directs browsers not to expose cookies through channels other than HTTP (and HTTPS) requests // Default: true
1141
 *     },
1142
 * }
1143
 * @psalm-type SurfnetStepupGatewayGatewayConfig = array{
1144
 *     intrinsic_loa: scalar|null|Param,
1145
 *     sso_on_second_factor: array{
1146
 *         cookie_type: "session"|"persistent"|Param,
1147
 *         cookie_name: scalar|null|Param,
1148
 *         cookie_lifetime: int|Param,
1149
 *         encryption_key: scalar|null|Param,
1150
 *     },
1151
 *     enabled_second_factors: list<scalar|null|Param>,
1152
 *     enabled_generic_second_factors: list<array{ // Default: []
1153
 *         loa: scalar|null|Param, // The lao level of the Gssf
1154
 *     }>,
1155
 * }
1156
 * @psalm-type SurfnetStepupGatewaySamlStepupProviderConfig = array{
1157
 *     allowed_sps: list<scalar|null|Param>,
1158
 *     routes?: array{
1159
 *         sso: scalar|null|Param,
1160
 *         consume_assertion: scalar|null|Param,
1161
 *         metadata: scalar|null|Param,
1162
 *     },
1163
 *     providers: array<string, bool|array{ // Default: []
1164
 *         enabled?: bool|Param, // Default: true
1165
 *         hosted?: array{
1166
 *             service_provider?: array{
1167
 *                 public_key: scalar|null|Param, // The absolute path to the public key used to sign AuthnRequests
1168
 *                 private_key: scalar|null|Param, // The absolute path to the private key used to sign AuthnRequests
1169
 *             },
1170
 *             identity_provider?: array{
1171
 *                 service_provider_repository: scalar|null|Param, // Name of the service that is the Entity Repository. Must implement the Surfnet\SamlBundle\Entity\ServiceProviderRepository interface.
1172
 *                 public_key: scalar|null|Param, // The absolute path to the public key used to sign Responses to AuthRequests with
1173
 *                 private_key: scalar|null|Param, // The absolute path to the private key used to sign Responses to AuthRequests with
1174
 *             },
1175
 *             metadata?: array{
1176
 *                 public_key: scalar|null|Param, // The absolute path to the public key used to sign the metadata
1177
 *                 private_key: scalar|null|Param, // The absolute path to the private key used to sign the metadata
1178
 *             },
1179
 *         },
1180
 *         remote?: array{
1181
 *             entity_id: scalar|null|Param, // The EntityID of the remote identity provider
1182
 *             sso_url: scalar|null|Param, // The name of the route to generate the SSO URL
1183
 *             certificate: scalar|null|Param, // The contents of the certificate used to sign the AuthnResponse with, if different from the public key configured below
1184
 *         },
1185
 *         view_config?: array{
1186
 *             logo: scalar|null|Param, // The absolute path to the logo of the gssp
1187
 *             title?: array{
1188
 *                 en_GB: scalar|null|Param, // English title of the gssp
1189
 *                 nl_NL: scalar|null|Param, // Dutch title of the gssp
1190
 *             },
1191
 *         },
1192
 *     }>,
1193
 * }
1194
 * @psalm-type SurfnetStepupGatewaySecondFactorOnlyConfig = array{
1195
 *     loa_aliases: list<array{ // Default: []
1196
 *         loa: scalar|null|Param,
1197
 *         alias: scalar|null|Param,
1198
 *     }>,
1199
 * }
1200
 * @psalm-type OpenConextMonitorConfig = array<mixed>
1201
 * @psalm-type SurfnetSamlConfig = array{
1202
 *     enable_authentication?: bool|Param, // Default: false
1203
 *     hosted?: array{
1204
 *         attribute_dictionary?: bool|array{
1205
 *             enabled?: bool|Param, // Default: false
1206
 *             ignore_unknown_attributes?: bool|Param, // If the IDP provides atttributes which are not in the dictionary the SAML assertionwill fail with an UnknownUrnException. Unless this value is true. // Default: false
1207
 *         },
1208
 *         service_provider?: bool|array{
1209
 *             enabled?: bool|Param, // Default: false
1210
 *             assertion_consumer_route?: scalar|null|Param, // The name of the route to generate the assertion consumer URL // Default: null
1211
 *             public_key?: scalar|null|Param, // The absolute path to the public key used to sign AuthnRequests // Default: null
1212
 *             private_key?: scalar|null|Param, // The absolute path to the private key used to sign AuthnRequests // Default: null
1213
 *         },
1214
 *         identity_provider?: bool|array{
1215
 *             enabled?: bool|Param, // Default: false
1216
 *             sso_route?: scalar|null|Param, // The name of the route to generate the SSO URL // Default: null
1217
 *             service_provider_repository?: scalar|null|Param, // Name of the service that is the Entity Repository. Must implement the Surfnet\SamlBundle\Entity\ServiceProviderRepository interface. // Default: null
1218
 *             certificate?: scalar|null|Param, // The contents of the certificate used to sign the AuthnResponse with, if different from the public key configured below // Default: null
1219
 *             public_key?: scalar|null|Param, // The absolute path to the public key used to sign Responses to AuthRequests with // Default: null
1220
 *             private_key?: scalar|null|Param, // The absolute path to the private key used to sign Responses to AuthRequests with // Default: null
1221
 *         },
1222
 *         metadata?: array{
1223
 *             entity_id_route?: scalar|null|Param, // The name of the route used to generate the entity id // Default: null
1224
 *             public_key?: scalar|null|Param, // The absolute path to the public key used to sign the metadata // Default: null
1225
 *             private_key?: scalar|null|Param, // The absolute path to the private key used to sign the metadata // Default: null
1226
 *         },
1227
 *     },
1228
 *     remote?: array{
1229
 *         identity_providers?: list<array{ // Default: []
1230
 *             entity_id: scalar|null|Param, // The EntityID of the remote identity provider
1231
 *             sso_url: scalar|null|Param, // The name of the route to generate the SSO URL
1232
 *             certificate?: scalar|null|Param, // The contents of the certificate used to sign the AuthnResponse with
1233
 *             certificate_file?: scalar|null|Param, // A file containing the certificate used to sign the AuthnResponse with
1234
 *         }>,
1235
 *         service_providers?: list<array{ // Default: []
1236
 *             entity_id: scalar|null|Param, // The EntityID of the remote service provider
1237
 *             certificate?: scalar|null|Param, // The contents of the certificate used to sign and verify the AuthnResponse with
1238
 *             certificate_file?: scalar|null|Param, // A file containing the certificate used to sign and verify the AuthnResponse with
1239
 *             assertion_consumer_service_url: scalar|null|Param,
1240
 *         }>,
1241
 *         identity_provider?: bool|array{
1242
 *             enabled?: bool|Param, // Default: false
1243
 *             entity_id: scalar|null|Param, // The EntityID of the remote identity provider
1244
 *             sso_url: scalar|null|Param, // The name of the route to generate the SSO URL
1245
 *             certificate?: scalar|null|Param, // The contents of the certificate used to sign the AuthnResponse with
1246
 *             certificate_file?: scalar|null|Param, // A file containing the certificate used to sign the AuthnResponse with
1247
 *         },
1248
 *     },
1249
 * }
1250
 * @psalm-type MonologConfig = array{
1251
 *     use_microseconds?: scalar|null|Param, // Default: true
1252
 *     channels?: list<scalar|null|Param>,
1253
 *     handlers?: array<string, array{ // Default: []
1254
 *         type: scalar|null|Param,
1255
 *         id?: scalar|null|Param,
1256
 *         enabled?: bool|Param, // Default: true
1257
 *         priority?: scalar|null|Param, // Default: 0
1258
 *         level?: scalar|null|Param, // Default: "DEBUG"
1259
 *         bubble?: bool|Param, // Default: true
1260
 *         interactive_only?: bool|Param, // Default: false
1261
 *         app_name?: scalar|null|Param, // Default: null
1262
 *         include_stacktraces?: bool|Param, // Default: false
1263
 *         process_psr_3_messages?: array{
1264
 *             enabled?: bool|null|Param, // Default: null
1265
 *             date_format?: scalar|null|Param,
1266
 *             remove_used_context_fields?: bool|Param,
1267
 *         },
1268
 *         path?: scalar|null|Param, // Default: "%kernel.logs_dir%/%kernel.environment%.log"
1269
 *         file_permission?: scalar|null|Param, // Default: null
1270
 *         use_locking?: bool|Param, // Default: false
1271
 *         filename_format?: scalar|null|Param, // Default: "{filename}-{date}"
1272
 *         date_format?: scalar|null|Param, // Default: "Y-m-d"
1273
 *         ident?: scalar|null|Param, // Default: false
1274
 *         logopts?: scalar|null|Param, // Default: 1
1275
 *         facility?: scalar|null|Param, // Default: "user"
1276
 *         max_files?: scalar|null|Param, // Default: 0
1277
 *         action_level?: scalar|null|Param, // Default: "WARNING"
1278
 *         activation_strategy?: scalar|null|Param, // Default: null
1279
 *         stop_buffering?: bool|Param, // Default: true
1280
 *         passthru_level?: scalar|null|Param, // Default: null
1281
 *         excluded_http_codes?: list<array{ // Default: []
1282
 *             code?: scalar|null|Param,
1283
 *             urls?: list<scalar|null|Param>,
1284
 *         }>,
1285
 *         accepted_levels?: list<scalar|null|Param>,
1286
 *         min_level?: scalar|null|Param, // Default: "DEBUG"
1287
 *         max_level?: scalar|null|Param, // Default: "EMERGENCY"
1288
 *         buffer_size?: scalar|null|Param, // Default: 0
1289
 *         flush_on_overflow?: bool|Param, // Default: false
1290
 *         handler?: scalar|null|Param,
1291
 *         url?: scalar|null|Param,
1292
 *         exchange?: scalar|null|Param,
1293
 *         exchange_name?: scalar|null|Param, // Default: "log"
1294
 *         channel?: scalar|null|Param, // Default: null
1295
 *         bot_name?: scalar|null|Param, // Default: "Monolog"
1296
 *         use_attachment?: scalar|null|Param, // Default: true
1297
 *         use_short_attachment?: scalar|null|Param, // Default: false
1298
 *         include_extra?: scalar|null|Param, // Default: false
1299
 *         icon_emoji?: scalar|null|Param, // Default: null
1300
 *         webhook_url?: scalar|null|Param,
1301
 *         exclude_fields?: list<scalar|null|Param>,
1302
 *         token?: scalar|null|Param,
1303
 *         region?: scalar|null|Param,
1304
 *         source?: scalar|null|Param,
1305
 *         use_ssl?: bool|Param, // Default: true
1306
 *         user?: mixed,
1307
 *         title?: scalar|null|Param, // Default: null
1308
 *         host?: scalar|null|Param, // Default: null
1309
 *         port?: scalar|null|Param, // Default: 514
1310
 *         config?: list<scalar|null|Param>,
1311
 *         members?: list<scalar|null|Param>,
1312
 *         connection_string?: scalar|null|Param,
1313
 *         timeout?: scalar|null|Param,
1314
 *         time?: scalar|null|Param, // Default: 60
1315
 *         deduplication_level?: scalar|null|Param, // Default: 400
1316
 *         store?: scalar|null|Param, // Default: null
1317
 *         connection_timeout?: scalar|null|Param,
1318
 *         persistent?: bool|Param,
1319
 *         message_type?: scalar|null|Param, // Default: 0
1320
 *         parse_mode?: scalar|null|Param, // Default: null
1321
 *         disable_webpage_preview?: bool|null|Param, // Default: null
1322
 *         disable_notification?: bool|null|Param, // Default: null
1323
 *         split_long_messages?: bool|Param, // Default: false
1324
 *         delay_between_messages?: bool|Param, // Default: false
1325
 *         topic?: int|Param, // Default: null
1326
 *         factor?: int|Param, // Default: 1
1327
 *         tags?: list<scalar|null|Param>,
1328
 *         console_formatter_options?: mixed, // Default: []
1329
 *         formatter?: scalar|null|Param,
1330
 *         nested?: bool|Param, // Default: false
1331
 *         publisher?: string|array{
1332
 *             id?: scalar|null|Param,
1333
 *             hostname?: scalar|null|Param,
1334
 *             port?: scalar|null|Param, // Default: 12201
1335
 *             chunk_size?: scalar|null|Param, // Default: 1420
1336
 *             encoder?: "json"|"compressed_json"|Param,
1337
 *         },
1338
 *         mongodb?: string|array{
1339
 *             id?: scalar|null|Param, // ID of a MongoDB\Client service
1340
 *             uri?: scalar|null|Param,
1341
 *             username?: scalar|null|Param,
1342
 *             password?: scalar|null|Param,
1343
 *             database?: scalar|null|Param, // Default: "monolog"
1344
 *             collection?: scalar|null|Param, // Default: "logs"
1345
 *         },
1346
 *         elasticsearch?: string|array{
1347
 *             id?: scalar|null|Param,
1348
 *             hosts?: list<scalar|null|Param>,
1349
 *             host?: scalar|null|Param,
1350
 *             port?: scalar|null|Param, // Default: 9200
1351
 *             transport?: scalar|null|Param, // Default: "Http"
1352
 *             user?: scalar|null|Param, // Default: null
1353
 *             password?: scalar|null|Param, // Default: null
1354
 *         },
1355
 *         index?: scalar|null|Param, // Default: "monolog"
1356
 *         document_type?: scalar|null|Param, // Default: "logs"
1357
 *         ignore_error?: scalar|null|Param, // Default: false
1358
 *         redis?: string|array{
1359
 *             id?: scalar|null|Param,
1360
 *             host?: scalar|null|Param,
1361
 *             password?: scalar|null|Param, // Default: null
1362
 *             port?: scalar|null|Param, // Default: 6379
1363
 *             database?: scalar|null|Param, // Default: 0
1364
 *             key_name?: scalar|null|Param, // Default: "monolog_redis"
1365
 *         },
1366
 *         predis?: string|array{
1367
 *             id?: scalar|null|Param,
1368
 *             host?: scalar|null|Param,
1369
 *         },
1370
 *         from_email?: scalar|null|Param,
1371
 *         to_email?: list<scalar|null|Param>,
1372
 *         subject?: scalar|null|Param,
1373
 *         content_type?: scalar|null|Param, // Default: null
1374
 *         headers?: list<scalar|null|Param>,
1375
 *         mailer?: scalar|null|Param, // Default: null
1376
 *         email_prototype?: string|array{
1377
 *             id: scalar|null|Param,
1378
 *             method?: scalar|null|Param, // Default: null
1379
 *         },
1380
 *         verbosity_levels?: array{
1381
 *             VERBOSITY_QUIET?: scalar|null|Param, // Default: "ERROR"
1382
 *             VERBOSITY_NORMAL?: scalar|null|Param, // Default: "WARNING"
1383
 *             VERBOSITY_VERBOSE?: scalar|null|Param, // Default: "NOTICE"
1384
 *             VERBOSITY_VERY_VERBOSE?: scalar|null|Param, // Default: "INFO"
1385
 *             VERBOSITY_DEBUG?: scalar|null|Param, // Default: "DEBUG"
1386
 *         },
1387
 *         channels?: string|array{
1388
 *             type?: scalar|null|Param,
1389
 *             elements?: list<scalar|null|Param>,
1390
 *         },
1391
 *     }>,
1392
 * }
1393
 * @psalm-type SecurityConfig = array{
1394
 *     access_denied_url?: scalar|null|Param, // Default: null
1395
 *     session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate"
1396
 *     hide_user_not_found?: bool|Param, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead.
1397
 *     expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All|Param, // Default: "none"
1398
 *     erase_credentials?: bool|Param, // Default: true
1399
 *     access_decision_manager?: array{
1400
 *         strategy?: "affirmative"|"consensus"|"unanimous"|"priority"|Param,
1401
 *         service?: scalar|null|Param,
1402
 *         strategy_service?: scalar|null|Param,
1403
 *         allow_if_all_abstain?: bool|Param, // Default: false
1404
 *         allow_if_equal_granted_denied?: bool|Param, // Default: true
1405
 *     },
1406
 *     password_hashers?: array<string, string|array{ // Default: []
1407
 *         algorithm?: scalar|null|Param,
1408
 *         migrate_from?: list<scalar|null|Param>,
1409
 *         hash_algorithm?: scalar|null|Param, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512"
1410
 *         key_length?: scalar|null|Param, // Default: 40
1411
 *         ignore_case?: bool|Param, // Default: false
1412
 *         encode_as_base64?: bool|Param, // Default: true
1413
 *         iterations?: scalar|null|Param, // Default: 5000
1414
 *         cost?: int|Param, // Default: null
1415
 *         memory_cost?: scalar|null|Param, // Default: null
1416
 *         time_cost?: scalar|null|Param, // Default: null
1417
 *         id?: scalar|null|Param,
1418
 *     }>,
1419
 *     providers?: array<string, array{ // Default: []
1420
 *         id?: scalar|null|Param,
1421
 *         chain?: array{
1422
 *             providers?: list<scalar|null|Param>,
1423
 *         },
1424
 *         entity?: array{
1425
 *             class: scalar|null|Param, // The full entity class name of your user class.
1426
 *             property?: scalar|null|Param, // Default: null
1427
 *             manager_name?: scalar|null|Param, // Default: null
1428
 *         },
1429
 *         memory?: array{
1430
 *             users?: array<string, array{ // Default: []
1431
 *                 password?: scalar|null|Param, // Default: null
1432
 *                 roles?: list<scalar|null|Param>,
1433
 *             }>,
1434
 *         },
1435
 *         ldap?: array{
1436
 *             service: scalar|null|Param,
1437
 *             base_dn: scalar|null|Param,
1438
 *             search_dn?: scalar|null|Param, // Default: null
1439
 *             search_password?: scalar|null|Param, // Default: null
1440
 *             extra_fields?: list<scalar|null|Param>,
1441
 *             default_roles?: list<scalar|null|Param>,
1442
 *             role_fetcher?: scalar|null|Param, // Default: null
1443
 *             uid_key?: scalar|null|Param, // Default: "sAMAccountName"
1444
 *             filter?: scalar|null|Param, // Default: "({uid_key}={user_identifier})"
1445
 *             password_attribute?: scalar|null|Param, // Default: null
1446
 *         },
1447
 *     }>,
1448
 *     firewalls: array<string, array{ // Default: []
1449
 *         pattern?: scalar|null|Param,
1450
 *         host?: scalar|null|Param,
1451
 *         methods?: list<scalar|null|Param>,
1452
 *         security?: bool|Param, // Default: true
1453
 *         user_checker?: scalar|null|Param, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker"
1454
 *         request_matcher?: scalar|null|Param,
1455
 *         access_denied_url?: scalar|null|Param,
1456
 *         access_denied_handler?: scalar|null|Param,
1457
 *         entry_point?: scalar|null|Param, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface".
1458
 *         provider?: scalar|null|Param,
1459
 *         stateless?: bool|Param, // Default: false
1460
 *         lazy?: bool|Param, // Default: false
1461
 *         context?: scalar|null|Param,
1462
 *         logout?: array{
1463
 *             enable_csrf?: bool|null|Param, // Default: null
1464
 *             csrf_token_id?: scalar|null|Param, // Default: "logout"
1465
 *             csrf_parameter?: scalar|null|Param, // Default: "_csrf_token"
1466
 *             csrf_token_manager?: scalar|null|Param,
1467
 *             path?: scalar|null|Param, // Default: "/logout"
1468
 *             target?: scalar|null|Param, // Default: "/"
1469
 *             invalidate_session?: bool|Param, // Default: true
1470
 *             clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>,
1471
 *             delete_cookies?: array<string, array{ // Default: []
1472
 *                 path?: scalar|null|Param, // Default: null
1473
 *                 domain?: scalar|null|Param, // Default: null
1474
 *                 secure?: scalar|null|Param, // Default: false
1475
 *                 samesite?: scalar|null|Param, // Default: null
1476
 *                 partitioned?: scalar|null|Param, // Default: false
1477
 *             }>,
1478
 *         },
1479
 *         switch_user?: array{
1480
 *             provider?: scalar|null|Param,
1481
 *             parameter?: scalar|null|Param, // Default: "_switch_user"
1482
 *             role?: scalar|null|Param, // Default: "ROLE_ALLOWED_TO_SWITCH"
1483
 *             target_route?: scalar|null|Param, // Default: null
1484
 *         },
1485
 *         required_badges?: list<scalar|null|Param>,
1486
 *         custom_authenticators?: list<scalar|null|Param>,
1487
 *         login_throttling?: array{
1488
 *             limiter?: scalar|null|Param, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface".
1489
 *             max_attempts?: int|Param, // Default: 5
1490
 *             interval?: scalar|null|Param, // Default: "1 minute"
1491
 *             lock_factory?: scalar|null|Param, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null
1492
 *             cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter"
1493
 *             storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null
1494
 *         },
1495
 *         x509?: array{
1496
 *             provider?: scalar|null|Param,
1497
 *             user?: scalar|null|Param, // Default: "SSL_CLIENT_S_DN_Email"
1498
 *             credentials?: scalar|null|Param, // Default: "SSL_CLIENT_S_DN"
1499
 *             user_identifier?: scalar|null|Param, // Default: "emailAddress"
1500
 *         },
1501
 *         remote_user?: array{
1502
 *             provider?: scalar|null|Param,
1503
 *             user?: scalar|null|Param, // Default: "REMOTE_USER"
1504
 *         },
1505
 *         login_link?: array{
1506
 *             check_route: scalar|null|Param, // Route that will validate the login link - e.g. "app_login_link_verify".
1507
 *             check_post_only?: scalar|null|Param, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false
1508
 *             signature_properties: list<scalar|null|Param>,
1509
 *             lifetime?: int|Param, // The lifetime of the login link in seconds. // Default: 600
1510
 *             max_uses?: int|Param, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null
1511
 *             used_link_cache?: scalar|null|Param, // Cache service id used to expired links of max_uses is set.
1512
 *             success_handler?: scalar|null|Param, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface.
1513
 *             failure_handler?: scalar|null|Param, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface.
1514
 *             provider?: scalar|null|Param, // The user provider to load users from.
1515
 *             secret?: scalar|null|Param, // Default: "%kernel.secret%"
1516
 *             always_use_default_target_path?: bool|Param, // Default: false
1517
 *             default_target_path?: scalar|null|Param, // Default: "/"
1518
 *             login_path?: scalar|null|Param, // Default: "/login"
1519
 *             target_path_parameter?: scalar|null|Param, // Default: "_target_path"
1520
 *             use_referer?: bool|Param, // Default: false
1521
 *             failure_path?: scalar|null|Param, // Default: null
1522
 *             failure_forward?: bool|Param, // Default: false
1523
 *             failure_path_parameter?: scalar|null|Param, // Default: "_failure_path"
1524
 *         },
1525
 *         form_login?: array{
1526
 *             provider?: scalar|null|Param,
1527
 *             remember_me?: bool|Param, // Default: true
1528
 *             success_handler?: scalar|null|Param,
1529
 *             failure_handler?: scalar|null|Param,
1530
 *             check_path?: scalar|null|Param, // Default: "/login_check"
1531
 *             use_forward?: bool|Param, // Default: false
1532
 *             login_path?: scalar|null|Param, // Default: "/login"
1533
 *             username_parameter?: scalar|null|Param, // Default: "_username"
1534
 *             password_parameter?: scalar|null|Param, // Default: "_password"
1535
 *             csrf_parameter?: scalar|null|Param, // Default: "_csrf_token"
1536
 *             csrf_token_id?: scalar|null|Param, // Default: "authenticate"
1537
 *             enable_csrf?: bool|Param, // Default: false
1538
 *             post_only?: bool|Param, // Default: true
1539
 *             form_only?: bool|Param, // Default: false
1540
 *             always_use_default_target_path?: bool|Param, // Default: false
1541
 *             default_target_path?: scalar|null|Param, // Default: "/"
1542
 *             target_path_parameter?: scalar|null|Param, // Default: "_target_path"
1543
 *             use_referer?: bool|Param, // Default: false
1544
 *             failure_path?: scalar|null|Param, // Default: null
1545
 *             failure_forward?: bool|Param, // Default: false
1546
 *             failure_path_parameter?: scalar|null|Param, // Default: "_failure_path"
1547
 *         },
1548
 *         form_login_ldap?: array{
1549
 *             provider?: scalar|null|Param,
1550
 *             remember_me?: bool|Param, // Default: true
1551
 *             success_handler?: scalar|null|Param,
1552
 *             failure_handler?: scalar|null|Param,
1553
 *             check_path?: scalar|null|Param, // Default: "/login_check"
1554
 *             use_forward?: bool|Param, // Default: false
1555
 *             login_path?: scalar|null|Param, // Default: "/login"
1556
 *             username_parameter?: scalar|null|Param, // Default: "_username"
1557
 *             password_parameter?: scalar|null|Param, // Default: "_password"
1558
 *             csrf_parameter?: scalar|null|Param, // Default: "_csrf_token"
1559
 *             csrf_token_id?: scalar|null|Param, // Default: "authenticate"
1560
 *             enable_csrf?: bool|Param, // Default: false
1561
 *             post_only?: bool|Param, // Default: true
1562
 *             form_only?: bool|Param, // Default: false
1563
 *             always_use_default_target_path?: bool|Param, // Default: false
1564
 *             default_target_path?: scalar|null|Param, // Default: "/"
1565
 *             target_path_parameter?: scalar|null|Param, // Default: "_target_path"
1566
 *             use_referer?: bool|Param, // Default: false
1567
 *             failure_path?: scalar|null|Param, // Default: null
1568
 *             failure_forward?: bool|Param, // Default: false
1569
 *             failure_path_parameter?: scalar|null|Param, // Default: "_failure_path"
1570
 *             service?: scalar|null|Param, // Default: "ldap"
1571
 *             dn_string?: scalar|null|Param, // Default: "{user_identifier}"
1572
 *             query_string?: scalar|null|Param,
1573
 *             search_dn?: scalar|null|Param, // Default: ""
1574
 *             search_password?: scalar|null|Param, // Default: ""
1575
 *         },
1576
 *         json_login?: array{
1577
 *             provider?: scalar|null|Param,
1578
 *             remember_me?: bool|Param, // Default: true
1579
 *             success_handler?: scalar|null|Param,
1580
 *             failure_handler?: scalar|null|Param,
1581
 *             check_path?: scalar|null|Param, // Default: "/login_check"
1582
 *             use_forward?: bool|Param, // Default: false
1583
 *             login_path?: scalar|null|Param, // Default: "/login"
1584
 *             username_path?: scalar|null|Param, // Default: "username"
1585
 *             password_path?: scalar|null|Param, // Default: "password"
1586
 *         },
1587
 *         json_login_ldap?: array{
1588
 *             provider?: scalar|null|Param,
1589
 *             remember_me?: bool|Param, // Default: true
1590
 *             success_handler?: scalar|null|Param,
1591
 *             failure_handler?: scalar|null|Param,
1592
 *             check_path?: scalar|null|Param, // Default: "/login_check"
1593
 *             use_forward?: bool|Param, // Default: false
1594
 *             login_path?: scalar|null|Param, // Default: "/login"
1595
 *             username_path?: scalar|null|Param, // Default: "username"
1596
 *             password_path?: scalar|null|Param, // Default: "password"
1597
 *             service?: scalar|null|Param, // Default: "ldap"
1598
 *             dn_string?: scalar|null|Param, // Default: "{user_identifier}"
1599
 *             query_string?: scalar|null|Param,
1600
 *             search_dn?: scalar|null|Param, // Default: ""
1601
 *             search_password?: scalar|null|Param, // Default: ""
1602
 *         },
1603
 *         access_token?: array{
1604
 *             provider?: scalar|null|Param,
1605
 *             remember_me?: bool|Param, // Default: true
1606
 *             success_handler?: scalar|null|Param,
1607
 *             failure_handler?: scalar|null|Param,
1608
 *             realm?: scalar|null|Param, // Default: null
1609
 *             token_extractors?: list<scalar|null|Param>,
1610
 *             token_handler: string|array{
1611
 *                 id?: scalar|null|Param,
1612
 *                 oidc_user_info?: string|array{
1613
 *                     base_uri: scalar|null|Param, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured).
1614
 *                     discovery?: array{ // Enable the OIDC discovery.
1615
 *                         cache?: array{
1616
 *                             id: scalar|null|Param, // Cache service id to use to cache the OIDC discovery configuration.
1617
 *                         },
1618
 *                     },
1619
 *                     claim?: scalar|null|Param, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub"
1620
 *                     client?: scalar|null|Param, // HttpClient service id to use to call the OIDC server.
1621
 *                 },
1622
 *                 oidc?: array{
1623
 *                     discovery?: array{ // Enable the OIDC discovery.
1624
 *                         base_uri: list<scalar|null|Param>,
1625
 *                         cache?: array{
1626
 *                             id: scalar|null|Param, // Cache service id to use to cache the OIDC discovery configuration.
1627
 *                         },
1628
 *                     },
1629
 *                     claim?: scalar|null|Param, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub"
1630
 *                     audience: scalar|null|Param, // Audience set in the token, for validation purpose.
1631
 *                     issuers: list<scalar|null|Param>,
1632
 *                     algorithm?: array<mixed>,
1633
 *                     algorithms: list<scalar|null|Param>,
1634
 *                     key?: scalar|null|Param, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key).
1635
 *                     keyset?: scalar|null|Param, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys).
1636
 *                     encryption?: bool|array{
1637
 *                         enabled?: bool|Param, // Default: false
1638
 *                         enforce?: bool|Param, // When enabled, the token shall be encrypted. // Default: false
1639
 *                         algorithms: list<scalar|null|Param>,
1640
 *                         keyset: scalar|null|Param, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys).
1641
 *                     },
1642
 *                 },
1643
 *                 cas?: array{
1644
 *                     validation_url: scalar|null|Param, // CAS server validation URL
1645
 *                     prefix?: scalar|null|Param, // CAS prefix // Default: "cas"
1646
 *                     http_client?: scalar|null|Param, // HTTP Client service // Default: null
1647
 *                 },
1648
 *                 oauth2?: scalar|null|Param,
1649
 *             },
1650
 *         },
1651
 *         http_basic?: array{
1652
 *             provider?: scalar|null|Param,
1653
 *             realm?: scalar|null|Param, // Default: "Secured Area"
1654
 *         },
1655
 *         http_basic_ldap?: array{
1656
 *             provider?: scalar|null|Param,
1657
 *             realm?: scalar|null|Param, // Default: "Secured Area"
1658
 *             service?: scalar|null|Param, // Default: "ldap"
1659
 *             dn_string?: scalar|null|Param, // Default: "{user_identifier}"
1660
 *             query_string?: scalar|null|Param,
1661
 *             search_dn?: scalar|null|Param, // Default: ""
1662
 *             search_password?: scalar|null|Param, // Default: ""
1663
 *         },
1664
 *         remember_me?: array{
1665
 *             secret?: scalar|null|Param, // Default: "%kernel.secret%"
1666
 *             service?: scalar|null|Param,
1667
 *             user_providers?: list<scalar|null|Param>,
1668
 *             catch_exceptions?: bool|Param, // Default: true
1669
 *             signature_properties?: list<scalar|null|Param>,
1670
 *             token_provider?: string|array{
1671
 *                 service?: scalar|null|Param, // The service ID of a custom remember-me token provider.
1672
 *                 doctrine?: bool|array{
1673
 *                     enabled?: bool|Param, // Default: false
1674
 *                     connection?: scalar|null|Param, // Default: null
1675
 *                 },
1676
 *             },
1677
 *             token_verifier?: scalar|null|Param, // The service ID of a custom rememberme token verifier.
1678
 *             name?: scalar|null|Param, // Default: "REMEMBERME"
1679
 *             lifetime?: int|Param, // Default: 31536000
1680
 *             path?: scalar|null|Param, // Default: "/"
1681
 *             domain?: scalar|null|Param, // Default: null
1682
 *             secure?: true|false|"auto"|Param, // Default: true
1683
 *             httponly?: bool|Param, // Default: true
1684
 *             samesite?: null|"lax"|"strict"|"none"|Param, // Default: "none"
1685
 *             always_remember_me?: bool|Param, // Default: false
1686
 *             remember_me_parameter?: scalar|null|Param, // Default: "_remember_me"
1687
 *         },
1688
 *     }>,
1689
 *     access_control?: list<array{ // Default: []
1690
 *         request_matcher?: scalar|null|Param, // Default: null
1691
 *         requires_channel?: scalar|null|Param, // Default: null
1692
 *         path?: scalar|null|Param, // Use the urldecoded format. // Default: null
1693
 *         host?: scalar|null|Param, // Default: null
1694
 *         port?: int|Param, // Default: null
1695
 *         ips?: list<scalar|null|Param>,
1696
 *         attributes?: array<string, scalar|null|Param>,
1697
 *         route?: scalar|null|Param, // Default: null
1698
 *         methods?: list<scalar|null|Param>,
1699
 *         allow_if?: scalar|null|Param, // Default: null
1700
 *         roles?: list<scalar|null|Param>,
1701
 *     }>,
1702
 *     role_hierarchy?: array<string, string|list<scalar|null|Param>>,
1703
 * }
1704
 * @psalm-type TwigConfig = array{
1705
 *     form_themes?: list<scalar|null|Param>,
1706
 *     globals?: array<string, array{ // Default: []
1707
 *         id?: scalar|null|Param,
1708
 *         type?: scalar|null|Param,
1709
 *         value?: mixed,
1710
 *     }>,
1711
 *     autoescape_service?: scalar|null|Param, // Default: null
1712
 *     autoescape_service_method?: scalar|null|Param, // Default: null
1713
 *     base_template_class?: scalar|null|Param, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated.
1714
 *     cache?: scalar|null|Param, // Default: true
1715
 *     charset?: scalar|null|Param, // Default: "%kernel.charset%"
1716
 *     debug?: bool|Param, // Default: "%kernel.debug%"
1717
 *     strict_variables?: bool|Param, // Default: "%kernel.debug%"
1718
 *     auto_reload?: scalar|null|Param,
1719
 *     optimizations?: int|Param,
1720
 *     default_path?: scalar|null|Param, // The default path used to load templates. // Default: "%kernel.project_dir%/templates"
1721
 *     file_name_pattern?: list<scalar|null|Param>,
1722
 *     paths?: array<string, mixed>,
1723
 *     date?: array{ // The default format options used by the date filter.
1724
 *         format?: scalar|null|Param, // Default: "F j, Y H:i"
1725
 *         interval_format?: scalar|null|Param, // Default: "%d days"
1726
 *         timezone?: scalar|null|Param, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null
1727
 *     },
1728
 *     number_format?: array{ // The default format options for the number_format filter.
1729
 *         decimals?: int|Param, // Default: 0
1730
 *         decimal_point?: scalar|null|Param, // Default: "."
1731
 *         thousands_separator?: scalar|null|Param, // Default: ","
1732
 *     },
1733
 *     mailer?: array{
1734
 *         html_to_text_converter?: scalar|null|Param, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null
1735
 *     },
1736
 * }
1737
 * @psalm-type WebProfilerConfig = array{
1738
 *     toolbar?: bool|array{ // Profiler toolbar configuration
1739
 *         enabled?: bool|Param, // Default: false
1740
 *         ajax_replace?: bool|Param, // Replace toolbar on AJAX requests // Default: false
1741
 *     },
1742
 *     intercept_redirects?: bool|Param, // Default: false
1743
 *     excluded_ajax_paths?: scalar|null|Param, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt"
1744
 * }
1745
 * @psalm-type WebpackEncoreConfig = array{
1746
 *     output_path: scalar|null|Param, // The path where Encore is building the assets - i.e. Encore.setOutputPath()
1747
 *     crossorigin?: false|"anonymous"|"use-credentials"|Param, // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false
1748
 *     preload?: bool|Param, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false
1749
 *     cache?: bool|Param, // Enable caching of the entry point file(s) // Default: false
1750
 *     strict_mode?: bool|Param, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true
1751
 *     builds?: array<string, scalar|null|Param>,
1752
 *     script_attributes?: array<string, scalar|null|Param>,
1753
 *     link_attributes?: array<string, scalar|null|Param>,
1754
 * }
1755
 * @psalm-type TwigExtraConfig = array{
1756
 *     cache?: bool|array{
1757
 *         enabled?: bool|Param, // Default: false
1758
 *     },
1759
 *     html?: bool|array{
1760
 *         enabled?: bool|Param, // Default: false
1761
 *     },
1762
 *     markdown?: bool|array{
1763
 *         enabled?: bool|Param, // Default: false
1764
 *     },
1765
 *     intl?: bool|array{
1766
 *         enabled?: bool|Param, // Default: false
1767
 *     },
1768
 *     cssinliner?: bool|array{
1769
 *         enabled?: bool|Param, // Default: false
1770
 *     },
1771
 *     inky?: bool|array{
1772
 *         enabled?: bool|Param, // Default: false
1773
 *     },
1774
 *     string?: bool|array{
1775
 *         enabled?: bool|Param, // Default: false
1776
 *     },
1777
 *     commonmark?: array{
1778
 *         renderer?: array{ // Array of options for rendering HTML.
1779
 *             block_separator?: scalar|null|Param,
1780
 *             inner_separator?: scalar|null|Param,
1781
 *             soft_break?: scalar|null|Param,
1782
 *         },
1783
 *         html_input?: "strip"|"allow"|"escape"|Param, // How to handle HTML input.
1784
 *         allow_unsafe_links?: bool|Param, // Remove risky link and image URLs by setting this to false. // Default: true
1785
 *         max_nesting_level?: int|Param, // The maximum nesting level for blocks. // Default: 9223372036854775807
1786
 *         max_delimiters_per_line?: int|Param, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807
1787
 *         slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created.
1788
 *             instance?: mixed,
1789
 *             max_length?: int|Param, // Default: 255
1790
 *             unique?: mixed,
1791
 *         },
1792
 *         commonmark?: array{ // Array of options for configuring the CommonMark core extension.
1793
 *             enable_em?: bool|Param, // Default: true
1794
 *             enable_strong?: bool|Param, // Default: true
1795
 *             use_asterisk?: bool|Param, // Default: true
1796
 *             use_underscore?: bool|Param, // Default: true
1797
 *             unordered_list_markers?: list<scalar|null|Param>,
1798
 *         },
1799
 *         ...<mixed>
1800
 *     },
1801
 * }
1802
 * @psalm-type ConfigType = array{
1803
 *     imports?: ImportsConfig,
1804
 *     parameters?: ParametersConfig,
1805
 *     services?: ServicesConfig,
1806
 *     doctrine?: DoctrineConfig,
1807
 *     framework?: FrameworkConfig,
1808
 *     nelmio_security?: NelmioSecurityConfig,
1809
 *     surfnet_stepup_gateway_api?: SurfnetStepupGatewayApiConfig,
1810
 *     surfnet_yubikey_api_client?: SurfnetYubikeyApiClientConfig,
1811
 *     surfnet_stepup?: SurfnetStepupConfig,
1812
 *     surfnet_stepup_gateway_gateway?: SurfnetStepupGatewayGatewayConfig,
1813
 *     surfnet_stepup_gateway_saml_stepup_provider?: SurfnetStepupGatewaySamlStepupProviderConfig,
1814
 *     surfnet_stepup_gateway_second_factor_only?: SurfnetStepupGatewaySecondFactorOnlyConfig,
1815
 *     open_conext_monitor?: OpenConextMonitorConfig,
1816
 *     surfnet_saml?: SurfnetSamlConfig,
1817
 *     monolog?: MonologConfig,
1818
 *     security?: SecurityConfig,
1819
 *     twig?: TwigConfig,
1820
 *     webpack_encore?: WebpackEncoreConfig,
1821
 *     twig_extra?: TwigExtraConfig,
1822
 *     "when@dev"?: array{
1823
 *         imports?: ImportsConfig,
1824
 *         parameters?: ParametersConfig,
1825
 *         services?: ServicesConfig,
1826
 *         doctrine?: DoctrineConfig,
1827
 *         framework?: FrameworkConfig,
1828
 *         nelmio_security?: NelmioSecurityConfig,
1829
 *         surfnet_stepup_gateway_api?: SurfnetStepupGatewayApiConfig,
1830
 *         surfnet_yubikey_api_client?: SurfnetYubikeyApiClientConfig,
1831
 *         surfnet_stepup?: SurfnetStepupConfig,
1832
 *         surfnet_stepup_gateway_gateway?: SurfnetStepupGatewayGatewayConfig,
1833
 *         surfnet_stepup_gateway_saml_stepup_provider?: SurfnetStepupGatewaySamlStepupProviderConfig,
1834
 *         surfnet_stepup_gateway_second_factor_only?: SurfnetStepupGatewaySecondFactorOnlyConfig,
1835
 *         open_conext_monitor?: OpenConextMonitorConfig,
1836
 *         surfnet_saml?: SurfnetSamlConfig,
1837
 *         monolog?: MonologConfig,
1838
 *         security?: SecurityConfig,
1839
 *         twig?: TwigConfig,
1840
 *         web_profiler?: WebProfilerConfig,
1841
 *         webpack_encore?: WebpackEncoreConfig,
1842
 *         twig_extra?: TwigExtraConfig,
1843
 *     },
1844
 *     "when@smoketest"?: array{
1845
 *         imports?: ImportsConfig,
1846
 *         parameters?: ParametersConfig,
1847
 *         services?: ServicesConfig,
1848
 *         doctrine?: DoctrineConfig,
1849
 *         framework?: FrameworkConfig,
1850
 *         nelmio_security?: NelmioSecurityConfig,
1851
 *         surfnet_stepup_gateway_api?: SurfnetStepupGatewayApiConfig,
1852
 *         surfnet_yubikey_api_client?: SurfnetYubikeyApiClientConfig,
1853
 *         surfnet_stepup?: SurfnetStepupConfig,
1854
 *         surfnet_stepup_gateway_gateway?: SurfnetStepupGatewayGatewayConfig,
1855
 *         surfnet_stepup_gateway_saml_stepup_provider?: SurfnetStepupGatewaySamlStepupProviderConfig,
1856
 *         surfnet_stepup_gateway_second_factor_only?: SurfnetStepupGatewaySecondFactorOnlyConfig,
1857
 *         open_conext_monitor?: OpenConextMonitorConfig,
1858
 *         surfnet_saml?: SurfnetSamlConfig,
1859
 *         monolog?: MonologConfig,
1860
 *         security?: SecurityConfig,
1861
 *         twig?: TwigConfig,
1862
 *         web_profiler?: WebProfilerConfig,
1863
 *         webpack_encore?: WebpackEncoreConfig,
1864
 *         twig_extra?: TwigExtraConfig,
1865
 *     },
1866
 *     "when@smoktetest"?: array{
1867
 *         imports?: ImportsConfig,
1868
 *         parameters?: ParametersConfig,
1869
 *         services?: ServicesConfig,
1870
 *         doctrine?: DoctrineConfig,
1871
 *         framework?: FrameworkConfig,
1872
 *         nelmio_security?: NelmioSecurityConfig,
1873
 *         surfnet_stepup_gateway_api?: SurfnetStepupGatewayApiConfig,
1874
 *         surfnet_yubikey_api_client?: SurfnetYubikeyApiClientConfig,
1875
 *         surfnet_stepup?: SurfnetStepupConfig,
1876
 *         surfnet_stepup_gateway_gateway?: SurfnetStepupGatewayGatewayConfig,
1877
 *         surfnet_stepup_gateway_saml_stepup_provider?: SurfnetStepupGatewaySamlStepupProviderConfig,
1878
 *         surfnet_stepup_gateway_second_factor_only?: SurfnetStepupGatewaySecondFactorOnlyConfig,
1879
 *         open_conext_monitor?: OpenConextMonitorConfig,
1880
 *         surfnet_saml?: SurfnetSamlConfig,
1881
 *         monolog?: MonologConfig,
1882
 *         security?: SecurityConfig,
1883
 *         twig?: TwigConfig,
1884
 *         webpack_encore?: WebpackEncoreConfig,
1885
 *         twig_extra?: TwigExtraConfig,
1886
 *     },
1887
 *     "when@test"?: array{
1888
 *         imports?: ImportsConfig,
1889
 *         parameters?: ParametersConfig,
1890
 *         services?: ServicesConfig,
1891
 *         doctrine?: DoctrineConfig,
1892
 *         framework?: FrameworkConfig,
1893
 *         nelmio_security?: NelmioSecurityConfig,
1894
 *         surfnet_stepup_gateway_api?: SurfnetStepupGatewayApiConfig,
1895
 *         surfnet_yubikey_api_client?: SurfnetYubikeyApiClientConfig,
1896
 *         surfnet_stepup?: SurfnetStepupConfig,
1897
 *         surfnet_stepup_gateway_gateway?: SurfnetStepupGatewayGatewayConfig,
1898
 *         surfnet_stepup_gateway_saml_stepup_provider?: SurfnetStepupGatewaySamlStepupProviderConfig,
1899
 *         surfnet_stepup_gateway_second_factor_only?: SurfnetStepupGatewaySecondFactorOnlyConfig,
1900
 *         open_conext_monitor?: OpenConextMonitorConfig,
1901
 *         surfnet_saml?: SurfnetSamlConfig,
1902
 *         monolog?: MonologConfig,
1903
 *         security?: SecurityConfig,
1904
 *         twig?: TwigConfig,
1905
 *         web_profiler?: WebProfilerConfig,
1906
 *         webpack_encore?: WebpackEncoreConfig,
1907
 *         twig_extra?: TwigExtraConfig,
1908
 *     },
1909
 *     ...<string, ExtensionType|array{ // extra keys must follow the when@%env% pattern or match an extension alias
1910
 *         imports?: ImportsConfig,
1911
 *         parameters?: ParametersConfig,
1912
 *         services?: ServicesConfig,
1913
 *         ...<string, ExtensionType>,
1914
 *     }>
1915
 * }
1916
 */
1917
final class App
1918
{
1919
    /**
1920
     * @param ConfigType $config
0 ignored issues
show
Bug introduced by
The type Symfony\Component\Depend...Configurator\ConfigType was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
1921
     *
1922
     * @psalm-return ConfigType
1923
     */
1924
    public static function config(array $config): array
1925
    {
1926
        return AppReference::config($config);
1927
    }
1928
}
1929
1930
namespace Symfony\Component\Routing\Loader\Configurator;
1931
1932
/**
1933
 * This class provides array-shapes for configuring the routes of an application.
1934
 *
1935
 * Example:
1936
 *
1937
 *     ```php
1938
 *     // config/routes.php
1939
 *     namespace Symfony\Component\Routing\Loader\Configurator;
1940
 *
1941
 *     return Routes::config([
1942
 *         'controllers' => [
1943
 *             'resource' => 'routing.controllers',
1944
 *         ],
1945
 *     ]);
1946
 *     ```
1947
 *
1948
 * @psalm-type RouteConfig = array{
1949
 *     path: string|array<string,string>,
1950
 *     controller?: string,
1951
 *     methods?: string|list<string>,
1952
 *     requirements?: array<string,string>,
1953
 *     defaults?: array<string,mixed>,
1954
 *     options?: array<string,mixed>,
1955
 *     host?: string|array<string,string>,
1956
 *     schemes?: string|list<string>,
1957
 *     condition?: string,
1958
 *     locale?: string,
1959
 *     format?: string,
1960
 *     utf8?: bool,
1961
 *     stateless?: bool,
1962
 * }
1963
 * @psalm-type ImportConfig = array{
1964
 *     resource: string,
1965
 *     type?: string,
1966
 *     exclude?: string|list<string>,
1967
 *     prefix?: string|array<string,string>,
1968
 *     name_prefix?: string,
1969
 *     trailing_slash_on_root?: bool,
1970
 *     controller?: string,
1971
 *     methods?: string|list<string>,
1972
 *     requirements?: array<string,string>,
1973
 *     defaults?: array<string,mixed>,
1974
 *     options?: array<string,mixed>,
1975
 *     host?: string|array<string,string>,
1976
 *     schemes?: string|list<string>,
1977
 *     condition?: string,
1978
 *     locale?: string,
1979
 *     format?: string,
1980
 *     utf8?: bool,
1981
 *     stateless?: bool,
1982
 * }
1983
 * @psalm-type AliasConfig = array{
1984
 *     alias: string,
1985
 *     deprecated?: array{package:string, version:string, message?:string},
1986
 * }
1987
 * @psalm-type RoutesConfig = array{
1988
 *     "when@dev"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
1989
 *     "when@smoketest"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
1990
 *     "when@smoktetest"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
1991
 *     "when@test"?: array<string, RouteConfig|ImportConfig|AliasConfig>,
1992
 *     ...<string, RouteConfig|ImportConfig|AliasConfig>
1993
 * }
1994
 */
1995
final class Routes
1996
{
1997
    /**
1998
     * @param RoutesConfig $config
0 ignored issues
show
Bug introduced by
The type Symfony\Component\Routin...nfigurator\RoutesConfig was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
1999
     *
2000
     * @psalm-return RoutesConfig
2001
     */
2002
    public static function config(array $config): array
2003
    {
2004
        return $config;
2005
    }
2006
}
2007