@apps-in-toss/framework 0.0.36 → 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.
@@ -0,0 +1 @@
1
+ export { default } from '@apps-in-toss/native-modules/bridges-meta.json';
@@ -0,0 +1,183 @@
1
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-4a79bcc1be/0/cache/@apps-in-toss-native-modules-file-24bf1cdf34-d3a2a29b7c.zip/node_modules/@apps-in-toss/native-modules/dist/bridges-meta.json
2
+ var bridges_meta_default = [
3
+ {
4
+ identifier: "closeView",
5
+ dts: "/**\n * @public\n * @category \uD654\uBA74 \uC81C\uC5B4\n * @kind function\n * @name closeView\n * @description \uD604\uC7AC \uD654\uBA74\uC744 \uB2EB\uB294 \uD568\uC218\uC5D0\uC694. \uC608\uB97C \uB4E4\uC5B4, \"\uB2EB\uAE30\" \uBC84\uD2BC\uC744 \uB20C\uB7EC\uC11C \uC11C\uBE44\uC2A4\uB97C \uC885\uB8CC\uD560 \uB54C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC5B4\uC694.\n * @returns {Promise<void>}\n *\n * @example\n * ### \uB2EB\uAE30 \uBC84\uD2BC\uC744 \uB20C\uB7EC \uD654\uBA74 \uB2EB\uAE30\n *\n * ```tsx\n * import { Button } from 'react-native';\n * import { closeView } from 'react-native-bedrock';\n *\n * function CloseButton() {\n * return <Button title=\"\uB2EB\uAE30\" onPress={closeView} />;\n * }\n * ```\n */\nexport declare function closeView(): Promise<void>;\n\nexport {};\n"
6
+ },
7
+ {
8
+ identifier: "generateHapticFeedback",
9
+ dts: 'export type HapticFeedbackType = "tickWeak" | "tap" | "tickMedium" | "softMedium" | "basicWeak" | "basicMedium" | "success" | "error" | "wiggle" | "confetti";\n/**\n * @public\n * @category \uC778\uD130\uB809\uC158\n * @name HapticFeedbackOptions\n * @description\n * generateHapticFeedback \uD568\uC218\uC5D0 \uC804\uB2EC\uD560 \uD585\uD2F1\uC9C4\uB3D9\uC758 \uD0C0\uC785\uC744 \uB098\uD0C0\uB0B4\uC694. \uC9C4\uB3D9\uD0C0\uC785\uC758 \uC885\uB958\uB294 \uB2E4\uC74C\uACFC \uAC19\uC544\uC694.\n * ```typescript\n * type HapticFeedbackType =\n * | "tickWeak"\n * | "tap"\n * | "tickMedium"\n * | "softMedium"\n * | "basicWeak"\n * | "basicMedium"\n * | "success"\n * | "error"\n * | "wiggle"\n * | "confetti";\n * ```\n * @typedef { type: HapticFeedbackType } HapticFeedbackOptions\n * @typedef { "tickWeak" | "tap" | "tickMedium" | "softMedium" | "basicWeak" | "basicMedium" | "success" | "error" | "wiggle" | "confetti" } HapticFeedbackType\n *\n */\nexport interface HapticFeedbackOptions {\n type: HapticFeedbackType;\n}\n/**\n * @public\n * @category \uC778\uD130\uB809\uC158\n * @name generateHapticFeedback\n * @description \uB514\uBC14\uC774\uC2A4\uC5D0 \uD585\uD2F1 \uC9C4\uB3D9\uC744 \uC77C\uC73C\uD0A4\uB294 \uD568\uC218\uC608\uC694. \uC608\uB97C \uB4E4\uC5B4, \uBC84\uD2BC \uD130\uCE58\uB098 \uD654\uBA74\uC804\uD658\uC5D0 \uB4DC\uB77C\uB9C8\uD2F1\uD55C \uD6A8\uACFC\uB97C \uC8FC\uACE0 \uC2F6\uC744 \uB54C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC5B4\uC694. [HapticFeedbackOptions](/react-native/reference/native-modules/\uC778\uD130\uB809\uC158/HapticFeedbackOptions.html)\uC5D0\uC11C \uC9C4\uB3D9\uD0C0\uC785\uC744 \uD655\uC778\uD574 \uBCF4\uC138\uC694.\n * @returns {void}\n *\n * @example\n * ### \uBC84\uD2BC\uC744 \uB20C\uB7EC \uD585\uD2F1 \uC77C\uC73C\uD0A4\uAE30\n *\n * ```tsx\n * import { Button } from \'react-native\';\n * import { generateHapticFeedback } from \'react-native-bedrock\';\n *\n * function GenerateHapticFeedback() {\n * return <Button title="\uD585\uD2F1" onPress={() => { generateHapticFeedback( { type: "tickWeak"}) }} />;\n * }\n * ```\n */\nexport declare function generateHapticFeedback(options: HapticFeedbackOptions): Promise<void>;\n\nexport {};\n'
10
+ },
11
+ {
12
+ identifier: "share",
13
+ dts: "/**\n * @public\n * @category \uACF5\uC720\n * @kind function\n * @name share\n * @description\n * \uC0AC\uC6A9\uC790\uAC00 \uCF58\uD150\uCE20\uB97C \uB2E4\uB978 \uC0AC\uB78C\uACFC \uACF5\uC720\uD560 \uC218 \uC788\uB3C4\uB85D \uB124\uC774\uD2F0\uBE0C \uACF5\uC720 \uC2DC\uD2B8\uB97C \uD45C\uC2DC\uD574\uC694.\n * `options.message` \uC18D\uC131\uC5D0 \uACF5\uC720\uD560 \uBA54\uC2DC\uC9C0\uB97C \uC804\uB2EC\uD558\uBA74, \uC0AC\uC6A9\uC790\uAC00 \uC120\uD0DD\uD560 \uC218 \uC788\uB294 \uC571 \uBAA9\uB85D\uC774 \uD45C\uC2DC\uB3FC\uC694.\n * \uC608\uB97C \uB4E4\uC5B4, \uC0AC\uC6A9\uC790\uAC00 \uD14D\uC2A4\uD2B8 \uBA54\uC2DC\uC9C0\uB97C \uACF5\uC720\uD558\uAC70\uB098 \uBA54\uBAA8 \uC571\uC5D0 \uC800\uC7A5\uD558\uB824\uACE0 \uD560 \uB54C \uC720\uC6A9\uD574\uC694.\n * @param {object} options - \uACF5\uC720\uD560 \uBA54\uC2DC\uC9C0\uB97C \uB2F4\uC740 \uAC1D\uCCB4\uC608\uC694.\n * @param {string} options.message - \uACF5\uC720\uD560 \uD14D\uC2A4\uD2B8 \uBB38\uC790\uC5F4\uC774\uC5D0\uC694. \uC608\uB97C \uB4E4\uC5B4, \"\uC548\uB155\uD558\uC138\uC694! \uC774 \uB0B4\uC6A9\uC744 \uACF5\uC720\uD569\uB2C8\uB2E4.\"\n *\n * @example\n * ### \uACF5\uC720\uD558\uAE30 \uAE30\uB2A5 \uAD6C\uD604\uD558\uAE30\n *\n * \uC544\uB798\uB294 \uBC84\uD2BC\uC744 \uD074\uB9AD\uD558\uBA74 \uBA54\uC2DC\uC9C0\uB97C \uACF5\uC720\uD558\uB294 \uAC04\uB2E8\uD55C \uC608\uC81C\uC608\uC694.\n *\n * ```tsx\n * import { share } from 'react-native-bedrock';\n * import { Button } from 'react-native';\n *\n * function MyPage() {\n * return (\n * <Button\n * title=\"\uACF5\uC720\"\n * onPress={() => share({ message: '\uACF5\uC720\uD560 \uBA54\uC2DC\uC9C0\uC785\uB2C8\uB2E4.' })}\n * />\n * );\n * }\n * ```\n */\nexport declare function share(message: {\n message: string;\n}): Promise<void>;\n\nexport {};\n"
14
+ },
15
+ {
16
+ identifier: "setSecureScreen",
17
+ dts: "/**\n * @public\n * @name setSecureScreen\n * @category \uD654\uBA74 \uC81C\uC5B4\n * @kind function\n * @description\n * \uD654\uBA74 \uCEA1\uCCD0\uB97C \uCC28\uB2E8\uD574\uC11C \uBBFC\uAC10\uD55C \uC815\uBCF4\uAC00 \uC720\uCD9C\uB418\uC9C0 \uC54A\uB3C4\uB85D \uBCF4\uD638\uD558\uAC70\uB098, \uD544\uC694\uD560 \uACBD\uC6B0 \uCEA1\uCCD0\uB97C \uD5C8\uC6A9\uD558\uB3C4\uB85D \uC124\uC815\uD574\uC694. \uC608\uB97C \uB4E4\uC5B4 \uBCF4\uC548\uC774 \uC911\uC694\uD55C \uD654\uBA74\uC5D0\uC11C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC5B4\uC694.\n *\n * @param {object} options \uD654\uBA74 \uCEA1\uCCD0 \uC124\uC815 \uC635\uC158\uC774\uC5D0\uC694.\n * @param {boolean} options.enabled \uD654\uBA74 \uCEA1\uCCD0\uB97C \uCC28\uB2E8\uD560\uC9C0 \uC5EC\uBD80\uB97C \uC124\uC815\uD574\uC694. `true`\uBA74 \uCEA1\uCCD0\uB97C \uCC28\uB2E8\uD558\uACE0, `false`\uBA74 \uD5C8\uC6A9\uD574\uC694.\n * @returns {enabled: boolean} \uD604\uC7AC \uC124\uC815\uB41C \uCEA1\uCCD0 \uCC28\uB2E8 \uC0C1\uD0DC\uB97C \uBC18\uD658\uD574\uC694.\n *\n * @example\n * ### \uCEA1\uCCD0 \uD5C8\uC6A9 \uC0C1\uD0DC \uBCC0\uACBD\uD558\uAE30\n *\n * ```tsx\n * import { Button } from 'react-native';\n * import { setSecureScreen } from 'react-native-bedrock';\n *\n * function SetSecureScreen() {\n * return <Button title=\"\uCEA1\uCCD0 \uB9C9\uAE30\" onPress={async () => {\n * await setSecureScreen({ enabled: true });\n * }} />;\n * }\n * ```\n */\nexport declare function setSecureScreen(options: {\n enabled: boolean;\n}): Promise<{\n enabled: boolean;\n}>;\n\nexport {};\n"
18
+ },
19
+ {
20
+ identifier: "setScreenAwakeMode",
21
+ dts: "/**\n * @public\n * @category \uD654\uBA74 \uC81C\uC5B4\n * @kind function\n * @name setScreenAwakeMode\n * @description\n * `setScreenAwakeMode` \uD568\uC218\uB294 \uD654\uBA74\uC774 \uD56D\uC0C1 \uCF1C\uC838 \uC788\uB3C4\uB85D \uC124\uC815\uD558\uAC70\uB098 \uD574\uC81C\uD558\uB294 \uAE30\uB2A5\uC744 \uC81C\uACF5\uD574\uC694.\n * \uC774 \uAE30\uB2A5\uC740 \uC6F9\uD230, \uB3D9\uC601\uC0C1, \uBB38\uC11C \uC77D\uAE30 \uB4F1 \uD654\uBA74\uC744 \uC9C0\uC18D\uD574\uC11C \uCF1C\uB450\uC5B4\uC57C \uD558\uB294 \uC0C1\uD669\uC5D0\uC11C \uC720\uC6A9\uD574\uC694.\n *\n * `enabled` \uC635\uC158\uC744 `true`\uB85C \uC124\uC815\uD558\uBA74 \uD654\uBA74\uC774 \uAEBC\uC9C0\uC9C0 \uC54A\uAC8C \uC720\uC9C0\uD558\uACE0, `false`\uB85C \uC124\uC815\uD558\uBA74 \uAE30\uBCF8 \uD654\uBA74 \uBCF4\uD638\uAE30 \uC2DC\uAC04\uC5D0 \uB530\uB77C \uD654\uBA74\uC774 \uAEBC\uC838\uC694. \uD2B9\uD788, \uC774 \uD568\uC218\uB294 \uC571 \uC804\uCCB4\uC5D0 \uC601\uD5A5\uC744 \uBBF8\uCE58\uBBC0\uB85C \uD2B9\uC815 \uD654\uBA74\uC5D0\uC11C\uB9CC \uC0AC\uC6A9\uD558\uB824\uBA74 \uD654\uBA74\uC744 \uBC97\uC5B4\uB0A0 \uB54C \uC774\uC804 \uC0C1\uD0DC\uB85C \uBCF5\uAD6C\uD558\uB294 \uCD94\uAC00 \uC791\uC5C5\uC774 \uD544\uC694\uD574\uC694.\n *\n * \uC608\uB97C \uB4E4\uC5B4, \uBBF8\uB514\uC5B4 \uCF58\uD150\uCE20 \uAC10\uC0C1 \uD654\uBA74\uC5D0\uC11C\uB294 \uD56D\uC0C1 \uCF1C\uC9D0 \uBAA8\uB4DC\uB97C \uD65C\uC131\uD654\uD558\uACE0, \uD654\uBA74\uC744 \uB5A0\uB0A0 \uB54C \uC124\uC815\uC744 \uBCF5\uAD6C\uD574\uC11C \uBD88\uD544\uC694\uD55C \uBC30\uD130\uB9AC \uC18C\uBAA8\uB97C \uBC29\uC9C0\uD560 \uC218 \uC788\uC5B4\uC694.\n *\n * \uB2E4\uB9CC, \uC571\uC5D0\uC11C \uBC97\uC5B4\uB098\uB294 \uC0C1\uD669\uC5D0\uC11C\uB294 \uD56D\uC0C1 \uCF1C\uC9D0 \uBAA8\uB4DC\uAC00 \uBE44\uD65C\uC131\uD654\uB420 \uC218 \uC788\uC73C\uB2C8 \uC8FC\uC758\uD574\uC57C \uD574\uC694.\n *\n * @param {object} options \uD654\uBA74 \uD56D\uC0C1 \uCF1C\uC9D0 \uBAA8\uB4DC\uC758 \uC124\uC815 \uAC12\uC774\uC5D0\uC694.\n * @param {boolean} options.enabled \uD654\uBA74 \uD56D\uC0C1 \uCF1C\uC9D0 \uBAA8\uB4DC\uB97C \uCF1C\uAC70\uB098 \uB044\uB294 \uC635\uC158\uC774\uC5D0\uC694.\n * `true`\uB85C \uC124\uC815\uD558\uBA74 \uD654\uBA74\uC774 \uD56D\uC0C1 \uCF1C\uC9C0\uACE0, `false`\uB85C \uC124\uC815\uD558\uBA74 \uD654\uBA74 \uBCF4\uD638\uAE30 \uC2DC\uAC04\uC5D0 \uB530\uB77C \uAEBC\uC838\uC694.\n *\n * @returns {object} \uD604\uC7AC \uD654\uBA74 \uD56D\uC0C1 \uCF1C\uC9D0 \uBAA8\uB4DC\uC758 \uC124\uC815 \uC0C1\uD0DC\uB97C \uBC18\uD658\uD574\uC694.\n * @returns {boolean} enabled \uD654\uBA74 \uD56D\uC0C1 \uCF1C\uC9D0 \uBAA8\uB4DC\uAC00 \uCF1C\uC838 \uC788\uB294\uC9C0 \uC5EC\uBD80\uB97C \uB098\uD0C0\uB0B4\uB294 \uAC12\uC774\uC5D0\uC694.\n *\n * @example\n * ### \uD654\uBA74 \uD56D\uC0C1 \uCF1C\uC9D0 \uBAA8\uB4DC \uC124\uC815\uD558\uAE30\n *\n * ```tsx\n * import { Button } from 'react-native';\n * import { setScreenAwakeMode } from 'react-native-bedrock';\n *\n * function SetScreenAwakeMode() {\n * return (\n * <Button\n * title=\"\uD654\uBA74 \uD56D\uC0C1 \uCF1C\uAE30\"\n * onPress={() => {\n * setScreenAwakeMode({ enabled: true });\n * }}\n * />\n * );\n * }\n * ```\n *\n * ### \uD654\uBA74 \uD56D\uC0C1 \uCF1C\uC9D0 \uBAA8\uB4DC \uBCF5\uAD6C\uD558\uAE30\n * \uD2B9\uC815 \uD654\uBA74\uC744 \uBC97\uC5B4\uB0A0 \uB54C \uC774\uC804 \uC0C1\uD0DC\uB85C \uBCF5\uAD6C\uD558\uB824\uBA74 \uB2E4\uC74C\uACFC \uAC19\uC774 `useEffect`\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.\n *\n * ```tsx\n * import { useEffect } from 'react';\n * import { setScreenAwakeMode, cleanUp } from 'react-native-bedrock';\n *\n * function MediaScreen() {\n * useEffect(() => {\n * setScreenAwakeMode({ enabled: true });\n *\n * return () => {\n * setScreenAwakeMode({ enabled: false }); // \uC124\uC815\uC744 \uC774\uC804 \uC0C1\uD0DC\uB85C \uBCF5\uAD6C\uD574\uC694.\n * };\n * }, []);\n *\n * return <Text>\uBBF8\uB514\uC5B4 \uCF58\uD150\uCE20\uB97C \uAC10\uC0C1\uD558\uB294 \uD654\uBA74</Text>;\n * }\n * ```\n */\nexport declare function setScreenAwakeMode(options: {\n enabled: boolean;\n}): Promise<{\n enabled: boolean;\n}>;\n\nexport {};\n"
22
+ },
23
+ {
24
+ identifier: "getNetworkStatus",
25
+ dts: 'export type NetworkStatus = "OFFLINE" | "WIFI" | "2G" | "3G" | "4G" | "5G" | "WWAN" | "UNKNOWN";\n/**\n * @public\n * @category \uB124\uD2B8\uC6CC\uD06C\n * @kind function\n * @name getNetworkStatus\n * @description\n * \uB514\uBC14\uC774\uC2A4\uC758 \uD604\uC7AC \uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0 \uC0C1\uD0DC\uB97C \uAC00\uC838\uC624\uB294 \uD568\uC218\uC608\uC694.\n * \uBC18\uD658 \uAC12\uC740 `NetworkStatus` \uD0C0\uC785\uC73C\uB85C, \uC778\uD130\uB137 \uC5F0\uACB0 \uC5EC\uBD80\uC640 \uC5F0\uACB0 \uC720\uD615(Wi-Fi, \uBAA8\uBC14\uC77C \uB370\uC774\uD130 \uB4F1)\uC744 \uB098\uD0C0\uB0B4\uC694. \uAC12\uC740 \uB2E4\uC74C \uC911 \uD558\uB098\uC608\uC694.\n *\n * - `OFFLINE`: \uC778\uD130\uB137\uC5D0 \uC5F0\uACB0\uB418\uC9C0 \uC54A\uC740 \uC0C1\uD0DC\uC608\uC694.\n * - `WIFI`: Wi-Fi\uC5D0 \uC5F0\uACB0\uB41C \uC0C1\uD0DC\uC608\uC694.\n * - `2G`: 2G \uB124\uD2B8\uC6CC\uD06C\uC5D0 \uC5F0\uACB0\uB41C \uC0C1\uD0DC\uC608\uC694.\n * - `3G`: 3G \uB124\uD2B8\uC6CC\uD06C\uC5D0 \uC5F0\uACB0\uB41C \uC0C1\uD0DC\uC608\uC694.\n * - `4G`: 4G \uB124\uD2B8\uC6CC\uD06C\uC5D0 \uC5F0\uACB0\uB41C \uC0C1\uD0DC\uC608\uC694.\n * - `5G`: 5G \uB124\uD2B8\uC6CC\uD06C\uC5D0 \uC5F0\uACB0\uB41C \uC0C1\uD0DC\uC608\uC694.\n * - `WWAN`: \uC778\uD130\uB137\uC740 \uC5F0\uACB0\uB418\uC5C8\uC9C0\uB9CC, \uC5F0\uACB0 \uC720\uD615(Wi-Fi, 2G~5G)\uC744 \uC54C \uC218 \uC5C6\uB294 \uC0C1\uD0DC\uC608\uC694. \uC774 \uC0C1\uD0DC\uB294 iOS\uC5D0\uC11C\uB9CC \uD655\uC778\uD560 \uC218 \uC788\uC5B4\uC694.\n * - `UNKNOWN`: \uC778\uD130\uB137 \uC5F0\uACB0 \uC0C1\uD0DC\uB97C \uC54C \uC218 \uC5C6\uB294 \uC0C1\uD0DC\uC608\uC694. \uC774 \uC0C1\uD0DC\uB294 \uC548\uB4DC\uB85C\uC774\uB4DC\uC5D0\uC11C\uB9CC \uD655\uC778\uD560 \uC218 \uC788\uC5B4\uC694.\n *\n * @returns {Promise<NetworkStatus>} \uB124\uD2B8\uC6CC\uD06C \uC0C1\uD0DC\uB97C \uBC18\uD658\uD574\uC694.\n *\n * @example\n * ### \uD604\uC7AC \uB124\uD2B8\uC6CC\uD06C \uC0C1\uD0DC \uAC00\uC838\uC624\uAE30\n *\n * \uB124\uD2B8\uC6CC\uD06C \uC5F0\uACB0 \uC0C1\uD0DC\uB97C \uAC00\uC838\uC640 \uD654\uBA74\uC5D0 \uD45C\uC2DC\uD558\uB294 \uC608\uC81C\uC608\uC694.\n *\n * ```tsx\n * import { useState, useEffect } from \'react\';\n * import { Text, View } from \'react-native\';\n * import { getNetworkStatus, NetworkStatus } from \'react-native-bedrock\';\n *\n * function GetNetworkStatus() {\n * const [status, setStatus] = useState<NetworkStatus | \'\'>(\'\');\n *\n * useEffect(() => {\n * async function fetchStatus() {\n * const networkStatus = await getNetworkStatus();\n * setStatus(networkStatus);\n * }\n *\n * fetchStatus();\n * }, []);\n *\n * return (\n * <View>\n * <Text>\uD604\uC7AC \uB124\uD2B8\uC6CC\uD06C \uC0C1\uD0DC: {status}</Text>\n * </View>\n * );\n * }\n * ```\n */\nexport declare function getNetworkStatus(): Promise<NetworkStatus>;\n\nexport {};\n'
26
+ },
27
+ {
28
+ identifier: "setIosSwipeGestureEnabled",
29
+ dts: "/**\n * @public\n * @category \uD654\uBA74 \uC81C\uC5B4\n * @name setIosSwipeGestureEnabled\n * @description\n * `setIosSwipeGestureEnabled` \uD568\uC218\uB294 iOS\uC5D0\uC11C \uD654\uBA74\uC744 \uC2A4\uC640\uC774\uD504\uD558\uC5EC \uB4A4\uB85C\uAC00\uAE30 \uAE30\uB2A5\uC744 \uD65C\uC131\uD654\uD558\uAC70\uB098 \uBE44\uD65C\uC131\uD654\uD560 \uC218 \uC788\uC5B4\uC694.\n *\n * @param {object} options \uC2A4\uC640\uC774\uD504\uD558\uC5EC \uB4A4\uB85C\uAC00\uAE30 \uAE30\uB2A5\uC744 \uD65C\uC131\uD654\uD558\uAC70\uB098 \uBE44\uD65C\uC131\uD654\uD558\uB294 \uC635\uC158\uC774\uC5D0\uC694.\n * @param {boolean} options.isEnabled \uD654\uBA74\uC744 \uC2A4\uC640\uC774\uD504\uD558\uC5EC \uB4A4\uB85C\uAC00\uAE30 \uAE30\uB2A5\uC744 \uD65C\uC131\uD654\uD558\uAC70\uB098 \uBE44\uD65C\uC131\uD654\uD560 \uC218 \uC788\uC5B4\uC694. `true`\uB97C \uC124\uC815\uD558\uBA74 \uC2A4\uC640\uC774\uD504\uB85C \uB4A4\uB85C\uAC08 \uC218 \uC788\uACE0, `false`\uB97C \uC124\uC815\uD558\uBA74 \uC2A4\uC640\uC774\uD504 \uB4A4\uB85C\uAC00\uAE30 \uAE30\uB2A5\uC774 \uBE44\uD65C\uC131\uD654\uB3FC\uC694.\n *\n * @returns {void}\n *\n * @example\n *\n * ### iOS\uC5D0\uC11C \uD654\uBA74 \uC2A4\uC640\uC774\uD504\uB85C \uB4A4\uB85C\uAC00\uAE30 \uAE30\uB2A5\uC744 \uD65C\uC131\uD654\uD558\uAC70\uB098 \uBE44\uD65C\uC131\uD654\uD558\uAE30\n *\n * **\uC2A4\uC640\uC774\uD504 \uB044\uAE30** \uBC84\uD2BC\uC744 \uB20C\uB7EC \uD654\uBA74 \uC2A4\uC640\uC774\uD504\uB85C \uB4A4\uB85C\uAC00\uAE30 \uAE30\uB2A5\uC744 \uBE44\uD65C\uC131\uD654\uD558\uAC70\uB098, **\uC2A4\uC640\uC774\uD504 \uCF1C\uAE30** \uBC84\uD2BC\uC744 \uB20C\uB7EC \uD654\uBA74 \uC2A4\uC640\uC774\uD504\uB85C \uB4A4\uB85C\uAC00\uAE30 \uAE30\uB2A5\uC744 \uD65C\uC131\uD654\uD560 \uC218 \uC788\uC5B4\uC694.\n *\n *\n * ```tsx\n * import { setIosSwipeGestureEnabled } from 'react-native-bedrock';\n * import { Button } from 'react-native';\n *\n * function Page() {\n * return (\n * <>\n * <Button title=\"\uC2A4\uC640\uC774\uD504 \uB044\uAE30\" onPress={() => setIosSwipeGestureEnabled({ isEnabled: false })} />\n * <Button title=\"\uC2A4\uC640\uC774\uD504 \uCF1C\uAE30\" onPress={() => setIosSwipeGestureEnabled({ isEnabled: true })} />\n * </>\n * );\n * }\n * ```\n *\n */\nexport declare function setIosSwipeGestureEnabled(options: {\n isEnabled: boolean;\n}): Promise<void>;\n\nexport {};\n"
30
+ },
31
+ {
32
+ identifier: "openURL",
33
+ dts: "/**\n * @public\n * @kind function\n * @category \uD654\uBA74 \uC774\uB3D9\n *\n * @name openURL\n * @signature\n * ```typescript\n * function openURL(url: string): Promise<any>;\n * ```\n *\n * @description\n * \uC9C0\uC815\uB41C URL\uC744 \uAE30\uAE30\uC758 \uAE30\uBCF8 \uBE0C\uB77C\uC6B0\uC800\uB098 \uAD00\uB828 \uC571\uC5D0\uC11C \uC5F4\uC5B4\uC694.\n * \uC774 \uD568\uC218\uB294 `react-native`\uC758 [`Linking.openURL`](https://reactnative.dev/docs/0.72/linking#openurl) \uBA54\uC11C\uB4DC\uB97C \uC0AC\uC6A9\uD558\uC5EC URL\uC744 \uC5F4\uC5B4\uC694.\n *\n * @param {string} url \uC5F4\uACE0\uC790 \uD558\uB294 URL \uC8FC\uC18C\n * @returns {Promise<any>} URL\uC774 \uC131\uACF5\uC801\uC73C\uB85C \uC5F4\uB838\uC744 \uB54C \uD574\uACB0\uB418\uB294 Promise\n *\n * @example\n *\n * ### \uC678\uBD80 URL \uC5F4\uAE30\n *\n * ```tsx\n * import { openURL } from 'react-native-bedrock';\n * import { Button } from 'react-native';\n *\n * function Page() {\n * const handlePress = () => {\n * openURL('https://google.com');\n * };\n *\n * return <Button title=\"\uAD6C\uAE00 \uC6F9\uC0AC\uC774\uD2B8 \uC5F4\uAE30\" onPress={handlePress} />;\n * }\n * ```\n */\nexport declare function openURL(url: string): Promise<any>;\n\nexport {};\n"
34
+ },
35
+ {
36
+ identifier: "setClipboardText",
37
+ dts: "/**\n * @public\n * @category \uD074\uB9BD\uBCF4\uB4DC\n * @name setClipboardText\n * @description \uD14D\uC2A4\uD2B8\uB97C \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uBCF5\uC0AC\uD574\uC11C \uC0AC\uC6A9\uC790\uAC00 \uB2E4\uB978 \uACF3\uC5D0 \uBD99\uC5EC \uB123\uAE30 \uD560 \uC218 \uC788\uC5B4\uC694.\n * @param {Promise<void>} text - \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uBCF5\uC0AC\uD560 \uD14D\uC2A4\uD2B8\uC608\uC694. \uBB38\uC790\uC5F4 \uD615\uC2DD\uC73C\uB85C \uC785\uB825\uD574\uC694.\n *\n * @example\n * ### \uD14D\uC2A4\uD2B8\uB97C \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uBCF5\uC0AC\uD558\uAE30\n *\n * ```tsx\n * import { Button } from 'react-native';\n * import { setClipboardText } from '@apps-in-toss/framework';\n *\n * // '\uBCF5\uC0AC' \uBC84\uD2BC\uC744 \uB204\uB974\uBA74 \"\uBCF5\uC0AC\uD560 \uD14D\uC2A4\uD2B8\"\uAC00 \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uBCF5\uC0AC\uB3FC\uC694.\n * function CopyButton() {\n * const handleCopy = async () => {\n * try {\n * await setClipboardText('\uBCF5\uC0AC\uD560 \uD14D\uC2A4\uD2B8');\n * console.log('\uD14D\uC2A4\uD2B8\uAC00 \uBCF5\uC0AC\uB410\uC5B4\uC694!');\n * } catch (error) {\n * console.error('\uD14D\uC2A4\uD2B8 \uBCF5\uC0AC\uC5D0 \uC2E4\uD328\uD588\uC5B4\uC694:', error);\n * }\n * };\n *\n * return <Button title=\"\uBCF5\uC0AC\" onPress={handleCopy} />;\n * }\n * ```\n */\nexport declare function setClipboardText(text: string): Promise<void>;\n\nexport {};\n"
38
+ },
39
+ {
40
+ identifier: "getClipboardText",
41
+ dts: "/**\n * @public\n * @category \uD074\uB9BD\uBCF4\uB4DC\n * @name getClipboardText\n * @description \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uC800\uC7A5\uB41C \uD14D\uC2A4\uD2B8\uB97C \uAC00\uC838\uC624\uB294 \uD568\uC218\uC608\uC694. \uBCF5\uC0AC\uB41C \uD14D\uC2A4\uD2B8\uB97C \uC77D\uC5B4\uC11C \uB2E4\uB978 \uC791\uC5C5\uC5D0 \uD65C\uC6A9\uD560 \uC218 \uC788\uC5B4\uC694.\n * @returns {Promise<string>} - \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uC800\uC7A5\uB41C \uD14D\uC2A4\uD2B8\uB97C \uBC18\uD658\uD574\uC694. \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uD14D\uC2A4\uD2B8\uAC00 \uC5C6\uC73C\uBA74 \uBE48 \uBB38\uC790\uC5F4\uC744 \uBC18\uD658\uD574\uC694.\n *\n * @example\n * ### \uD074\uB9BD\uBCF4\uB4DC\uC758 \uD14D\uC2A4\uD2B8 \uAC00\uC838\uC624\uAE30\n *\n * ```tsx\n * import React, { useState } from 'react';\n * import { View, Text, Button } from 'react-native';\n * import { getClipboardText } from '@apps-in-toss/framework';\n *\n * // '\uBD99\uC5EC\uB123\uAE30' \uBC84\uD2BC\uC744 \uB204\uB974\uBA74 \uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uC800\uC7A5\uB41C \uD14D\uC2A4\uD2B8\uB97C \uAC00\uC838\uC640 \uD654\uBA74\uC5D0 \uD45C\uC2DC\uD574\uC694.\n * function PasteButton() {\n * const [text, setText] = useState('');\n *\n * const handlePress = async () => {\n * try {\n * const clipboardText = await getClipboardText();\n * setText(clipboardText || '\uD074\uB9BD\uBCF4\uB4DC\uC5D0 \uD14D\uC2A4\uD2B8\uAC00 \uC5C6\uC5B4\uC694.');\n * } catch (error) {\n * console.error('\uD074\uB9BD\uBCF4\uB4DC\uC5D0\uC11C \uD14D\uC2A4\uD2B8\uB97C \uAC00\uC838\uC624\uC9C0 \uBABB\uD588\uC5B4\uC694:', error);\n * }\n * };\n *\n * return (\n * <View>\n * <Text>{text}</Text>\n * <Button title=\"\uBD99\uC5EC\uB123\uAE30\" onPress={handlePress} />\n * </View>\n * );\n * }\n * ```\n */\nexport declare function getClipboardText(): Promise<string>;\n\nexport {};\n"
42
+ },
43
+ {
44
+ identifier: "fetchContacts",
45
+ dts: "/**\n * \uC5F0\uB77D\uCC98 \uC815\uBCF4\uB97C \uB098\uD0C0\uB0B4\uB294 \uD0C0\uC785\uC774\uC5D0\uC694.\n */\nexport interface ContactEntity {\n /** \uC5F0\uB77D\uCC98 \uC774\uB984\uC774\uC5D0\uC694. */\n name: string;\n /** \uC5F0\uB77D\uCC98 \uC804\uD654\uBC88\uD638\uB85C, \uBB38\uC790\uC5F4 \uD615\uC2DD\uC774\uC5D0\uC694. */\n phoneNumber: string;\n}\nexport interface ContactResult {\n result: ContactEntity[];\n nextOffset: number | null;\n done: boolean;\n}\n/**\n * @public\n * @category \uC5F0\uB77D\uCC98\n * @name fetchContacts\n * @description \uC0AC\uC6A9\uC790\uC758 \uC5F0\uB77D\uCC98 \uBAA9\uB85D\uC744 \uD398\uC774\uC9C0 \uB2E8\uC704\uB85C \uAC00\uC838\uC624\uB294 \uD568\uC218\uC608\uC694.\n * @param options - \uC5F0\uB77D\uCC98\uB97C \uAC00\uC838\uC62C \uB54C \uC9C0\uC815\uD558\uB294 \uC635\uC158 \uAC1D\uCCB4\uC608\uC694.\n * @param options.size - \uD55C \uBC88\uC5D0 \uAC00\uC838\uC62C \uC5F0\uB77D\uCC98 \uAC1C\uC218\uC608\uC694. \uC608\uB97C \uB4E4\uC5B4, 10\uC744 \uC804\uB2EC\uD558\uBA74 \uCD5C\uB300 10\uAC1C\uC758 \uC5F0\uB77D\uCC98\uB97C \uAC00\uC838\uC640\uC694.\n * @param options.offset - \uAC00\uC838\uC62C \uC5F0\uB77D\uCC98\uC758 \uC2DC\uC791 \uC9C0\uC810\uC774\uC5D0\uC694. \uCC98\uC74C \uD638\uCD9C\uD560 \uB54C\uB294 `0`\uC744 \uC804\uB2EC\uD574\uC57C \uD574\uC694. \uC774\uD6C4\uC5D0\uB294 \uC774\uC804 \uD638\uCD9C\uC5D0\uC11C \uBC18\uD658\uB41C `nextOffset` \uAC12\uC744 \uC0AC\uC6A9\uD574\uC694.\n * @param options.query - \uCD94\uAC00\uC801\uC778 \uD544\uD130\uB9C1 \uC635\uC158\uC774\uC5D0\uC694.\n * @param options.query.contains - \uC774\uB984\uC5D0 \uD2B9\uC815 \uBB38\uC790\uC5F4\uC774 \uD3EC\uD568\uB41C \uC5F0\uB77D\uCC98\uB9CC \uAC00\uC838\uC624\uACE0 \uC2F6\uC744 \uB54C \uC0AC\uC6A9\uD574\uC694. \uC774 \uAC12\uC744 \uC804\uB2EC\uD558\uC9C0 \uC54A\uC73C\uBA74 \uBAA8\uB4E0 \uC5F0\uB77D\uCC98\uB97C \uAC00\uC838\uC640\uC694.\n * @returns {Promise<ContactResult>}\n * \uC5F0\uB77D\uCC98 \uBAA9\uB85D\uACFC \uD398\uC774\uC9C0\uB124\uC774\uC158 \uC815\uBCF4\uB97C \uD3EC\uD568\uD55C \uAC1D\uCCB4\uB97C \uBC18\uD658\uD574\uC694.\n * - `result`: \uAC00\uC838\uC628 \uC5F0\uB77D\uCC98 \uBAA9\uB85D\uC774\uC5D0\uC694.\n * - `nextOffset`: \uB2E4\uC74C \uD638\uCD9C\uC5D0 \uC0AC\uC6A9\uD560 \uC624\uD504\uC14B \uAC12\uC774\uC5D0\uC694. \uB354 \uAC00\uC838\uC62C \uC5F0\uB77D\uCC98\uAC00 \uC5C6\uC73C\uBA74 `null`\uC774\uC5D0\uC694.\n * - `done`: \uBAA8\uB4E0 \uC5F0\uB77D\uCC98\uB97C \uB2E4 \uAC00\uC838\uC654\uB294\uC9C0 \uC5EC\uBD80\uB97C \uB098\uD0C0\uB0B4\uC694. \uBAA8\uB450 \uAC00\uC838\uC654\uB2E4\uBA74 `true`\uC608\uC694.\n *\n * @signature\n * ```typescript\n * function fetchContacts(options: {\n * size: number;\n * offset: number;\n * query?: {\n * contains?: string;\n * };\n * }): Promise<ContactResult>;\n * ```\n *\n * @example\n * ### \uD2B9\uC815 \uBB38\uC790\uC5F4\uC774 \uD3EC\uD568\uB41C \uC5F0\uB77D\uCC98 \uBAA9\uB85D \uAC00\uC838\uC624\uAE30\n *\n * ```tsx\n * import React, { useState } from 'react';\n * import { View, Text, Button } from 'react-native';\n * import { fetchContacts, ContactEntity } from '@apps-in-toss/framework';\n *\n * // \uD2B9\uC815 \uBB38\uC790\uC5F4\uC744 \uD3EC\uD568\uD55C \uC5F0\uB77D\uCC98 \uBAA9\uB85D\uC744 \uAC00\uC838\uC640 \uD654\uBA74\uC5D0 \uD45C\uC2DC\uD558\uB294 \uCEF4\uD3EC\uB10C\uD2B8\n * function ContactsList() {\n * const [contacts, setContacts] = useState<{\n * result: ContactEntity[];\n * nextOffset: number | null;\n * done: boolean;\n * }>({\n * result: [],\n * nextOffset: null,\n * done: false,\n * });\n *\n * const handlePress = async () => {\n * try {\n * if (contacts.done) {\n * console.log('\uBAA8\uB4E0 \uC5F0\uB77D\uCC98\uB97C \uAC00\uC838\uC654\uC5B4\uC694.');\n * return;\n * }\n *\n * const response = await fetchContacts({\n * size: 10,\n * offset: contacts.nextOffset ?? 0,\n * query: { contains: '\uAE40' },\n * });\n * setContacts((prev) => ({\n * result: [...prev.result, ...response.result],\n * nextOffset: response.nextOffset,\n * done: response.done,\n * }));\n * } catch (error) {\n * console.error('\uC5F0\uB77D\uCC98\uB97C \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:', error);\n * }\n * };\n *\n * return (\n * <View>\n * {contacts.result.map((contact, index) => (\n * <Text key={index}>{contact.name}: {contact.phoneNumber}</Text>\n * ))}\n * <Button\n * title={contacts.done ? '\uBAA8\uB4E0 \uC5F0\uB77D\uCC98\uB97C \uAC00\uC838\uC654\uC5B4\uC694.' : '\uB2E4\uC74C \uC5F0\uB77D\uCC98 \uAC00\uC838\uC624\uAE30'}\n * disabled={contacts.done}\n * onPress={handlePress}\n * />\n * </View>\n * );\n * }\n * ```\n */\nexport declare function fetchContacts(options: {\n size: number;\n offset: number;\n query?: {\n contains?: string;\n };\n}): Promise<ContactResult>;\n\nexport {};\n"
46
+ },
47
+ {
48
+ identifier: "fetchAlbumPhotos",
49
+ dts: "/**\n * \uC0AC\uC9C4 \uC870\uD68C \uACB0\uACFC\uB97C \uB098\uD0C0\uB0B4\uB294 \uD0C0\uC785\uC774\uC5D0\uC694.\n */\nexport interface ImageResponse {\n /** \uAC00\uC838\uC628 \uC0AC\uC9C4\uC758 \uACE0\uC720 ID\uC608\uC694. */\n id: string;\n /** \uC0AC\uC9C4\uC758 \uB370\uC774\uD130 URI\uC608\uC694. `base64` \uC635\uC158\uC774 `true`\uC778 \uACBD\uC6B0 Base64 \uBB38\uC790\uC5F4\uB85C \uBC18\uD658\uB3FC\uC694. */\n dataUri: string;\n}\n/**\n * \uC568\uBC94 \uC0AC\uC9C4\uC744 \uC870\uD68C\uD560 \uB54C \uC0AC\uC6A9\uD558\uB294 \uC635\uC158 \uD0C0\uC785\uC774\uC5D0\uC694.\n */\nexport interface FetchAlbumPhotosOptions {\n /** \uAC00\uC838\uC62C \uC0AC\uC9C4\uC758 \uCD5C\uB300 \uAC1C\uC218\uB97C \uC124\uC815\uD574\uC694. \uC22B\uC790\uB97C \uC785\uB825\uD558\uACE0 \uAE30\uBCF8\uAC12\uC740 10\uC774\uC5D0\uC694. */\n maxCount?: number;\n /** \uC0AC\uC9C4\uC758 \uCD5C\uB300 \uD3ED\uC744 \uC81C\uD55C\uD574\uC694. \uB2E8\uC704\uB294 \uD53D\uC140\uC774\uACE0 \uAE30\uBCF8\uAC12\uC740 1024\uC774\uC5D0\uC694. */\n maxWidth?: number;\n /** \uC774\uBBF8\uC9C0\uB97C base64 \uD615\uC2DD\uC73C\uB85C \uBC18\uD658\uD560\uC9C0 \uC124\uC815\uD574\uC694. \uAE30\uBCF8\uAC12\uC740 `false`\uC608\uC694. */\n base64?: boolean;\n}\n/**\n * @public\n * @category \uC0AC\uC9C4\n * @name fetchAlbumPhotos\n * @description\n * \uC0AC\uC6A9\uC790\uC758 \uC568\uBC94\uC5D0\uC11C \uC0AC\uC9C4 \uBAA9\uB85D\uC744 \uBD88\uB7EC\uC624\uB294 \uD568\uC218\uC608\uC694.\n * \uCD5C\uB300 \uAC1C\uC218\uC640 \uD574\uC0C1\uB3C4\uB97C \uC124\uC815\uD560 \uC218 \uC788\uACE0 \uAC24\uB7EC\uB9AC \uBBF8\uB9AC\uBCF4\uAE30, \uC774\uBBF8\uC9C0 \uC120\uD0DD \uAE30\uB2A5 \uB4F1\uC5D0 \uD65C\uC6A9\uD560 \uC218 \uC788\uC5B4\uC694.\n *\n * @param options - \uC870\uD68C \uC635\uC158\uC744 \uB2F4\uC740 \uAC1D\uCCB4\uC608\uC694.\n * @param {number} [options.maxCount=10] \uAC00\uC838\uC62C \uC0AC\uC9C4\uC758 \uCD5C\uB300 \uAC1C\uC218\uB97C \uC124\uC815\uD574\uC694. \uC22B\uC790\uB85C \uC785\uB825\uD558\uBA70 \uAE30\uBCF8\uAC12\uC740 10\uC774\uC5D0\uC694.\n * @param {number} [options.maxWidth=1024] \uC0AC\uC9C4\uC758 \uCD5C\uB300 \uD3ED\uC744 \uC81C\uD55C\uD574\uC694. \uB2E8\uC704\uB294 \uD53D\uC140\uC774\uBA70 \uAE30\uBCF8\uAC12\uC740 `1024`\uC774\uC5D0\uC694.\n * @param {boolean} [options.base64=false] \uC774\uBBF8\uC9C0\uB97C base64 \uD615\uC2DD\uC73C\uB85C \uBC18\uD658\uD560\uC9C0 \uC124\uC815\uD574\uC694. \uAE30\uBCF8\uAC12\uC740 `false`\uC608\uC694.\n * @returns {Promise<ImageResponse[]>}\n * \uC568\uBC94 \uC0AC\uC9C4\uC758 \uACE0\uC720 ID\uC640 \uB370\uC774\uD130 URI\uB97C \uD3EC\uD568\uD55C \uBC30\uC5F4\uC744 \uBC18\uD658\uD574\uC694.\n *\n * @example\n * ### \uC0AC\uC9C4\uC758 \uCD5C\uB300 \uD3ED\uC744 360px\uB85C \uC81C\uD55C\uD558\uC5EC \uAC00\uC838\uC624\uAE30\n *\n * ```tsx\n * import React, { useState } from 'react';\n * import { View, Image, Button } from 'react-native';\n * import { fetchAlbumPhotos } from '@apps-in-toss/framework';\n *\n * const base64 = true;\n *\n * // \uC568\uBC94 \uC0AC\uC9C4 \uBAA9\uB85D\uC744 \uAC00\uC838\uC640 \uD654\uBA74\uC5D0 \uD45C\uC2DC\uD558\uB294 \uCEF4\uD3EC\uB10C\uD2B8\n * function AlbumPhotoList() {\n * const [albumPhotos, setAlbumPhotos] = useState([]);\n *\n * const handlePress = async () => {\n * try {\n * const response = await fetchAlbumPhotos({\n * base64,\n * maxWidth: 360,\n * });\n * setAlbumPhotos((prev) => ([...prev, ...response]));\n * } catch (error) {\n * console.error('\uC568\uBC94\uC744 \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:', error);\n * }\n * };\n *\n * return (\n * <View>\n * {albumPhotos.map((image) => {\n * // base64 \uD615\uC2DD\uC73C\uB85C \uBC18\uD658\uB41C \uC774\uBBF8\uC9C0\uB97C \uD45C\uC2DC\uD558\uB824\uBA74 \uB370\uC774\uD130 URL \uC2A4\uD0A4\uB9C8 Prefix\uB97C \uBD99\uC5EC\uC57C\uD574\uC694.\n * const imageUri = base64 ? 'data:image/jpeg;base64,' + image.dataUri : image.dataUri;\n *\n * return <Image source={{ uri: imageUri }} key={image.id} />;\n * })}\n * <Button title=\"\uC568\uBC94 \uAC00\uC838\uC624\uAE30\" onPress={handlePress} />\n * </View>\n * );\n * }\n * ```\n */\nexport declare function fetchAlbumPhotos(options: FetchAlbumPhotosOptions): Promise<ImageResponse[]>;\n\nexport {};\n"
50
+ },
51
+ {
52
+ identifier: "getCurrentLocation",
53
+ dts: "/**\n * @public\n * @category \uC704\uCE58 \uC815\uBCF4\n * @name Accuracy\n * @description \uC704\uCE58 \uC815\uD655\uB3C4 \uC635\uC158\uC774\uC5D0\uC694.\n */\nexport declare enum Accuracy {\n /**\n * \uC624\uCC28\uBC94\uC704 3KM \uC774\uB0B4\n */\n Lowest = 1,\n /**\n * \uC624\uCC28\uBC94\uC704 1KM \uC774\uB0B4\n */\n Low = 2,\n /**\n * \uC624\uCC28\uBC94\uC704 \uBA87 \uBC31\uBBF8\uD130 \uC774\uB0B4\n */\n Balanced = 3,\n /**\n * \uC624\uCC28\uBC94\uC704 10M \uC774\uB0B4\n */\n High = 4,\n /**\n * \uAC00\uC7A5 \uB192\uC740 \uC815\uD655\uB3C4\n */\n Highest = 5,\n /**\n * \uB124\uBE44\uAC8C\uC774\uC158\uC744 \uC704\uD55C \uCD5C\uACE0 \uC815\uD655\uB3C4\n */\n BestForNavigation = 6\n}\ninterface Location$1 {\n /**\n * Android\uC5D0\uC11C\uB9CC \uC9C0\uC6D0\uD558\uB294 \uC635\uC158\uC774\uC5D0\uC694.\n *\n * - `FINE`: \uC815\uD655\uD55C \uC704\uCE58\n * - `COARSE`: \uB300\uB7B5\uC801\uC778 \uC704\uCE58\n *\n * @see https://developer.android.com/codelabs/approximate-location\n */\n accessLocation?: \"FINE\" | \"COARSE\";\n /**\n * \uC704\uCE58\uAC00 \uC5C5\uB370\uC774\uD2B8\uB41C \uC2DC\uC810\uC758 \uC720\uB2C9\uC2A4 \uD0C0\uC784\uC2A4\uD0EC\uD504\uC608\uC694.\n */\n timestamp: number;\n /**\n * @description \uC704\uCE58 \uC815\uBCF4\uB97C \uB098\uD0C0\uB0B4\uB294 \uAC1D\uCCB4\uC608\uC694. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 [LocationCoords](/react-native/reference/framework/Types/LocationCoords.html)\uC744 \uCC38\uACE0\uD574\uC8FC\uC138\uC694.\n */\n coords: LocationCoords;\n}\n/**\n * @public\n * @category \uC704\uCE58 \uC815\uBCF4\n * @name LocationCoords\n * @description \uC138\uBD80 \uC704\uCE58 \uC815\uBCF4\uB97C \uB098\uD0C0\uB0B4\uB294 \uAC1D\uCCB4\uC608\uC694.\n */\nexport interface LocationCoords {\n /**\n * \uC704\uB3C4\n */\n latitude: number;\n /**\n * \uACBD\uB3C4\n */\n longitude: number;\n /**\n * \uB192\uC774\n */\n altitude: number;\n /**\n * \uC704\uCE58 \uC815\uD655\uB3C4\n */\n accuracy: number;\n /**\n * \uACE0\uB3C4 \uC815\uD655\uB3C4\n */\n altitudeAccuracy: number;\n /**\n * \uBC29\uD5A5\n */\n heading: number;\n}\nexport interface GetCurrentLocationOptions {\n /**\n * \uC704\uCE58 \uC815\uBCF4\uB97C \uAC00\uC838\uC62C \uC815\uD655\uB3C4 \uC218\uC900\uC774\uC5D0\uC694.\n */\n accuracy: Accuracy;\n}\n/**\n * @public\n * @category \uC704\uCE58 \uC815\uBCF4\n * @name getCurrentLocation\n * @description \uB514\uBC14\uC774\uC2A4\uC758 \uD604\uC7AC \uC704\uCE58 \uC815\uBCF4\uB97C \uAC00\uC838\uC624\uB294 \uD568\uC218\uC608\uC694.\n * \uC704\uCE58 \uAE30\uBC18 \uC11C\uBE44\uC2A4\uB97C \uAD6C\uD604\uD560 \uB54C \uC0AC\uC6A9\uB418\uACE0, \uD55C \uBC88\uB9CC \uD638\uCD9C\uB418\uC5B4 \uD604\uC7AC \uC704\uCE58\uB97C \uC989\uC2DC \uBC18\uD658\uD574\uC694.\n * \uC608\uB97C \uB4E4\uC5B4 \uC9C0\uB3C4 \uC571\uC5D0\uC11C \uC0AC\uC6A9\uC790\uC758 \uD604\uC7AC \uC704\uCE58\uB97C \uD55C \uBC88\uB9CC \uAC00\uC838\uC62C \uB54C, \uB0A0\uC528 \uC571\uC5D0\uC11C \uC0AC\uC6A9\uC790\uC758 \uC704\uCE58\uB97C \uAE30\uBC18\uC73C\uB85C \uAE30\uC0C1 \uC815\uBCF4\uB97C \uC81C\uACF5\uD560 \uB54C, \uB9E4\uC7A5 \uCC3E\uAE30 \uAE30\uB2A5\uC5D0\uC11C \uC0AC\uC6A9\uC790\uC758 \uC704\uCE58\uB97C \uAE30\uC900\uC73C\uB85C \uAC00\uAE4C\uC6B4 \uB9E4\uC7A5\uC744 \uAC80\uC0C9\uD560 \uB54C \uC0AC\uC6A9\uD558\uBA74 \uC720\uC6A9\uD574\uC694.\n *\n * @param {GetCurrentLocationOptions} options \uC704\uCE58 \uC815\uBCF4\uB97C \uAC00\uC838\uC62C \uB54C \uC0AC\uC6A9\uD558\uB294 \uC635\uC158 \uAC1D\uCCB4\uC608\uC694.\n * @param {Accuracy} [options.accuracy] \uC704\uCE58 \uC815\uBCF4\uC758 \uC815\uD655\uB3C4 \uC218\uC900\uC774\uC5D0\uC694. \uC815\uD655\uB3C4\uB294 `Accuracy` \uD0C0\uC785\uC73C\uB85C \uC124\uC815\uB3FC\uC694.\n * @returns {Promise<Location>} \uB514\uBC14\uC774\uC2A4\uC758 \uC704\uCE58 \uC815\uBCF4\uAC00 \uB2F4\uAE34 \uAC1D\uCCB4\uB97C \uBC18\uD658\uD574\uC694. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 [Location](/react-native/reference/framework/Types/Location.html)\uC744 \uCC38\uACE0\uD574\uC8FC\uC138\uC694.\n *\n * @example\n * ### \uB514\uBC14\uC774\uC2A4\uC758 \uD604\uC7AC \uC704\uCE58 \uC815\uBCF4 \uAC00\uC838\uC624\uAE30\n *\n * ```tsx\n * import React, { useState } from 'react';\n * import { View, Text, Button } from 'react-native';\n * import { getCurrentLocation } from '@apps-in-toss/framework';\n *\n * // \uD604\uC7AC \uC704\uCE58 \uC815\uBCF4\uB97C \uAC00\uC838\uC640 \uD654\uBA74\uC5D0 \uD45C\uC2DC\uD558\uB294 \uCEF4\uD3EC\uB10C\uD2B8\n * function CurrentPosition() {\n * const [position, setPosition] = useState(null);\n *\n * const handlePress = async () => {\n * try {\n * const response = await getCurrentLocation({ accuracy: Accuracy.Balanced });\n * setPosition(response);\n * } catch (error) {\n * console.error('\uC704\uCE58 \uC815\uBCF4\uB97C \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:', error);\n * }\n * };\n *\n * return (\n * <View>\n * {position ? (\n * <Text>\uC704\uCE58: {position.coords.latitude}, {position.coords.longitude}</Text>\n * ) : (\n * <Text>\uC704\uCE58 \uC815\uBCF4\uB97C \uC544\uC9C1 \uAC00\uC838\uC624\uC9C0 \uC54A\uC558\uC5B4\uC694</Text>\n * )}\n * <Button title=\"\uD604\uC7AC \uC704\uCE58 \uC815\uBCF4 \uAC00\uC838\uC624\uAE30\" onPress={handlePress} />\n * </View>\n * );\n * }\n * ```\n */\nexport declare function getCurrentLocation(options: GetCurrentLocationOptions): Promise<Location$1>;\n\nexport {};\n"
54
+ },
55
+ {
56
+ identifier: "openCamera",
57
+ dts: "/**\n * \uC0AC\uC9C4 \uC870\uD68C \uACB0\uACFC\uB97C \uB098\uD0C0\uB0B4\uB294 \uD0C0\uC785\uC774\uC5D0\uC694.\n */\nexport interface ImageResponse {\n /** \uAC00\uC838\uC628 \uC0AC\uC9C4\uC758 \uACE0\uC720 ID\uC608\uC694. */\n id: string;\n /** \uC0AC\uC9C4\uC758 \uB370\uC774\uD130 URI\uC608\uC694. `base64` \uC635\uC158\uC774 `true`\uC778 \uACBD\uC6B0 Base64 \uBB38\uC790\uC5F4\uB85C \uBC18\uD658\uB3FC\uC694. */\n dataUri: string;\n}\nexport interface OpenCameraOptions {\n /**\n * \uC774\uBBF8\uC9C0\uB97C Base64 \uD615\uC2DD\uC73C\uB85C \uBC18\uD658\uD560\uC9C0 \uC5EC\uBD80\uB97C \uB098\uD0C0\uB0B4\uB294 \uBD88\uB9AC\uC5B8 \uAC12\uC774\uC5D0\uC694.\n *\n * \uAE30\uBCF8\uAC12: `false`.\n */\n base64?: boolean;\n /**\n * \uC774\uBBF8\uC9C0\uC758 \uCD5C\uB300 \uB108\uBE44\uB97C \uB098\uD0C0\uB0B4\uB294 \uC22B\uC790 \uAC12\uC774\uC5D0\uC694.\n *\n * \uAE30\uBCF8\uAC12: `1024`.\n */\n maxWidth?: number;\n}\n/**\n * @public\n * @category \uCE74\uBA54\uB77C\n * @name openCamera\n * @description \uCE74\uBA54\uB77C\uB97C \uC2E4\uD589\uD574\uC11C \uCD2C\uC601\uB41C \uC774\uBBF8\uC9C0\uB97C \uBC18\uD658\uD558\uB294 \uD568\uC218\uC608\uC694.\n * @param {OpenCameraOptions} options - \uCE74\uBA54\uB77C \uC2E4\uD589 \uC2DC \uC0AC\uC6A9\uB418\uB294 \uC635\uC158 \uAC1D\uCCB4\uC608\uC694.\n * @param {boolean} [options.base64=false] - \uC774\uBBF8\uC9C0\uB97C Base64 \uD615\uC2DD\uC73C\uB85C \uBC18\uD658\uD560\uC9C0 \uC5EC\uBD80\uB97C \uB098\uD0C0\uB0B4\uB294 \uBD88\uB9AC\uC5B8 \uAC12\uC774\uC5D0\uC694. \uAE30\uBCF8\uAC12\uC740 `false`\uC608\uC694. `true`\uB85C \uC124\uC815\uD558\uBA74 `dataUri` \uB300\uC2E0 Base64 \uC778\uCF54\uB529\uB41C \uBB38\uC790\uC5F4\uC744 \uBC18\uD658\uD574\uC694.\n * @param {number} [options.maxWidth=1024] - \uC774\uBBF8\uC9C0\uC758 \uCD5C\uB300 \uB108\uBE44\uB97C \uB098\uD0C0\uB0B4\uB294 \uC22B\uC790 \uAC12\uC774\uC5D0\uC694. \uAE30\uBCF8\uAC12\uC740 `1024`\uC608\uC694.\n * @returns {Promise<ImageResponse>}\n * \uCD2C\uC601\uB41C \uC774\uBBF8\uC9C0 \uC815\uBCF4\uB97C \uD3EC\uD568\uD55C \uAC1D\uCCB4\uB97C \uBC18\uD658\uD574\uC694. \uBC18\uD658 \uAC1D\uCCB4\uC758 \uAD6C\uC131\uC740 \uB2E4\uC74C\uACFC \uAC19\uC544\uC694:\n * - `id`: \uC774\uBBF8\uC9C0\uC758 \uACE0\uC720 \uC2DD\uBCC4\uC790\uC608\uC694.\n * - `dataUri`: \uC774\uBBF8\uC9C0 \uB370\uC774\uD130\uB97C \uD45C\uD604\uD558\uB294 \uB370\uC774\uD130 URI\uC608\uC694.\n *\n * @example\n * ### \uCE74\uBA54\uB77C \uC2E4\uD589 \uD6C4 \uCD2C\uC601\uB41C \uC0AC\uC9C4 \uAC00\uC838\uC624\uAE30\n *\n * ```tsx\n * import React, { useState } from 'react';\n * import { View, Text, Button, Image } from 'react-native';\n * import { openCamera } from '@apps-in-toss/framework';\n *\n * const base64 = true;\n *\n * // \uCE74\uBA54\uB77C\uB97C \uC2E4\uD589\uD558\uACE0 \uCD2C\uC601\uB41C \uC774\uBBF8\uC9C0\uB97C \uD654\uBA74\uC5D0 \uD45C\uC2DC\uD558\uB294 \uCEF4\uD3EC\uB10C\uD2B8\n * function Camera() {\n * const [image, setImage] = useState(null);\n *\n * const handlePress = async () => {\n * try {\n * const response = await openCamera({ base64 });\n * setImage(response);\n * } catch (error) {\n * console.error('\uC0AC\uC9C4\uC744 \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:', error);\n * }\n * };\n *\n * // base64 \uD615\uC2DD\uC73C\uB85C \uBC18\uD658\uB41C \uC774\uBBF8\uC9C0\uB97C \uD45C\uC2DC\uD558\uB824\uBA74 \uB370\uC774\uD130 URL \uC2A4\uD0A4\uB9C8 Prefix\uB97C \uBD99\uC5EC\uC57C\uD574\uC694.\n * const imageUri = base64 ? 'data:image/jpeg;base64,' + image.dataUri : image.dataUri;\n *\n * return (\n * <View>\n * {image ? (\n * <Image source={{ uri: imageUri }} style={{ width: 200, height: 200 }} />\n * ) : (\n * <Text>\uC0AC\uC9C4\uC774 \uC5C6\uC5B4\uC694</Text>\n * )}\n * <Button title=\"\uC0AC\uC9C4 \uCD2C\uC601\uD558\uAE30\" onPress={handlePress} />\n * </View>\n * );\n * }\n * ```\n */\nexport declare function openCamera(options?: OpenCameraOptions): Promise<ImageResponse>;\n\nexport {};\n"
58
+ },
59
+ {
60
+ identifier: "appLogin",
61
+ dts: '/**\n * @public\n * @category \uB85C\uADF8\uC778\n * @name appLogin\n * @description \uD1A0\uC2A4 \uC778\uC99D\uC73C\uB85C \uB85C\uADF8\uC778\uD574\uC694. \uB85C\uADF8\uC778\uC774 \uC644\uB8CC\uB418\uBA74 \uB2E4\uC2DC \uD1A0\uC2A4 \uC571\uC73C\uB85C \uC774\uB3D9\uD574\uC694.\n * @example\n *\n * ### \uD1A0\uC2A4 \uC778\uC99D\uC744 \uD1B5\uD574 \uB85C\uADF8\uC778\uC744 \uD558\uB294 \uC608\uC81C\n *\n * ```tsx\n * import { Button } from \'react-native\';\n * import { appLogin } from \'@apps-in-toss/framework\';\n *\n * function Page() {\n * const handleLogin = async () => {\n * const { authorizationCode, referrer } = await appLogin();\n *\n * // \uD68D\uB4DD\uD55C \uC778\uAC00 \uCF54\uB4DC(`authorizationCode`)\uC640 `referrer`\uB97C \uC11C\uBC84\uB85C \uC804\uB2EC\uD574\uC694.\n * }\n *\n * return <Button title="\uB85C\uADF8\uC778" onPress={handleLogin} />;\n * }\n * ```\n */\nexport declare function appLogin(): Promise<{\n authorizationCode: string;\n referrer: "DEFAULT" | "SANDBOX";\n}>;\n\nexport {};\n'
62
+ },
63
+ {
64
+ identifier: "eventLog",
65
+ dts: `export type Primitive = string | number | boolean | null | undefined | symbol;
66
+ export interface EventLogParams {
67
+ log_name: string;
68
+ log_type: "debug" | "info" | "warn" | "error" | "screen" | "impression" | "click";
69
+ params: Record<string, Primitive>;
70
+ }
71
+ /**
72
+ * @category \uB85C\uAE45
73
+ * @kind function
74
+ * @name eventLog
75
+ * @description
76
+ * \uC774\uBCA4\uD2B8 \uB85C\uADF8\uB97C \uAE30\uB85D\uD558\uB294 \uD568\uC218\uC608\uC694.
77
+ *
78
+ * \uC774 \uD568\uC218\uB294 \uC571 \uB0B4\uC5D0\uC11C \uBC1C\uC0DD\uD558\uB294 \uB2E4\uC591\uD55C \uC774\uBCA4\uD2B8\uB97C \uB85C\uAE45\uD558\uB294 \uB370 \uC0AC\uC6A9\uB3FC\uC694. \uB514\uBC84\uAE45, \uC815\uBCF4 \uC81C\uACF5, \uACBD\uACE0, \uC624\uB958 \uB4F1 \uB2E4\uC591\uD55C \uC720\uD615\uC758 \uB85C\uADF8\uB97C \uAE30\uB85D\uD560 \uC218 \uC788\uC5B4\uC694. \uC0CC\uB4DC\uBC15\uC2A4 \uD658\uACBD\uC5D0\uC11C\uB294 \uCF58\uC194\uC5D0 \uB85C\uADF8\uAC00 \uCD9C\uB825\uB418\uACE0, \uC2E4\uC81C \uD658\uACBD\uC5D0\uC11C\uB294 \uB85C\uADF8 \uC2DC\uC2A4\uD15C\uC5D0 \uAE30\uB85D\uB3FC\uC694.
79
+ *
80
+ * @param {Object} params \uB85C\uADF8 \uAE30\uB85D\uC5D0 \uD544\uC694\uD55C \uB9E4\uAC1C\uBCC0\uC218 \uAC1D\uCCB4\uC608\uC694.
81
+ * @param {string} params.log_name \uB85C\uADF8\uC758 \uC774\uB984\uC774\uC5D0\uC694.
82
+ * @param {'debug' | 'info' | 'warn' | 'error' | 'screen' | 'impression' | 'click'} params.log_type \uB85C\uADF8\uC758 \uC720\uD615\uC774\uC5D0\uC694.
83
+ * @param {Record<string, Primitive>} params.params \uB85C\uADF8\uC5D0 \uD3EC\uD568\uD560 \uCD94\uAC00 \uB9E4\uAC1C\uBCC0\uC218 \uAC1D\uCCB4\uC608\uC694.
84
+ *
85
+ * @returns {Promise<void>} \uB85C\uADF8 \uAE30\uB85D\uC774 \uC644\uB8CC\uB418\uBA74 \uD574\uACB0\uB418\uB294 Promise\uC608\uC694.
86
+ *
87
+ * @example
88
+ * ### \uC774\uBCA4\uD2B8 \uB85C\uADF8 \uAE30\uB85D\uD558\uAE30
89
+ *
90
+ * \`\`\`tsx
91
+ * import { eventLog } from '@apps-in-toss/framework';
92
+ *
93
+ * function logUserAction() {
94
+ * eventLog({
95
+ * log_name: 'user_action',
96
+ * log_type: 'info',
97
+ * params: {
98
+ * action: 'button_click',
99
+ * screen: 'main',
100
+ * userId: 12345
101
+ * }
102
+ * });
103
+ * }
104
+ * \`\`\`
105
+ */
106
+ export declare function eventLog(params: EventLogParams): Promise<void>;
107
+
108
+ export {};
109
+ `
110
+ },
111
+ {
112
+ identifier: "getTossShareLink",
113
+ dts: "/**\n * @public\n * @category \uACF5\uC720\n * @kind function\n * @name getTossShareLink\n * @description\n * `getTossShareLink` \uD568\uC218\uB294 \uC0AC\uC6A9\uC790\uAC00 \uC9C0\uC815\uD55C \uACBD\uB85C\uB97C \uD1A0\uC2A4 \uC571\uC5D0\uC11C \uC5F4 \uC218 \uC788\uB294 \uACF5\uC720 \uB9C1\uD06C\uB97C \uBC18\uD658\uD574\uC694.\n * \uC774 \uB9C1\uD06C\uB97C \uB2E4\uB978 \uC0AC\uB78C\uACFC \uACF5\uC720\uD558\uBA74 \uD1A0\uC2A4 \uC571\uC774 \uC2E4\uD589\uB418\uBA74\uC11C \uC9C0\uC815\uD55C \uACBD\uB85C\uB85C \uC9C4\uC785\uD574\uC694. \uD1A0\uC2A4\uC571\uC774 \uC5C6\uB294 \uC0AC\uB78C\uC740 iOS \uC77C \uB54C\uB294 \uC571\uC2A4\uD1A0\uC5B4\uB85C \uC774\uB3D9\uD558\uACE0, Android \uC77C \uB54C\uB294 \uD50C\uB808\uC774\uC2A4\uD1A0\uC5B4\uB85C \uC774\uB3D9\uD574\uC694.\n *\n * \uACBD\uB85C\uB294 \uD1A0\uC2A4 \uC571 \uB0B4\uBD80 \uD2B9\uC815 \uD654\uBA74\uC744 \uB098\uD0C0\uB0B4\uB294 \uB525\uB9C1\uD06C(deep link) \uD615\uC2DD\uC774\uC5B4\uC57C \uD574\uC694.\n * \uC608\uB97C \uB4E4\uC5B4 `intoss://<\uC571 \uC774\uB984>`\uC774\uB098 `intoss://<\uC571 \uC774\uB984>/about?name=test`\uCC98\uB7FC \uC791\uC131\uD574\uC694.\n *\n * \uC774 \uD568\uC218\uB97C \uC0AC\uC6A9\uD558\uBA74 `deep_link_value`\uB97C \uD3EC\uD568\uD55C \uC644\uC131\uB41C \uACF5\uC720 \uB9C1\uD06C\uB97C \uB9CC\uB4E4 \uC218 \uC788\uC5B4\uC694.\n *\n * @param path - \uB525\uB9C1\uD06C\uB85C \uC5F4\uACE0 \uC2F6\uC740 \uACBD\uB85C\uC608\uC694. `intoss://`\uB85C \uC2DC\uC791\uD558\uB294 \uBB38\uC790\uC5F4\uC774\uC5B4\uC57C \uD574\uC694.\n * @returns {Promise<string>} `deep_link_value`\uAC00 \uD3EC\uD568\uB41C \uD1A0\uC2A4 \uACF5\uC720 \uB9C1\uD06C\uB97C \uBC18\uD658\uD574\uC694.\n *\n * @example\n * ```tsx\n * import { share } from '@granite-js/react-native';\n * import { getTossShareLink } from '@apps-in-toss/framework';\n *\n * // '/' \uACBD\uB85C\uB97C \uB525\uB9C1\uD06C\uB85C \uD3EC\uD568\uD55C \uD1A0\uC2A4 \uACF5\uC720 \uB9C1\uD06C\uB97C \uC0DD\uC131\uD574\uC694.\n * const tossLink = await getTossShareLink('intoss://my-app');\n *\n * // \uC0DD\uC131\uD55C \uB9C1\uD06C\uB97C \uBA54\uC2DC\uC9C0\uB85C \uACF5\uC720\uD574\uC694.\n * await share({ message: tossLink });\n * ```\n */\nexport declare function getTossShareLink(path: string): Promise<string>;\n\nexport {};\n"
114
+ },
115
+ {
116
+ identifier: "setDeviceOrientation",
117
+ dts: "/**\n * @public\n * @category \uD654\uBA74 \uC81C\uC5B4\n * @kind function\n * @name setDeviceOrientation\n * @description\n * `setDeviceOrientation` \uD568\uC218\uB294 \uAE30\uAE30\uC758 \uD654\uBA74 \uBC29\uD5A5\uC744 \uC124\uC815\uD558\uB294 \uAE30\uB2A5\uC744 \uC81C\uACF5\uD574\uC694.\n * \uC774 \uAE30\uB2A5\uC740 \uD2B9\uC815 \uD654\uBA74\uC5D0\uC11C \uAC00\uB85C \uBAA8\uB4DC\uB098 \uC138\uB85C \uBAA8\uB4DC\uB97C \uAC15\uC81C\uB85C \uC9C0\uC815\uD574\uC57C \uD560 \uB54C \uC720\uC6A9\uD574\uC694.\n *\n * `type` \uC635\uC158\uC744 \uD1B5\uD574 \uC6D0\uD558\uB294 \uD654\uBA74 \uBC29\uD5A5\uC744 \uC9C0\uC815\uD560 \uC218 \uC788\uC5B4\uC694. \uD2B9\uD788, \uC774 \uD568\uC218\uB294 \uC571 \uC804\uCCB4\uC5D0 \uC601\uD5A5\uC744 \uBBF8\uCE58\uBBC0\uB85C\n * \uD2B9\uC815 \uD654\uBA74\uC5D0\uC11C\uB9CC \uC0AC\uC6A9\uD558\uB824\uBA74 \uD654\uBA74\uC744 \uBC97\uC5B4\uB0A0 \uB54C \uC774\uC804 \uC0C1\uD0DC\uB85C \uBCF5\uAD6C\uD558\uB294 \uCD94\uAC00 \uC791\uC5C5\uC774 \uD544\uC694\uD574\uC694.\n *\n * \uC608\uB97C \uB4E4\uC5B4, \uB3D9\uC601\uC0C1 \uAC10\uC0C1 \uD654\uBA74\uC5D0\uC11C\uB294 \uAC00\uB85C \uBAA8\uB4DC\uB97C \uAC15\uC81C\uD558\uACE0, \uD654\uBA74\uC744 \uB5A0\uB0A0 \uB54C \uC124\uC815\uC744 \uBCF5\uAD6C\uD574\uC11C\n * \uB2E4\uB978 \uD654\uBA74\uB4E4\uC758 \uBC29\uD5A5 \uC124\uC815\uC5D0 \uC601\uD5A5\uC744 \uC8FC\uC9C0 \uC54A\uB3C4\uB85D \uD560 \uC218 \uC788\uC5B4\uC694.\n *\n * @param {object} options \uD654\uBA74 \uBC29\uD5A5 \uC124\uC815 \uAC12\uC774\uC5D0\uC694.\n * @param {string} options.type \uD654\uBA74 \uBC29\uD5A5\uC744 \uC9C0\uC815\uD558\uB294 \uC635\uC158\uC774\uC5D0\uC694.\n * 'portrait' | 'landscape' \uC911 \uD558\uB098\uB97C \uC120\uD0DD\uD560 \uC218 \uC788\uC5B4\uC694.\n *\n * @returns {Promise<void>} \uD654\uBA74 \uBC29\uD5A5 \uC124\uC815\uC774 \uC644\uB8CC\uB418\uBA74 \uD574\uACB0\uB418\uB294 Promise\uB97C \uBC18\uD658\uD574\uC694.\n *\n * @example\n * ### \uD654\uBA74 \uBC29\uD5A5 \uC124\uC815\uD558\uAE30\n *\n * ```tsx\n * import { Button } from 'react-native';\n * import { setDeviceOrientation } from '@apps-in-toss/framework';\n *\n * function SetDeviceOrientation() {\n * return (\n * <Button\n * title=\"\uAC00\uB85C \uBAA8\uB4DC\uB85C \uBCC0\uACBD\"\n * onPress={() => {\n * setDeviceOrientation({ type: 'landscape' });\n * }}\n * />\n * );\n * }\n * ```\n *\n * ### \uD654\uBA74 \uBC29\uD5A5 \uBCF5\uAD6C\uD558\uAE30\n * \uD2B9\uC815 \uD654\uBA74\uC744 \uBC97\uC5B4\uB0A0 \uB54C \uC774\uC804 \uC0C1\uD0DC\uB85C \uBCF5\uAD6C\uD558\uB824\uBA74 \uB2E4\uC74C\uACFC \uAC19\uC774 `useEffect`\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.\n *\n * ```tsx\n * import { useEffect } from 'react';\n * import { setDeviceOrientation } from '@apps-in-toss/framework';\n *\n * function VideoScreen() {\n * useEffect(() => {\n * setDeviceOrientation({ type: 'landscape' });\n *\n * return () => {\n * setDeviceOrientation({ type: 'portrait' }); // \uC124\uC815\uC744 \uC774\uC804 \uC0C1\uD0DC\uB85C \uBCF5\uAD6C\uD574\uC694.\n * };\n * }, []);\n *\n * return <Text>\uB3D9\uC601\uC0C1\uC744 \uAC10\uC0C1\uD558\uB294 \uD654\uBA74</Text>;\n * }\n * ```\n */\nexport declare function setDeviceOrientation(options: {\n type: \"portrait\" | \"landscape\";\n}): Promise<void>;\n\nexport {};\n"
118
+ },
119
+ {
120
+ identifier: "checkoutPayment",
121
+ dts: "/**\n * @public\n * @category \uD1A0\uC2A4\uD398\uC774\n * @name CheckoutPaymentOptions\n * @description \uD1A0\uC2A4\uD398\uC774 \uACB0\uC81C\uCC3D\uC744 \uB744\uC6B8 \uB54C \uD544\uC694\uD55C \uC635\uC158\uC774\uC5D0\uC694.\n * @property {string} payToken \uACB0\uC81C \uD1A0\uD070\uC774\uC5D0\uC694.\n */\nexport interface CheckoutPaymentOptions {\n /**\n * \uACB0\uC81C \uD1A0\uD070\uC774\uC5D0\uC694.\n */\n payToken: string;\n}\n/**\n * @public\n * @category \uD1A0\uC2A4\uD398\uC774\n * @name CheckoutPaymentResult\n * @description \uD1A0\uC2A4\uD398\uC774 \uACB0\uC81C\uCC3D\uC5D0\uC11C \uC0AC\uC6A9\uC790\uAC00 \uC778\uC99D\uC5D0 \uC131\uACF5\uD588\uB294\uC9C0 \uC5EC\uBD80\uC608\uC694.\n * @property {boolean} success \uC778\uC99D\uC774 \uC131\uACF5\uD588\uB294\uC9C0 \uC5EC\uBD80\uC608\uC694.\n * @property {string} [reason] \uC778\uC99D\uC774 \uC2E4\uD328\uD588\uC744 \uACBD\uC6B0\uC758 \uC774\uC720\uC608\uC694.\n */\nexport interface CheckoutPaymentResult {\n /**\n * \uC778\uC99D\uC774 \uC131\uACF5\uD588\uB294\uC9C0 \uC5EC\uBD80\uC608\uC694.\n */\n success: boolean;\n /**\n * \uC778\uC99D\uC774 \uC2E4\uD328\uD588\uC744 \uACBD\uC6B0\uC758 \uC774\uC720\uC608\uC694.\n */\n reason?: string;\n}\n/**\n * @public\n * @category \uD1A0\uC2A4\uD398\uC774\n * @name checkoutPayment\n * @description \uD1A0\uC2A4\uD398\uC774 \uACB0\uC81C\uCC3D\uC744 \uB744\uC6B0\uACE0, \uC0AC\uC6A9\uC790 \uC778\uC99D\uC744 \uC218\uD589\uD574\uC694. \uC778\uC99D\uC774 \uC644\uB8CC\uB418\uBA74 \uC131\uACF5 \uC5EC\uBD80\uB97C \uBC18\uD658\uD574\uC694.\n *\n * \uC774 \uD568\uC218\uB294 \uACB0\uC81C\uCC3D\uC744 \uD1B5\uD574 \uC0AC\uC6A9\uC790 \uC778\uC99D\uB9CC \uD574\uC694. \uC2E4\uC81C \uACB0\uC81C \uCC98\uB9AC\uB294 \uC778\uC99D \uC131\uACF5 \uD6C4 \uC11C\uBC84\uC5D0\uC11C \uBCC4\uB3C4\uB85C \uD574\uC57C \uD574\uC694.\n *\n * @param {CheckoutPaymentOptions} options \uACB0\uC81C\uCC3D\uC744 \uB744\uC6B8 \uB54C \uD544\uC694\uD55C \uC635\uC158\uC774\uC5D0\uC694.\n * @returns {Promise<CheckoutPaymentResult>} \uC778\uC99D \uC131\uACF5 \uC5EC\uBD80\uB97C \uD3EC\uD568\uD55C \uACB0\uACFC\uB97C \uBC18\uD658\uD574\uC694.\n *\n * @example\n *\n * ### \uD1A0\uC2A4\uD398\uC774 \uACB0\uC81C\uCC3D \uB744\uC6B0\uACE0 \uC778\uC99D \uCC98\uB9AC\uD558\uAE30\n *\n * ```tsx\n * import { TossPay } from '@apps-in-toss/framework';\n *\n * async function handlePayment() {\n * try {\n * // \uC2E4\uC81C \uAD6C\uD604 \uC2DC \uACB0\uC81C \uC0DD\uC131 \uC5ED\uD560\uC744 \uD558\uB294 API \uC5D4\uB4DC\uD3EC\uC778\uD2B8\uB85C \uB300\uCCB4\uD574\uC8FC\uC138\uC694.\n * const { payToken } = await fetch('/my-api/payment/create').then(res => res.json());\n *\n * const { success, reason } = await TossPay.checkoutPayment({ payToken });\n *\n * if (success) {\n * // \uC2E4\uC81C \uAD6C\uD604 \uC2DC \uACB0\uC81C\uB97C \uC2E4\uD589\uD558\uB294 API \uC5D4\uB4DC\uD3EC\uC778\uD2B8\uB85C \uB300\uCCB4\uD574\uC8FC\uC138\uC694.\n * await fetch('/my-api/payment/execute', {\n * method: 'POST',\n * body: JSON.stringify({ payToken }),\n * headers: { 'Content-Type': 'application/json' },\n * });\n * } else {\n * console.log('\uC778\uC99D \uC2E4\uD328:', reason);\n * }\n * } catch (error) {\n * console.error('\uACB0\uC81C \uC778\uC99D \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC5B4\uC694:', error);\n * }\n * }\n * ```\n */\nexport declare function checkoutPayment(options: CheckoutPaymentOptions): Promise<CheckoutPaymentResult>;\n\nexport {};\n"
122
+ },
123
+ {
124
+ identifier: "saveBase64Data",
125
+ dts: "export interface SaveBase64DataParams {\n data: string;\n fileName: string;\n mimeType: string;\n}\n/**\n * @public\n * @category \uB370\uC774\uD130\n * @name saveBase64Data\n * @description \uBB38\uC790\uC5F4\uB85C \uC778\uCF54\uB529\uB41C Base64 \uB370\uC774\uD130\uB97C \uC9C0\uC815\uD55C \uD30C\uC77C \uC774\uB984\uACFC MIME \uD0C0\uC785\uC73C\uB85C \uC0AC\uC6A9\uC790 \uAE30\uAE30\uC5D0 \uC800\uC7A5\uD574\uC694. \uC774\uBBF8\uC9C0, \uD14D\uC2A4\uD2B8, PDF \uB4F1 \uB2E4\uC591\uD55C \uD615\uC2DD\uC758 \uB370\uC774\uD130\uB97C \uC800\uC7A5\uD560 \uC218 \uC788\uC5B4\uC694.\n * @param {SaveBase64DataParams} params - \uC800\uC7A5\uD560 \uB370\uC774\uD130\uC640 \uD30C\uC77C \uC815\uBCF4\uB97C \uB2F4\uC740 \uAC1D\uCCB4\uC608\uC694.\n * @param {string} params.data - Base64 \uD615\uC2DD\uC73C\uB85C \uC778\uCF54\uB529\uB41C \uB370\uC774\uD130 \uBB38\uC790\uC5F4\uC774\uC5D0\uC694.\n * @param {string} params.fileName - \uC800\uC7A5\uD560 \uD30C\uC77C \uC774\uB984\uC774\uC5D0\uC694. \uD655\uC7A5\uC790\uB3C4 \uAC19\uC774 \uBD99\uC5EC\uC918\uC57C\uD574\uC694. \uC608\uB97C \uB4E4\uC5B4, 'example.png'\uB85C \uC800\uC7A5\uD560 \uC218 \uC788\uC5B4\uC694.\n * @param {string} params.mimeType - \uC800\uC7A5\uD560 \uD30C\uC77C\uC758 MIME \uD0C0\uC785\uC774\uC5D0\uC694. \uC608\uB97C \uB4E4\uC5B4 'image/png' \uB85C \uC9C0\uC815\uD558\uBA74 \uC774\uBBF8\uC9C0, 'application/pdf'\uB294 PDF \uD30C\uC77C\uC774\uC5D0\uC694. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 [MIME \uBB38\uC11C](https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/MIME_types)\uB97C \uCC38\uACE0\uD574\uC8FC\uC138\uC694.\n *\n * @example\n * ### Base64 \uC774\uBBF8\uC9C0 \uB370\uC774\uD130\uB97C \uC0AC\uC6A9\uC790 \uAE30\uAE30\uC5D0 \uC800\uC7A5\uD558\uAE30\n *\n * ```tsx\n * import { Button } from 'react-native';\n * import { saveBase64Data } from '@apps-in-toss/framework';\n *\n * // '\uC800\uC7A5' \uBC84\uD2BC\uC744 \uB204\uB974\uBA74 \uC774\uBBF8\uC9C0\uAC00 \uC0AC\uC6A9\uC790 \uAE30\uAE30\uC5D0 \uC800\uC7A5\uB3FC\uC694.\n * function SaveButton() {\n * const handleSave = async () => {\n * try {\n * await saveBase64Data({\n * data: 'iVBORw0KGgo...',\n * fileName: 'some-photo.png',\n * mimeType: 'image/png',\n * });\n * } catch (error) {\n * console.error('\uB370\uC774\uD130 \uC800\uC7A5\uC5D0 \uC2E4\uD328\uD588\uC5B4\uC694:', error);\n * }\n * };\n *\n * return <Button title=\"\uC800\uC7A5\" onPress={handleSave} />;\n * }\n * ```\n */\nexport declare function saveBase64Data(params: SaveBase64DataParams): Promise<void>;\n\nexport {};\n"
126
+ },
127
+ {
128
+ identifier: "getLocale",
129
+ dts: "/**\n * @public\n * @category \uC5B8\uC5B4\n * @kind function\n * @name getLocale\n * @description\n * \uC0AC\uC6A9\uC790\uC758 \uB85C\uCF00\uC77C(locale) \uC815\uBCF4\uB97C \uBC18\uD658\uD574\uC694. \uB124\uC774\uD2F0\uBE0C \uBAA8\uB4C8\uC5D0\uC11C \uB85C\uCF00\uC77C \uC815\uBCF4\uB97C \uAC00\uC838\uC62C \uC218 \uC5C6\uC744 \uB54C\uB294 \uAE30\uBCF8\uAC12\uC73C\uB85C 'ko-KR'\uC744 \uBC18\uD658\uD569\uB2C8\uB2E4. \uC571\uC758 \uD604\uC9C0\uD654 \uBC0F \uC5B8\uC5B4 \uC124\uC815\uACFC \uAD00\uB828\uB41C \uAE30\uB2A5\uC744 \uAD6C\uD604\uD560 \uB54C \uC0AC\uC6A9\uD558\uC138\uC694.\n *\n * @returns {string} \uC0AC\uC6A9\uC790\uC758 \uB85C\uCF00\uC77C \uC815\uBCF4\uB97C \uBC18\uD658\uD574\uC694.\n *\n * @example\n * ### \uD604\uC7AC \uC0AC\uC6A9\uC790\uC758 \uB85C\uCF00\uC77C \uC815\uBCF4 \uAC00\uC838\uC624\uAE30\n *\n * ```tsx\n * import { getLocale } from 'react-native-bedrock';\n * import { Text } from 'react-native';\n *\n * function MyPage() {\n * const locale = getLocale();\n *\n * return (\n * <Text>\uC0AC\uC6A9\uC790\uC758 \uB85C\uCF00\uC77C \uC815\uBCF4: {locale}</Text>\n * )\n * }\n *\n * ```\n */\nexport declare function getLocale(): string;\n\nexport {};\n"
130
+ },
131
+ {
132
+ identifier: "getSchemeUri",
133
+ dts: "/**\n * @public\n * @name getSchemeUri\n * @category \uD658\uACBD \uD655\uC778\n * @kind function\n * @description \uCC98\uC74C\uC5D0 \uD654\uBA74\uC5D0 \uC9C4\uC785\uD55C \uC2A4\uD0B4 \uAC12\uC774\uC5D0\uC694. \uD398\uC774\uC9C0 \uC774\uB3D9\uC73C\uB85C \uC778\uD55C URI \uBCC0\uACBD\uC740 \uBC18\uC601\uB418\uC9C0 \uC54A\uC544\uC694.\n * @returns {string} \uCC98\uC74C\uC5D0 \uD654\uBA74\uC5D0 \uC9C4\uC785\uD55C \uC2A4\uD0B4 \uAC12\uC744 \uBC18\uD658\uD574\uC694.\n *\n * @example\n * ### \uCC98\uC74C \uC9C4\uC785\uD55C \uC2A4\uD0B4 \uAC12 \uAC00\uC838\uC624\uAE30\n *\n * ```tsx\n * import { getSchemeUri } from 'react-native-bedrock';\n * import { Text } from 'react-native';\n *\n * function MyPage() {\n * const schemeUri = getSchemeUri();\n *\n * return <Text>\uCC98\uC74C\uC5D0 \uD654\uBA74\uC5D0 \uC9C4\uC785\uD55C \uC2A4\uD0B4 \uAC12: {schemeUri}</Text>\n * }\n * ```\n */\nexport declare function getSchemeUri(): string;\n\nexport {};\n"
134
+ },
135
+ {
136
+ identifier: "getPlatformOS",
137
+ dts: "/**\n * @public\n * @kind function\n * @category \uD658\uACBD \uD655\uC778\n *\n * @name getPlatformOS\n * @signature\n * ```typescript\n * function getPlatformOS(): 'ios' | 'android';\n * ```\n *\n * @description\n * \uD604\uC7AC \uC2E4\uD589 \uC911\uC778 \uD50C\uB7AB\uD3FC\uC744 \uD655\uC778\uD558\uB294 \uD568\uC218\uC608\uC694.\n * \uC774 \uD568\uC218\uB294 `react-native`\uC758 [`Platform.OS`](https://reactnative.dev/docs/0.72/platform#os) \uAC12\uC744 \uAE30\uBC18\uC73C\uB85C \uB3D9\uC791\uD558\uBA70, `ios` \uB610\uB294 `android` \uC911 \uD558\uB098\uC758 \uBB38\uC790\uC5F4\uC744 \uBC18\uD658\uD574\uC694.\n *\n * @returns {'ios' | 'android'} \uD604\uC7AC \uC2E4\uD589 \uC911\uC778 \uD50C\uB7AB\uD3FC\n *\n * @example\n *\n * ### \uD604\uC7AC \uC2E4\uD589\uC911\uC778 OS \uD50C\uB7AB\uD3FC \uD655\uC778\uD558\uAE30\n *\n * ```tsx\n * import { getPlatformOS } from 'react-native-bedrock';\n * import { Text } 'react-native';\n *\n * function Page() {\n * const platform = getPlatformOS();\n *\n * return <Text>\uD604\uC7AC \uD50C\uB7AB\uD3FC: {platform}</Text>;\n * }\n * ```\n */\nexport declare function getPlatformOS(): \"ios\" | \"android\";\n\nexport {};\n"
138
+ },
139
+ {
140
+ identifier: "getOperationalEnvironment",
141
+ dts: "/**\n * @public\n * @category \uD658\uACBD \uD655\uC778\n * @kind function\n * @name getOperationalEnvironment\n * @description\n * \uD604\uC7AC \uC2E4\uD589 \uC911\uC778 \uC571\uC758 \uC6B4\uC601 \uD658\uACBD\uC744 \uD655\uC778\uD574\uC694.\n * \uD1A0\uC2A4 \uC571\uC5D0\uC11C \uC2E4\uD589 \uC911\uC774\uB77C\uBA74 `'toss'`, \uC0CC\uB4DC\uBC15\uC2A4 \uD658\uACBD\uC5D0\uC11C \uC2E4\uD589 \uC911\uC774\uB77C\uBA74 `'sandbox'`\uB97C \uBC18\uD658\uD574\uC694.\n *\n * \uC6B4\uC601 \uD658\uACBD\uC740 \uC571\uC774 \uC2E4\uD589\uB418\uB294 \uCEE8\uD14D\uC2A4\uD2B8\uB97C \uC758\uBBF8\uD558\uBA70, \uD2B9\uC815 \uAE30\uB2A5\uC758 \uC0AC\uC6A9 \uAC00\uB2A5 \uC5EC\uBD80\uB97C \uD310\uB2E8\uD558\uB294 \uB370 \uD65C\uC6A9\uD560 \uC218 \uC788\uC5B4\uC694.\n *\n * @returns {'toss' | 'sandbox'}\n * \uD604\uC7AC \uC6B4\uC601 \uD658\uACBD\uC744 \uB098\uD0C0\uB0B4\uB294 \uBB38\uC790\uC5F4\uC774\uC5D0\uC694.\n * - `'toss'`: \uD1A0\uC2A4 \uC571\uC5D0\uC11C \uC2E4\uD589 \uC911\uC774\uC5D0\uC694.\n * - `'sandbox'`: \uC0CC\uB4DC\uBC15\uC2A4 \uD658\uACBD\uC5D0\uC11C \uC2E4\uD589 \uC911\uC774\uC5D0\uC694.\n *\n * @example\n * ### \uD604\uC7AC \uC6B4\uC601 \uD658\uACBD \uD655\uC778\uD558\uAE30\n *\n * ```tsx\n * import { getOperationalEnvironment } from '@apps-in-toss/framework';\n * import { Text } from 'react-native';\n *\n * function EnvironmentInfo() {\n * const environment = getOperationalEnvironment();\n *\n * return (\n * <Text>\uD604\uC7AC \uC6B4\uC601 \uD658\uACBD: {environment}</Text>\n * );\n * }\n * ```\n */\nexport declare function getOperationalEnvironment(): \"toss\" | \"sandbox\";\n\nexport {};\n"
142
+ },
143
+ {
144
+ identifier: "getTossAppVersion",
145
+ dts: "/**\n * @public\n * @category \uD658\uACBD \uD655\uC778\n * @name getTossAppVersion\n * @description \uD1A0\uC2A4 \uC571 \uBC84\uC804\uC744 \uAC00\uC838\uC635\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, `5.206.0`\uACFC \uAC19\uC740 \uD615\uD0DC\uB85C \uBC18\uD658\uB3FC\uC694. \uD1A0\uC2A4 \uC571 \uBC84\uC804\uC744 \uB85C\uADF8\uB85C \uB0A8\uAE30\uAC70\uB098, \uD2B9\uC815 \uAE30\uB2A5\uC774 \uD2B9\uC815 \uBC84\uC804 \uC774\uC0C1\uC5D0\uC11C\uB9CC \uC2E4\uD589\uB420 \uB54C \uC0AC\uC6A9\uB3FC\uC694.\n * @signature\n * ```typescript\n * function getTossAppVersion(): string\n * ```\n *\n * @returns {string} \uD1A0\uC2A4 \uC571 \uBC84\uC804\n *\n * @example\n *\n *\n * ### \uD1A0\uC2A4 \uC571 \uBC84\uC804 \uD655\uC778\uD558\uAE30\n *\n * ```tsx\n * import { getTossAppVersion } from '@apps-in-toss/framework';\n * import { Text } from 'react-native';\n *\n * export function TossAppVersionPage() {\n * return (\n * <Text>{getTossAppVersion()}</Text>\n * )\n * }\n * ```\n */\nexport declare function getTossAppVersion(): string;\n\nexport {};\n"
146
+ },
147
+ {
148
+ identifier: "getDeviceId",
149
+ dts: "/**\n * @public\n * @category \uD658\uACBD \uD655\uC778\n * @kind function\n * @name getDeviceId\n * @description\n * \uC0AC\uC6A9 \uC911\uC778 \uAE30\uAE30\uC758 \uACE0\uC720 \uC2DD\uBCC4\uC790\uB97C \uBB38\uC790\uC5F4\uB85C \uBC18\uD658\uD574\uC694.\n *\n * \uC774 \uD568\uC218\uB294 \uD604\uC7AC \uC0AC\uC6A9 \uC911\uC778 \uAE30\uAE30\uC758 \uACE0\uC720 \uC2DD\uBCC4\uC790\uB97C \uBB38\uC790\uC5F4\uB85C \uBC18\uD658\uD574\uC694. \uAE30\uAE30\uBCC4\uB85C \uC124\uC815\uC774\uB098 \uB370\uC774\uD130\uB97C \uC800\uC7A5\uD558\uAC70\uB098 \uC0AC\uC6A9\uC790\uC758 \uAE30\uAE30\uB97C \uC2DD\uBCC4\uD574\uC11C \uB85C\uADF8\uB97C \uAE30\uB85D\uD558\uACE0 \uBD84\uC11D\uD558\uB294 \uB370 \uC0AC\uC6A9\uD560 \uC218 \uC788\uC5B4\uC694. \uAC19\uC740 \uC0AC\uC6A9\uC790\uC758 \uC5EC\uB7EC \uAE30\uAE30\uB97C \uAD6C\uBD84\uD558\uB294 \uB370\uB3C4 \uC720\uC6A9\uD574\uC694.\n *\n * @returns {string} \uAE30\uAE30\uC758 \uACE0\uC720 \uC2DD\uBCC4\uC790\uB97C \uB098\uD0C0\uB0B4\uB294 \uBB38\uC790\uC5F4\uC774\uC5D0\uC694.\n *\n * @example\n * ### \uAE30\uAE30 \uACE0\uC720 \uC2DD\uBCC4\uC790 \uAC00\uC838\uC624\uAE30\n *\n * ```tsx\n * import { getDeviceId } from '@apps-in-toss/framework';\n * import { Text } from 'react-native';\n *\n * function MyPage() {\n * const id = getDeviceId();\n *\n * return (\n * <Text>\uC0AC\uC6A9\uC790\uC758 \uAE30\uAE30 \uACE0\uC720 \uC2DD\uBCC4\uC790: {id}</Text>\n * );\n * }\n * ```\n */\nexport declare function getDeviceId(): string;\n\nexport {};\n"
150
+ },
151
+ {
152
+ identifier: "startUpdateLocation",
153
+ dts: "import { EmitterSubscription } from 'react-native';\n\nexport interface EventEmitterSchema<K extends string, P extends unknown[]> {\n name: K;\n params: P;\n}\ndeclare enum Accuracy {\n /**\n * \uC624\uCC28\uBC94\uC704 3KM \uC774\uB0B4\n */\n Lowest = 1,\n /**\n * \uC624\uCC28\uBC94\uC704 1KM \uC774\uB0B4\n */\n Low = 2,\n /**\n * \uC624\uCC28\uBC94\uC704 \uBA87 \uBC31\uBBF8\uD130 \uC774\uB0B4\n */\n Balanced = 3,\n /**\n * \uC624\uCC28\uBC94\uC704 10M \uC774\uB0B4\n */\n High = 4,\n /**\n * \uAC00\uC7A5 \uB192\uC740 \uC815\uD655\uB3C4\n */\n Highest = 5,\n /**\n * \uB124\uBE44\uAC8C\uC774\uC158\uC744 \uC704\uD55C \uCD5C\uACE0 \uC815\uD655\uB3C4\n */\n BestForNavigation = 6\n}\ninterface Location$1 {\n /**\n * Android\uC5D0\uC11C\uB9CC \uC9C0\uC6D0\uD558\uB294 \uC635\uC158\uC774\uC5D0\uC694.\n *\n * - `FINE`: \uC815\uD655\uD55C \uC704\uCE58\n * - `COARSE`: \uB300\uB7B5\uC801\uC778 \uC704\uCE58\n *\n * @see https://developer.android.com/codelabs/approximate-location\n */\n accessLocation?: \"FINE\" | \"COARSE\";\n /**\n * \uC704\uCE58\uAC00 \uC5C5\uB370\uC774\uD2B8\uB41C \uC2DC\uC810\uC758 \uC720\uB2C9\uC2A4 \uD0C0\uC784\uC2A4\uD0EC\uD504\uC608\uC694.\n */\n timestamp: number;\n /**\n * @description \uC704\uCE58 \uC815\uBCF4\uB97C \uB098\uD0C0\uB0B4\uB294 \uAC1D\uCCB4\uC608\uC694. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 [LocationCoords](/react-native/reference/framework/Types/LocationCoords.html)\uC744 \uCC38\uACE0\uD574\uC8FC\uC138\uC694.\n */\n coords: LocationCoords;\n}\n/**\n * @public\n * @category \uC704\uCE58 \uC815\uBCF4\n * @name LocationCoords\n * @description \uC138\uBD80 \uC704\uCE58 \uC815\uBCF4\uB97C \uB098\uD0C0\uB0B4\uB294 \uAC1D\uCCB4\uC608\uC694.\n */\nexport interface LocationCoords {\n /**\n * \uC704\uB3C4\n */\n latitude: number;\n /**\n * \uACBD\uB3C4\n */\n longitude: number;\n /**\n * \uB192\uC774\n */\n altitude: number;\n /**\n * \uC704\uCE58 \uC815\uD655\uB3C4\n */\n accuracy: number;\n /**\n * \uACE0\uB3C4 \uC815\uD655\uB3C4\n */\n altitudeAccuracy: number;\n /**\n * \uBC29\uD5A5\n */\n heading: number;\n}\nexport interface StartUpdateLocationOptions {\n /**\n * \uC704\uCE58 \uC815\uD655\uB3C4\uB97C \uC124\uC815\uD574\uC694.\n */\n accuracy: Accuracy;\n /**\n * \uC704\uCE58 \uC5C5\uB370\uC774\uD2B8 \uC8FC\uAE30\uB97C \uBC00\uB9AC\uCD08(ms) \uB2E8\uC704\uB85C \uC124\uC815\uD574\uC694.\n */\n timeInterval: number;\n /**\n * \uC704\uCE58 \uBCC0\uACBD \uAC70\uB9AC\uB97C \uBBF8\uD130(m) \uB2E8\uC704\uB85C \uC124\uC815\uD574\uC694.\n */\n distanceInterval: number;\n}\nexport interface StartUpdateLocationSubscription extends EmitterSubscription {\n remove: () => Promise<void>;\n}\n/**\n * @name UpdateLocationEventEmitter\n * @kind typedef\n * @description\n * \uB514\uBC14\uC774\uC2A4\uC758 \uC704\uCE58 \uC815\uBCF4 \uBCC0\uACBD\uC744 \uAC10\uC9C0\uD574\uC694\n */\nexport type UpdateLocationEventEmitter = EventEmitterSchema<\"updateLocation\", [\n Location$1\n]>;\n/**\n * @public\n * @category \uC704\uCE58 \uC815\uBCF4\n * @name startUpdateLocation\n * @description \uB514\uBC14\uC774\uC2A4\uC758 \uC704\uCE58 \uC815\uBCF4\uB97C \uC9C0\uC18D\uC801\uC73C\uB85C \uAC10\uC9C0\uD558\uACE0, \uC704\uCE58\uAC00 \uBCC0\uACBD\uB418\uBA74 \uCF5C\uBC31\uC744 \uC2E4\uD589\uD558\uB294 \uD568\uC218\uC608\uC694. \uCF5C\uBC31 \uD568\uC218\uB97C \uB4F1\uB85D\uD558\uBA74 \uC704\uCE58\uAC00 \uBCC0\uACBD\uB420 \uB54C\uB9C8\uB2E4 \uC790\uB3D9\uC73C\uB85C \uD638\uCD9C\uB3FC\uC694.\n * \uC2E4\uC2DC\uAC04 \uC704\uCE58 \uCD94\uC801\uC774 \uD544\uC694\uD55C \uAE30\uB2A5\uC744 \uAD6C\uD604\uD560 \uB54C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC5B4\uC694. \uC608\uB97C \uB4E4\uC5B4 \uC9C0\uB3C4 \uC571\uC5D0\uC11C \uC0AC\uC6A9\uC790\uC758 \uD604\uC7AC \uC704\uCE58\uB97C \uC2E4\uC2DC\uAC04\uC73C\uB85C \uC5C5\uB370\uC774\uD2B8\uD560 \uB54C, \uC6B4\uB3D9 \uC571\uC5D0\uC11C \uC0AC\uC6A9\uC790\uC758 \uC774\uB3D9 \uAC70\uB9AC\uB97C \uAE30\uB85D\uD560 \uB54C \uB4F1\uC774\uC5D0\uC694.\n * \uC704\uCE58 \uC5C5\uB370\uC774\uD2B8 \uC8FC\uAE30\uC640 \uC815\uD655\uB3C4\uB97C \uC870\uC815\uD574 \uBC30\uD130\uB9AC \uC18C\uBAA8\uB97C \uCD5C\uC18C\uD654\uD558\uBA74\uC11C\uB3C4 \uD544\uC694\uD55C \uC815\uBCF4\uB97C \uC5BB\uC744 \uC218 \uC788\uC5B4\uC694.\n *\n * @param {StartUpdateLocationOptions} options - \uC704\uCE58 \uC815\uBCF4 \uAC10\uC9C0\uC5D0 \uD544\uC694\uD55C \uC124\uC815 \uAC1D\uCCB4\uC5D0\uC694.\n * @param {number} [options.accuracy] \uC704\uCE58 \uC815\uD655\uB3C4\uB97C \uC124\uC815\uD574\uC694.\n * @param {number} [options.timeInterval] \uC704\uCE58 \uC815\uBCF4\uB97C \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uCD5C\uC18C \uC8FC\uAE30\uB85C, \uB2E8\uC704\uB294 \uBC00\uB9AC\uCD08(ms)\uC608\uC694. \uC774 \uAC12\uC740 \uC704\uCE58 \uC5C5\uB370\uC774\uD2B8\uAC00 \uBC1C\uC0DD\uD558\uB294 \uAC00\uC7A5 \uC9E7\uC740 \uAC04\uACA9\uC744 \uC124\uC815\uD558\uC9C0\uB9CC, \uC2DC\uC2A4\uD15C\uC774\uB098 \uD658\uACBD\uC758 \uC601\uD5A5\uC744 \uBC1B\uC544 \uC9C0\uC815\uD55C \uC8FC\uAE30\uBCF4\uB2E4 \uB354 \uAE34 \uAC04\uACA9\uC73C\uB85C \uC5C5\uB370\uC774\uD2B8\uB420 \uC218 \uC788\uC5B4\uC694.\n * @param {number} [options.distanceInterval] \uC704\uCE58 \uBCC0\uACBD \uAC70\uB9AC\uB97C \uBBF8\uD130(m) \uB2E8\uC704\uB85C \uC124\uC815\uD574\uC694.\n * @param {(location: Location) => void} [options.callback] \uC704\uCE58 \uC815\uBCF4\uAC00 \uBCC0\uACBD\uB420 \uB54C \uD638\uCD9C\uB418\uB294 \uCF5C\uBC31 \uD568\uC218\uC608\uC694. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 [Location](/react-native/reference/framework/Types/Location.html)\uC744 \uCC38\uACE0\uD574\uC8FC\uC138\uC694.\n *\n * @example\n * ### \uC704\uCE58 \uC815\uBCF4 \uBCC0\uACBD \uAC10\uC9C0\uD558\uAE30\n *\n * ```tsx\n * import React, { useState, useEffect } from 'react';\n * import { View, Text, Button } from 'react-native';\n * import { startUpdateLocation } from '@apps-in-toss/framework';\n *\n * // \uC704\uCE58 \uC815\uBCF4 \uBCC0\uACBD \uAC10\uC9C0\uD558\uAE30\n * function LocationWatcher() {\n * const [location, setLocation] = useState(null);\n *\n * useEffect(() => {\n * return startUpdateLocation({\n * options: {\n * accuracy: Accuracy.Balanced,\n * timeInterval: 3000,\n * distanceInterval: 10,\n * },\n * onEvent: (location) => {\n * setLocation(location);\n * },\n * onError: (error) => {\n * console.error('\uC704\uCE58 \uC815\uBCF4\uB97C \uAC00\uC838\uC624\uB294\uB370 \uC2E4\uD328\uD588\uC5B4\uC694:', error);\n * },\n * });\n * }, []);\n *\n * if (location == null) {\n * return <Text>\uC704\uCE58 \uC815\uBCF4\uB97C \uAC00\uC838\uC624\uB294 \uC911\uC774\uC5D0\uC694...</Text>;\n * }\n *\n * return (\n * <View>\n * <Text>\uC704\uB3C4: {location.coords.latitude}</Text>\n * <Text>\uACBD\uB3C4: {location.coords.longitude}</Text>\n * <Text>\uC704\uCE58 \uC815\uD655\uB3C4: {location.coords.accuracy}m</Text>\n * <Text>\uB192\uC774: {location.coords.altitude}m</Text>\n * <Text>\uACE0\uB3C4 \uC815\uD655\uB3C4: {location.coords.altitudeAccuracy}m</Text>\n * <Text>\uBC29\uD5A5: {location.coords.heading}\xB0</Text>\n * </View>\n * );\n * }\n * ```\n */\nexport declare function startUpdateLocation(eventParams: {\n onEvent: (response: Location$1) => void;\n onError: (error: unknown) => void;\n options: StartUpdateLocationOptions;\n}): () => void;\n\nexport {};\n"
154
+ },
155
+ {
156
+ identifier: "onVisibilityChangedByTransparentServiceWeb",
157
+ dts: `import { EmitterSubscription } from 'react-native';
158
+
159
+ export interface EventEmitterSchema<K extends string, P extends unknown[]> {
160
+ name: K;
161
+ params: P;
162
+ }
163
+ export interface OnVisibilityChangedByTransparentServiceWebSubscription extends EmitterSubscription {
164
+ remove: () => void;
165
+ }
166
+ export type OnVisibilityChangedByTransparentServiceWebEventEmitter = EventEmitterSchema<"visibilityChangedByTransparentServiceWeb", [
167
+ boolean
168
+ ]>;
169
+ export declare function onVisibilityChangedByTransparentServiceWeb(eventParams: {
170
+ options: {
171
+ callbackId: string;
172
+ };
173
+ onEvent: (isVisible: boolean) => void;
174
+ onError: (error: unknown) => void;
175
+ }): () => void;
176
+
177
+ export {};
178
+ `
179
+ }
180
+ ];
181
+ export {
182
+ bridges_meta_default as default
183
+ };
package/dist/index.cjs CHANGED
@@ -1549,7 +1549,7 @@ function useBridgeHandler({
1549
1549
  },
1550
1550
  {}
1551
1551
  )
