diff --git a/.github/workflows/mainnet-deploy.yaml.disabled b/.github/workflows/mainnet-deploy.yaml.disabled
index 0b69f65c88..d69e4bbb0c 100644
--- a/.github/workflows/mainnet-deploy.yaml.disabled
+++ b/.github/workflows/mainnet-deploy.yaml.disabled
@@ -9,7 +9,7 @@ on:
jobs:
deploy:
- name: Ping deploy
+ name: Pocket deploy
runs-on: mainnet
steps:
- name: Environment
diff --git a/.github/workflows/testnet-deploy.yaml b/.github/workflows/testnet-deploy.yaml
index 55391d0122..13de232a81 100644
--- a/.github/workflows/testnet-deploy.yaml
+++ b/.github/workflows/testnet-deploy.yaml
@@ -9,7 +9,7 @@ on:
jobs:
deploy:
- name: Ping deploy
+ name: Pocket deploy
runs-on: testnet
steps:
- name: print
diff --git a/.gitignore b/.gitignore
index 212ccd26db..ae6715d0fb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,7 @@ node_modules/
**/.vscode
yarn-error.log
dist
-.idea
\ No newline at end of file
+.idea
+.env
+
+server/datastore/*
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000..39255af19e
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,29 @@
+# Use the official Node.js image as base
+FROM node:latest
+
+
+# Set the working directory inside the container
+WORKDIR /usr/src/app
+
+# Copy package.json and package-lock.json to the working directory
+COPY package*.json ./
+COPY yarn.lock ./
+
+# Install dependencies
+RUN npm install --legacy-peer-deps
+
+# Copy the rest of the application code to the working directory
+COPY . .
+
+# Change ownership of the working directory to the 'node' user
+RUN chown -R node:node .
+
+# Switch to the 'node' user
+USER node
+
+# Expose the port your app runs on
+EXPOSE 5173
+
+RUN yarn build
+# Command to run your application
+CMD ["yarn", "serve", "--host"]
diff --git a/POCKET_NETWORK_API_README.md b/POCKET_NETWORK_API_README.md
new file mode 100644
index 0000000000..f732db14bb
--- /dev/null
+++ b/POCKET_NETWORK_API_README.md
@@ -0,0 +1,413 @@
+# Pocket Network Explorer Indexer API Documentation
+
+This document outlines the REST API endpoints that an **indexer** needs to implement to serve a Pocket Network explorer. The indexer will fetch data from Pocket Network blockchain nodes and external sources, then expose its own standardized REST API endpoints for the explorer to consume.
+
+## Overview
+
+Pocket Network is a decentralized infrastructure network that provides RPC services to blockchain applications. The **indexer** acts as an intermediary layer that:
+
+1. **Fetches data** from Pocket Network blockchain nodes and external sources
+2. **Processes and indexes** the data for fast retrieval
+3. **Exposes REST API endpoints** for the explorer to consume
+4. **Provides real-time updates** and historical data
+
+The explorer will use the indexer's API instead of making direct RPC calls to blockchain nodes, ensuring better performance, reliability, and data consistency.
+
+## Architecture Overview
+
+```
+┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
+│ Pocket │ │ Indexer │ │ Explorer │
+│ Network │───▶│ │───▶│ │
+│ Blockchain │ │ • Fetches data │ │ • Consumes API │
+│ Nodes │ │ • Processes │ │ • Displays UI │
+│ │ │ • Indexes │ │ • User queries │
+└─────────────────┘ │ • Exposes API │ └─────────────────┘
+ └─────────────────┘
+```
+
+## Base URL Structure
+
+The indexer will expose these endpoints under its own domain:
+
+```
+{indexer_endpoint}/pokt-network/poktroll/{module}/{resource} # Pocket Network specific
+{indexer_endpoint}/cosmos/{module}/v1beta1/{resource} # Core blockchain data
+```
+
+**Note**: These are the endpoints the **indexer** will expose, not the endpoints it fetches from.
+
+## Core Blockchain Data (Required for Pocket Network)
+
+### Authentication & Authorization
+
+#### Get All Accounts
+- **Endpoint**: `GET /cosmos/auth/v1beta1/accounts`
+- **Query Parameters**:
+ - `pagination.limit` (optional): Number of accounts per page
+ - `pagination.offset` (optional): Offset for pagination
+ - `pagination.count_total` (optional): Whether to count total records
+- **Description**: Get all accounts with pagination
+- **Response**: Paginated list of accounts
+
+#### Get Account by Address
+- **Endpoint**: `GET /cosmos/auth/v1beta1/accounts/{address}`
+- **Path Parameters**: `address` - Account address
+- **Description**: Get specific account information
+- **Response**: Account details
+
+### Bank Module
+
+#### Get Account Balances
+- **Endpoint**: `GET /cosmos/bank/v1beta1/balances/{address}`
+- **Path Parameters**: `address` - Account address
+- **Description**: Get account balances
+- **Response**: Paginated list of coin balances
+
+#### Get Total Supply
+- **Endpoint**: `GET /cosmos/bank/v1beta1/supply`
+- **Query Parameters**: Standard pagination parameters
+- **Description**: Get total supply of all tokens
+- **Response**: Paginated list of coin supplies
+
+### Staking Module
+
+#### Get All Validators
+- **Endpoint**: `GET /cosmos/staking/v1beta1/validators`
+- **Query Parameters**:
+ - `status` - Validator status (bonded, unbonded, unbonding)
+ - `pagination.limit` - Number of validators per page
+- **Description**: Get all validators
+- **Response**: Paginated list of validators
+
+#### Get Validator by Address
+- **Endpoint**: `GET /cosmos/staking/v1beta1/validators/{validator_addr}`
+- **Path Parameters**: `validator_addr` - Validator address
+- **Description**: Get specific validator information
+- **Response**: Validator details
+
+#### Get Delegator Delegations
+- **Endpoint**: `GET /cosmos/staking/v1beta1/delegations/{delegator_addr}`
+- **Path Parameters**: `delegator_addr` - Delegator address
+- **Description**: Get delegations for specific delegator
+- **Response**: Paginated list of delegations
+
+#### Get Delegator Unbonding
+- **Endpoint**: `GET /cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations`
+- **Path Parameters**: `delegator_addr` - Delegator address
+- **Description**: Get unbonding delegations for specific delegator
+- **Response**: Paginated list of unbonding delegations
+
+### Distribution Module
+
+#### Get Delegator Rewards
+- **Endpoint**: `GET /cosmos/distribution/v1beta1/delegators/{delegator_addr}/rewards`
+- **Path Parameters**: `delegator_addr` - Delegator address
+- **Description**: Get delegator rewards
+- **Response**: Rewards by validator and total
+
+### Tendermint/Blockchain Data
+
+#### Get Latest Block
+- **Endpoint**: `GET /cosmos/base/tendermint/v1beta1/blocks/latest`
+- **Description**: Get latest block information
+- **Response**: Latest block data
+
+#### Get Block by Height
+- **Endpoint**: `GET /cosmos/base/tendermint/v1beta1/blocks/{height}`
+- **Path Parameters**: `height` - Block height
+- **Description**: Get block at specific height
+- **Response**: Block data
+
+### Transaction Module
+
+#### Get Transactions
+- **Endpoint**: `GET /cosmos/tx/v1beta1/txs`
+- **Query Parameters**:
+ - `order_by` - Order by field (1: ascending, 2: descending)
+ - `query` - Query filter (e.g., message.sender='address')
+ - `pagination.limit` - Number of transactions per page
+ - `pagination.offset` - Offset for pagination
+- **Description**: Get transactions with filtering and pagination
+- **Response**: Paginated list of transactions
+
+#### Get Transaction by Hash
+- **Endpoint**: `GET /cosmos/tx/v1beta1/txs/{hash}`
+- **Path Parameters**: `hash` - Transaction hash
+- **Description**: Get specific transaction details
+- **Response**: Transaction and transaction response
+
+## Pocket Network Specific Modules
+
+### Applications
+
+#### Get All Applications
+- **Endpoint**: `GET /pokt-network/poktroll/application/application`
+- **Query Parameters**: Standard pagination parameters
+- **Description**: Get all applications that use Pocket Network services
+- **Response**: Paginated list of applications
+
+#### Get Application by Address
+- **Endpoint**: `GET /pokt-network/poktroll/application/application/{address}`
+- **Path Parameters**: `address` - Application address
+- **Description**: Get specific application information including stake and service usage
+- **Response**: Application details
+
+### Gateways
+
+#### Get All Gateways
+- **Endpoint**: `GET /pokt-network/poktroll/gateway/gateway`
+- **Query Parameters**: Standard pagination parameters
+- **Description**: Get all gateways that route RPC requests
+- **Response**: Paginated list of gateways
+
+#### Get Gateway by Address
+- **Endpoint**: `GET /pokt-network/poktroll/gateway/gateway/{address}`
+- **Path Parameters**: `address` - Gateway address
+- **Description**: Get specific gateway information including stake and routing data
+- **Response**: Gateway details
+
+### Suppliers
+
+#### Get All Suppliers
+- **Endpoint**: `GET /pokt-network/poktroll/supplier/supplier`
+- **Query Parameters**: Standard pagination parameters
+- **Description**: Get all suppliers that provide RPC services
+- **Response**: Paginated list of suppliers
+
+#### Get Supplier by Address
+- **Endpoint**: `GET /pokt-network/poktroll/supplier/supplier/{address}`
+- **Path Parameters**: `address` - Supplier address
+- **Description**: Get specific supplier information including stake and service offerings
+- **Response**: Supplier details
+
+### Services
+
+#### Get All Services
+- **Endpoint**: `GET /pokt-network/poktroll/service/service`
+- **Query Parameters**: Standard pagination parameters
+- **Description**: Get all RPC services available on the network
+- **Response**: Paginated list of services
+
+#### Get Service by Address
+- **Endpoint**: `GET /pokt-network/poktroll/service/service/{address}`
+- **Path Parameters**: `address` - Service address
+- **Description**: Get specific service information
+- **Response**: Service details
+
+#### Get Relay Mining Difficulty
+- **Endpoint**: `GET /pokt-network/poktroll/service/relay_mining_difficulty`
+- **Query Parameters**: Standard pagination parameters
+- **Description**: Get relay mining difficulty information for service distribution
+- **Response**: Paginated list of relay mining difficulty data
+
+## Standard Pagination Parameters
+
+Most endpoints support the following pagination parameters:
+
+- `pagination.limit` - Number of items per page
+- `pagination.offset` - Offset for pagination
+- `pagination.count_total` - Whether to count total records
+- `pagination.reverse` - Whether to reverse order
+
+## Response Format
+
+All endpoints return JSON responses with the following structure:
+
+```json
+{
+ "data": "actual response data",
+ "pagination": {
+ "next_key": "next page key",
+ "total": "total count if count_total=true"
+ }
+}
+```
+
+## Error Handling
+
+The API should return appropriate HTTP status codes:
+
+- `200` - Success
+- `400` - Bad Request
+- `404` - Not Found
+- `500` - Internal Server Error
+
+Error responses should include:
+
+```json
+{
+ "error": "Error message",
+ "code": "Error code"
+}
+```
+
+## Rate Limiting
+
+Consider implementing rate limiting to prevent abuse:
+
+- **Rate Limit**: 1000 requests per minute per IP
+- **Headers**: Include `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`
+
+## Caching
+
+Implement appropriate caching headers:
+
+- **Cache-Control**: `max-age=60` for frequently changing data
+- **ETag**: For conditional requests
+- **Last-Modified**: For resource modification tracking
+
+## Security Considerations
+
+- Implement CORS policies
+- Validate all input parameters
+- Sanitize query strings
+- Use HTTPS in production
+- Implement request logging and monitoring
+
+## Implementation Notes
+
+### Indexer Responsibilities
+
+1. **Data Fetching**: The indexer must fetch data from these sources:
+ - Pocket Network blockchain nodes (RPC endpoints)
+ - External APIs for additional data
+ - Real-time blockchain events
+
+2. **Data Processing**:
+ - Parse and validate blockchain data
+ - Transform data into consistent formats
+ - Calculate derived metrics and statistics
+
+3. **Data Storage**:
+ - Maintain a synchronized database with all Pocket Network data
+ - Implement efficient indexing for fast queries
+ - Store historical data for time-based analysis
+
+4. **API Exposure**:
+ - Expose the documented endpoints for the explorer to consume
+ - Implement proper caching and rate limiting
+ - Provide real-time updates via WebSocket (optional)
+
+### Data Sources for Indexer
+
+The indexer will need to fetch data from these **source endpoints**:
+
+#### Pocket Network Blockchain Nodes
+- Node urls chain wise are available in env file.
+
+#### External Data Sources
+- **CoinGecko API**: For POKT token price and market data
+- **Pocket Network Stats**: For network-wide statistics
+- **Service Provider APIs**: For additional service information
+
+## Example Usage
+
+### Explorer Consuming Indexer API
+
+```javascript
+// Get all applications from the indexer
+const applicationsResponse = await fetch('https://indexer.example.com/pokt-network/poktroll/application/application?pagination.limit=50');
+const applications = await applicationsResponse.json();
+
+// Get specific supplier information from the indexer
+const supplierResponse = await fetch('https://indexer.example.com/pokt-network/poktroll/supplier/supplier/supplier123');
+const supplier = await supplierResponse.json();
+
+// Get account balances from the indexer
+const balanceResponse = await fetch('https://indexer.example.com/cosmos/bank/v1beta1/balances/address123');
+const balances = await balanceResponse.json();
+
+// Get latest block from the indexer
+const blockResponse = await fetch('https://indexer.example.com/cosmos/base/tendermint/v1beta1/blocks/latest');
+const block = await blockResponse.json();
+```
+
+### Indexer Fetching from Blockchain (Internal Implementation)
+
+```javascript
+// Indexer internally fetching from Pocket Network blockchain
+const blockchainResponse = await fetch('https://shannon-grove-rpc.mainnet.poktroll.com', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({
+ jsonrpc: '2.0',
+ method: 'abci_query',
+ params: { path: '/pokt-network/poktroll/application/application' },
+ id: 1
+ })
+});
+
+// Indexer processing and storing the data
+const applications = await blockchainResponse.json();
+await database.storeApplications(applications);
+
+// Indexer then exposing the processed data via its own API
+app.get('/pokt-network/poktroll/application/application', async (req, res) => {
+ const apps = await database.getApplications(req.query);
+ res.json(apps);
+});
+```
+
+## Health Check Endpoints
+
+### Basic Health Check
+- **Endpoint**: `GET /health`
+- **Description**: Basic health status of the indexer
+- **Response**: Health status and basic metrics
+
+### Detailed Health Check
+- **Endpoint**: `GET /health/detailed`
+- **Description**: Detailed health information including database status
+- **Response**: Comprehensive health metrics
+
+### Metrics Endpoint
+- **Endpoint**: `GET /metrics`
+- **Description**: Prometheus-compatible metrics
+- **Response**: Metrics in Prometheus format
+
+## Data Synchronization
+
+### Indexer Data Flow
+
+The indexer should implement this data flow:
+
+1. **Block Processing**:
+ - Monitor new blocks as they arrive on the blockchain
+ - Process block data and extract relevant information
+ - Update internal database with new block data
+
+2. **Transaction Indexing**:
+ - Index all transactions with proper metadata
+ - Categorize transactions by type (staking, application, gateway, supplier)
+ - Extract relevant data for Pocket Network operations
+
+3. **State Tracking**:
+ - Maintain current state of all Pocket Network modules
+ - Track application stakes, gateway performance, supplier availability
+ - Monitor service health and relay mining difficulty
+
+4. **Historical Data**:
+ - Store historical data for time-based queries
+ - Maintain time-series data for analytics
+ - Implement data retention policies
+
+5. **Real-time Updates**:
+ - Provide real-time data updates via WebSocket (optional)
+ - Implement event-driven architecture for immediate updates
+ - Cache frequently accessed data for performance
+
+### Synchronization Strategy
+
+- **Block-based**: Sync on every new block
+- **Event-driven**: Listen for specific blockchain events
+- **Batch processing**: Process multiple transactions in batches
+- **Incremental updates**: Only update changed data
+- **Fallback mechanisms**: Handle blockchain node failures gracefully
+
+## API Endpoint Summary
+
+This comprehensive API documentation covers **25+ endpoints** specifically for Pocket Network:
+
+- **Core Blockchain Data**: 15 endpoints (accounts, balances, staking, blocks, transactions)
+- **Pocket Network Specific**: 10 endpoints (applications, gateways, suppliers, services)
diff --git a/README.md b/README.md
index 342d5900e3..8a0b1bae2e 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-
+
-
Ping Dashboard
+Pocket Dashboard
-**Ping Dashboard is not only an explorer but also a wallet and more ... 🛠**
+**Pocket Dashboard is not only an explorer but also a wallet and more ... 🛠**
[](https://github.com/ping-pub/explorer/releases/latest)
[](https://github.com/ping-pub/explorer/blob/master/LICENSE)
@@ -14,21 +14,21 @@
-`Ping Dashboard` is a light explorer for Cosmos-based Blockchains. https://ping.pub .
+`Pocket Dashboard` is a light explorer for Cosmos-based Blockchains. https://ping.pub .
-## What sets Ping Dashboard apart from other explorers?
-**Ping Dashboard** stands out by providing a real-time exploration of blockchain data without relying on caching or pre-processing. It exclusively fetches data from the Cosmos full node via LCD/RPC endpoints, ensuring a truly authentic experience. This approach is referred to as the "Light Explorer."
+## What sets Pocket Dashboard apart from other explorers?
+**Pocket Dashboard** stands out by providing a real-time exploration of blockchain data without relying on caching or pre-processing. It exclusively fetches data from the Cosmos full node via LCD/RPC endpoints, ensuring a truly authentic experience. This approach is referred to as the "Light Explorer."
## Are you interested in listing your blockchain on https://ping.pub?
To make this repository clean, please submit your request to https://github.com/ping-pub/ping.pub.git
-## Why does Ping Dashboard rely on official/trusted third-party public LCD/RPC servers?
+## Why does Pocket Dashboard rely on official/trusted third-party public LCD/RPC servers?
There are two primary reasons for this choice:
- - Trust: In a decentralized system, it is crucial to avoid relying solely on a single entity. By utilizing official/trusted third-party public LCD/RPC servers, Ping Dashboard ensures that the data is sourced from a network of trusted participants.
- - Limited Resources: As Ping Dashboard plans to list hundreds of Cosmos-based blockchains in the future, it is impractical for the Ping team to operate validators or full nodes for all of them. Leveraging trusted third-party servers allows for more efficient resource allocation.
+ - Trust: In a decentralized system, it is crucial to avoid relying solely on a single entity. By utilizing official/trusted third-party public LCD/RPC servers, Pocket Dashboard ensures that the data is sourced from a network of trusted participants.
+ - Limited Resources: As Pocket Dashboard plans to list hundreds of Cosmos-based blockchains in the future, it is impractical for the Pocket team to operate validators or full nodes for all of them. Leveraging trusted third-party servers allows for more efficient resource allocation.
## Donation
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
index 1150b743e0..00a564c980 100644
--- a/auto-imports.d.ts
+++ b/auto-imports.d.ts
@@ -3,41 +3,21 @@ export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope']
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
- const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
- const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
const computed: typeof import('vue')['computed']
- const computedAsync: typeof import('@vueuse/core')['computedAsync']
- const computedEager: typeof import('@vueuse/core')['computedEager']
- const computedInject: typeof import('@vueuse/core')['computedInject']
- const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
- const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
- const controlledRef: typeof import('@vueuse/core')['controlledRef']
const createApp: typeof import('vue')['createApp']
- const createEventHook: typeof import('@vueuse/core')['createEventHook']
const createGenericProjection: typeof import('@vueuse/math')['createGenericProjection']
- const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
- const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
const createPinia: typeof import('pinia')['createPinia']
const createProjection: typeof import('@vueuse/math')['createProjection']
- const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
- const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
- const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
const customRef: typeof import('vue')['customRef']
- const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
- const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const defineStore: typeof import('pinia')['defineStore']
- const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
const effectScope: typeof import('vue')['effectScope']
- const extendRef: typeof import('@vueuse/core')['extendRef']
const getActivePinia: typeof import('pinia')['getActivePinia']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const h: typeof import('vue')['h']
- const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
const inject: typeof import('vue')['inject']
- const isDefined: typeof import('@vueuse/core')['isDefined']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
@@ -45,7 +25,6 @@ declare global {
const logicAnd: typeof import('@vueuse/math')['logicAnd']
const logicNot: typeof import('@vueuse/math')['logicNot']
const logicOr: typeof import('@vueuse/math')['logicOr']
- const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
const mapActions: typeof import('pinia')['mapActions']
const mapGetters: typeof import('pinia')['mapGetters']
const mapState: typeof import('pinia')['mapState']
@@ -59,246 +38,57 @@ declare global {
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
- const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
const onDeactivated: typeof import('vue')['onDeactivated']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
- const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
- const onLongPress: typeof import('@vueuse/core')['onLongPress']
const onMounted: typeof import('vue')['onMounted']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onScopeDispose: typeof import('vue')['onScopeDispose']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
- const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
- const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
const provide: typeof import('vue')['provide']
- const reactify: typeof import('@vueuse/core')['reactify']
- const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
const reactive: typeof import('vue')['reactive']
- const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
- const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
- const reactivePick: typeof import('@vueuse/core')['reactivePick']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
- const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
- const refDebounced: typeof import('@vueuse/core')['refDebounced']
- const refDefault: typeof import('@vueuse/core')['refDefault']
- const refThrottled: typeof import('@vueuse/core')['refThrottled']
- const refWithControl: typeof import('@vueuse/core')['refWithControl']
const resolveComponent: typeof import('vue')['resolveComponent']
const resolveDirective: typeof import('vue')['resolveDirective']
- const resolveRef: typeof import('@vueuse/core')['resolveRef']
- const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
const setActivePinia: typeof import('pinia')['setActivePinia']
const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const storeToRefs: typeof import('pinia')['storeToRefs']
- const syncRef: typeof import('@vueuse/core')['syncRef']
- const syncRefs: typeof import('@vueuse/core')['syncRefs']
- const templateRef: typeof import('@vueuse/core')['templateRef']
- const throttledRef: typeof import('@vueuse/core')['throttledRef']
- const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
const toRaw: typeof import('vue')['toRaw']
- const toReactive: typeof import('@vueuse/core')['toReactive']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const triggerRef: typeof import('vue')['triggerRef']
- const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
- const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
- const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
- const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
- const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
const unref: typeof import('vue')['unref']
- const unrefElement: typeof import('@vueuse/core')['unrefElement']
- const until: typeof import('@vueuse/core')['until']
const useAbs: typeof import('@vueuse/math')['useAbs']
- const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
- const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
- const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
- const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
- const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
- const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
- const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
- const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
- const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
- const useArraySome: typeof import('@vueuse/core')['useArraySome']
- const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
- const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
- const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
const useAttrs: typeof import('vue')['useAttrs']
const useAverage: typeof import('@vueuse/math')['useAverage']
- const useBase64: typeof import('@vueuse/core')['useBase64']
- const useBattery: typeof import('@vueuse/core')['useBattery']
- const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
- const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
- const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
- const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
- const useCached: typeof import('@vueuse/core')['useCached']
const useCeil: typeof import('@vueuse/math')['useCeil']
const useClamp: typeof import('@vueuse/math')['useClamp']
- const useClipboard: typeof import('@vueuse/core')['useClipboard']
- const useCloned: typeof import('@vueuse/core')['useCloned']
- const useColorMode: typeof import('@vueuse/core')['useColorMode']
- const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
- const useCounter: typeof import('@vueuse/core')['useCounter']
const useCssModule: typeof import('vue')['useCssModule']
- const useCssVar: typeof import('@vueuse/core')['useCssVar']
const useCssVars: typeof import('vue')['useCssVars']
- const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
- const useCycleList: typeof import('@vueuse/core')['useCycleList']
- const useDark: typeof import('@vueuse/core')['useDark']
- const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
- const useDebounce: typeof import('@vueuse/core')['useDebounce']
- const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
- const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
- const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
- const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
- const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
- const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
- const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
- const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
- const useDraggable: typeof import('@vueuse/core')['useDraggable']
- const useDropZone: typeof import('@vueuse/core')['useDropZone']
- const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
- const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
- const useElementHover: typeof import('@vueuse/core')['useElementHover']
- const useElementSize: typeof import('@vueuse/core')['useElementSize']
- const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
- const useEventBus: typeof import('@vueuse/core')['useEventBus']
- const useEventListener: typeof import('@vueuse/core')['useEventListener']
- const useEventSource: typeof import('@vueuse/core')['useEventSource']
- const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
- const useFavicon: typeof import('@vueuse/core')['useFavicon']
- const useFetch: typeof import('@vueuse/core')['useFetch']
- const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
- const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
const useFloor: typeof import('@vueuse/math')['useFloor']
- const useFocus: typeof import('@vueuse/core')['useFocus']
- const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
- const useFps: typeof import('@vueuse/core')['useFps']
- const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
- const useGamepad: typeof import('@vueuse/core')['useGamepad']
- const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
const useI18n: typeof import('vue-i18n')['useI18n']
- const useIdle: typeof import('@vueuse/core')['useIdle']
- const useImage: typeof import('@vueuse/core')['useImage']
- const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
- const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
- const useInterval: typeof import('@vueuse/core')['useInterval']
- const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
- const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
- const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
const useLink: typeof import('vue-router')['useLink']
- const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
- const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
- const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
const useMath: typeof import('@vueuse/math')['useMath']
const useMax: typeof import('@vueuse/math')['useMax']
- const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
- const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
- const useMemoize: typeof import('@vueuse/core')['useMemoize']
- const useMemory: typeof import('@vueuse/core')['useMemory']
const useMin: typeof import('@vueuse/math')['useMin']
- const useMounted: typeof import('@vueuse/core')['useMounted']
- const useMouse: typeof import('@vueuse/core')['useMouse']
- const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
- const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
- const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
- const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
- const useNetwork: typeof import('@vueuse/core')['useNetwork']
- const useNow: typeof import('@vueuse/core')['useNow']
- const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
- const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
- const useOnline: typeof import('@vueuse/core')['useOnline']
- const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
- const useParallax: typeof import('@vueuse/core')['useParallax']
- const usePermission: typeof import('@vueuse/core')['usePermission']
- const usePointer: typeof import('@vueuse/core')['usePointer']
- const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
- const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
const usePrecision: typeof import('@vueuse/math')['usePrecision']
- const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
- const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
- const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
- const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
- const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
- const usePrevious: typeof import('@vueuse/core')['usePrevious']
const useProjection: typeof import('@vueuse/math')['useProjection']
- const useRafFn: typeof import('@vueuse/core')['useRafFn']
- const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
- const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
const useRound: typeof import('@vueuse/math')['useRound']
const useRoute: typeof import('vue-router')['useRoute']
const useRouter: typeof import('vue-router')['useRouter']
- const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
- const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
- const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
- const useScroll: typeof import('@vueuse/core')['useScroll']
- const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
- const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
- const useShare: typeof import('@vueuse/core')['useShare']
const useSlots: typeof import('vue')['useSlots']
- const useSorted: typeof import('@vueuse/core')['useSorted']
- const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
- const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
- const useStepper: typeof import('@vueuse/core')['useStepper']
- const useStorage: typeof import('@vueuse/core')['useStorage']
- const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
- const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
const useSum: typeof import('@vueuse/math')['useSum']
- const useSupported: typeof import('@vueuse/core')['useSupported']
- const useSwipe: typeof import('@vueuse/core')['useSwipe']
- const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
- const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
- const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
- const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
- const useThrottle: typeof import('@vueuse/core')['useThrottle']
- const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
- const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
- const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
- const useTimeout: typeof import('@vueuse/core')['useTimeout']
- const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
- const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
- const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
- const useTitle: typeof import('@vueuse/core')['useTitle']
- const useToFixed: typeof import('@vueuse/math')['useToFixed']
- const useToNumber: typeof import('@vueuse/core')['useToNumber']
- const useToString: typeof import('@vueuse/core')['useToString']
- const useToggle: typeof import('@vueuse/core')['useToggle']
- const useTransition: typeof import('@vueuse/core')['useTransition']
const useTrunc: typeof import('@vueuse/math')['useTrunc']
- const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
- const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
- const useVModel: typeof import('@vueuse/core')['useVModel']
- const useVModels: typeof import('@vueuse/core')['useVModels']
- const useVibrate: typeof import('@vueuse/core')['useVibrate']
- const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
- const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
- const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
- const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
- const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
- const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
- const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
- const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
- const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
const watch: typeof import('vue')['watch']
- const watchArray: typeof import('@vueuse/core')['watchArray']
- const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
- const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
const watchEffect: typeof import('vue')['watchEffect']
- const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
- const watchOnce: typeof import('@vueuse/core')['watchOnce']
- const watchPausable: typeof import('@vueuse/core')['watchPausable']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
- const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
- const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
- const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
- const whenever: typeof import('@vueuse/core')['whenever']
}
// for vue template auto import
import { UnwrapRef } from 'vue'
@@ -306,41 +96,21 @@ declare module 'vue' {
interface ComponentCustomProperties {
readonly EffectScope: UnwrapRef
readonly acceptHMRUpdate: UnwrapRef
- readonly asyncComputed: UnwrapRef
- readonly autoResetRef: UnwrapRef
readonly computed: UnwrapRef
- readonly computedAsync: UnwrapRef
- readonly computedEager: UnwrapRef
- readonly computedInject: UnwrapRef
- readonly computedWithControl: UnwrapRef
- readonly controlledComputed: UnwrapRef
- readonly controlledRef: UnwrapRef
readonly createApp: UnwrapRef
- readonly createEventHook: UnwrapRef
readonly createGenericProjection: UnwrapRef
- readonly createGlobalState: UnwrapRef
- readonly createInjectionState: UnwrapRef
readonly createPinia: UnwrapRef
readonly createProjection: UnwrapRef
- readonly createReactiveFn: UnwrapRef
- readonly createSharedComposable: UnwrapRef
- readonly createUnrefFn: UnwrapRef
readonly customRef: UnwrapRef
- readonly debouncedRef: UnwrapRef
- readonly debouncedWatch: UnwrapRef
readonly defineAsyncComponent: UnwrapRef
readonly defineComponent: UnwrapRef
readonly defineStore: UnwrapRef
- readonly eagerComputed: UnwrapRef
readonly effectScope: UnwrapRef
- readonly extendRef: UnwrapRef
readonly getActivePinia: UnwrapRef
readonly getCurrentInstance: UnwrapRef
readonly getCurrentScope: UnwrapRef
readonly h: UnwrapRef
- readonly ignorableWatch: UnwrapRef
readonly inject: UnwrapRef
- readonly isDefined: UnwrapRef
readonly isProxy: UnwrapRef
readonly isReactive: UnwrapRef
readonly isReadonly: UnwrapRef
@@ -348,7 +118,6 @@ declare module 'vue' {
readonly logicAnd: UnwrapRef
readonly logicNot: UnwrapRef
readonly logicOr: UnwrapRef
- readonly makeDestructurable: UnwrapRef
readonly mapActions: UnwrapRef
readonly mapGetters: UnwrapRef
readonly mapState: UnwrapRef
@@ -362,245 +131,56 @@ declare module 'vue' {
readonly onBeforeRouteUpdate: UnwrapRef
readonly onBeforeUnmount: UnwrapRef
readonly onBeforeUpdate: UnwrapRef
- readonly onClickOutside: UnwrapRef
readonly onDeactivated: UnwrapRef
readonly onErrorCaptured: UnwrapRef
- readonly onKeyStroke: UnwrapRef
- readonly onLongPress: UnwrapRef
readonly onMounted: UnwrapRef
readonly onRenderTracked: UnwrapRef
readonly onRenderTriggered: UnwrapRef
readonly onScopeDispose: UnwrapRef
readonly onServerPrefetch: UnwrapRef
- readonly onStartTyping: UnwrapRef
readonly onUnmounted: UnwrapRef
readonly onUpdated: UnwrapRef
- readonly pausableWatch: UnwrapRef
readonly provide: UnwrapRef
- readonly reactify: UnwrapRef
- readonly reactifyObject: UnwrapRef
readonly reactive: UnwrapRef
- readonly reactiveComputed: UnwrapRef
- readonly reactiveOmit: UnwrapRef
- readonly reactivePick: UnwrapRef
readonly readonly: UnwrapRef
readonly ref: UnwrapRef
- readonly refAutoReset: UnwrapRef
- readonly refDebounced: UnwrapRef
- readonly refDefault: UnwrapRef
- readonly refThrottled: UnwrapRef
- readonly refWithControl: UnwrapRef
readonly resolveComponent: UnwrapRef
readonly resolveDirective: UnwrapRef
- readonly resolveRef: UnwrapRef
- readonly resolveUnref: UnwrapRef
readonly setActivePinia: UnwrapRef
readonly setMapStoreSuffix: UnwrapRef
readonly shallowReactive: UnwrapRef
readonly shallowReadonly: UnwrapRef
readonly shallowRef: UnwrapRef
readonly storeToRefs: UnwrapRef
- readonly syncRef: UnwrapRef
- readonly syncRefs: UnwrapRef
- readonly templateRef: UnwrapRef
- readonly throttledRef: UnwrapRef
- readonly throttledWatch: UnwrapRef
readonly toRaw: UnwrapRef
- readonly toReactive: UnwrapRef
readonly toRef: UnwrapRef
readonly toRefs: UnwrapRef
readonly triggerRef: UnwrapRef
- readonly tryOnBeforeMount: UnwrapRef
- readonly tryOnBeforeUnmount: UnwrapRef
- readonly tryOnMounted: UnwrapRef
- readonly tryOnScopeDispose: UnwrapRef
- readonly tryOnUnmounted: UnwrapRef
readonly unref: UnwrapRef
- readonly unrefElement: UnwrapRef
- readonly until: UnwrapRef
readonly useAbs: UnwrapRef
- readonly useActiveElement: UnwrapRef
- readonly useArrayEvery: UnwrapRef
- readonly useArrayFilter: UnwrapRef
- readonly useArrayFind: UnwrapRef
- readonly useArrayFindIndex: UnwrapRef
- readonly useArrayFindLast: UnwrapRef
- readonly useArrayJoin: UnwrapRef
- readonly useArrayMap: UnwrapRef
- readonly useArrayReduce: UnwrapRef
- readonly useArraySome: UnwrapRef
- readonly useArrayUnique: UnwrapRef
- readonly useAsyncQueue: UnwrapRef
- readonly useAsyncState: UnwrapRef
readonly useAttrs: UnwrapRef
readonly useAverage: UnwrapRef
- readonly useBase64: UnwrapRef
- readonly useBattery: UnwrapRef
- readonly useBluetooth: UnwrapRef
- readonly useBreakpoints: UnwrapRef
- readonly useBroadcastChannel: UnwrapRef
- readonly useBrowserLocation: UnwrapRef
- readonly useCached: UnwrapRef
readonly useCeil: UnwrapRef
readonly useClamp: UnwrapRef
- readonly useClipboard: UnwrapRef
- readonly useCloned: UnwrapRef
- readonly useColorMode: UnwrapRef
- readonly useConfirmDialog: UnwrapRef
- readonly useCounter: UnwrapRef
readonly useCssModule: UnwrapRef
- readonly useCssVar: UnwrapRef
readonly useCssVars: UnwrapRef
- readonly useCurrentElement: UnwrapRef
- readonly useCycleList: UnwrapRef
- readonly useDark: UnwrapRef
- readonly useDateFormat: UnwrapRef
- readonly useDebounce: UnwrapRef
- readonly useDebounceFn: UnwrapRef
- readonly useDebouncedRefHistory: UnwrapRef
- readonly useDeviceMotion: UnwrapRef
- readonly useDeviceOrientation: UnwrapRef
- readonly useDevicePixelRatio: UnwrapRef
- readonly useDevicesList: UnwrapRef
- readonly useDisplayMedia: UnwrapRef
- readonly useDocumentVisibility: UnwrapRef
- readonly useDraggable: UnwrapRef
- readonly useDropZone: UnwrapRef
- readonly useElementBounding: UnwrapRef
- readonly useElementByPoint: UnwrapRef
- readonly useElementHover: UnwrapRef
- readonly useElementSize: UnwrapRef
- readonly useElementVisibility: UnwrapRef
- readonly useEventBus: UnwrapRef
- readonly useEventListener: UnwrapRef
- readonly useEventSource: UnwrapRef
- readonly useEyeDropper: UnwrapRef
- readonly useFavicon: UnwrapRef
- readonly useFetch: UnwrapRef
- readonly useFileDialog: UnwrapRef
- readonly useFileSystemAccess: UnwrapRef
readonly useFloor: UnwrapRef
- readonly useFocus: UnwrapRef
- readonly useFocusWithin: UnwrapRef
- readonly useFps: UnwrapRef
- readonly useFullscreen: UnwrapRef
- readonly useGamepad: UnwrapRef
- readonly useGeolocation: UnwrapRef
readonly useI18n: UnwrapRef
- readonly useIdle: UnwrapRef
- readonly useImage: UnwrapRef
- readonly useInfiniteScroll: UnwrapRef
- readonly useIntersectionObserver: UnwrapRef
- readonly useInterval: UnwrapRef
- readonly useIntervalFn: UnwrapRef
- readonly useKeyModifier: UnwrapRef
- readonly useLastChanged: UnwrapRef
readonly useLink: UnwrapRef
- readonly useLocalStorage: UnwrapRef
- readonly useMagicKeys: UnwrapRef
- readonly useManualRefHistory: UnwrapRef
readonly useMath: UnwrapRef
readonly useMax: UnwrapRef
- readonly useMediaControls: UnwrapRef
- readonly useMediaQuery: UnwrapRef
- readonly useMemoize: UnwrapRef
- readonly useMemory: UnwrapRef
readonly useMin: UnwrapRef
- readonly useMounted: UnwrapRef
- readonly useMouse: UnwrapRef
- readonly useMouseInElement: UnwrapRef
- readonly useMousePressed: UnwrapRef
- readonly useMutationObserver: UnwrapRef
- readonly useNavigatorLanguage: UnwrapRef
- readonly useNetwork: UnwrapRef
- readonly useNow: UnwrapRef
- readonly useObjectUrl: UnwrapRef
- readonly useOffsetPagination: UnwrapRef
- readonly useOnline: UnwrapRef
- readonly usePageLeave: UnwrapRef
- readonly useParallax: UnwrapRef
- readonly usePermission: UnwrapRef
- readonly usePointer: UnwrapRef
- readonly usePointerLock: UnwrapRef
- readonly usePointerSwipe: UnwrapRef
readonly usePrecision: UnwrapRef
- readonly usePreferredColorScheme: UnwrapRef
- readonly usePreferredContrast: UnwrapRef
- readonly usePreferredDark: UnwrapRef
- readonly usePreferredLanguages: UnwrapRef
- readonly usePreferredReducedMotion: UnwrapRef
- readonly usePrevious: UnwrapRef
readonly useProjection: UnwrapRef
- readonly useRafFn: UnwrapRef
- readonly useRefHistory: UnwrapRef
- readonly useResizeObserver: UnwrapRef
readonly useRound: UnwrapRef
readonly useRoute: UnwrapRef
readonly useRouter: UnwrapRef
- readonly useScreenOrientation: UnwrapRef
- readonly useScreenSafeArea: UnwrapRef
- readonly useScriptTag: UnwrapRef
- readonly useScroll: UnwrapRef
- readonly useScrollLock: UnwrapRef
- readonly useSessionStorage: UnwrapRef
- readonly useShare: UnwrapRef
readonly useSlots: UnwrapRef
- readonly useSorted: UnwrapRef
- readonly useSpeechRecognition: UnwrapRef
- readonly useSpeechSynthesis: UnwrapRef
- readonly useStepper: UnwrapRef
- readonly useStorage: UnwrapRef
- readonly useStorageAsync: UnwrapRef
- readonly useStyleTag: UnwrapRef
readonly useSum: UnwrapRef
- readonly useSupported: UnwrapRef
- readonly useSwipe: UnwrapRef
- readonly useTemplateRefsList: UnwrapRef
- readonly useTextDirection: UnwrapRef
- readonly useTextSelection: UnwrapRef
- readonly useTextareaAutosize: UnwrapRef
- readonly useThrottle: UnwrapRef
- readonly useThrottleFn: UnwrapRef
- readonly useThrottledRefHistory: UnwrapRef
- readonly useTimeAgo: UnwrapRef
- readonly useTimeout: UnwrapRef
- readonly useTimeoutFn: UnwrapRef
- readonly useTimeoutPoll: UnwrapRef