craft-native 0.0.37

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.
Files changed (117) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +424 -0
  3. package/bin/cli.ts +937 -0
  4. package/dist/api/android-advanced.d.ts +737 -0
  5. package/dist/api/android-advanced.d.ts.map +1 -0
  6. package/dist/api/app.d.ts +432 -0
  7. package/dist/api/app.d.ts.map +1 -0
  8. package/dist/api/clipboard.d.ts +85 -0
  9. package/dist/api/clipboard.d.ts.map +1 -0
  10. package/dist/api/crypto.d.ts +79 -0
  11. package/dist/api/crypto.d.ts.map +1 -0
  12. package/dist/api/db.d.ts +427 -0
  13. package/dist/api/db.d.ts.map +1 -0
  14. package/dist/api/dialog.d.ts +141 -0
  15. package/dist/api/dialog.d.ts.map +1 -0
  16. package/dist/api/fs.d.ts +131 -0
  17. package/dist/api/fs.d.ts.map +1 -0
  18. package/dist/api/http.d.ts +196 -0
  19. package/dist/api/http.d.ts.map +1 -0
  20. package/dist/api/index.d.ts +38 -0
  21. package/dist/api/index.d.ts.map +1 -0
  22. package/dist/api/ios-advanced.d.ts +833 -0
  23. package/dist/api/ios-advanced.d.ts.map +1 -0
  24. package/dist/api/macos-advanced.d.ts +721 -0
  25. package/dist/api/macos-advanced.d.ts.map +1 -0
  26. package/dist/api/media.d.ts +233 -0
  27. package/dist/api/media.d.ts.map +1 -0
  28. package/dist/api/mobile.d.ts +658 -0
  29. package/dist/api/mobile.d.ts.map +1 -0
  30. package/dist/api/process.d.ts +168 -0
  31. package/dist/api/process.d.ts.map +1 -0
  32. package/dist/api/sidebar.d.ts +125 -0
  33. package/dist/api/sidebar.d.ts.map +1 -0
  34. package/dist/api/tray.d.ts +410 -0
  35. package/dist/api/tray.d.ts.map +1 -0
  36. package/dist/api/window.d.ts +462 -0
  37. package/dist/api/window.d.ts.map +1 -0
  38. package/dist/api/windows-advanced.d.ts +719 -0
  39. package/dist/api/windows-advanced.d.ts.map +1 -0
  40. package/dist/assets/index.d.ts +69 -0
  41. package/dist/assets/index.d.ts.map +1 -0
  42. package/dist/binary-resolver.d.ts +39 -0
  43. package/dist/binary-resolver.d.ts.map +1 -0
  44. package/dist/bridge/android.d.ts +574 -0
  45. package/dist/bridge/android.d.ts.map +1 -0
  46. package/dist/bridge/core.d.ts +474 -0
  47. package/dist/bridge/core.d.ts.map +1 -0
  48. package/dist/bridge/ids.d.ts +18 -0
  49. package/dist/bridge/ids.d.ts.map +1 -0
  50. package/dist/bridge/ios.d.ts +528 -0
  51. package/dist/bridge/ios.d.ts.map +1 -0
  52. package/dist/bridge/webkit-pending.d.ts +50 -0
  53. package/dist/bridge/webkit-pending.d.ts.map +1 -0
  54. package/dist/build/bundle-optimizer.d.ts +69 -0
  55. package/dist/build/bundle-optimizer.d.ts.map +1 -0
  56. package/dist/components/index.d.ts +719 -0
  57. package/dist/components/index.d.ts.map +1 -0
  58. package/dist/components/native.d.ts +728 -0
  59. package/dist/components/native.d.ts.map +1 -0
  60. package/dist/components/sidebar.d.ts +458 -0
  61. package/dist/components/sidebar.d.ts.map +1 -0
  62. package/dist/dev/devtools.d.ts +118 -0
  63. package/dist/dev/devtools.d.ts.map +1 -0
  64. package/dist/dev/error-overlay.d.ts +73 -0
  65. package/dist/dev/error-overlay.d.ts.map +1 -0
  66. package/dist/dev/hot-reload.d.ts +127 -0
  67. package/dist/dev/hot-reload.d.ts.map +1 -0
  68. package/dist/index.cjs +10253 -0
  69. package/dist/index.d.cts +59 -0
  70. package/dist/index.d.ts +59 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +10240 -0
  73. package/dist/logging/index.d.ts +152 -0
  74. package/dist/logging/index.d.ts.map +1 -0
  75. package/dist/optimizations/index.d.ts +232 -0
  76. package/dist/optimizations/index.d.ts.map +1 -0
  77. package/dist/package.d.ts +90 -0
  78. package/dist/package.d.ts.map +1 -0
  79. package/dist/performance/runtime.d.ts +230 -0
  80. package/dist/performance/runtime.d.ts.map +1 -0
  81. package/dist/performance/startup.d.ts +223 -0
  82. package/dist/performance/startup.d.ts.map +1 -0
  83. package/dist/plugins/index.d.ts +114 -0
  84. package/dist/plugins/index.d.ts.map +1 -0
  85. package/dist/security/index.d.ts +268 -0
  86. package/dist/security/index.d.ts.map +1 -0
  87. package/dist/signing/index.d.ts +104 -0
  88. package/dist/signing/index.d.ts.map +1 -0
  89. package/dist/styles/headwind.d.ts +222 -0
  90. package/dist/styles/headwind.d.ts.map +1 -0
  91. package/dist/styles/index.d.ts +31 -0
  92. package/dist/styles/index.d.ts.map +1 -0
  93. package/dist/styles/sidebar-templates.d.ts +77 -0
  94. package/dist/styles/sidebar-templates.d.ts.map +1 -0
  95. package/dist/styles/sidebars.d.ts +194 -0
  96. package/dist/styles/sidebars.d.ts.map +1 -0
  97. package/dist/types.d.ts +1555 -0
  98. package/dist/types.d.ts.map +1 -0
  99. package/dist/updater/index.d.ts +164 -0
  100. package/dist/updater/index.d.ts.map +1 -0
  101. package/dist/utils/audio.d.ts +40 -0
  102. package/dist/utils/audio.d.ts.map +1 -0
  103. package/dist/utils/index.d.ts +9 -0
  104. package/dist/utils/index.d.ts.map +1 -0
  105. package/dist/utils/native.d.ts +27 -0
  106. package/dist/utils/native.d.ts.map +1 -0
  107. package/dist/utils/react.d.ts +157 -0
  108. package/dist/utils/react.d.ts.map +1 -0
  109. package/dist/utils/storage.d.ts +35 -0
  110. package/dist/utils/storage.d.ts.map +1 -0
  111. package/dist/utils/svelte.d.ts +187 -0
  112. package/dist/utils/svelte.d.ts.map +1 -0
  113. package/dist/utils/timer.d.ts +57 -0
  114. package/dist/utils/timer.d.ts.map +1 -0
  115. package/dist/utils/vue.d.ts +157 -0
  116. package/dist/utils/vue.d.ts.map +1 -0
  117. package/package.json +78 -0
