@innspel/core 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,521 +1,5 @@
1
- /**
2
- * Opak koblingsnøkkel til et maskinsignal hos leietakeren (krasj-ID, sesjons-ID, avspillings-ID). Plattformen validerer at kind er deklarert og at value matcher kind-ens pattern, og tolker eller følger aldri verdien (DD-43).
3
- */
4
- type CommonCorrelation = {
5
- /**
6
- * Deklarert av leietakeren i innstillingene. «crash» er forhåndsdefinert.
7
- */
8
- kind: string;
9
- value: string;
10
- };
11
- /**
12
- * Maskinlesbar feilkode. Klienten forgrener på denne, aldri på message. Meldingen navngir feltet som feilet, aldri innsendte verdier — den kan inneholde fritekst fra innsenderen.
13
- */
14
- type CommonErrorCode = 'validation_failed' | 'unknown_field' | 'text_too_short' | 'text_too_long' | 'correlation_invalid' | 'unauthenticated' | 'feedback_token_required' | 'feedback_token_invalid' | 'feedback_token_expired' | 'mfa_required' | 'insufficient_role' | 'insufficient_scope' | 'screenshots_disabled' | 'submission_not_found' | 'known_issue_not_found' | 'program_not_found' | 'invitation_invalid' | 'task_not_found' | 'follow_up_not_found' | 'participant_not_found' | 'subject_not_found' | 'attachment_not_found' | 'webhook_not_found' | 'delivery_not_found' | 'product_not_found' | 'key_not_found' | 'receipt_not_found' | 'report_not_found' | 'handoff_invalid' | 'invalid_status_transition' | 'reply_exists' | 'invitation_already_answered' | 'program_incomplete' | 'program_full' | 'task_already_completed' | 'follow_up_already_answered' | 'follow_up_not_answerable' | 'report_frozen' | 'webhook_not_verified' | 'attachment_already_uploaded' | 'reply_required' | 'reason_code_required' | 'template_unmodified' | 'fixed_in_required' | 'canonical_is_duplicate' | 'known_issue_conflict' | 'deadline_cannot_be_extended' | 'minors_present_conflict' | 'contacts_exceed_tenant_cap' | 'data_limitations_required' | 'attachment_too_large' | 'attachment_type_not_allowed' | 'rate_limited' | 'not_implemented';
15
- /**
16
- * Plattformen innsendingen kom fra. Lukket liste fra dag én, inkludert storskjerm — en verdi som legges til senere er en kontraktendring hos alle SDK-er (ideer/storskjerm-qr-handoff.md).
17
- */
18
- type CommonPlatform = 'ios' | 'android' | 'web' | 'tvos' | 'androidtv' | 'tizen' | 'webos';
19
- /**
20
- * Kjent feil-kortet slik SDK-et og portalen viser det, FØR innsending i feilsporet (differensiatoren, M2.4). Tre deler: hva, omvei, gjelder versjon (DD-30). Tre svar i klienten: «Ja, jeg også» (KnownIssues.confirm) · «Ligner, men ikke helt» (relatedKnownIssueId på innsendingen) · «Nei, det er noe annet» (vanlig innsending) (DD-29). Aldri Reach — innsenderen ser ikke hvor mange andre.
21
- */
22
- type KnownIssuesKnownIssueCard = {
23
- id: string;
24
- /**
25
- * I brukerens ord, 1–3 setninger.
26
- */
27
- title: string;
28
- /**
29
- * Valgfri omvei, 1–3 setninger.
30
- */
31
- workaround?: string;
32
- status: KnownIssuesKnownIssueStatus;
33
- /**
34
- * Versjonen feilen rettes eller er rettet i. Vises som «Rettes i X» når aktiv, «Rettet i X» når fikset.
35
- */
36
- fixedIn?: string;
37
- };
38
- /**
39
- * aktiv vises i skjemaet (DD-03); fikset krever fixedIn og utløser Rettet-varselet til alle med Reach (DD-31). Kortet vises for fikset så lenge innsenderens appVersion ≤ fixedIn, og skjules for nyere (DD-30).
40
- */
41
- type KnownIssuesKnownIssueStatus = 'aktiv' | 'fikset';
42
- /**
43
- * paaminnelse bærer alltid fristen i teksten; tilbud_om_utgang er eneste lovlige form for den betingede kontakten når ingen oppgave er gjort (DD-34).
44
- */
45
- type ProgramsFollowUpKind = 'paaminnelse' | 'hvordan_gikk_det' | 'sjekkpunkt' | 'tilbud_om_utgang';
46
- /**
47
- * Svar på en oppfølging med spørsmål (kind = hvordan_gikk_det eller sjekkpunkt): tre lukkede valg (fungerte · delvis · ikke) og valgfri fritekst ≤ 140 (domain-model.md Response). Én per FollowUp. Skala 1–5 er FORKASTET 2026-09-07 — se tech-decisions.md M3.2 (forts.).
48
- */
49
- type ProgramsFollowUpResponseCreate = {
50
- outcome: ProgramsTaskOutcome;
51
- text?: string;
52
- submissionId?: string;
53
- };
54
- /**
55
- * En oppfølging som er sendt ut til kalleren og ikke besvart. Teksten bærer fristen når kind = paaminnelse (DD-34).
56
- */
57
- type ProgramsFollowUpView = {
58
- id: string;
59
- programId: string;
60
- kind: ProgramsFollowUpKind;
61
- question: string;
62
- deadlineAt?: string;
63
- emittedAt: string;
64
- };
65
- /**
66
- * utloept er utledet av klokka, aldri skrevet.
67
- */
68
- type ProgramsInvitationStatus = 'sendt' | 'akseptert' | 'avslaatt' | 'utloept';
69
- /**
70
- * Invitasjon rettet til kallerens subject. Tokenet finnes ikke her — det kom via leietakerens kanal (DD-12); listen viser at invitasjonen finnes så banneret kan tegnes.
71
- */
72
- type ProgramsInvitationView = {
73
- id: string;
74
- program: ProgramsProgramView;
75
- status: ProgramsInvitationStatus;
76
- expiresAt: string;
77
- };
78
- /**
79
- * Alt om betaprogram for kallerens subject i ett kall — SDK-ets programs.list(). Krever feedback-token; anonym modus har ingen programmer.
80
- */
81
- type ProgramsMyPrograms = {
82
- invitations: Array<ProgramsInvitationView>;
83
- participations: Array<ProgramsParticipationView>;
84
- pendingFollowUps: Array<ProgramsFollowUpView>;
85
- };
86
- /**
87
- * trukket: deltakeren gikk ut selv («Gå ut» er alltid synlig, DD-36). Ut av segmentet umiddelbart.
88
- */
89
- type ProgramsParticipantStatus = 'aktiv' | 'fullfoert' | 'trukket';
90
- /**
91
- * Kallerens egen deltakelse med oppgavestatus. contactsSent / maxContacts vises i fanen.
92
- */
93
- type ProgramsParticipationView = {
94
- id: string;
95
- program: ProgramsProgramView;
96
- status: ProgramsParticipantStatus;
97
- joinedAt: string;
98
- completions: Array<ProgramsTaskCompletionView>;
99
- contactsSent: number;
100
- };
101
- /**
102
- * Programmet slik testeren ser det i aksepten (DD-13, DD-32) og i fanen. Ingen andre deltakere, ingen tall om andre.
103
- */
104
- type ProgramsProgramView = {
105
- id: string;
106
- name: string;
107
- /**
108
- * Hva som testes — vises først i aksepten.
109
- */
110
- hypothesis: string;
111
- opensAt: string;
112
- closesAt: string;
113
- /**
114
- * Maks antall kontakter testeren kan få. Vises ved aksept; plattformen nekter å sende flere (DD-14).
115
- */
116
- maxContacts: number;
117
- /**
118
- * Forpliktelsesfri form: ingen insentiv, ingen frist, ingen vilkår. Tvunget ved minorsPresent (K37).
119
- */
120
- commitmentFree: boolean;
121
- /**
122
- * Leietakerens vilkår som lenke — aldri avkryssing som binder (DD-37). Alltid null ved commitmentFree.
123
- */
124
- termsUrl?: string;
125
- tasks: Array<ProgramsTask>;
126
- /**
127
- * Kjente feil merket visibleToTesters, vist i aksepten (hele lista, DD-13) med samme kort som widgeten.
128
- */
129
- knownIssues: Array<KnownIssuesKnownIssueCard>;
130
- };
131
- /**
132
- * Én oppgave i programmet. estimatedMinutes er obligatorisk — aksepten viser «N oppgaver × M minutter» (DD-32).
133
- */
134
- type ProgramsTask = {
135
- id: string;
136
- /**
137
- * Rekkefølge fra 1. Oppgave 1 foreslås som «Send ditt første innspill» (DD-33).
138
- */
139
- order: number;
140
- title: string;
141
- instruction: string;
142
- /**
143
- * Skjermen oppgaven gjelder — hint til testeren, aldri en dyplenke plattformen følger.
144
- */
145
- screenHint?: string;
146
- estimatedMinutes: number;
147
- };
148
- /**
149
- * Testeren fullfører en oppgave med utfall (3c «Hvordan gikk det?»). text er den valgfrie setningen «Vil du si én setning om det?» ≤ 140 — vises på programsiden per oppgave, aldri i innboksen, og slettes med pseudonymet. Valgfri kobling til innspillet som ble sendt underveis.
150
- */
151
- type ProgramsTaskCompletionCreate = {
152
- outcome: ProgramsTaskOutcome;
153
- text?: string;
154
- submissionId?: string;
155
- };
156
- /**
157
- * Én fullført oppgave, som testeren ser den. text er testerens egen setning fra «Gjort» (3c), aldri fra panelet.
158
- */
159
- type ProgramsTaskCompletionView = {
160
- taskId: string;
161
- outcome: ProgramsTaskOutcome;
162
- at: string;
163
- text?: string;
164
- submissionId?: string;
165
- };
166
- /**
167
- * Utfallet av én oppgave, valgt av testeren. Tre lukkede valg, aldri skala (rapport 4).
168
- */
169
- type ProgramsTaskOutcome = 'fungerte' | 'delvis' | 'ikke';
170
- /**
171
- * Tillatte bildetyper. Aldri SVG eller GIF (K9). Sjekkes på magic bytes ved mottak, ikke bare på oppgitt verdi.
172
- */
173
- type SubmissionsAttachmentMime = 'image/png' | 'image/jpeg' | 'image/webp';
174
- /**
175
- * Vedleggets tilstand etter complete. Verifiseringen (magic bytes, dimensjon, re-enkoding, EXIF-strip) kjører asynkront i isolert prosess; klienten trenger ikke vente.
176
- */
177
- type SubmissionsAttachmentView = {
178
- id: string;
179
- submissionId: string;
180
- mime: SubmissionsAttachmentMime;
181
- bytes: number;
182
- /**
183
- * Satt når vedlegget er verifisert og re-enkodet. Utelatt = under behandling.
184
- */
185
- processedAt?: string;
186
- createdAt: string;
187
- };
188
- /**
189
- * Minimal peker til en kjent feil, for visning i innsenderens liste.
190
- */
191
- type SubmissionsKnownIssueRef = {
192
- id: string;
193
- title: string;
194
- };
195
- /**
196
- * Begrunnelseskode ved avvist. Obligatorisk sammen med fritekst (DD-09). Fire koder, ingen «annet» — en søppelbøtte undergraver tvangen. Rapport 3 navngir kun ikke_prioritert; de tre andre er wireframens forslag og bekreftes av produkteier ved godkjenning av denne kontrakten.
197
- */
198
- type SubmissionsReasonCode = 'ikke_prioritert' | 'utenfor_omfang' | 'kan_ikke_gjenskape' | 'allerede_mulig';
199
- /**
200
- * Svaret fra leietakeren, slik innsenderen ser det i «mine innspill» (DD-27). Samme tekst som på saken i panelet.
201
- */
202
- type SubmissionsReplyView = {
203
- text: string;
204
- reasonCode?: SubmissionsReasonCode;
205
- at: string;
206
- };
207
- /**
208
- * Statuskategori — maskinens felt, utledet av status (DD-22). reviewing: ny, vurderes · active: planlagt, bygges · complete: levert, kjent_feil med fikset KnownIssue · closed: avvist, duplikat.
209
- */
210
- type SubmissionsStatusType = 'reviewing' | 'active' | 'complete' | 'closed';
211
- /**
212
- * Tilstandsmaskinen i domain-model.md. Navnet innsenderen ser velges per spor i klienten (DD-22): levert vises som «Rettet» i feilsporet og «Levert» i ønskesporet; kjent_feil → fikset vises som «Rettet».
213
- */
214
- type SubmissionsSubmissionStatus = 'ny' | 'vurderes' | 'planlagt' | 'bygges' | 'levert' | 'kjent_feil' | 'duplikat' | 'avvist';
215
- /**
216
- * Innsenderens egen visning av en innsending. Ingen tekst fra andre, ingen notater, ingen Reach.
217
- */
218
- type SubmissionsSubmissionStatusView = {
219
- id: string;
220
- type: SubmissionsSubmissionType;
221
- /**
222
- * Innsenderens egen tekst, speilet tilbake så «mine innspill» kan vises uten lokal lagring. Tom for kjent_feil-bekreftelser.
223
- */
224
- text: string;
225
- status: SubmissionsSubmissionStatus;
226
- /**
227
- * Utledet av status (DD-22). Klienten velger visningsnavn per spor.
228
- */
229
- statusType: SubmissionsStatusType;
230
- /**
231
- * Svarfristen som dato — det eneste tidsløftet (DD-28). Satt kun i vurderes: statusChangedAt + leietakerens reviewDeadlineDays.
232
- */
233
- deadlineAt?: string;
234
- /**
235
- * Versjonen feilen er rettet i / ønsket levert i. Satt ved levert, og ved kjent_feil når KnownIssue er fikset (DD-31).
236
- */
237
- fixedIn?: string;
238
- /**
239
- * Kjent feil denne innsendingen bekreftet («Ja, jeg også») — kortets tittel så «mine innspill» kan vise hva som ble bekreftet.
240
- */
241
- knownIssue?: SubmissionsKnownIssueRef;
242
- /**
243
- * Kjent feil innsendingen ble lenket til med «Ligner, men ikke helt». Fjernes hvis behandleren avviser lenken.
244
- */
245
- relatedKnownIssue?: SubmissionsKnownIssueRef;
246
- reply?: SubmissionsReplyView;
247
- /**
248
- * Om innsendingen har et vedlegg. Selve bildet returneres aldri her — det vises ikke i «mine innspill».
249
- */
250
- hasAttachment: boolean;
251
- createdAt: string;
252
- statusChangedAt: string;
253
- };
254
- /**
255
- * Sporet. Første valg i widgeten er «Noe virker ikke» / «Jeg ønsker meg noe», aldri et tredje (DD-02).
256
- */
257
- type SubmissionsSubmissionType = 'feil' | 'onske';
258
-
259
- /**
260
- * Lagring injiseres av verten — kjernen har ingen nettleser-API-er (CLAUDE.md,
261
- * «SDK»). Tre metoder er nok: offline-køen er det eneste som lagres, og
262
- * feedback-tokenet lagres aldri (K20).
263
- */
264
- interface InnspelStorage {
265
- get(key: string): Promise<string | null>;
266
- set(key: string, value: string): Promise<void>;
267
- remove(key: string): Promise<void>;
268
- }
269
- /**
270
- * Gir et ferskt feedback-token fra vertens eget token-endepunkt (ES256,
271
- * `aud=innspel`, `sub` = pseudonym, `exp` ≤ 15 min). Kalles hver gang et token
272
- * trengs — kjernen cacher det aldri på disk.
273
- *
274
- * `null` som RETURVERDI betyr «ingen innlogget bruker akkurat nå»; `null` som
275
- * OPSJON betyr anonym modus for hele klienten.
276
- */
277
- type IdentityProvider = () => Promise<string | null> | string | null;
278
- /**
279
- * Den lukkede hvitelista for teknisk kontekst (K5). Leses ved feltnavn — et
280
- * ukjent felt avvises av `init` og `capture` med feltnavnet i meldingen, før
281
- * det rekker å bli 400 unknown_field fra plattformen.
282
- *
283
- * Aldri enhets-ID, aldri IP, aldri hva som stod på skjermen: `screen` er rutens
284
- * NAVN. `sdkVersion` settes av kjernen og kan ikke overstyres.
285
- */
286
- interface ContextInput {
287
- platform: CommonPlatform;
288
- appVersion?: string;
289
- build?: string;
290
- os?: string;
291
- screen?: string;
292
- locale?: string;
293
- }
294
- /** Hendelsene i `docs/maaling.md`. Ingen av dem bærer tekst, skjermbilde eller pseudonym. */
295
- type TelemetryEvent = {
296
- name: 'widget_opened';
297
- } | {
298
- name: 'track_selected';
299
- type: 'feil' | 'onske';
300
- } | {
301
- name: 'known_issue_shown';
302
- count: number;
303
- } | {
304
- name: 'known_issue_confirmed';
305
- } | {
306
- name: 'submission_sent';
307
- type: 'feil' | 'onske';
308
- hasAttachment: boolean;
309
- offlineQueued: boolean;
310
- } | {
311
- name: 'submission_failed';
312
- reason: string;
313
- } | {
314
- name: 'invitation_accepted';
315
- } | {
316
- name: 'invitation_declined';
317
- } | {
318
- name: 'task_completed';
319
- outcome: string;
320
- } | {
321
- name: 'followup_answered';
322
- } | {
323
- name: 'status_viewed';
324
- };
325
- /**
326
- * Telemetri går til et injisert grensesnitt. Standard er `noop`; plattformens
327
- * eget mottak kobles på i M4.2 (tech-decisions.md). Uten opsjonen sendes
328
- * ingenting noe sted.
329
- */
330
- interface Telemetry {
331
- emit(event: TelemetryEvent): void;
332
- }
333
- /** Tekstgrensen per leietaker. Lukket valg — kontrakten har to verdier. */
334
- type TextMaxLength = 140 | 280;
335
- interface InnspelOptions {
336
- /** Plattformens API-rot. Ingen standard: SDK-et skal aldri gjette hvor dataene havner. */
337
- baseUrl: string;
338
- /**
339
- * Den offentlige SDK-nøkkelen (`Product.key`). Skrivende, bundet til
340
- * bundle-ID eller origin, kan aldri lese (K3). Hører hjemme i appens konfig.
341
- */
342
- tenantKey: string;
343
- /**
344
- * Funksjon som gir et ferskt feedback-token, eller `null` for anonym modus.
345
- * Forkastet: stille fallback ved glemt opsjon — anonym modus er et eksplisitt
346
- * valg (tech-decisions.md, «SDK — dokumentasjon og utvikleropplevelse»).
347
- */
348
- identityProvider: IdentityProvider | null;
349
- /** Offline-køen bor her (DD-41). */
350
- storage: InnspelStorage;
351
- /** Teknisk kontekst som følger hver innsending. `platform` er påkrevd. */
352
- context: ContextInput;
353
- /**
354
- * Leietakerens tekstgrense. Ingest-flaten har ingen klientkonfig ennå, så
355
- * standarden er den strammeste (140, verdien ved `minorsPresent`). Verten
356
- * overstyrer med verdien fra panelet.
357
- */
358
- textMaxLength?: TextMaxLength;
359
- /** Send-knappen er aktiv fra dette antallet tegn. Standard 10 (DD-44). */
360
- minTextLength?: number;
361
- /**
362
- * Om skjermbilde-steget finnes. Standard `false`: steget skal ikke være en
363
- * deaktivert knapp, det skal ikke finnes (DD-26). Vedlegg er M1.3.
364
- */
365
- screenshotsEnabled?: boolean;
366
- /** Standard er `noop`. */
367
- telemetry?: Telemetry;
368
- /** Injiserbar `fetch`, for test og for verter med egen nettverksstakk. */
369
- fetch?: typeof fetch;
370
- /** Tidsavbrudd per kall i millisekunder. Standard 10 000 (wireframe 2i). */
371
- timeoutMs?: number;
372
- }
373
- /**
374
- * Leietakerens innstillinger slik klienten kjenner dem. Starter som opsjonene fra
375
- * `init()` (strammest mulig uten dem), og oppdateres av `loadSettings()` fra
376
- * `GET /v1/ingest/config` (M2.5) — samme objekt, så en holdt referanse følger med.
377
- */
378
- interface ResolvedSettings {
379
- textMaxLength: TextMaxLength;
380
- minTextLength: number;
381
- screenshotsEnabled: boolean;
382
- /** Leietakerens personvernerklæring — «hva samles inn». Finnes først etter `loadSettings()`. */
383
- privacyUrl?: string;
384
- }
385
- /**
386
- * Bildet slik verten gir det fra seg — Blob (React Native og nettleser),
387
- * ArrayBuffer eller en typed array. Kjernen leser bare lengden; innholdet går
388
- * rett til lagringen.
389
- */
390
- type AttachmentBody = Blob | ArrayBuffer | ArrayBufferView<ArrayBuffer>;
391
- /**
392
- * Ett skjermbilde, MASKERT på klienten før dette (K4, DD-39, DD-40). Kjernen
393
- * sjekker grensene (PNG/JPEG/WebP, ≤ 5 MB, ≤ 4096², K9) og kaster med feltnavn
394
- * før noe går på nettet; plattformen sjekker dem igjen før dekoding.
395
- */
396
- interface AttachmentInput {
397
- mime: SubmissionsAttachmentMime;
398
- body: AttachmentBody;
399
- width: number;
400
- height: number;
401
- }
402
- /**
403
- * Hva som skjedde med vedlegget etter at teksten var lagret (DD-42).
404
- * `failed` er ikke en feil for innsendingen — saken står, uten bilde — men
405
- * UI-et skal si det: «Sendt — skjermbildet kunne ikke legges ved».
406
- */
407
- type AttachmentOutcome = {
408
- status: 'uploaded';
409
- attachment: SubmissionsAttachmentView;
410
- } | {
411
- status: 'failed';
412
- error: Error;
413
- }
414
- /** Teksten ble køet offline; et skjermbilde køes aldri (DD-41), så det ble forkastet. */
415
- | {
416
- status: 'dropped';
417
- };
418
- /** Felles felter for begge spor. */
419
- interface CaptureBase {
420
- text: string;
421
- /**
422
- * Skjermbilde, maskert på klienten. Sendes ETTER teksten, i egen forespørsel,
423
- * og kan feile alene (DD-42) — se `CaptureResult.attachment`.
424
- */
425
- attachment?: AttachmentInput;
426
- /**
427
- * Legges på konteksten fra `init` — typisk `screen`. Et felt satt til
428
- * `undefined` FJERNES fra innsendingen (DD-05, «Fjern» i kontekstlinja); et
429
- * felt som ikke nevnes, beholdes fra `init`.
430
- */
431
- context?: Partial<ContextInput>;
432
- /**
433
- * Idempotensnøkkel for offline-køen. Settes av kjernen hvis den utelates:
434
- * en ny UUID per INNSENDING, aldri per enhet eller installasjon (K20).
435
- */
436
- clientRef?: string;
437
- /** Krever feedback-token og aktiv deltakelse. Betaprogram er M3. */
438
- programId?: string;
439
- taskId?: string;
440
- }
441
- /** «Noe virker ikke» — eneste spor med koblingsnøkler og lenke til kjent feil (DD-02). */
442
- interface CaptureFeil extends CaptureBase {
443
- type: 'feil';
444
- /** Opake koblingsnøkler til maskinsignaler hos leietakeren, maks tre. `crash` er forhåndsdefinert (DD-43). */
445
- correlation?: CommonCorrelation[];
446
- /** «Ligner, men ikke helt» (DD-29): lenke uten tvunget match. */
447
- relatedKnownIssueId?: string;
448
- }
449
- /** «Jeg ønsker meg noe» — ingen koblingsnøkler, ingen reproduksjonsfelt (DD-02). */
450
- interface CaptureOnske extends CaptureBase {
451
- type: 'onske';
452
- }
453
- type CaptureInput = CaptureFeil | CaptureOnske;
454
- type CaptureResult = {
455
- status: 'sent';
456
- submission: SubmissionsSubmissionStatusView;
457
- attachment?: AttachmentOutcome;
458
- } | {
459
- status: 'queued';
460
- clientRef: string;
461
- attachment?: {
462
- status: 'dropped';
463
- };
464
- };
465
- /** En rad i offline-køen. Kun tekst — et skjermbilde køes aldri (rapport 3, kap. 5). */
466
- interface QueuedSubmission {
467
- clientRef: string;
468
- type: 'feil' | 'onske';
469
- text: string;
470
- queuedAt: string;
471
- }
472
- /** Resultatet av en flush. */
473
- interface FlushResult {
474
- sent: number;
475
- /** Rader plattformen avviste med 400 — de blir aldri gyldige og forkastes. */
476
- failed: number;
477
- /** Rader som fortsatt venter, typisk fordi nettet er nede. */
478
- remaining: number;
479
- }
480
- /**
481
- * En rad i «Mine innspill» (DD-27, DD-41): plattformens egne innsendinger, pluss
482
- * køen gjort synlig. `pending` skiller dem — en køet rad har ingen saksnummer.
483
- */
484
- type MySubmission = (SubmissionsSubmissionStatusView & {
485
- pending?: false;
486
- }) | {
487
- pending: true;
488
- clientRef: string;
489
- type: 'feil' | 'onske';
490
- text: string;
491
- queuedAt: string;
492
- };
493
- /** Klassene mønstervarselet kjenner (DD-46). */
494
- type PatternKind = 'email' | 'phone' | 'card' | 'ip' | 'token';
495
- interface PatternFinding {
496
- kind: PatternKind;
497
- match: string;
498
- start: number;
499
- end: number;
500
- }
501
- interface KnownIssueQuery {
502
- screen?: string;
503
- version?: string;
504
- platform?: CommonPlatform;
505
- }
506
- /**
507
- * Visningen `openFeedback` åpner. Registreres av `@innspel/react-native`;
508
- * kjernen har ingen UI (CLAUDE.md, «SDK»).
509
- */
510
- interface Presenter {
511
- open(options?: OpenFeedbackOptions): Promise<void>;
512
- }
513
- interface OpenFeedbackOptions {
514
- /** Rutenavnet innsenderen kom fra. Styrer hvilke kjente feil som vises (DD-30). */
515
- screen?: string;
516
- /** Start i et bestemt spor og hopp over 2b. */
517
- track?: 'feil' | 'onske';
518
- }
1
+ import { R as ResolvedSettings, C as ContextInput, a as CaptureInput, b as CaptureResult, K as KnownIssueQuery, c as KnownIssuesKnownIssueCard, S as SubmissionsSubmissionStatusView, M as MySubmission, P as ProgramsMyPrograms, d as ProgramsParticipationView, e as ProgramsTaskCompletionCreate, f as ProgramsTaskCompletionView, g as ProgramsFollowUpResponseCreate, A as AttachmentInput, h as SubmissionsAttachmentView, Q as QueuedSubmission, F as FlushResult, i as PatternFinding, T as TelemetryEvent, O as OpenFeedbackOptions, j as Presenter, I as InnspelOptions, k as CommonErrorCode, l as SubmissionsAttachmentMime } from './typer-CK03lxOC.js';
2
+ export { m as AttachmentBody, n as AttachmentOutcome, o as CaptureFeil, p as CaptureOnske, q as Correlation, r as FollowUpKind, s as FollowUpView, t as IdentityProvider, u as InnspelStorage, v as InvitationView, w as KnownIssueRef, x as KnownIssueStatus, y as PatternKind, z as Platform, B as ProgramTask, D as ProgramView, E as ReasonCode, G as ReplyView, H as StatusType, J as SubmissionStatus, L as SubmissionType, N as TaskOutcome, U as Telemetry, V as TextMaxLength } from './typer-CK03lxOC.js';
519
3
 
