open-index/open-npm huggingface dataset:
npm package: @ido-team/modal
Description: A modal component for Vue 3 base on ido-team
Author: 就眠儀式
Latest version: 3.1.19

## 介绍

Ido Modal 弹 出 层 解 决 方 案

**[🔶 document »](https://ido85.coding.net/p/ido-framework/d/ido-modal/git/tree/master/example/docs/zh-CN/index.md)**

## 安装

使用 npm 下载。

```bash
npm i ido-modal
```
在 index.html 编写 ido-sdk 配置。

```
window.appHost = "http://221.12.100.58:29003"
window.tokenHost = "http://221.12.100.58:29003"
window.hashAuthHost = "/hash"
window.videoHost = "/gateway/map-server"
```
## 使用

我们提供 Bi 大屏的唤起。

```
<template>
  <button type="button" @click="openModal">打开大屏</button>
</template>

<script setup>
import { ref } from "vue";
import { idoModal } from "ido-modal";
import 'ido-modal/lib/index.css';

const openModal = function () {
  idoModal.open({
      title: "标题",
      type: "screen",
      area: ['500px','450px'],
      content: '4813301404468224'
  })
};
</script>
```

亦支持 iframe 链接网页。

```
<template>
  <button type="button" @click="openModal">链接网页</button>
</template>

<script setup>
import { ref } from "vue";
import { idoModal } from "ido-modal";
import 'ido-modal/lib/index.css';

const openModal = function () {
  idoModal.open({
      title: "标题",
      type: "iframe",
      area: ['500px','450px'],
      content: 'http://www.layui-vue.com'
  })
};
</script>
```

在 ido-modal 的 2.0.0 版本，我们集成了视频平台，来帮助你一键打开视频。

需要注意的是，你在使用前需要配置接口代理，内部会调用 api 来获取视频流，你需要通过代理来解决 axios 跨域的问题。

```
<template>
  <button type="button" @click="openModal">链接网页</button>
</template>

<script setup>
import { ref } from "vue";
import { idoModal } from "ido-modal";
import 'ido-modal/lib/index.css';

const openModal = function () {
    idoModal.open({
        title: "公司监控",
        type: "video",
        area: ['500px','450px'],
        content: '091c0075cef67fc0fe35a42744824d93'
    })
};
</script>
```
npm package: @ido-team/nacos-for-js
Description: A modal component for Vue 3 base on ido-team
Author: 就眠儀式
Latest version: 2.2.0

## 介绍

(nacos-for-js) nacos 的 js 客户端

## 安装

使用 npm 下载。

```bash
npm i @ido-team/nacos-for-js
```
## 使用

创建客户端，指定 Nacos 服务

```
// 指定 Nacos ServerAddress 属性
// const client = new NacosConfigClient("http://127.0.0.1:8848")
```

创建客户端，通过 Nginx 指向 Nacos

```
// 延用 Nginx /nacos 代理 （推荐）
const client = new NacosConfigClient();
```

```
"/nacos/" : {
    target: "http://127.0.0.1:8848"
},
```

获取配置，保证配置拿到后执行程序 （ await 同步 ）

```
// @param 所属分组 DEFAULT_GROUP 默认配置
// @param 配置文件 global-for-js 指定文件
const nacosConfig = await client.getConfig("DEFAULT_GROUP", "global-for-js");
```

订阅配置，监听配置文件修改与发布

```
// @param 所属分组 DEFAULT_GROUP 默认配置
// @param 配置文件 global-for-js 指定文件
// @param 回调函数 拿到最新配置并做些事情
client.subscribe("DEFAULT_GROUP", "global-for-js", (nacosConfig) => {
  console.log(nacosConfig)
})
```
npm package: @ido-team/video-analysis
Description: A modal component for Vue 3 base on ido-team
Author: 就眠儀式
Latest version: 0.0.2

## 介绍

Ido Modal 弹 出 层 解 决 方 案

**[🔶 document »](https://ido85.coding.net/p/ido-framework/d/ido-modal/git/tree/master/example/docs/zh-CN/index.md)**

## 安装

使用 npm 下载。

```bash
npm i ido-modal
```
在 index.html 编写 ido-sdk 配置。

```
window.appHost = "http://221.12.100.58:29003"
window.tokenHost = "http://221.12.100.58:29003"
window.hashAuthHost = "/hash"
window.videoHost = "/gateway/map-server"
```
## 使用

我们提供 Bi 大屏的唤起。

```
<template>
  <button type="button" @click="openModal">打开大屏</button>
</template>

<script setup>
import { ref } from "vue";
import { idoModal } from "ido-modal";
import 'ido-modal/lib/index.css';

const openModal = function () {
  idoModal.open({
      title: "标题",
      type: "screen",
      area: ['500px','450px'],
      content: '4813301404468224'
  })
};
</script>
```

亦支持 iframe 链接网页。

```
<template>
  <button type="button" @click="openModal">链接网页</button>
</template>

<script setup>
import { ref } from "vue";
import { idoModal } from "ido-modal";
import 'ido-modal/lib/index.css';

const openModal = function () {
  idoModal.open({
      title: "标题",
      type: "iframe",
      area: ['500px','450px'],
      content: 'http://www.layui-vue.com'
  })
};
</script>
```

在 ido-modal 的 2.0.0 版本，我们集成了视频平台，来帮助你一键打开视频。

需要注意的是，你在使用前需要配置接口代理，内部会调用 api 来获取视频流，你需要通过代理来解决 axios 跨域的问题。

```
<template>
  <button type="button" @click="openModal">链接网页</button>
</template>

<script setup>
import { ref } from "vue";
import { idoModal } from "ido-modal";
import 'ido-modal/lib/index.css';

const openModal = function () {
    idoModal.open({
        title: "公司监控",
        type: "video",
        area: ['500px','450px'],
        content: '091c0075cef67fc0fe35a42744824d93'
    })
};
</script>
```
npm package: @ido_kawaz/mongo-client
Description: MongoDB client library for Kawaz Plus services
Latest version: 3.1.0

# mongo-client
Lightweight MongoDB client helper for Node.js services using Mongoose.

## Installation
```bash
npm i @ido_kawaz/mongo-client
```

## Environment Variables
- `MONGO_CONNECTION_STRING` (required): MongoDB connection URI.
- `MONGO_CONNECTION_TIMEOUT_MS` (optional): server selection timeout in milliseconds. Default is `5000`.

## Usage
```ts
import { MongoClient, Schema, createMongoConfig } from "@ido_kawaz/mongo-client";

type User = {
	email: string;
	createdAt: Date;
};

const config = createMongoConfig();
const mongoClient = new MongoClient(config);

const userSchema = new Schema<User>({
	email: { type: String, required: true, unique: true },
	createdAt: { type: Date, required: true },
});

async function bootstrap() {
	await mongoClient.start();

	const userModel = mongoClient.createModel<User>("User", userSchema);
	await mongoClient.ensureIndexes([userModel]);

	// Use your model or pass it into your DAL layer.
}

async function shutdown() {
	await mongoClient.stop();
}
```

## API
- `createMongoConfig()`: reads and validates MongoDB config from environment variables.
- `new MongoClient(config)`: creates a Mongoose connection wrapper.
- `start()`: opens and validates the MongoDB connection.
- `createModel<T>(name, schema)`: creates and returns a typed model.
- `ensureIndexes(models)`: ensures indexes for all provided models.
- `stop()`: closes the active MongoDB connection.

## Tests
```bash
npx jest --runInBand
```
npm package: @ido_kawaz/server-framework
Description: Server framework library for Kawaz Plus services
Latest version: 3.5.0

# server-framework

TypeScript server framework utilities for building Express-based APIs with consistent middleware, error handling, and request logging.

## Installation

```bash
npm i @ido_kawaz/server-framework
```

## Exports

- `createServer`
- `createServerConfig`
- `ServerConfig`
- `createRequestHandlerDecorator`
- `default` (`multer`)
- `RequestFile`
- Error classes:
	- `ApiError`
	- `BadRequestError`
	- `UnauthorizedError`
	- `NotFoundError`
	- `InternalServerError`
- Express types re-exported:
	- `Application`
	- `Router`
	- `Request`
	- `Response`
	- `NextFunction`

## Environment Variables

- `PORT` (required): server port number.
- `SECURED` (optional): internal secured flag in config (defaults to `false` when not set).
- `CORS_ORIGINS` (optional): JSON array string of allowed CORS origins (defaults to `["http://localhost:3000"]`). Example: `CORS_ORIGINS='["https://myapp.com","http://localhost:3000"]'`.

## Quick Start

```ts
import express from "express";
import {
	createRequestHandlerDecorator,
	createServerConfig,
	createServer,
	BadRequestError,
	Request,
	Response
} from "@ido_kawaz/server-framework";

const decorate = createRequestHandlerDecorator("orders-service");

const registerRoutes = () => (app: express.Express) => {
	app.get(
		"/health",
		decorate("health", async (_req: Request, res: Response) => {
			res.status(200).json({ ok: true });
		})
	);

	app.get(
		"/orders/:id",
		decorate("getOrder", async (req: Request, res: Response) => {
			if (!req.params.id) {
				throw new BadRequestError("Missing order id");
			}

			res.status(200).json({ id: req.params.id });
		})
	);

	return app;
};
const config = createServerConfig();
const server = await createServer(config, registerRoutes);
await server.start();
```

## Development Scripts

- `npm run build` - Compile TypeScript to `dist`.
- `npm run build:watch` - Compile in watch mode.
- `npm run build:advanced` - Remove `dist`, `node_modules`, and `package-lock.json`, reinstall, then compile.
- `npm run clean` - Remove `dist`.
- `npm run clean:advanced` - Remove `dist`, `node_modules`, and `package-lock.json`.
- `npm test` - Build and run Jest test suite.
- `npm run test:advanced` - Clean install, build, and run tests.
- `npm run package` - Run advanced tests and publish.

## Testing

Current test coverage includes:

- Server config parsing behavior.
- API error classes and status-code mapping.
- Request handler decorator success/error behavior.
- Centralized request error handler responses.
- Server startup behavior (`http` vs `https`) and startup error propagation.
- Public export surface validation.
npm package: @ido_kawaz/vod-client
Description: VOD service client library for Kawaz Plus services
Latest version: 2.0.0

# vod-client

Lightweight TypeScript client library for the VOD service API.

## Installation

```bash
npm install @ido_kawaz/vod-client
```

## Configuration

Set the following environment variable:

| Variable | Description |
|---|---|
| `VOD_SERVICE_URL` | Base URL of the VOD service (e.g. `http://localhost:8082`) |

## Usage

```ts
import { VodClient, createVodClientConfig } from '@ido_kawaz/vod-client';

const client = new VodClient(createVodClientConfig());

// Video metadata
const video = await client.getVideoById('abc123');
const videos = await client.getVideos();

// Streaming
const manifest = await client.getManifest('abc123');           // Readable stream (DASH MPD)
const segmentUrl = await client.getSegmentUrl('abc123', 'segment.m4s'); // presigned S3 URL string
const vtt = await client.getVtt('abc123', 'en.vtt');           // Readable stream (WebVTT)
```

## Error Handling

| Error | Thrown when |
|---|---|
| `VideoNotFoundError` | `getVideoById` receives a 404 |
| `NoVideosFoundError` | `getVideos` receives a 404 |
| `VodClientError` | Any other failure |

All errors extend `VodClientError`.
npm package: @idoa/ada-pay-button
Description: Minimal ADA Pay Button for Cardano wallets (CIP-30)
Author: IDOA
Latest version: 0.1.0

# ADA Pay Button

A minimal, open-source ADA payment button for Cardano wallets (CIP-30).

This package provides a lightweight React component that enables users to send ADA
using an installed Cardano wallet (e.g. Lace, Vespr, Eternl) with minimal setup and
no UI framework dependency.

> ⚠️ **Early MVP (v0.1)**  
> The API supports basic ADA payments only. Advanced UX, theming, analytics,
> mobile flows, and expanded wallet support are planned for future versions.

---

## Features

- CIP-30 wallet support
- Simple ADA payments (lovelace only)
- Uses **Lucid** for transaction construction
- Chain provider (e.g. Blockfrost) supplied by the consuming application
- Supports **Preview** and **Preprod** networks (Mainnet-ready)
- No UI framework dependency
- Browser-safe (ESM only, no `require`, no Node APIs)

---

## Non-Goals (v0.1)

This package intentionally does **not** include:

- Mobile wallet deep-link support
- Multi-asset or NFT payments
- Invoices, webhooks, or order tracking
- Theming or UI customization APIs
- Wallet abstraction beyond CIP-30

These are explicitly out of scope for the initial release.

---

## Chain Provider

`@idoa/ada-pay-button` does not hardcode any chain provider.

The consuming application is responsible for supplying Lucid dependencies
(e.g. `Blockfrost`, `Lucid`). The included demo app uses Blockfrost purely as
a reference implementation for submitting real testnet transactions.

---

## Installation

```bash
npm install @idoa/ada-pay-button
npm package: @idoa/aptos-devflow-cli
Description: Aptos Devflow command line interface for validation, harness runs, reports and doctor checks.
Latest version: 0.1.1

# @idoa/aptos-devflow-cli

Command line entrypoint for Aptos Devflow.

## What It Does

- runs `devflow doctor` for end to end local verification
- validates Aptos payload samples
- runs fixture harness suites
- renders generated reports
- initializes vendor neutral CI templates

## Install

```bash
npm install @idoa/aptos-devflow-cli
```

## Use

Run the main health check:

```bash
npx devflow doctor
```

Fallback package execution:

```bash
npx @idoa/aptos-devflow-cli doctor
```

Validate one sample:

```bash
npx devflow validate examples/tx-payloads/fixtures/valid-transfer/fixture.json
```

Run the full fixture suite:

```bash
npx devflow harness run examples/tx-payloads/fixtures -o reports
```

Global install:

```bash
npm install -g @idoa/aptos-devflow-cli
devflow doctor
```

## Docs

- [Root README](../../README.md)
- [Quickstart](../../docs/quickstart.md)
- [Report Format](../../docs/report-format.md)
npm package: @idoa/core
Description: Shared Aptos Devflow types, report models and utility helpers.
Latest version: 0.1.1

# @idoa/core

Shared types and helpers for Aptos Devflow packages.

## What It Does

- defines validator input and result models
- defines fixture and report types
- provides deterministic summary helpers
- provides stable JSON serialization helpers

## Install

```bash
npm install @idoa/core
```

## Use

```ts
import { summarizeDetail, stableStringify } from "@idoa/core";

const summary = summarizeDetail(results, "strict");
const json = stableStringify(summary);
```

## Docs

- [Root README](../../README.md)
- [Report Format](../../docs/report-format.md)
npm package: @idoa/dev-doctor-ckb
Description: TypeScript-first diagnostics and onboarding toolkit for Nervos CKB developers.
Latest version: 0.1.2

# CKB Dev Doctor

Lightweight developer diagnostics and onboarding toolkit for CKB builders.

- npm package name: `@idoa/dev-doctor-ckb`
- CLI binary: `ckb-doctor`

## Why this matters for CKB

CKB development often requires multiple components:

- CKB node
- RPC endpoint
- Indexer
- config files
- local environment setup

Misconfiguration is a common onboarding issue.

CKB Dev Doctor provides a fast CLI diagnostics layer to help developers validate their setup before building applications on CKB.

## What this repo is

This repository is a small CKB-specific wrapper around shared Dev Doctor packages:
- `@idoa/dev-doctor-core`
- `@idoa/dev-doctor-types`
- `@idoa/dev-doctor-utils`
- `@idoa/dev-doctor-reporter`
- `@idoa/dev-doctor-cli-kit`

It focuses only on Spark-sized PoC scope:
- local environment checks
- config validation
- RPC/indexer reachability
- basic workflow readiness
- plain-text and JSON reports

## Quick start (local repo)

```bash
npm install
npm run build
npm run doctor -- --help
```

Run checks:

```bash
npm run doctor -- env
npm run doctor -- config --config ./ckb-doctor.config.json
npm run doctor -- rpc --config ./ckb-doctor.config.json
npm run doctor -- indexer --config ./ckb-doctor.config.json
npm run doctor -- workflow
npm run doctor -- report --json --config ./ckb-doctor.config.json
```

Run without build:

```bash
npm run doctor:dev -- report --json --config ./ckb-doctor.config.json
```

## CLI commands

- `env`
- `config`
- `rpc`
- `indexer`
- `workflow`
- `report`

## Example output

Plain-text:

```text
CKB Dev Doctor Report
=====================
PASS  Developer environment
PASS  Configuration
PASS  RPC endpoint
WARN  Indexer endpoint
PASS  Workflow readiness

Summary: 4 pass, 1 warn, 0 fail, 0 skip
```

JSON:

```json
{
  "summary": { "pass": 4, "warn": 1, "fail": 0, "skip": 0 },
  "checks": [
    { "id": "env", "status": "pass" },
    { "id": "config", "status": "pass" },
    { "id": "rpc", "status": "pass" },
    { "id": "indexer", "status": "warn" },
    { "id": "workflow", "status": "pass" }
  ]
}
```

## Demo app

```bash
npm install
npm run demo:dev
```

Open `http://localhost:3000`.

The demo is mock-data based and does not run local diagnostics in the browser.

## Repository layout

- `src/` CLI implementation and checks
- `tests/` Vitest tests
- `demo/` Next.js + MUI demo app
- `docs/` architecture notes

## Validation commands

```bash
npm run build
npm run lint
npm run test
npm run typecheck
```
npm package: @idoa/dev-doctor-core
Description: Core diagnostics engine for chain-dev-doctor projects.
Latest version: 0.1.0

# @idoa/dev-doctor-core

Core orchestration package for chain-agnostic diagnostic execution.

## Features

- check registration and deduplication
- execution pipeline with timeout + retry
- deterministic result aggregation
- config validation with zod

## Usage

```ts
import { runDiagnosticPipeline } from '@idoa/dev-doctor-core';
```
npm package: @idoa/dev-doctor-reporter
Description: Structured and terminal reporting for chain-dev-doctor pipelines.
Latest version: 0.1.0

# @idoa/dev-doctor-reporter

Reporting utilities for diagnostic pipeline output.

## Features

- structured JSON report serialization
- human-readable terminal output

## Usage

```ts
import { createJsonReport, createTerminalReport } from '@idoa/dev-doctor-reporter';
```
npm package: @idoa/dev-doctor-types
Description: Shared contracts and standardized types for chain-dev-doctor.
Latest version: 0.1.0

# @idoa/dev-doctor-types

Shared TypeScript contracts for checks, results, pipeline reports, and adapter integration.

## Highlights

- standardized severity and status models
- check/pipeline type contracts
- adapter interface for chain-specific repositories

## Usage

```ts
import type { DiagnosticCheck, Severity } from '@idoa/dev-doctor-types';
```
npm package: @idoa/dev-doctor-utils
Description: Utility helpers for retry, timeout, and defensive runtime handling.
Latest version: 0.1.0

# @idoa/dev-doctor-utils

Chain-agnostic helpers for retry/backoff, timeout boundaries, and small utility guards.

## Usage

```ts
import { retryWithBackoff, withTimeout } from '@idoa/dev-doctor-utils';
```
npm package: @idoa/fuel-session-policy-sdk
Description: Lightweight TypeScript SDK for Fuel session policy flows.
Author: idoa
Latest version: 0.1.0

# @idoa/fuel-session-policy-sdk

Lightweight TypeScript SDK for session policy guardrails in Fuel dApps.

This package is middleware and is complementary to wallet flows. It is not a wallet implementation.

## Install

```bash
npm install @idoa/fuel-session-policy-sdk
```

## Security posture (v1)
- Strict runtime input validation in all public functions
- Guardrails for expiry, max spend, and contract allowlist
- Domain-separated payload structure for predicate data

Warning: v1 is not intended for high-value production custody.

## API
- `createSessionPolicy(input)`
- `validateSessionPolicy(policy)`
- `createPredicatePayload(policy)`
- `encodePredicateData(policy)`
- `decodePredicateData(encoded)`
- `buildSessionTransaction(params)`
- `executeWithSession(params)`

## Supported constraints
- `expiresAt`
- `maxSpend`
- `allowedContracts`

## Extension placeholders
- `allowedAssets`
- `allowedActions`
npm package: @idoa/graph-pipeline
Description: A minimal CLI for running Graph subgraph build and test pipelines.
Latest version: 0.1.0

# Graph pipeline kit

Graph pipeline kit is a small Node.js CLI that runs a basic pipeline for The Graph subgraph projects. It checks whether the current directory looks like a subgraph project, runs `graph build`, optionally runs tests, reads a lightweight YAML config when present, and always prints a predictable JSON result that is easy to consume in local scripts or CI.

## Requirements

- Node.js 20+
- npm

## Install From npm

```bash
npm install -g @idoa/graph-pipeline
```

Or run it directly:

```bash
npx @idoa/graph-pipeline run
```

## Local Development

```bash
npm install
npm run build
npm exec -- graph-pipeline run
```

## Usage

Run in a subgraph project directory:

```bash
graph-pipeline run
```

The CLI looks for:

- `subgraph.yaml`
- `graph-pipeline.yaml` (optional)
- `package.json` test script (optional)
- a local `graph` CLI in `node_modules/.bin` for the build step

Behavior:

- If `subgraph.yaml` is missing, output is still returned and the command does not crash.
- If the build command fails, output still returns JSON.
- If no `test` script exists, tests are marked as `skipped`.

Security note:

- Run this tool only in subgraph projects you trust, because it executes local build and test commands.

## Config

Create `graph-pipeline.yaml` to control which steps run:

```yaml
pipeline:
  build: true
  test: true
```

If the file does not exist or cannot be parsed, defaults are used.

## Output

Example output:

```json
{
  "build": "ok",
  "tests": "passed"
}
```

When no subgraph project is detected:

```json
{
  "build": "fail",
  "tests": "skipped"
}
```
npm package: @idoa/harness
Description: Fixture runner for deterministic Aptos Devflow report generation.
Latest version: 0.1.1

# @idoa/harness

Deterministic fixture runner for Aptos Devflow.

## What It Does

- loads fixture files from a folder
- runs validation against each fixture
- classifies expected pass and expected fail outcomes
- writes `devflow-report.json` and `devflow-summary.txt`

## Install

```bash
npm install @idoa/harness
```

## Use

```ts
import { runHarness } from "@idoa/harness";

const result = await runHarness({
  fixtureDir: "examples/tx-payloads/fixtures",
  outputDir: "reports",
});

console.log(result.exitCode);
```

## Docs

- [Root README](../../README.md)
- [Reproducible Demo](../../docs/reproducible-demo.md)
- [Report Format](../../docs/report-format.md)
npm package: @idoa/report
Description: Report parsing and formatting helpers for Aptos Devflow JSON and summary outputs.
Latest version: 0.1.1

# @idoa/report

Formatting and parsing helpers for Aptos Devflow reports.

## What It Does

- formats report JSON deterministically
- formats CI friendly summary text
- parses generated report files back into typed objects

## Install

```bash
npm install @idoa/report
```

## Use

```ts
import { formatReportJson, formatSummaryText, parseReport } from "@idoa/report";

const json = formatReportJson(report);
const summary = formatSummaryText(report);
const parsed = parseReport(json);
```

## Docs

- [Root README](../../README.md)
- [Report Format](../../docs/report-format.md)
- [CI Setup](../../docs/ci-setup.md)
npm package: @idoa/validator
Description: Deterministic Aptos payload and environment validation rules for browser and Node runtimes.
Latest version: 0.1.1

# @idoa/validator

Validation engine for Aptos payloads, network config and optional Node checks.

## What It Does

- runs deterministic offline rules in browser or Node
- validates Aptos transaction payload shape
- validates argument layout, gas sanity and network config
- exposes Node only checks for Move compile and online environment checks

## Install

```bash
npm install @idoa/validator
```

## Use

Browser safe validation:

```ts
import { validateOfflineInput } from "@idoa/validator";

const result = await validateOfflineInput({
  kind: "transaction-payload",
  source: "payload.json",
  data: payload,
});
```

Node validation:

```ts
import { validateInputNode } from "@idoa/validator/node";

const result = await validateInputNode({
  kind: "move-package",
  source: "examples/move-basic/Move.toml",
  data: {},
});
```

## Docs

- [Root README](../../README.md)
- [Validator Rules](../../docs/validator-rules.md)
- [Report Format](../../docs/report-format.md)
npm package: @idoa/wpis-adapter-arbitrum
Description: Arbitrum adapter for WPIS payment intent verification.
Author: Milan Matejic
Latest version: 0.1.1

# @idoa/wpis-adapter-arbitrum

Arbitrum infrastructure adapter for deterministic payment intent verification.
This package is non-custodial and infrastructure-focused. It does not manage wallets or act as a payment provider.

## Installation

```bash
npm i @idoa/wpis-adapter-arbitrum @idoa/wpis-core
```

## Supported Networks
- Arbitrum One (`42161`)
- Arbitrum Sepolia (`421614`)

## Quick Start

```ts
import { createArbitrumAdapter } from "@idoa/wpis-adapter-arbitrum";

const adapter = createArbitrumAdapter({
  expectedChainId: 42161,
  rpcUrl: process.env.EVM_RPC_URL
});

const intent = adapter.createIntent({
  chainId: "eip155:42161",
  recipient: "0x1111111111111111111111111111111111111111",
  amount: "1000000000000000",
  reference: "order-123",
  expiresAt: new Date(Date.now() + 15 * 60 * 1000).toISOString(),
  asset: { symbol: "ETH", decimals: 18, type: "native" }
});

const request = adapter.buildRequest(intent);
const verification = await adapter.verify(intent);

console.log(request.paymentLink, verification.status);
```

## What This Adapter Does
- Creates deterministic payment intents for Arbitrum networks.
- Builds payment request payloads (including EIP-681 style links).
- Verifies native/ERC20 payments using deterministic matching and confirmation policy checks.
- Enforces explicit chain expectations and expiration behavior.

## What It Does NOT Do
- No wallet management or key custody.
- No swaps, fiat rails, or routing logic.
- No merchant checkout or hosted payment services.
- No transaction signing on behalf of users.

## License (MIT)

Licensed under the MIT License.
npm package: @idoa/wpis-core
Description: Deterministic payment intent primitives for WPIS.
Author: Milan Matejic
Latest version: 0.1.1

# @idoa/wpis-core

Core WPIS primitives for deterministic payment intent lifecycle and verification state handling.

## Installation

```bash
npm i @idoa/wpis-core
```

## Lifecycle Diagram

```text
PENDING --(match found)--> DETECTED --(confirmations >= policy)--> CONFIRMED
   |                            |
   |--(expiresAt reached)------>|-------------------------------> EXPIRED
   |--(verification failure)-----------------------------------> FAILED
```

## Deterministic State Machine
The core package enforces legal status transitions and blocks regressions.
Transition rules are explicit and typed, so downstream tooling gets predictable lifecycle behavior.

## Quick Example

```ts
import { transitionStatus, validateCreateIntentInput, type CreateIntentInput } from "@idoa/wpis-core";

const input: CreateIntentInput = {
  chainId: "eip155:42161",
  recipient: "0x1111111111111111111111111111111111111111",
  amount: "1000000000000000",
  reference: "order-123",
  expiresAt: new Date(Date.now() + 15 * 60 * 1000).toISOString(),
  asset: { symbol: "ETH", decimals: 18, type: "native" }
};

validateCreateIntentInput(input);
const next = transitionStatus("PENDING", "DETECTED");
console.log(next);
```

## Design Principles
- Deterministic lifecycle transitions.
- Strict input validation and explicit error taxonomy.
- Non-custodial architecture boundaries.
- Chain adapter separation from core domain logic.

## Intended Usage
Use this package as the typed lifecycle foundation for verifier services, adapters, and integration tooling.
It is infrastructure-focused and not intended to be a checkout or merchant product layer.

## License (MIT)

Licensed under the MIT License.
npm package: @idoconfig/provider-envvar
Description: Provider for idoconfig that reads values from environment variables.
Author: Volker Thiel
Latest version: 1.3.5

# Environment Variables Provider

Read values from `process.env` and make them accessible through [`Configuration`](https://github.com/MerifondNewMarkets/ido-config)


[![Version npm](https://img.shields.io/npm/v/@idoconfig/provider-envvar.svg)](https://www.npmjs.com/package/@idoconfig/provider-envvar)
[![Actions Status](https://github.com/MerifondNewMarkets/idoconfig/workflows/Build/badge.svg)](https://github.com/MerifondNewMarkets/idoconfig/actions)
[![Actions Status](https://github.com/MerifondNewMarkets/idoconfig/workflows/Tests/badge.svg)](https://github.com/MerifondNewMarkets/idoconfig/actions)
[![npm Downloads](https://img.shields.io/npm/dm/@idoconfig/provider-envvar.svg)](https://npmcharts.com/compare/@idoconfig/provider-envvar?minimal=true)

[![NPM](https://nodeico.herokuapp.com/@idoconfig/provider-envvar.svg)](https://www.npmjs.com/package/@idoconfig/provider-envvar)


---

## Installation & Setup

Add this package to your `package.json`

```bash
npm install --save idoconfig-provider-envvar
```

Use it!

```typescript
import { EnvVarConfigurationValueProvider } from "idoconfig-provider-envvar";

// Use it

const envVarProvider = new EnvVarConfigurationValueProvider();
const configuration = new Configuration([envVarProvider]);

const value = configuration.getValue("my-key");
```

## Use with dependency injection

I'm using [inversify.io](http://inversify.io/)


```typescript
import Container from "inversify";
import { Configuration, IConfiguration, IConfigurationValueProvider } from "idoconfig";
import { EnvVarConfigurationValueProvider } from "idoconfig-provider-envvar";

const di = new Container({ defaultScope: "Singleton" });

decorate(injectable(), Configuration);
decorate(injectable(), EnvVarConfigurationValueProvider);

di.bind<IConfigurationValueProvider>("ConfigProvider").to(EnvVarConfigurationValueProvider);
di.bind<IConfiguration>("Configuration").to(Configuration);
```
npm package: @idoconfig/provider-folder
Description: Provider for idoconfig that reads values from files within a folder Useful for Docker Secrets.
Author: Volker Thiel
Latest version: 1.3.6

# Folder Provider

Read values from files within a folder and make them accessible through [`Configuration`](https://github.com/MerifondNewMarkets/idoconfig)

[![Version npm](https://img.shields.io/npm/v/@idoconfig/provider-folder.svg)](https://www.npmjs.com/package/@idoconfig/provider-folder)
[![Actions Status](https://github.com/MerifondNewMarkets/idoconfig/workflows/Build/badge.svg)](https://github.com/MerifondNewMarkets/idoconfig/actions)
[![Actions Status](https://github.com/MerifondNewMarkets/idoconfig/workflows/Tests/badge.svg)](https://github.com/MerifondNewMarkets/idoconfig/actions)
[![npm Downloads](https://img.shields.io/npm/dm/@idoconfig/provider-folder.svg)](https://npmcharts.com/compare/@idoconfig/provider-folder?minimal=true)

[![NPM](https://nodeico.herokuapp.com/@idoconfig/provider-folder.svg)](https://www.npmjs.com/package/@idoconfig/provider-folder)

---

## Installation & Setup

Add this package to your `package.json`

```bash
npm install --save idoconfig-provider-folder
```

Use it!

```typescript
import { FolderConfigurationValueProvider } from "idoconfig-provider-folder";

// Use it

const folderProvider = new FolderConfigurationValueProvider();
const configuration = new Configuration([folderProvider]);

const value = configuration.getValue("my-key");
```

## Use with dependency injection

I'm using [inversify.io](http://inversify.io/)


```typescript
import Container from "inversify";
import { Configuration, IConfiguration, IConfigurationValueProvider } from "idoconfig";
import { FolderConfigurationValueProvider } from "idoconfig-provider-folder";

const di = new Container({ defaultScope: "Singleton" });

decorate(injectable(), Configuration);
decorate(injectable(), FolderConfigurationValueProvider);

di.bind<IConfigurationValueProvider>("ConfigProvider").to(FolderConfigurationValueProvider);
di.bind<IConfiguration>("Configuration").to(Configuration);
```