@apps-in-toss/framework 0.0.0-dev.1744801739343 → 0.0.0-dev.1752049503789

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.cts CHANGED
@@ -1,1187 +1,27 @@
1
+ import * as react from 'react';
1
2
  import { ComponentType, PropsWithChildren } from 'react';
2
- import { InitialProps, BedrockProps } from 'react-native-bedrock';
3
- import { EmitterSubscription } from 'react-native';
4
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
+ import * as _apps_in_toss_analytics from '@apps-in-toss/analytics';
5
+ export * from '@apps-in-toss/analytics';
6
+ import { InitialProps, GraniteProps } from '@granite-js/react-native';
5
7
  import { PartnerWebViewScreenProps, ExternalWebViewScreenProps } from '@toss-design-system/react-native';
6
- import { WebViewProps as WebViewProps$1 } from '@react-native-bedrock/native/react-native-webview';
7
-
8
- type AppsInTossProps = Pick<BedrockProps, 'context'>;
9
- declare function registerApp(container: ComponentType<PropsWithChildren<InitialProps>>, { context }: AppsInTossProps): (initialProps: InitialProps) => JSX.Element;
10
-
11
- declare const AppsInToss: {
12
- registerApp: typeof registerApp;
13
- };
14
-
15
- interface EventEmitterSchema<K extends string, P extends unknown[]> {
16
- name: K;
17
- params: P;
18
- }
19
-
20
- /**
21
- * @public
22
- * @category 위치 정보
23
- * @name Accuracy
24
- * @description 위치 정확도 옵션이에요.
25
- */
26
- declare enum Accuracy {
27
- /**
28
- * 오차범위 3KM 이내
29
- */
30
- Lowest = 1,
31
- /**
32
- * 오차범위 1KM 이내
33
- */
34
- Low = 2,
35
- /**
36
- * 오차범위 몇 백미터 이내
37
- */
38
- Balanced = 3,
39
- /**
40
- * 오차범위 10M 이내
41
- */
42
- High = 4,
43
- /**
44
- * 가장 높은 정확도
45
- */
46
- Highest = 5,
47
- /**
48
- * 네비게이션을 위한 최고 정확도
49
- */
50
- BestForNavigation = 6
51
- }
52
- /**
53
- * @public
54
- * @category 위치 정보
55
- * @name Location
56
- * @description 위치 정보를 나타내는 객체예요.
57
- */
58
- interface Location {
59
- /**
60
- * Android에서만 지원하는 옵션이에요.
61
- *
62
- * - `FINE`: 정확한 위치
63
- * - `COARSE`: 대략적인 위치
64
- *
65
- * @see https://developer.android.com/codelabs/approximate-location
66
- */
67
- accessLocation?: 'FINE' | 'COARSE';
68
- /**
69
- * 위치가 업데이트된 시점의 유닉스 타임스탬프예요.
70
- */
71
- timestamp: number;
72
- /**
73
- * @description 위치 정보를 나타내는 객체예요. 자세한 내용은 [LocationCoords](/react-native/reference/framework/Types/LocationCoords.html)을 참고해주세요.
74
- */
75
- coords: LocationCoords;
76
- }
77
- /**
78
- * @public
79
- * @category 위치 정보
80
- * @name LocationCoords
81
- * @description 세부 위치 정보를 나타내는 객체예요.
82
- */
83
- interface LocationCoords {
84
- /**
85
- * 위도
86
- */
87
- latitude: number;
88
- /**
89
- * 경도
90
- */
91
- longitude: number;
92
- /**
93
- * 높이
94
- */
95
- altitude: number;
96
- /**
97
- * 위치 정확도
98
- */
99
- accuracy: number;
100
- /**
101
- * 고도 정확도
102
- */
103
- altitudeAccuracy: number;
104
- /**
105
- * 방향
106
- */
107
- heading: number;
108
- }
109
- /**
110
- * 사진 조회 결과를 나타내는 타입이에요.
111
- */
112
- interface ImageResponse {
113
- /** 가져온 사진의 고유 ID예요. */
114
- id: string;
115
- /** 사진의 데이터 URI예요. `base64` 옵션이 `true`인 경우 Base64 문자열로 반환돼요. */
116
- dataUri: string;
117
- }
118
-
119
- interface StartUpdateLocationOptions {
120
- /**
121
- * 위치 정확도를 설정해요.
122
- */
123
- accuracy: Accuracy;
124
- /**
125
- * 위치 업데이트 주기를 밀리초(ms) 단위로 설정해요.
126
- */
127
- timeInterval: number;
128
- /**
129
- * 위치 변경 거리를 미터(m) 단위로 설정해요.
130
- */
131
- distanceInterval: number;
132
- }
133
- interface StartUpdateLocationSubscription extends EmitterSubscription {
134
- remove: () => Promise<void>;
135
- }
136
- /**
137
- * @name UpdateLocationEventEmitter
138
- * @kind typedef
139
- * @description
140
- * 디바이스의 위치 정보 변경을 감지해요
141
- * @extends {EventEmitterSchema<'updateLocation', [Location]>}
142
- */
143
- interface UpdateLocationEventEmitter extends EventEmitterSchema<'updateLocation', [Location]> {
144
- }
145
- /**
146
- * @public
147
- * @category 위치 정보
148
- * @name startUpdateLocation
149
- * @description 디바이스의 위치 정보를 지속적으로 감지하고, 위치가 변경되면 콜백을 실행하는 함수예요. 콜백 함수를 등록하면 위치가 변경될 때마다 자동으로 호출돼요.
150
- * 실시간 위치 추적이 필요한 기능을 구현할 때 사용할 수 있어요. 예를 들어 지도 앱에서 사용자의 현재 위치를 실시간으로 업데이트할 때, 운동 앱에서 사용자의 이동 거리를 기록할 때 등이에요.
151
- * 위치 업데이트 주기와 정확도를 조정해 배터리 소모를 최소화하면서도 필요한 정보를 얻을 수 있어요.
152
- *
153
- * @param {StartUpdateLocationOptions} options - 위치 정보 감지에 필요한 설정 객체에요.
154
- * @param {number} [options.accuracy] 위치 정확도를 설정해요.
155
- * @param {number} [options.timeInterval] 위치 정보를 업데이트하는 최소 주기로, 단위는 밀리초(ms)예요. 이 값은 위치 업데이트가 발생하는 가장 짧은 간격을 설정하지만, 시스템이나 환경의 영향을 받아 지정한 주기보다 더 긴 간격으로 업데이트될 수 있어요.
156
- * @param {number} [options.distanceInterval] 위치 변경 거리를 미터(m) 단위로 설정해요.
157
- * @param {(location: Location) => void} [options.callback] 위치 정보가 변경될 때 호출되는 콜백 함수예요. 자세한 내용은 [Location](/react-native/reference/framework/Types/Location.html)을 참고해주세요.
158
- *
159
- * @example
160
- * ### 위치 정보 변경 감지하기
161
- *
162
- * ```tsx
163
- * import React, { useState, useEffect } from 'react';
164
- * import { View, Text, Button } from 'react-native';
165
- * import { startUpdateLocation } from '@apps-in-toss/framework';
166
- *
167
- * // 위치 정보 변경 감지하기
168
- * function LocationWatcher() {
169
- * const [location, setLocation] = useState(null);
170
- *
171
- * useEffect(() => {
172
- * return startUpdateLocation({
173
- * options: {
174
- * accuracy: Accuracy.Balanced,
175
- * timeInterval: 3000,
176
- * distanceInterval: 10,
177
- * },
178
- * onEvent: (location) => {
179
- * setLocation(location);
180
- * },
181
- * onError: (error) => {
182
- * console.error('위치 정보를 가져오는데 실패했어요:', error);
183
- * },
184
- * });
185
- * }, []);
186
- *
187
- * if (location == null) {
188
- * return <Text>위치 정보를 가져오는 중이에요...</Text>;
189
- * }
190
- *
191
- * return (
192
- * <View>
193
- * <Text>위도: {location.coords.latitude}</Text>
194
- * <Text>경도: {location.coords.longitude}</Text>
195
- * <Text>위치 정확도: {location.coords.accuracy}m</Text>
196
- * <Text>높이: {location.coords.altitude}m</Text>
197
- * <Text>고도 정확도: {location.coords.altitudeAccuracy}m</Text>
198
- * <Text>방향: {location.coords.heading}°</Text>
199
- * </View>
200
- * );
201
- * }
202
- * ```
203
- */
204
- declare function startUpdateLocation(eventParams: {
205
- onEvent: (response: Location) => void;
206
- onError: (error: unknown) => void;
207
- options: StartUpdateLocationOptions;
208
- }): () => void;
209
-
210
- /**
211
- * @public
212
- * @category 토스페이
213
- * @name CheckoutPaymentOptions
214
- * @description 토스페이 결제를 생성할 때 필요한 옵션 객체예요.
215
- * @property {string} orderNo 가맹점의 상품 주문번호예요.
216
- * @property {string} productDesc 상품 설명이에요.
217
- * @property {number} amount 결제 금액이에요.
218
- * @property {number} amountTaxFree 결제 금액 중 비과세 금액이에요.
219
- * @property {number} [amountTaxable] 결제 금액 중 과세 금액이에요.
220
- * @property {number} [amountVat] 결제 금액 중 부가세예요.
221
- * @property {number} [amountServiceFee] 결제 금액 중 봉사료예요.
222
- * @property {'TOSS_MONEY' | 'CARD' | null} [enablePayMethods] 결제수단 구분 변수예요. (TOSS_MONEY: 토스머니만, CARD: 카드만, null: 기본 결제수단)
223
- * @property {boolean} [cashReceipt] 현금영수증 발급 가능 여부예요.
224
- * @property {'CULTURE' | 'GENERAL' | 'PUBLIC_TP'} [cashReceiptTradeOption] 현금영수증 발급 타입이에요. (CULTURE: 문화비, GENERAL: 일반, PUBLIC_TP: 교통비)
225
- * @property {'USE' | 'NO_USE'} [installment] 할부를 사용할 지 말 지 여부에요. (USE: 사용, NO_USE: 할부 미사용)
226
- */
227
- interface CheckoutPaymentOptions {
228
- /**
229
- * 가맹점의 상품 주문번호에요.
230
- */
231
- orderNo: string;
232
- /**
233
- * 상품 설명이에요.
234
- */
235
- productDesc: string;
236
- /**
237
- * 결제 금액이예요.
238
- */
239
- amount: number;
240
- /**
241
- * 결제 금액 중 비과세 금액이에요.
242
- */
243
- amountTaxFree: number;
244
- /**
245
- * 결제 금액 중 과세 금액이에요.
246
- */
247
- amountTaxable?: number;
248
- /**
249
- * 결제 금액 중 부가세예요.
250
- */
251
- amountVat?: number;
252
- /**
253
- * 결제 금액 중 봉사료예요.
254
- */
255
- amountServiceFee?: number;
256
- /**
257
- * 결제수단 구분 변수예요.
258
- *
259
- * - 'TOSS_MONEY': 결제수단 중 토스머니만 노출
260
- * - 'CARD': 결제수단 중 카드만 노출
261
- * - null: 상점에 설정된 기본 결제 수단 노출
262
- */
263
- enablePayMethods?: 'TOSS_MONEY' | 'CARD' | null;
264
- /**
265
- * 현금영수증 발급 가능 여부예요.
266
- */
267
- cashReceipt?: boolean;
268
- /**
269
- * 현금영수증 발급 타입이에요.
270
- *
271
- * - 'CULTURE': 문화비
272
- * - 'GENERAL': 일반(기본값)
273
- * - 'PUBLIC_TP': 교통비
274
- */
275
- cashReceiptTradeOption?: 'CULTURE' | 'GENERAL' | 'PUBLIC_TP';
276
- /**
277
- * 할부를 사용할 지 말 지 여부에요.
278
- *
279
- * - 'USE': 사용(기본값)
280
- * - 'NO_USE': 할부 미사용
281
- */
282
- installment?: 'USE' | 'NO_USE';
283
- }
284
- /**
285
- * @public
286
- * @category 토스페이
287
- * @name checkoutPayment
288
- * @description 토스페이 결제를 생성하는 함수예요.
289
- *
290
- * @param {CheckoutPaymentOptions} options 결제를 생성할 때 필요한 옵션 객체예요.
291
- * @param {string} options.orderNo 가맹점의 상품 주문번호예요.
292
- * @param {string} options.productDesc 상품 설명이에요.
293
- * @param {number} options.amount 결제 금액이에요.
294
- * @param {number} options.amountTaxFree 결제 금액 중 비과세 금액이에요.
295
- * @param {number} [options.amountTaxable] 결제 금액 중 과세 금액이에요.
296
- * @param {number} [options.amountVat] 결제 금액 중 부가세예요.
297
- * @param {number} [options.amountServiceFee] 결제 금액 중 봉사료예요.
298
- * @param {'TOSS_MONEY' | 'CARD' | null} [options.enablePayMethods] 결제수단 구분 변수예요. (TOSS_MONEY: 토스머니만, CARD: 카드만, null: 기본 결제수단)
299
- * @param {boolean} [options.cashReceipt] 현금영수증 발급 가능 여부예요.
300
- * @param {'CULTURE' | 'GENERAL' | 'PUBLIC_TP'} [options.cashReceiptTradeOption] 현금영수증 발급 타입이에요. (CULTURE: 문화비, GENERAL: 일반, PUBLIC_TP: 교통비)
301
- * @param {'USE' | 'NO_USE'} [options.installment] 할부를 사용할 지 말 지 여부에요. (USE: 사용, NO_USE: 할부 미사용)
302
- * @returns {Promise<{ payToken: string }>} 결제 인증 후 발급된 결제 토큰 값이 포함된 객체를 반환해요.
303
- *
304
- * @example
305
- * ### 결제 생성하기
306
- *
307
- * ```tsx
308
- * import { TossPay } from '@apps-in-toss/framework';
309
- *
310
- * async function handlePayment() {
311
- * try {
312
- * const result = await TossPay.checkoutPayment({
313
- * orderNo: 'ORDER_12345',
314
- * productDesc: '티셔츠',
315
- * amount: 15000,
316
- * amountTaxFree: 0,
317
- * amountTaxable: 13636,
318
- * amountVat: 1364,
319
- * enablePayMethods: 'CARD',
320
- * installment: 'USE'
321
- * });
322
- *
323
- * console.log('결제 토큰:', result.payToken);
324
- * } catch (error) {
325
- * console.error('결제 생성에 실패했어요:', error);
326
- * }
327
- * }
328
- * ```
329
- */
330
- declare function checkoutPayment(options: CheckoutPaymentOptions): Promise<{
331
- payToken: string;
332
- }>;
333
-
334
- /**
335
- * @public
336
- * @category 토스페이
337
- * @name ExecutePaymentOptions
338
- * @description 생성한 토스페이 결제를 실행할 때 필요한 옵션이에요.
339
- * @property {string} orderNo 결제를 생성할 때 사용한 주문번호예요.
340
- * @property {string} payToken 결제 인증 과정에서 전달받은 결제 토큰이에요. 결제를 실행할 때 사용해요.
341
- */
342
- interface ExecutePaymentOptions {
343
- /**
344
- * 결제를 생성할 때 사용한 주문번호예요.
345
- */
346
- orderNo: string;
347
- /**
348
- * 결제 인증 과정에서 전달받은 Pay 토큰이에요.
349
- */
350
- payToken: string;
351
- }
352
- /**
353
- * @public
354
- * @category 토스페이
355
- * @name CardExecutePaymentResult
356
- * @description 카드로 결제 요청을 실행한 뒤 돌아오는 결제 결과 객체예요. 결제 승인 여부, 결제된 금액, 주문 정보 등을 담고 있어요.
357
- * @property {'CARD'} payMethod 결제 수단이에요.
358
- * @property {number} code 결제 요청의 결과 코드예요.
359
- * @property {'LIVE' | 'TEST'} mode 현재 결제 환경이에요.
360
- * @property {string} orderNo 주문번호예요.
361
- * @property {number} amount 총 결제 금액이에요.
362
- * @property {string} approvalTime 결제가 승인된 시간이에요. (ISO 8601 형식)
363
- * @property {string} stateMsg 결제 상태 메시지예요.
364
- * @property {number} discountedAmount 적용된 할인 금액이에요.
365
- * @property {number} paidAmount 실제 결제된 금액이에요.
366
- * @property {string} payToken 결제 요청 시 사용한 Pay 토큰이에요.
367
- * @property {string} transactionId 거래 ID예요.
368
- * @property {number} cardCompanyCode 카드사 코드예요.
369
- * @property {string} cardCompanyName 카드사 이름이에요.
370
- * @property {string} cardAuthorizationNo 카드사 승인 번호예요. (라이브 결제 환경에서만 확인 가능해요)
371
- * @property {number} spreadOut 할부 개월 수예요. (5만원 미만 금액 및 일시불 결제의 경우에는 `0`)
372
- * @property {boolean} noInterest 무이자 할부 여부예요.
373
- * @property {string} salesCheckLinkUrl 결제 내역을 확인할 수 있는 매출전표 URL이에요.
374
- * @property {'CREDIT' | 'CHECK' | 'PREPAYMENT'} cardMethodType 카드 유형이에요.
375
- * @property {string} cardNumber 마스킹된 카드 번호예요. (`****-****-****-1234` 형식)
376
- * @property {string} cardNum4Print 카드 번호의 마지막 4자리예요.
377
- * @property {string} cardBinNumber 카드 BIN 번호예요.
378
- */
379
- interface CardExecutePaymentResult {
380
- /**
381
- * 결제 수단이에요.
382
- */
383
- payMethod: 'CARD';
384
- /**
385
- * 결제 요청의 결과 코드예요.
386
- */
387
- code: number;
388
- /**
389
- * 현재 결제 환경이에요.
390
- *
391
- * - `LIVE`: 실제 환경
392
- * - `TEST`: 테스트 환경
393
- */
394
- mode: 'LIVE' | 'TEST';
395
- /**
396
- * 주문번호예요.
397
- */
398
- orderNo: string;
399
- /**
400
- * 총 결제 금액이에요.
401
- */
402
- amount: number;
403
- /**
404
- * 결제가 승인된 시간이에요. (ISO 8601 형식)
405
- */
406
- approvalTime: string;
407
- /**
408
- * 결제 상태 메시지예요.
409
- */
410
- stateMsg: string;
411
- /**
412
- * 적용된 할인 금액이에요.
413
- */
414
- discountedAmount: number;
415
- /**
416
- * 실제 결제된 금액이에요.
417
- */
418
- paidAmount: number;
419
- /**
420
- * 결제 요청 시 사용한 Pay 토큰이에요.
421
- */
422
- payToken: string;
423
- /**
424
- * 거래 ID예요.
425
- */
426
- transactionId: string;
427
- /**
428
- * 카드사 코드예요.
429
- */
430
- cardCompanyCode: number;
431
- /**
432
- * 카드사 이름이에요.
433
- */
434
- cardCompanyName: string;
435
- /**
436
- * 카드사 승인 번호예요. (라이브 결제 환경에서만 확인 가능해요)
437
- */
438
- cardAuthorizationNo: string;
439
- /**
440
- * 할부 개월 수예요. (5만원 미만 금액 및 일시불 결제의 경우에는 `0`)
441
- */
442
- spreadOut: number;
443
- /**
444
- * 무이자 할부 여부예요.
445
- */
446
- noInterest: boolean;
447
- /**
448
- * 결제 내역을 확인할 수 있는 매출전표 URL이에요.
449
- */
450
- salesCheckLinkUrl: string;
451
- /**
452
- * 카드 유형이에요.
453
- *
454
- * - 'CREDIT': 신용카드
455
- * - 'CHECK': 체크카드
456
- * - 'PREPAYMENT': 선불카드
457
- */
458
- cardMethodType: 'CREDIT' | 'CHECK' | 'PREPAYMENT';
459
- /**
460
- * 마스킹된 카드 번호예요. (`****-****-****-1234` 형식)
461
- */
462
- cardNumber: string;
463
- /**
464
- * 카드 사용자 구분을 나타내는 값이에요.
465
- *
466
- * - 'PERSONAL': 개인 카드
467
- * - 'PERSONAL_FAMILY': 가족 카드
468
- * - 'CORP_PERSONAL': 법인지정 결제계좌 (임직원)
469
- * - 'CORP_PRIVATE': 법인 공용
470
- * - 'CORP_COMPANY': 법인지정 결제계좌 회사 (하나카드 Only)
471
- */
472
- cardUserType: 'PERSONAL' | 'PERSONAL_FAMILY' | 'CORP_PERSONAL' | 'CORP_PRIVATE' | 'CORP_COMPANY';
473
- /**
474
- * 카드 번호의 마지막 4자리예요.
475
- */
476
- cardNum4Print: string;
477
- /**
478
- * 카드 BIN 번호예요.
479
- */
480
- cardBinNumber: string;
481
- }
482
- /**
483
- * @public
484
- * @category 토스페이
485
- * @name TossMoneyExecutePaymentResult
486
- * @description 토스머니로 결제 요청을 실행한 뒤 돌아오는 결제 결과 객체예요. 결제 승인 여부, 결제된 금액, 주문 정보 등을 담고 있어요.
487
- * @property {'TOSS_MONEY'} payMethod 결제 수단이에요.
488
- * @property {number} code 결제 요청의 결과 코드예요.
489
- * @property {'LIVE' | 'TEST'} mode 현재 결제 환경이에요.
490
- * @property {string} orderNo 주문번호예요.
491
- * @property {number} amount 총 결제 금액이에요.
492
- * @property {string} approvalTime 결제가 승인된 시간이에요. (ISO 8601 형식)
493
- * @property {string} stateMsg 결제 상태 메시지예요.
494
- * @property {number} discountedAmount 적용된 할인 금액이에요.
495
- * @property {number} paidAmount 실제 결제된 금액이에요.
496
- * @property {string} payToken 결제 요청 시 사용한 Pay 토큰이에요.
497
- * @property {string} transactionId 거래 ID예요.
498
- * @property {string} cashReceiptMgtKey 현금영수증 관리번호 식별값이에요.
499
- * @property {string} accountBankName 결제된 은행의 코드예요.
500
- * @property {string} accountNumber 결제된 계좌번호예요.
501
- */
502
- interface TossMoneyExecutePaymentResult {
503
- /**
504
- * 결제에 사용된 결제 수단이에요.
505
- */
506
- payMethod: 'TOSS_MONEY';
507
- /**
508
- * 결제 요청의 결과 코드예요.
509
- */
510
- code: number;
511
- /**
512
- * 현재 결제 환경이에요.
513
- *
514
- * - `LIVE`: 실제 환경
515
- * - `TEST`: 테스트 환경
516
- */
517
- mode: 'LIVE' | 'TEST';
518
- /**
519
- * 결제 승인된 상품의 주문번호예요.
520
- */
521
- orderNo: string;
522
- /**
523
- * 결제 승인된 상품의 총 결제 금액이에요.
524
- */
525
- amount: number;
526
- /**
527
- * 결제가 승인된 시간이에요. (ISO 8601 형식)
528
- */
529
- approvalTime: string;
530
- /**
531
- * 결제 상태 메시지예요.
532
- */
533
- stateMsg: string;
534
- /**
535
- * 적용된 할인 금액이에요.
536
- */
537
- discountedAmount: number;
538
- /**
539
- * 실제 결제 승인된 금액이에요.
540
- */
541
- paidAmount: number;
542
- /**
543
- * 결제 요청 시 사용한 Pay 토큰이에요.
544
- */
545
- payToken: string;
546
- /**
547
- * 거래 ID예요.
548
- */
549
- transactionId: string;
550
- /**
551
- * 현금영수증 관리번호 식별값이에요.
552
- */
553
- cashReceiptMgtKey: string;
554
- /**
555
- * 결제된 은행의 코드예요.
556
- */
557
- accountBankName: string;
558
- /**
559
- * 결제된 계좌번호예요.
560
- */
561
- accountNumber: string;
562
- }
563
- /**
564
- * @public
565
- * @category 토스페이
566
- * @name executePayment
567
- * @description 구매자가 결제를 시도하면, 먼저 결제 정보를 생성하고 인증을 받아요. 이때 결제 상태는 '대기' 중이에요. 이후 결제를 실제로 승인하려면 주어진 주문번호와 결제 토큰을 사용해서 이 함수로 생성된 결제를 승인해요. 결제 승인이 완료되면, 구매자의 결제 수단(예: 카드, 계좌)에서 실제로 금액이 출금돼요. 이 함수를 호출하지 않으면 결제가 자동으로 만료되고, 출금도 발생하지 않아요.
568
- *
569
- * @param {ExecutePaymentOptions} options 결제를 실행할 때 필요한 옵션이에요.
570
- * @param {string} options.orderNo 결제를 생성할 때 사용한 주문번호예요.
571
- * @param {string} options.payToken 결제 인증 과정에서 전달받은 결제 토큰이에요. 결제를 실행할 때 사용해요.
572
- * @returns {Promise<CardExecutePaymentResult | TossMoneyExecutePaymentResult>} 결제 결과 객체를 반환해요. 자세한 내용은 [카드 결제 결과](/react-native/reference/framework/토스페이/CardExecutePaymentResult.html) 또는 [토스머니 결제 결과](/react-native/reference/framework/토스페이/TossMoneyExecutePaymentResult.html)를 참고하세요.
573
- *
574
- * @example
575
- *
576
- * ### 카드 결제 실행하기
577
- *
578
- * ```tsx
579
- * import { TossPay } from '@apps-in-toss/framework';
580
- *
581
- * async function handlePayment() {
582
- * try {
583
- * const payToken = 'PAY_TOKEN_12345'; // 결제 인증 후 받은 토큰
584
- *
585
- * const result = await TossPay.executePayment({
586
- * orderNo: 'ORDER_12345',
587
- * payToken,
588
- * });
589
- *
590
- * console.log('결제가 완료되었어요:', result);
591
- * } catch (error) {
592
- * console.error('결제에 실패했어요:', error);
593
- * }
594
- * }
595
- * ```
596
- */
597
- declare function executePayment(options: ExecutePaymentOptions): Promise<CardExecutePaymentResult | TossMoneyExecutePaymentResult>;
598
-
599
- /**
600
- * @public
601
- * @category 클립보드
602
- * @name setClipboardText
603
- * @description 텍스트를 클립보드에 복사해서 사용자가 다른 곳에 붙여 넣기 할 수 있어요.
604
- * @param {Promise<void>} text - 클립보드에 복사할 텍스트예요. 문자열 형식으로 입력해요.
605
- *
606
- * @example
607
- * ### 텍스트를 클립보드에 복사하기
608
- *
609
- * ```tsx
610
- * import { Button } from 'react-native';
611
- * import { setClipboardText } from '@apps-in-toss/framework';
612
- *
613
- * // '복사' 버튼을 누르면 "복사할 텍스트"가 클립보드에 복사돼요.
614
- * function CopyButton() {
615
- * const handleCopy = async () => {
616
- * try {
617
- * await setClipboardText('복사할 텍스트');
618
- * console.log('텍스트가 복사됐어요!');
619
- * } catch (error) {
620
- * console.error('텍스트 복사에 실패했어요:', error);
621
- * }
622
- * };
623
- *
624
- * return <Button title="복사" onPress={handleCopy} />;
625
- * }
626
- * ```
627
- */
628
- declare function setClipboardText(text: string): Promise<void>;
629
-
630
- /**
631
- * @public
632
- * @category 클립보드
633
- * @name getClipboardText
634
- * @description 클립보드에 저장된 텍스트를 가져오는 함수예요. 복사된 텍스트를 읽어서 다른 작업에 활용할 수 있어요.
635
- * @returns {Promise<string>} - 클립보드에 저장된 텍스트를 반환해요. 클립보드에 텍스트가 없으면 빈 문자열을 반환해요.
636
- *
637
- * @example
638
- * ### 클립보드의 텍스트 가져오기
639
- *
640
- * ```tsx
641
- * import React, { useState } from 'react';
642
- * import { View, Text, Button } from 'react-native';
643
- * import { getClipboardText } from '@apps-in-toss/framework';
644
- *
645
- * // '붙여넣기' 버튼을 누르면 클립보드에 저장된 텍스트를 가져와 화면에 표시해요.
646
- * function PasteButton() {
647
- * const [text, setText] = useState('');
648
- *
649
- * const handlePress = async () => {
650
- * try {
651
- * const clipboardText = await getClipboardText();
652
- * setText(clipboardText || '클립보드에 텍스트가 없어요.');
653
- * } catch (error) {
654
- * console.error('클립보드에서 텍스트를 가져오지 못했어요:', error);
655
- * }
656
- * };
657
- *
658
- * return (
659
- * <View>
660
- * <Text>{text}</Text>
661
- * <Button title="붙여넣기" onPress={handlePress} />
662
- * </View>
663
- * );
664
- * }
665
- * ```
666
- */
667
- declare function getClipboardText(): Promise<string>;
668
-
669
- /**
670
- * 연락처 정보를 나타내는 타입이에요.
671
- */
672
- interface ContactEntity {
673
- /** 연락처 이름이에요. */
674
- name: string;
675
- /** 연락처 전화번호로, 문자열 형식이에요. */
676
- phoneNumber: string;
677
- }
678
- /**
679
- * @public
680
- * @category 연락처
681
- * @name fetchContacts
682
- * @description 사용자의 연락처 목록을 페이지 단위로 가져오는 함수예요.
683
- * @param size - 한 번에 가져올 연락처 개수예요. 예를 들어, 10을 전달하면 최대 10개의 연락처를 가져와요.
684
- * @param offset - 가져올 연락처의 시작 지점이에요. 처음 호출할 때는 `0`을 전달해야 해요. 이후에는 이전 호출에서 반환된 `nextOffset` 값을 사용해요.
685
- * @param query - 추가적인 필터링 옵션이에요.
686
- * @param query.contains - 이름에 특정 문자열이 포함된 연락처만 가져오고 싶을 때 사용해요. 이 값을 전달하지 않으면 모든 연락처를 가져와요.
687
- * @returns {Promise<{result: { name: string; phoneNumber: string }[]; nextOffset: number | null; done: boolean}>}
688
- * 연락처 목록과 페이지네이션 정보를 포함한 객체를 반환해요.
689
- * - `result`: 가져온 연락처 목록이에요.
690
- * - `nextOffset`: 다음 호출에 사용할 오프셋 값이에요. 더 가져올 연락처가 없으면 `null`이에요.
691
- * - `done`: 모든 연락처를 다 가져왔는지 여부를 나타내요. 모두 가져왔다면 `true`예요.
692
- *
693
- * @signature
694
- * ```typescript
695
- * function fetchContacts({ size, offset, query }: {
696
- * size: number;
697
- * offset: number;
698
- * query?: {
699
- * contains?: string;
700
- * };
701
- * }): Promise<{
702
- * result: ContactEntity[];
703
- * nextOffset: number | null;
704
- * done: boolean;
705
- * }>;
706
- * ```
707
- *
708
- * @example
709
- * ### 특정 문자열이 포함된 연락처 목록 가져오기
710
- *
711
- * ```tsx
712
- * import React, { useState } from 'react';
713
- * import { View, Text, Button } from 'react-native';
714
- * import { fetchContacts, ContactEntity } from '@apps-in-toss/framework';
715
- *
716
- * // 특정 문자열을 포함한 연락처 목록을 가져와 화면에 표시하는 컴포넌트
717
- * function ContactsList() {
718
- * const [contacts, setContacts] = useState<{
719
- * result: ContactEntity[];
720
- * nextOffset: number | null;
721
- * done: boolean;
722
- * }>({
723
- * result: [],
724
- * nextOffset: null,
725
- * done: false,
726
- * });
727
- *
728
- * const handlePress = async () => {
729
- * try {
730
- * if (contacts.done) {
731
- * console.log('모든 연락처를 가져왔어요.');
732
- * return;
733
- * }
734
- *
735
- * const response = await fetchContacts({
736
- * size: 10,
737
- * offset: contacts.nextOffset ?? 0,
738
- * query: { contains: '김' },
739
- * });
740
- * setContacts((prev) => ({
741
- * result: [...prev.result, ...response.result],
742
- * nextOffset: response.nextOffset,
743
- * done: response.done,
744
- * }));
745
- * } catch (error) {
746
- * console.error('연락처를 가져오는 데 실패했어요:', error);
747
- * }
748
- * };
749
- *
750
- * return (
751
- * <View>
752
- * {contacts.result.map((contact, index) => (
753
- * <Text key={index}>{contact.name}: {contact.phoneNumber}</Text>
754
- * ))}
755
- * <Button
756
- * title={contacts.done ? '모든 연락처를 가져왔어요.' : '다음 연락처 가져오기'}
757
- * disabled={contacts.done}
758
- * onPress={handlePress}
759
- * />
760
- * </View>
761
- * );
762
- * }
763
- * ```
764
- */
765
- declare function fetchContacts({ size, offset, query, }: {
766
- size: number;
767
- offset: number;
768
- query?: {
769
- contains?: string;
8
+ import { WebViewProps as WebViewProps$1 } from '@granite-js/native/react-native-webview';
9
+ import { StartUpdateLocationOptions, Location } from '@apps-in-toss/native-modules';
10
+ export * from '@apps-in-toss/native-modules';
11
+
12
+ interface AppsInTossProps {
13
+ context: GraniteProps['context'];
14
+ analytics?: {
15
+ /**
16
+ * 분석 로그 출력 여부를 설정해요. 기본값은 `__DEV__` 예요.
17
+ */
18
+ debug?: boolean;
770
19
  };
771
- }): Promise<{
772
- result: ContactEntity[];
773
- nextOffset: number | null;
774
- done: boolean;
775
- }>;
776
-
777
- /**
778
- * 앨범 사진을 조회할 때 사용하는 옵션 타입이에요.
779
- */
780
- interface FetchAlbumPhotosOptions {
781
- /** 가져올 사진의 최대 개수를 설정해요. 숫자를 입력하고 기본값은 10이에요. */
782
- maxCount?: number;
783
- /** 사진의 최대 폭을 제한해요. 단위는 픽셀이고 기본값은 1024이에요. */
784
- maxWidth?: number;
785
- /** 이미지를 base64 형식으로 반환할지 설정해요. 기본값은 `false`예요. */
786
- base64?: boolean;
787
20
  }
788
- /**
789
- * @public
790
- * @category 사진
791
- * @name fetchAlbumPhotos
792
- * @description
793
- * 사용자의 앨범에서 사진 목록을 불러오는 함수예요.
794
- * 최대 개수와 해상도를 설정할 수 있고 갤러리 미리보기, 이미지 선택 기능 등에 활용할 수 있어요.
795
- *
796
- * @param options - 조회 옵션을 담은 객체예요.
797
- * @param {number} [options.maxCount=10] 가져올 사진의 최대 개수를 설정해요. 숫자로 입력하며 기본값은 10이에요.
798
- * @param {number} [options.maxWidth=1024] 사진의 최대 폭을 제한해요. 단위는 픽셀이며 기본값은 `1024`이에요.
799
- * @param {boolean} [options.base64=false] 이미지를 base64 형식으로 반환할지 설정해요. 기본값은 `false`예요.
800
- * @returns {Promise<ImageResponse[]>}
801
- * 앨범 사진의 고유 ID와 데이터 URI를 포함한 배열을 반환해요.
802
- *
803
- * @example
804
- * ### 사진의 최대 폭을 360px로 제한하여 가져오기
805
- *
806
- * ```tsx
807
- * import React, { useState } from 'react';
808
- * import { View, Image, Button } from 'react-native';
809
- * import { fetchAlbumPhotos } from '@apps-in-toss/framework';
810
- *
811
- * const base64 = true;
812
- *
813
- * // 앨범 사진 목록을 가져와 화면에 표시하는 컴포넌트
814
- * function AlbumPhotoList() {
815
- * const [albumPhotos, setAlbumPhotos] = useState([]);
816
- *
817
- * const handlePress = async () => {
818
- * try {
819
- * const response = await fetchAlbumPhotos({
820
- * base64,
821
- * maxWidth: 360,
822
- * });
823
- * setAlbumPhotos((prev) => ([...prev, ...response]));
824
- * } catch (error) {
825
- * console.error('앨범을 가져오는 데 실패했어요:', error);
826
- * }
827
- * };
828
- *
829
- * return (
830
- * <View>
831
- * {albumPhotos.map((image) => {
832
- * // base64 형식으로 반환된 이미지를 표시하려면 데이터 URL 스키마 Prefix를 붙여야해요.
833
- * const imageUri = base64 ? 'data:image/jpeg;base64,' + image.dataUri : image.dataUri;
834
- *
835
- * return <Image source={{ uri: imageUri }} key={image.id} />;
836
- * })}
837
- * <Button title="앨범 가져오기" onPress={handlePress} />
838
- * </View>
839
- * );
840
- * }
841
- * ```
842
- */
843
- declare function fetchAlbumPhotos(options: FetchAlbumPhotosOptions): Promise<ImageResponse[]>;
844
-
845
- interface GetCurrentLocationOptions {
846
- /**
847
- * 위치 정보를 가져올 정확도 수준이에요.
848
- */
849
- accuracy: Accuracy;
850
- }
851
- /**
852
- * @public
853
- * @category 위치 정보
854
- * @name getCurrentLocation
855
- * @description 디바이스의 현재 위치 정보를 가져오는 함수예요.
856
- * 위치 기반 서비스를 구현할 때 사용되고, 한 번만 호출되어 현재 위치를 즉시 반환해요.
857
- * 예를 들어 지도 앱에서 사용자의 현재 위치를 한 번만 가져올 때, 날씨 앱에서 사용자의 위치를 기반으로 기상 정보를 제공할 때, 매장 찾기 기능에서 사용자의 위치를 기준으로 가까운 매장을 검색할 때 사용하면 유용해요.
858
- *
859
- * @param {GetCurrentLocationOptions} options 위치 정보를 가져올 때 사용하는 옵션 객체예요.
860
- * @param {Accuracy} [options.accuracy] 위치 정보의 정확도 수준이에요. 정확도는 `Accuracy` 타입으로 설정돼요.
861
- * @returns {Promise<Location>} 디바이스의 위치 정보가 담긴 객체를 반환해요. 자세한 내용은 [Location](/react-native/reference/framework/Types/Location.html)을 참고해주세요.
862
- *
863
- * @example
864
- * ### 디바이스의 현재 위치 정보 가져오기
865
- *
866
- * ```tsx
867
- * import React, { useState } from 'react';
868
- * import { View, Text, Button } from 'react-native';
869
- * import { getCurrentLocation } from '@apps-in-toss/framework';
870
- *
871
- * // 현재 위치 정보를 가져와 화면에 표시하는 컴포넌트
872
- * function CurrentPosition() {
873
- * const [position, setPosition] = useState(null);
874
- *
875
- * const handlePress = async () => {
876
- * try {
877
- * const response = await getCurrentLocation({ accuracy: Accuracy.Balanced });
878
- * setPosition(response);
879
- * } catch (error) {
880
- * console.error('위치 정보를 가져오는 데 실패했어요:', error);
881
- * }
882
- * };
883
- *
884
- * return (
885
- * <View>
886
- * {position ? (
887
- * <Text>위치: {position.coords.latitude}, {position.coords.longitude}</Text>
888
- * ) : (
889
- * <Text>위치 정보를 아직 가져오지 않았어요</Text>
890
- * )}
891
- * <Button title="현재 위치 정보 가져오기" onPress={handlePress} />
892
- * </View>
893
- * );
894
- * }
895
- * ```
896
- */
897
- declare function getCurrentLocation(options: GetCurrentLocationOptions): Promise<Location>;
898
-
899
- interface OpenCameraOptions {
900
- /**
901
- * 이미지를 Base64 형식으로 반환할지 여부를 나타내는 불리언 값이에요.
902
- *
903
- * 기본값: `false`.
904
- */
905
- base64?: boolean;
906
- /**
907
- * 이미지의 최대 너비를 나타내는 숫자 값이에요.
908
- *
909
- * 기본값: `1024`.
910
- */
911
- maxWidth?: number;
912
- }
913
- /**
914
- * @public
915
- * @category 카메라
916
- * @name openCamera
917
- * @description 카메라를 실행해서 촬영된 이미지를 반환하는 함수예요.
918
- * @param {OpenCameraOptions} options - 카메라 실행 시 사용되는 옵션 객체예요.
919
- * @param {boolean} [options.base64=false] - 이미지를 Base64 형식으로 반환할지 여부를 나타내는 불리언 값이에요. 기본값은 `false`예요. `true`로 설정하면 `dataUri` 대신 Base64 인코딩된 문자열을 반환해요.
920
- * @param {number} [options.maxWidth=1024] - 이미지의 최대 너비를 나타내는 숫자 값이에요. 기본값은 `1024`예요.
921
- * @returns {Promise<ImageResponse>}
922
- * 촬영된 이미지 정보를 포함한 객체를 반환해요. 반환 객체의 구성은 다음과 같아요:
923
- * - `id`: 이미지의 고유 식별자예요.
924
- * - `dataUri`: 이미지 데이터를 표현하는 데이터 URI예요.
925
- *
926
- * @example
927
- * ### 카메라 실행 후 촬영된 사진 가져오기
928
- *
929
- * ```tsx
930
- * import React, { useState } from 'react';
931
- * import { View, Text, Button, Image } from 'react-native';
932
- * import { openCamera } from '@apps-in-toss/framework';
933
- *
934
- * const base64 = true;
935
- *
936
- * // 카메라를 실행하고 촬영된 이미지를 화면에 표시하는 컴포넌트
937
- * function Camera() {
938
- * const [image, setImage] = useState(null);
939
- *
940
- * const handlePress = async () => {
941
- * try {
942
- * const response = await openCamera({ base64 });
943
- * setImage(response);
944
- * } catch (error) {
945
- * console.error('사진을 가져오는 데 실패했어요:', error);
946
- * }
947
- * };
948
- *
949
- * // base64 형식으로 반환된 이미지를 표시하려면 데이터 URL 스키마 Prefix를 붙여야해요.
950
- * const imageUri = base64 ? 'data:image/jpeg;base64,' + image.dataUri : image.dataUri;
951
- *
952
- * return (
953
- * <View>
954
- * {image ? (
955
- * <Image source={{ uri: imageUri }} style={{ width: 200, height: 200 }} />
956
- * ) : (
957
- * <Text>사진이 없어요</Text>
958
- * )}
959
- * <Button title="사진 촬영하기" onPress={handlePress} />
960
- * </View>
961
- * );
962
- * }
963
- * ```
964
- */
965
- declare function openCamera(options?: OpenCameraOptions): Promise<ImageResponse>;
21
+ declare function registerApp(container: ComponentType<PropsWithChildren<InitialProps>>, { context, analytics }: AppsInTossProps): (initialProps: InitialProps) => JSX.Element;
966
22
 
967
- /**
968
- * @public
969
- * @category 로그인
970
- * @name appLogin
971
- * @description 토스 인증으로 로그인해요. 로그인이 완료되면 다시 토스 앱으로 이동해요.
972
- * @example
973
- *
974
- * ### 토스 인증을 통해 로그인을 하는 예제
975
- *
976
- * ```tsx
977
- * import { Button } from 'react-native';
978
- * import { appLogin } from '@apps-in-toss/framework';
979
- *
980
- * function Page() {
981
- * const handleLogin = async () => {
982
- * const { authorizationCode, referrer } = await appLogin();
983
- *
984
- * // 획득한 인가 코드(`authorizationCode`)와 `referrer`를 서버로 전달해요.
985
- * }
986
- *
987
- * return <Button title="로그인" onPress={handleLogin} />;
988
- * }
989
- * ```
990
- */
991
- declare function appLogin(): Promise<{
992
- authorizationCode: string;
993
- referrer: "DEFAULT" | "SANDBOX";
994
- }>;
995
-
996
- /**
997
- * @public
998
- * @category 환경 확인
999
- * @kind function
1000
- * @name getOperationalEnvironment
1001
- * @description
1002
- * 현재 실행 중인 앱의 운영 환경을 확인해요.
1003
- * 토스 앱에서 실행 중이라면 `'toss'`, 샌드박스 환경에서 실행 중이라면 `'sandbox'`를 반환해요.
1004
- *
1005
- * 운영 환경은 앱이 실행되는 컨텍스트를 의미하며, 특정 기능의 사용 가능 여부를 판단하는 데 활용할 수 있어요.
1006
- *
1007
- * @returns {'toss' | 'sandbox'}
1008
- * 현재 운영 환경을 나타내는 문자열이에요.
1009
- * - `'toss'`: 토스 앱에서 실행 중이에요.
1010
- * - `'sandbox'`: 샌드박스 환경에서 실행 중이에요.
1011
- *
1012
- * @example
1013
- * ### 현재 운영 환경 확인하기
1014
- *
1015
- * ```tsx
1016
- * import { getOperationalEnvironment } from '@apps-in-toss/framework';
1017
- * import { Text } from 'react-native';
1018
- *
1019
- * function EnvironmentInfo() {
1020
- * const environment = getOperationalEnvironment();
1021
- *
1022
- * return (
1023
- * <Text>현재 운영 환경: {environment}</Text>
1024
- * );
1025
- * }
1026
- * ```
1027
- */
1028
- declare function getOperationalEnvironment(): 'toss' | 'sandbox';
1029
-
1030
- /**
1031
- * @public
1032
- * @category 환경 확인
1033
- * @name getTossAppVersion
1034
- * @description 토스 앱 버전을 가져옵니다. 예를 들어, `5.206.0`과 같은 형태로 반환돼요. 토스 앱 버전을 로그로 남기거나, 특정 기능이 특정 버전 이상에서만 실행될 때 사용돼요.
1035
- * @signature
1036
- * ```typescript
1037
- * function getTossAppVersion(): string
1038
- * ```
1039
- *
1040
- * @returns {string} 토스 앱 버전
1041
- *
1042
- * @example
1043
- *
1044
- *
1045
- * ### 토스 앱 버전 확인하기
1046
- *
1047
- * ```tsx
1048
- * import { getTossAppVersion } from '@apps-in-toss/framework';
1049
- * import { Text } from 'react-native';
1050
- *
1051
- * export function TossAppVersionPage() {
1052
- * return (
1053
- * <Text>{getTossAppVersion()}</Text>
1054
- * )
1055
- * }
1056
- * ```
1057
- */
1058
- declare function getTossAppVersion(): string;
1059
-
1060
- /**
1061
- * @public
1062
- * @category 환경 확인
1063
- * @kind function
1064
- * @name getDeviceId
1065
- * @description
1066
- * 사용 중인 기기의 고유 식별자를 문자열로 반환해요.
1067
- *
1068
- * 이 함수는 현재 사용 중인 기기의 고유 식별자를 문자열로 반환해요. 기기별로 설정이나 데이터를 저장하거나 사용자의 기기를 식별해서 로그를 기록하고 분석하는 데 사용할 수 있어요. 같은 사용자의 여러 기기를 구분하는 데도 유용해요.
1069
- *
1070
- * @returns {string} 기기의 고유 식별자를 나타내는 문자열이에요.
1071
- *
1072
- * @example
1073
- * ### 기기 고유 식별자 가져오기
1074
- *
1075
- * ```tsx
1076
- * import { getDeviceId } from '@apps-in-toss/framework';
1077
- * import { Text } from 'react-native';
1078
- *
1079
- * function MyPage() {
1080
- * const id = getDeviceId();
1081
- *
1082
- * return (
1083
- * <Text>사용자의 기기 고유 식별자: {id}</Text>
1084
- * );
1085
- * }
1086
- * ```
1087
- */
1088
- declare function getDeviceId(): string;
1089
-
1090
- /**
1091
- * @public
1092
- * @category 저장소
1093
- * @name getItem
1094
- * @description 모바일 앱의 로컬 저장소에서 문자열 데이터를 가져와요. 주로 앱이 종료되었다가 다시 시작해도 데이터가 유지되어야 하는 경우에 사용해요.
1095
- * @param {string} key - 가져올 아이템의 키를 입력해요.
1096
- * @returns {Promise<string | null>} 지정한 키에 저장된 문자열 값을 반환해요. 값이 없으면 `null`을 반환해요.
1097
- * @example
1098
- *
1099
- * ### `my-key`에 저장된 아이템 가져오기
1100
- * ```ts
1101
- * const value = await Storage.getItem('my-key');
1102
- * console.log(value); // 'value'
1103
- * ```
1104
- */
1105
- declare function getItem(key: string): Promise<string | null>;
1106
- /**
1107
- * @public
1108
- * @category 저장소
1109
- * @name setItem
1110
- * @description 모바일 앱의 로컬 저장소에 문자열 데이터를 저장해요. 주로 앱이 종료되었다가 다시 시작해도 데이터가 유지되어야 하는 경우에 사용해요.
1111
- * @param {string} key - 저장할 아이템의 키를 입력해요.
1112
- * @param {string} value - 저장할 아이템의 값을 입력해요.
1113
- * @returns {Promise<void>} 아이템을 성공적으로 저장하면 아무 값도 반환하지 않아요.
1114
- * @example
1115
- *
1116
- * ### `my-key`에 아이템 저장하기
1117
- * ```ts
1118
- * import { Storage } from '@apps-in-toss/framework';
1119
- *
1120
- * await Storage.setItem('my-key', 'value');
1121
- * ```
1122
- */
1123
- declare function setItem(key: string, value: string): Promise<void>;
1124
- /**
1125
- * @public
1126
- * @category 저장소
1127
- * @name removeItem
1128
- * @description 모바일 앱의 로컬 저장소에서 특정 키에 해당하는 아이템을 삭제해요.
1129
- * @param {string} key - 삭제할 아이템의 키를 입력해요.
1130
- * @returns {Promise<void>} 아이템을 삭제하면 아무 값도 반환하지 않아요.
1131
- * @example
1132
- *
1133
- * ### `my-key`에 저장된 아이템 삭제하기
1134
- * ```ts
1135
- * import { Storage } from '@apps-in-toss/framework';
1136
- *
1137
- * await Storage.removeItem('my-key');
1138
- * ```
1139
- */
1140
- declare function removeItem(key: string): Promise<void>;
1141
- /**
1142
- * @public
1143
- * @category 저장소
1144
- * @name clearItems
1145
- * @description 모바일 앱의 로컬 저장소의 모든 아이템을 삭제해요.
1146
- * @returns {Promise<void>} 아이템을 삭제하면 아무 값도 반환하지 않고 저장소가 초기화돼요.
1147
- * @example
1148
- *
1149
- * ### 저장소 초기화하기
1150
- * ```ts
1151
- * import { Storage } from '@apps-in-toss/framework';
1152
- *
1153
- * await Storage.clearItems();
1154
- * ```
1155
- */
1156
- declare function clearItems(): Promise<void>;
1157
- /**
1158
- * @public
1159
- * @category 저장소
1160
- * @name Storage
1161
- * @description 네이티브의 저장소를 사용해요.
1162
- * @property {typeof getItem} [getItem] 모바일 앱의 로컬 저장소에서 아이템을 가져오는 함수예요. 자세한 내용은 [getItem](/react-native/reference/framework/저장소/getItem)을 참고하세요.
1163
- * @property {typeof setItem} [setItem] 모바일 앱의 로컬 저장소에 아이템을 저장하는 함수예요. 자세한 내용은 [setItem](/react-native/reference/framework/저장소/setItem)을 참고하세요.
1164
- * @property {typeof removeItem} [removeItem] 모바일 앱의 로컬 저장소에서 아이템을 삭제하는 함수예요. 자세한 내용은 [removeItem](/react-native/reference/framework/저장소/removeItem)을 참고하세요.
1165
- * @property {typeof clearItems} [clearItems] 모바일 앱의 로컬 저장소를 초기화하는 함수예요. 자세한 내용은 [clearItems](/react-native/reference/framework/저장소/clearItems)을 참고하세요.
1166
- */
1167
- declare const Storage: {
1168
- getItem: typeof getItem;
1169
- setItem: typeof setItem;
1170
- removeItem: typeof removeItem;
1171
- clearItems: typeof clearItems;
1172
- };
1173
-
1174
- /**
1175
- * @public
1176
- * @category 토스페이
1177
- * @name TossPay
1178
- * @description 토스페이 결제 관련 함수를 모아둔 객체예요.
1179
- * @property {typeof checkoutPayment} [checkoutPayment] 토스페이 결제를 생성하는 함수예요. 자세한 내용은 [checkoutPayment](/react-native/reference/framework/토스페이/checkoutPayment)를 참고하세요.
1180
- * @property {typeof executePayment} [executePayment] 토스페이 결제를 실행하는 함수예요. 자세한 내용은 [executePayment](/react-native/reference/framework/토스페이/executePayment)를 참고하세요.
1181
- */
1182
- declare const TossPay: {
1183
- checkoutPayment: typeof checkoutPayment;
1184
- executePayment: typeof executePayment;
23
+ declare const AppsInToss: {
24
+ registerApp: typeof registerApp;
1185
25
  };
1186
26
 
1187
27
  type GameWebViewProps$1 = WebViewProps$1;
@@ -1256,4 +96,11 @@ declare const env: {
1256
96
  getDeploymentId: () => string | undefined;
1257
97
  };
1258
98
 
1259
- export { Accuracy, AppsInToss, type ContactEntity, type ExternalWebViewProps, type FetchAlbumPhotosOptions, type GameWebViewProps, type GetCurrentLocationOptions, type ImageResponse, type Location, type LocationCoords, type OpenCameraOptions, type PartnerWebViewProps, type StartUpdateLocationOptions, type StartUpdateLocationSubscription, Storage, TossPay, type UpdateLocationEventEmitter, type UseGeolocationOptions, WebView, type WebViewProps, appLogin, env, fetchAlbumPhotos, fetchContacts, getClipboardText, getCurrentLocation, getDeviceId, getOperationalEnvironment, getTossAppVersion, openCamera, setClipboardText, startUpdateLocation, useGeolocation };
99
+ declare const Analytics: {
100
+ init: (options: _apps_in_toss_analytics.AnalyticsConfig) => void;
101
+ Impression: ({ enabled, impression: impressionType, ...props }: _apps_in_toss_analytics.LoggingImpressionProps) => react_jsx_runtime.JSX.Element;
102
+ Press: react.ForwardRefExoticComponent<_apps_in_toss_analytics.LoggingPressProps & react.RefAttributes<unknown>>;
103
+ Area: ({ children, params: _params, ...props }: _apps_in_toss_analytics.LoggingAreaProps) => react_jsx_runtime.JSX.Element;
104
+ };
105
+
106
+ export { Analytics, AppsInToss, type ExternalWebViewProps, type GameWebViewProps, type PartnerWebViewProps, type UseGeolocationOptions, WebView, type WebViewProps, env, useGeolocation };