1552
- )}`,
1552
+ )};`,
1553
1553
  originalInjectedJavaScript,
1554
1554
  "true"
1555
1555
  ].join("\n"),
@@ -1899,8 +1899,16 @@ function WebView({ type, local, onMessage, ...props }) {
1899
1899
  const bottom = (0, import_private3.useSafeAreaBottom)();
1900
1900
  const global2 = getAppsInTossGlobals();
1901
1901
  const partner = (0, import_react_native20.usePartnerNavigation)();
1902
+ const disableTextSelectionCSS = `
1903
+ (function() {
1904
+ const style = document.createElement('style');
1905
+ style.textContent = '*:not(input):not(textarea) { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; }';
1906
+ document.head.appendChild(style);
1907
+ })();
1908
+ `;
1902
1909
  const handler = useBridgeHandler({
1903
1910
  onMessage,
1911
+ injectedJavaScript: [disableTextSelectionCSS].join("\n"),
1904
1912
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1905
1913
  eventListenerMap: {
1906
1914
  ...event_bridges_exports,
@@ -1979,14 +1987,31 @@ function WebView({ type, local, onMessage, ...props }) {
1979
1987
  }, [type, props]);
1980
1988
  const BaseWebView = WEBVIEW_TYPES[type];
1981
1989
  const webViewDebuggingEnabled = operationalEnvironment === "sandbox";
1982
- const handleNavigationStateChange = (0, import_react10.useCallback)((event) => {
1983
- if (event.url) {
1984
- trackScreen(event.url);
1985
- }
1986
- }, []);
1990
+ const [canHistoryGoBack, setCanHistoryGoBack] = (0, import_react10.useState)(false);
1991
+ const handleNavigationStateChange = (0, import_react10.useCallback)(
1992
+ (event) => {
1993
+ if (event.url) {
1994
+ trackScreen(event.url);
1995
+ }
1996
+ setCanHistoryGoBack(event.canGoBack);
1997
+ },
1998
+ [setCanHistoryGoBack]
1999
+ );
1987
2000
  const userAgent = useCreateUserAgent({
1988
2001
  colorPreference: "light"
1989
2002
  });
2003
+ const backEvent = (0, import_react_native_bedrock18.useBackEvent)();
2004
+ const handleBackEvent = (0, import_react10.useCallback)(() => {
2005
+ if (canHistoryGoBack) {
2006
+ handler.ref.current?.goBack();
2007
+ } else {
2008
+ (0, import_react_native_bedrock18.closeView)();
2009
+ }
2010
+ }, [canHistoryGoBack, handler]);
2011
+ (0, import_react10.useEffect)(() => {
2012
+ backEvent.addEventListener(handleBackEvent);
2013
+ return () => backEvent.removeEventListener(handleBackEvent);
2014
+ }, [backEvent, handleBackEvent]);
1990
2015
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1991
2016
  BaseWebView,
1992
2017
  {
package/dist/index.js CHANGED
@@ -954,9 +954,9 @@ import {
954
954
  usePartnerNavigation
955
955
  } from "@toss-design-system/react-native";
956
956
  import { useSafeAreaBottom, useSafeAreaTop as useSafeAreaTop2 } from "@toss-design-system/react-native/private";
957
- import { useCallback as useCallback5, useMemo as useMemo3 } from "react";
957
+ import { useCallback as useCallback5, useEffect as useEffect7, useMemo as useMemo3, useState as useState4 } from "react";
958
958
  import { Platform as Platform7 } from "react-native";
959
- import { getSchemeUri as getSchemeUri5, useBedrockEvent } from "react-native-bedrock";
959
+ import { getSchemeUri as getSchemeUri5, useBackEvent, useBedrockEvent, closeView as closeView3 } from "react-native-bedrock";
960
960
  import * as bedrockAsyncBridges from "react-native-bedrock/async-bridges";
961
961
  import * as bedrockConstantBridges from "react-native-bedrock/constant-bridges";
962
962
 
@@ -1495,7 +1495,7 @@ function useBridgeHandler({
1495
1495
  },
1496
1496
  {}
1497
1497
  )
1498
- )}`,
1498
+ )};`,
1499
1499
  originalInjectedJavaScript,
1500
1500
  "true"
1501
1501
  ].join("\n"),
@@ -1845,8 +1845,16 @@ function WebView({ type, local, onMessage, ...props }) {
1845
1845
  const bottom = useSafeAreaBottom();
1846
1846
  const global2 = getAppsInTossGlobals();
1847
1847
  const partner = usePartnerNavigation();
1848
+ const disableTextSelectionCSS = `
1849
+ (function() {
1850
+ const style = document.createElement('style');
1851
+ style.textContent = '*:not(input):not(textarea) { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-touch-callout: none; }';
1852
+ document.head.appendChild(style);
1853
+ })();
1854
+ `;
1848
1855
  const handler = useBridgeHandler({
1849
1856
  onMessage,
1857
+ injectedJavaScript: [disableTextSelectionCSS].join("\n"),
1850
1858
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1851
1859
  eventListenerMap: {
1852
1860
  ...event_bridges_exports,
@@ -1925,14 +1933,31 @@ function WebView({ type, local, onMessage, ...props }) {
1925
1933
  }, [type, props]);
1926
1934
  const BaseWebView = WEBVIEW_TYPES[type];
1927
1935
  const webViewDebuggingEnabled = operationalEnvironment === "sandbox";
1928
- const handleNavigationStateChange = useCallback5((event) => {
1929
- if (event.url) {
1930
- trackScreen(event.url);
1931
- }
1932
- }, []);
1936
+ const [canHistoryGoBack, setCanHistoryGoBack] = useState4(false);
1937
+ const handleNavigationStateChange = useCallback5(
1938
+ (event) => {
1939
+ if (event.url) {
1940
+ trackScreen(event.url);
1941
+ }
1942
+ setCanHistoryGoBack(event.canGoBack);
1943
+ },
1944
+ [setCanHistoryGoBack]
1945
+ );
1933
1946
  const userAgent = useCreateUserAgent({
1934
1947
  colorPreference: "light"
1935
1948
  });
1949
+ const backEvent = useBackEvent();
1950
+ const handleBackEvent = useCallback5(() => {
1951
+ if (canHistoryGoBack) {
1952
+ handler.ref.current?.goBack();
1953
+ } else {
1954
+ closeView3();
1955
+ }
1956
+ }, [canHistoryGoBack, handler]);
1957
+ useEffect7(() => {
1958
+ backEvent.addEventListener(handleBackEvent);
1959
+ return () => backEvent.removeEventListener(handleBackEvent);
1960
+ }, [backEvent, handleBackEvent]);
1936
1961
  return /* @__PURE__ */ jsx7(
1937
1962
  BaseWebView,
1938
1963
  {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@apps-in-toss/framework",
3
3
  "type": "module",
4
- "version": "0.0.36",
4
+ "version": "0.0.37",
5
5
  "description": "The framework for Apps In Toss",
6
6
  "scripts": {
7
7
  "prepack": "yarn build",
@@ -57,9 +57,9 @@
57
57
  "ait": "./bin/ait.js"
58
58
  },
59
59
  "dependencies": {
60
- "@apps-in-toss/analytics": "0.0.36",
61
- "@apps-in-toss/cli": "0.0.36",
62
- "@apps-in-toss/plugins": "0.0.36",
60
+ "@apps-in-toss/analytics": "0.0.37",
61
+ "@apps-in-toss/cli": "0.0.37",
62
+ "@apps-in-toss/plugins": "0.0.37",
63
63
  "es-hangul": "^2.3.2"
64
64
  },
65
65
  "devDependencies": {
@@ -94,5 +94,5 @@
94
94
  "publishConfig": {
95
95
  "access": "public"
96
96
  },
97
- "gitHead": "b3b65b35bf9532480fcbd14f7d22b796644e2f2f"
97
+ "gitHead": "009779504a353e1b39160e813bf80514cbf7278b"
98
98
  }