@@ -0,0 +1,658 @@
1
+ /**
2
+ * @fileoverview Craft Mobile API
3
+ * @description Unified cross-platform mobile API for iOS and Android.
4
+ * Provides consistent access to device features, sensors, and native capabilities.
5
+ * @module @craft-native/api/mobile
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { device, haptics, permissions, camera, biometrics, location, share } from '@craft-native/api/mobile'
10
+ *
11
+ * // Get device info
12
+ * const info = await device.getInfo()
13
+ * console.log(`Running on ${info.platform} ${info.osVersion}`)
14
+ *
15
+ * // Request permissions
16
+ * const granted = await permissions.request('camera')
17
+ *
18
+ * // Trigger haptic feedback
19
+ * await haptics.impact('medium')
20
+ *
21
+ * // Take a photo
22
+ * const photo = await camera.takePicture()
23
+ * ```
24
+ */
25
+ /**
26
+ * Internal: return a stable device id for the web fallback. Persists in
27
+ * localStorage so two `device.getInfo()` calls in the same session (and
28
+ * across reloads) report the *same* id. The previous implementation
29
+ * generated a fresh `Math.random` id every call, which made
30
+ * `deviceId`-keyed analytics impossible to tie back to a single browser.
31
+ */
32
+ export declare function _webFallbackDeviceId(): string;
33
+ /**
34
+ * Test-only hook to clear the cached device id.
35
+ */
36
+ export declare function _resetWebFallbackDeviceIdForTests(): void;
37
+ /**
38
+ * Device information.
39
+ *
40
+ * Optional sub-fields (`screen`, `battery`, `network`) reflect what the
41
+ * native side might omit — e.g. desktop hosts have no battery, headless
42
+ * environments have no screen. Consumers must defensively check before
43
+ * accessing nested properties.
44
+ */
45
+ export interface DeviceInfo {
46
+ /** Platform: 'ios' | 'android' | 'macos' | 'windows' | 'linux' */
47
+ platform: 'ios' | 'android' | 'macos' | 'windows' | 'linux';
48
+ /** OS version string (e.g., "17.0", "14") */
49
+ osVersion: string;
50
+ /** Device model (e.g., "iPhone 15 Pro", "Pixel 8") */
51
+ model: string;
52
+ /** Device manufacturer */
53
+ manufacturer: string;
54
+ /** Unique device identifier */
55
+ deviceId: string;
56
+ /** Whether device is a tablet */
57
+ isTablet: boolean;
58
+ /** Screen dimensions (omitted by headless or desktop hosts) */
59
+ screen?: {
60
+ width: number;
61
+ height: number;
62
+ scale: number;
63
+ };
64
+ /** Battery info (omitted on devices without a battery) */
65
+ battery?: {
66
+ level: number;
67
+ isCharging: boolean;
68
+ };
69
+ /** Network status (omitted when the host doesn't report it) */
70
+ network?: {
71
+ type: 'wifi' | 'cellular' | 'ethernet' | 'none';
72
+ isConnected: boolean;
73
+ };
74
+ }
75
+ /**
76
+ * Device capabilities.
77
+ */
78
+ export interface DeviceCapabilities {
79
+ /** Has camera */
80
+ camera: boolean;
81
+ /** Has biometric authentication */
82
+ biometrics: boolean;
83
+ /** Has NFC */
84
+ nfc: boolean;
85
+ /** Has Bluetooth */
86
+ bluetooth: boolean;
87
+ /** Has GPS */
88
+ gps: boolean;
89
+ /** Has accelerometer */
90
+ accelerometer: boolean;
91
+ /** Has gyroscope */
92
+ gyroscope: boolean;
93
+ /** Has haptic feedback */
94
+ haptics: boolean;
95
+ /** Has AR support */
96
+ ar: boolean;
97
+ /** Has Face ID (iOS) or face unlock */
98
+ faceId: boolean;
99
+ /** Has Touch ID (iOS) or fingerprint */
100
+ touchId: boolean;
101
+ }
102
+ /**
103
+ * Device information and capabilities API.
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * // Get device info
108
+ * const info = await device.getInfo()
109
+ * console.log(`Platform: ${info.platform}`)
110
+ * console.log(`Model: ${info.model}`)
111
+ * console.log(`Battery: ${info.battery.level}%`)
112
+ *
113
+ * // Check capabilities
114
+ * const caps = await device.getCapabilities()
115
+ * if (caps.biometrics) {
116
+ * // Enable biometric login
117
+ * }
118
+ *
119
+ * // Check if running on mobile
120
+ * if (device.isMobile()) {
121
+ * // Show mobile-specific UI
122
+ * }
123
+ * ```
124
+ */
125
+ export declare const device: {
126
+ /**
127
+ * Get comprehensive device information.
128
+ *
129
+ * @returns Promise resolving to DeviceInfo
130
+ */
131
+ getInfo(): Promise<DeviceInfo>;
132
+ /**
133
+ * Get device capabilities.
134
+ *
135
+ * @returns Promise resolving to DeviceCapabilities
136
+ */
137
+ getCapabilities(): Promise<DeviceCapabilities>;
138
+ /**
139
+ * Check if running on a mobile device.
140
+ */
141
+ isMobile(): boolean;
142
+ /**
143
+ * Check if running on iOS.
144
+ */
145
+ isIOS(): boolean;
146
+ /**
147
+ * Check if running on Android.
148
+ */
149
+ isAndroid(): boolean;
150
+ /**
151
+ * Get current locale.
152
+ */
153
+ getLocale(): string;
154
+ /**
155
+ * Get timezone.
156
+ */
157
+ getTimezone(): string;
158
+ };
159
+ /**
160
+ * Haptic feedback style.
161
+ */
162
+ export type HapticStyle = 'light' | 'medium' | 'heavy' | 'soft' | 'rigid';
163
+ /**
164
+ * Haptic notification type.
165
+ */
166
+ export type HapticNotificationType = 'success' | 'warning' | 'error';
167
+ /**
168
+ * Haptic feedback API.
169
+ * Provides tactile feedback on supported devices.
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * // Impact feedback
174
+ * await haptics.impact('medium')
175
+ *
176
+ * // Notification feedback
177
+ * await haptics.notification('success')
178
+ *
179
+ * // Selection feedback (for UI selection changes)
180
+ * await haptics.selection()
181
+ *
182
+ * // Custom vibration pattern (Android)
183
+ * await haptics.vibrate([100, 50, 100])
184
+ * ```
185
+ */
186
+ export declare const haptics: {
187
+ /**
188
+ * Trigger impact haptic feedback.
189
+ *
190
+ * @param style - Impact style intensity
191
+ */
192
+ impact(style?: HapticStyle): Promise<void>;
193
+ /**
194
+ * Trigger notification haptic feedback.
195
+ *
196
+ * @param type - Notification type
197
+ */
198
+ notification(type?: HapticNotificationType): Promise<void>;
199
+ /**
200
+ * Trigger selection haptic feedback.
201
+ * Use when a selection changes (e.g., picker value change).
202
+ */
203
+ selection(): Promise<void>;
204
+ /**
205
+ * Vibrate with a custom pattern.
206
+ *
207
+ * @param pattern - Array of durations in ms [vibrate, pause, vibrate, ...]
208
+ */
209
+ vibrate(pattern: number[]): Promise<void>;
210
+ };
211
+ /**
212
+ * Permission types.
213
+ */
214
+ export type PermissionType = 'camera' | 'microphone' | 'photos' | 'location' | 'locationAlways' | 'notifications' | 'contacts' | 'calendar' | 'reminders' | 'bluetooth' | 'motion' | 'health';
215
+ /**
216
+ * Permission status.
217
+ */
218
+ export type PermissionStatus = 'granted' | 'denied' | 'undetermined' | 'restricted';
219
+ /**
220
+ * Permissions API.
221
+ * Request and check native permissions.
222
+ *
223
+ * @example
224
+ * ```typescript
225
+ * // Check permission status
226
+ * const status = await permissions.check('camera')
227
+ *
228
+ * // Request permission
229
+ * if (status !== 'granted') {
230
+ * const newStatus = await permissions.request('camera')
231
+ * if (newStatus === 'granted') {
232
+ * // Permission granted, proceed
233
+ * }
234
+ * }
235
+ *
236
+ * // Check multiple permissions
237
+ * const statuses = await permissions.checkMultiple(['camera', 'microphone'])
238
+ *
239
+ * // Request multiple permissions
240
+ * const results = await permissions.requestMultiple(['camera', 'microphone', 'photos'])
241
+ * ```
242
+ */
243
+ export declare const permissions: {
244
+ /**
245
+ * Check the status of a permission.
246
+ *
247
+ * @param permission - Permission to check
248
+ * @returns Promise resolving to PermissionStatus
249
+ */
250
+ check(permission: PermissionType): Promise<PermissionStatus>;
251
+ /**
252
+ * Request a permission.
253
+ *
254
+ * @param permission - Permission to request
255
+ * @returns Promise resolving to new PermissionStatus
256
+ */
257
+ request(permission: PermissionType): Promise<PermissionStatus>;
258
+ /**
259
+ * Check multiple permissions.
260
+ *
261
+ * @param permissionList - Array of permissions to check
262
+ * @returns Promise resolving to object mapping permissions to statuses
263
+ */
264
+ checkMultiple(permissionList: PermissionType[]): Promise<Record<PermissionType, PermissionStatus>>;
265
+ /**
266
+ * Request multiple permissions.
267
+ *
268
+ * @param permissionList - Array of permissions to request
269
+ * @returns Promise resolving to object mapping permissions to statuses
270
+ */
271
+ requestMultiple(permissionList: PermissionType[]): Promise<Record<PermissionType, PermissionStatus>>;
272
+ /**
273
+ * Open app settings (to change permissions manually).
274
+ */
275
+ openSettings(): Promise<void>;
276
+ };
277
+ /**
278
+ * Camera options.
279
+ */
280
+ export interface CameraOptions {
281
+ /** Camera to use: 'front' | 'back' */
282
+ camera?: 'front' | 'back';
283
+ /** Photo quality: 0-100 */
284
+ quality?: number;
285
+ /** Max width in pixels */
286
+ maxWidth?: number;
287
+ /** Max height in pixels */
288
+ maxHeight?: number;
289
+ /** Save to camera roll */
290
+ saveToGallery?: boolean;
291
+ }
292
+ /**
293
+ * Photo result.
294
+ */
295
+ export interface PhotoResult {
296
+ /** Base64 encoded image data */
297
+ base64: string;
298
+ /** Image URI/path */
299
+ uri: string;
300
+ /** Image width */
301
+ width: number;
302
+ /** Image height */
303
+ height: number;
304
+ /** MIME type */
305
+ mimeType: string;
306
+ }
307
+ /**
308
+ * Camera and image picker API.
309
+ *
310
+ * @example
311
+ * ```typescript
312
+ * // Take a photo
313
+ * const photo = await camera.takePicture({ camera: 'back', quality: 80 })
314
+ *
315
+ * // Pick from gallery
316
+ * const image = await camera.pickImage()
317
+ *
318
+ * // Pick multiple images
319
+ * const images = await camera.pickMultiple({ maxCount: 5 })
320
+ * ```
321
+ */
322
+ export declare const camera: {
323
+ /**
324
+ * Take a photo with the device camera.
325
+ *
326
+ * @param options - Camera options
327
+ * @returns Promise resolving to PhotoResult
328
+ */
329
+ takePicture(options?: CameraOptions): Promise<PhotoResult>;
330
+ /**
331
+ * Pick an image from the gallery.
332
+ *
333
+ * @returns Promise resolving to PhotoResult
334
+ */
335
+ pickImage(): Promise<PhotoResult>;
336
+ /**
337
+ * Pick multiple images from the gallery.
338
+ *
339
+ * @param options - Options including maxCount
340
+ * @returns Promise resolving to array of PhotoResults
341
+ */
342
+ pickMultiple(options?: {
343
+ maxCount?: number;
344
+ }): Promise<PhotoResult[]>;
345
+ /**
346
+ * Check if camera is available.
347
+ */
348
+ isAvailable(): Promise<boolean>;
349
+ };
350
+ /**
351
+ * Biometric type.
352
+ */
353
+ export type BiometricType = 'faceId' | 'touchId' | 'fingerprint' | 'face' | 'iris';
354
+ /**
355
+ * Biometric authentication API.
356
+ *
357
+ * @example
358
+ * ```typescript
359
+ * // Check availability
360
+ * const available = await biometrics.isAvailable()
361
+ * const type = await biometrics.getBiometricType()
362
+ *
363
+ * // Authenticate
364
+ * try {
365
+ * const success = await biometrics.authenticate('Verify your identity')
366
+ * if (success) {
367
+ * // Proceed with authenticated action
368
+ * }
369
+ * }
370
+ catch (error) {
371
+ * console.log('Authentication failed:', error)
372
+ * }
373
+ * ```
374
+ */
375
+ export declare const biometrics: {
376
+ /**
377
+ * Check if biometric authentication is available.
378
+ */
379
+ isAvailable(): Promise<boolean>;
380
+ /**
381
+ * Get the type of biometric authentication available.
382
+ */
383
+ getBiometricType(): Promise<BiometricType | null>;
384
+ /**
385
+ * Authenticate using biometrics.
386
+ *
387
+ * @param reason - Reason shown to user for authentication
388
+ * @returns Promise resolving to true if authenticated
389
+ * @throws Error if authentication fails or is cancelled
390
+ */
391
+ authenticate(reason: string): Promise<boolean>;
392
+ };
393
+ /**
394
+ * Secure storage API for sensitive data.
395
+ * Uses Keychain (iOS) or Keystore (Android).
396
+ *
397
+ * @example
398
+ * ```typescript
399
+ * // Store sensitive data
400
+ * await secureStorage.set('authToken', 'secret-token-123')
401
+ * await secureStorage.set('userCredentials', JSON.stringify({ user: 'john', pass: '***' }))
402
+ *
403
+ * // Retrieve data
404
+ * const token = await secureStorage.get('authToken')
405
+ *
406
+ * // Delete data
407
+ * await secureStorage.delete('authToken')
408
+ *
409
+ * // Clear all secure storage
410
+ * await secureStorage.clear()
411
+ * ```
412
+ */
413
+ export declare const secureStorage: {
414
+ /**
415
+ * Store a value securely.
416
+ *
417
+ * @param key - Storage key
418
+ * @param value - Value to store
419
+ */
420
+ set(key: string, value: string): Promise<void>;
421
+ /**
422
+ * Retrieve a securely stored value.
423
+ *
424
+ * @param key - Storage key
425
+ * @returns Promise resolving to value or null
426
+ */
427
+ get(key: string): Promise<string | null>;
428
+ /**
429
+ * Delete a securely stored value.
430
+ *
431
+ * @param key - Storage key
432
+ */
433
+ delete(key: string): Promise<void>;
434
+ /**
435
+ * Clear all securely stored values.
436
+ */
437
+ clear(): Promise<void>;
438
+ };
439
+ /**
440
+ * Location coordinates.
441
+ */
442
+ export interface Location {
443
+ latitude: number;
444
+ longitude: number;
445
+ altitude?: number;
446
+ accuracy: number;
447
+ heading?: number;
448
+ speed?: number;
449
+ timestamp: number;
450
+ }
451
+ /**
452
+ * Location options.
453
+ */
454
+ export interface LocationOptions {
455
+ /** Enable high accuracy (uses more battery) */
456
+ enableHighAccuracy?: boolean;
457
+ /** Timeout in milliseconds */
458
+ timeout?: number;
459
+ /** Maximum age of cached position in milliseconds */
460
+ maximumAge?: number;
461
+ }
462
+ /**
463
+ * Location API.
464
+ *
465
+ * @example
466
+ * ```typescript
467
+ * // Get current location
468
+ * const loc = await location.getCurrentPosition()
469
+ * console.log(`Lat: ${loc.latitude}, Lng: ${loc.longitude}`)
470
+ *
471
+ * // Watch location changes
472
+ * const watchId = location.watchPosition((loc) => {
473
+ * console.log('New position:', loc)
474
+ * })
475
+ *
476
+ * // Stop watching
477
+ * location.clearWatch(watchId)
478
+ * ```
479
+ */
480
+ export declare const location: {
481
+ /**
482
+ * Get current position.
483
+ *
484
+ * @param options - Location options
485
+ * @returns Promise resolving to Location
486
+ */
487
+ getCurrentPosition(options?: LocationOptions): Promise<Location>;
488
+ /**
489
+ * Watch position changes.
490
+ *
491
+ * @param callback - Function called on position change
492
+ * @param options - Location options
493
+ * @returns Watch ID to use with clearWatch
494
+ */
495
+ watchPosition(callback: (location: Location) => void, options?: LocationOptions): number;
496
+ /**
497
+ * Stop watching position.
498
+ *
499
+ * @param watchId - Watch ID returned from watchPosition
500
+ */
501
+ clearWatch(watchId: number): void;
502
+ };
503
+ /**
504
+ * Share options.
505
+ */
506
+ export interface ShareOptions {
507
+ /** Text to share */
508
+ text?: string;
509
+ /** URL to share */
510
+ url?: string;
511
+ /** Title for the share */
512
+ title?: string;
513
+ /** File paths/URIs to share */
514
+ files?: string[];
515
+ }
516
+ /**
517
+ * Share API.
518
+ *
519
+ * @example
520
+ * ```typescript
521
+ * // Share text
522
+ * await share.share({ text: 'Check out this app!' })
523
+ *
524
+ * // Share URL
525
+ * await share.share({ url: 'https://example.com', title: 'Cool Website' })
526
+ *
527
+ * // Share file
528
+ * await share.share({ files: ['/path/to/image.png'] })
529
+ * ```
530
+ */
531
+ export declare const share: {
532
+ /**
533
+ * Open native share dialog.
534
+ *
535
+ * @param options - Share options
536
+ */
537
+ share(options: ShareOptions): Promise<void>;
538
+ /**
539
+ * Check if sharing is available.
540
+ */
541
+ isAvailable(): boolean;
542
+ };
543
+ /**
544
+ * App state.
545
+ */
546
+ export type AppState = 'active' | 'inactive' | 'background';
547
+ /**
548
+ * App lifecycle events API.
549
+ *
550
+ * @example
551
+ * ```typescript
552
+ * // Listen for app state changes
553
+ * const removeListener = lifecycle.onStateChange((state) => {
554
+ * if (state === 'background') {
555
+ * // Save data, pause tasks
556
+ * }
557
+ else if (state === 'active') {
558
+ * // Refresh data
559
+ * }
560
+ * })
561
+ *
562
+ * // Get current state
563
+ * const state = lifecycle.getState()
564
+ *
565
+ * // Remove listener
566
+ * removeListener()
567
+ * ```
568
+ */
569
+ export declare const lifecycle: {
570
+ /**
571
+ * Get current app state.
572
+ */
573
+ getState(): AppState;
574
+ /**
575
+ * Listen for app state changes.
576
+ *
577
+ * @param callback - Function called when state changes
578
+ * @returns Function to remove listener
579
+ */
580
+ onStateChange(callback: (state: AppState) => void): () => void;
581
+ };
582
+ /**
583
+ * Notification options.
584
+ */
585
+ export interface NotificationOptions {
586
+ /** Notification title */
587
+ title: string;
588
+ /** Notification body */
589
+ body?: string;
590
+ /** Badge count (iOS) */
591
+ badge?: number;
592
+ /** Sound name */
593
+ sound?: string;
594
+ /** Custom data payload */
595
+ data?: Record<string, unknown>;
596
+ /** Schedule for future (timestamp) */
597
+ scheduleAt?: number;
598
+ }
599
+ /**
600
+ * Local notifications API.
601
+ *
602
+ * @example
603
+ * ```typescript
604
+ * // Show immediate notification
605
+ * await notifications.show({
606
+ * title: 'Hello!',
607
+ * body: 'This is a notification'
608
+ * })
609
+ *
610
+ * // Schedule notification
611
+ * await notifications.schedule({
612
+ * title: 'Reminder',
613
+ * body: 'Time to take a break',
614
+ * scheduleAt: Date.now() + 3600000 // 1 hour from now
615
+ * })
616
+ *
617
+ * // Cancel all notifications
618
+ * await notifications.cancelAll()
619
+ * ```
620
+ */
621
+ export declare const notifications: {
622
+ /**
623
+ * Show a local notification immediately.
624
+ *
625
+ * @param options - Notification options
626
+ */
627
+ show(options: NotificationOptions): Promise<void>;
628
+ /**
629
+ * Schedule a notification for the future.
630
+ *
631
+ * @param options - Notification options with scheduleAt
632
+ */
633
+ schedule(options: NotificationOptions): Promise<void>;
634
+ /**
635
+ * Cancel all scheduled notifications.
636
+ */
637
+ cancelAll(): Promise<void>;
638
+ /**
639
+ * Set app badge count (iOS).
640
+ *
641
+ * @param count - Badge count (0 to clear)
642
+ */
643
+ setBadge(count: number): Promise<void>;
644
+ };
645
+ declare const mobile: {
646
+ device: typeof device;
647
+ haptics: typeof haptics;
648
+ permissions: typeof permissions;
649
+ camera: typeof camera;
650
+ biometrics: typeof biometrics;
651
+ secureStorage: typeof secureStorage;
652
+ location: typeof location;
653
+ share: typeof share;
654
+ lifecycle: typeof lifecycle;
655
+ notifications: typeof notifications;
656
+ };
657
+ export default mobile;
658
+ //# sourceMappingURL=mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../src/api/mobile.ts"],"names":[],"mappings":"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"}