520
4
  /** Klienten `init` gir deg. Én per app; den er trygg å holde på. */
521
5
  interface InnspelClient {
@@ -785,6 +269,6 @@ declare function dekkerAlt(rekter: readonly MaskRect[], bilde: {
785
269
  * ikke kan lese JSON, og `test/versjon.test.ts` holder den i takt med
786
270
  * `package.json`.
787
271
  */
788
- declare const VERSJON = "0.5.0";
272
+ declare const VERSJON = "0.6.0";
789
273
 
790
- export { type AttachmentBody, type AttachmentInput, type SubmissionsAttachmentMime as AttachmentMime, type AttachmentOutcome, type SubmissionsAttachmentView as AttachmentView, type CaptureFeil, type CaptureInput, type CaptureOnske, type CaptureResult, type ContextInput, type CommonCorrelation as Correlation, type CommonErrorCode as ErrorCode, type FlushResult, type ProgramsFollowUpKind as FollowUpKind, type ProgramsFollowUpResponseCreate as FollowUpResponseCreate, type ProgramsFollowUpView as FollowUpView, type IdentityProvider, InnspelApiError, type InnspelClient, InnspelConfigError, type InnspelOptions, InnspelQueueFullError, type InnspelStorage, type ProgramsInvitationView as InvitationView, KONTEKST_FELTER, KO_TAK, type KnownIssuesKnownIssueCard as KnownIssueCard, type KnownIssueQuery, type SubmissionsKnownIssueRef as KnownIssueRef, type KnownIssuesKnownIssueStatus as KnownIssueStatus, type MaskPoint, type MaskRect, type ProgramsMyPrograms as MyPrograms, type MySubmission, type OpenFeedbackOptions, type ProgramsParticipationView as ParticipationView, type PatternFinding, type PatternKind, type CommonPlatform as Platform, type Presenter, type ProgramsTask as ProgramTask, type ProgramsProgramView as ProgramView, type QueuedSubmission, type SubmissionsReasonCode as ReasonCode, type SubmissionsReplyView as ReplyView, type ResolvedSettings, type SubmissionsStatusType as StatusType, type SubmissionsSubmissionStatus as SubmissionStatus, type SubmissionsSubmissionStatusView as SubmissionStatusView, type SubmissionsSubmissionType as SubmissionType, TILLATTE_MIME, type ProgramsTaskCompletionCreate as TaskCompletionCreate, type ProgramsTaskCompletionView as TaskCompletionView, type ProgramsTaskOutcome as TaskOutcome, type Telemetry, type TelemetryEvent, type TextMaxLength, VEDLEGG_GRENSER, VERSJON, dekkerAlt, init, klipp, scanText, skaler, strokTilRekter, treffer, trykkTilRekt };
274
+ export { AttachmentInput, SubmissionsAttachmentMime as AttachmentMime, SubmissionsAttachmentView as AttachmentView, CaptureInput, CaptureResult, ContextInput, CommonErrorCode as ErrorCode, FlushResult, ProgramsFollowUpResponseCreate as FollowUpResponseCreate, InnspelApiError, type InnspelClient, InnspelConfigError, InnspelOptions, InnspelQueueFullError, KONTEKST_FELTER, KO_TAK, KnownIssuesKnownIssueCard as KnownIssueCard, KnownIssueQuery, type MaskPoint, type MaskRect, ProgramsMyPrograms as MyPrograms, MySubmission, OpenFeedbackOptions, ProgramsParticipationView as ParticipationView, PatternFinding, Presenter, QueuedSubmission, ResolvedSettings, SubmissionsSubmissionStatusView as SubmissionStatusView, TILLATTE_MIME, ProgramsTaskCompletionCreate as TaskCompletionCreate, ProgramsTaskCompletionView as TaskCompletionView, TelemetryEvent, VEDLEGG_GRENSER, VERSJON, dekkerAlt, init, klipp, scanText, skaler, strokTilRekter, treffer, trykkTilRekt };