Skip to content
Merged
5 changes: 5 additions & 0 deletions .changeset/solid-colts-spend.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@oaknetwork/contracts-sdk': major
---

Initial release
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
{
"name": "contracts",
"rootPath": "packages/contracts",
"jestCommandLine": "pnpm --filter @oaknetwork/contracts test --",
"jestCommandLine": "pnpm --filter @oaknetwork/contracts-sdk test --",
"pathToConfig": "jest.config.js"
}
]
Expand Down
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Engine requirement updated: `pnpm >= 10.0.0` (was `>= 8.0.0`)
- **CI/CD Improvements**:
- Removed `continue-on-error` from lint step - lint failures now block PRs
- Excluded `@oaknetwork/contracts` placeholder package from CI builds
- Excluded `@oaknetwork/contracts-sdk` placeholder package from CI builds
- Pinned npm version in release workflow to `10.9.2` for deterministic builds
- Added `package-lock.json` to .gitignore (enforces pnpm as canonical package manager)

Expand Down
16 changes: 8 additions & 8 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ This document provides strict rules and standards for AI assistants (Claude Code

## Architecture Principles (Payments SDK)

> **Scope:** This section applies to the **payments SDK** (`packages/payments-sdk`). For the contracts package (`packages/contracts`), see [Architecture Principles (Contracts SDK)](#architecture-principles-contracts-sdk) below.
> **Scope:** This section applies to the **payments SDK** (`packages/payments`). For the contracts package (`packages/contracts`), see [Architecture Principles (Contracts SDK)](#architecture-principles-contracts-sdk) below.

### Core Patterns (DO NOT BREAK)

Expand Down Expand Up @@ -213,12 +213,12 @@ Write and simulate methods **MUST** use `requireSigner` and `requireAccount` gua

| Import path | Contents |
|-------------|----------|
| `@oaknetwork/contracts` | Client, utils, types, lib re-exports, constants, errors |
| `@oaknetwork/contracts/contracts` | Individual `create*Entity` factories |
| `@oaknetwork/contracts/client` | `createOakContractsClient` + client types |
| `@oaknetwork/contracts/utils` | Pure helper functions |
| `@oaknetwork/contracts/errors` | Error classes + parsing utilities |
| `@oaknetwork/contracts/metrics` | Reporting helpers (**NOT** re-exported from root) |
| `@oaknetwork/contracts-sdk` | Client, utils, types, lib re-exports, constants, errors |
| `@oaknetwork/contracts-sdk/contracts` | Individual `create*Entity` factories |
| `@oaknetwork/contracts-sdk/client` | `createOakContractsClient` + client types |
| `@oaknetwork/contracts-sdk/utils` | Pure helper functions |
| `@oaknetwork/contracts-sdk/errors` | Error classes + parsing utilities |
| `@oaknetwork/contracts-sdk/metrics` | Reporting helpers (**NOT** re-exported from root) |

### Testing (Contracts-Specific)

Expand Down Expand Up @@ -892,7 +892,7 @@ export function verifyWebhookSignature(

1. Changesets gather changes
2. Version bump via `pnpm changeset:version`
3. Build packages: `pnpm --filter=!@oaknetwork/contracts build`
3. Build packages: `pnpm --filter=!@oaknetwork/contracts-sdk build`
4. Publish to npm with provenance
5. Create GitHub releases

Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ Primary SDK for Oak payments APIs (customers, payments, webhooks, transfers, ref

TypeScript SDK for Oak smart contracts and contract integrations.

- Package: `@oaknetwork/contracts`
- Package: `@oaknetwork/contracts-sdk`
- Folder: [`packages/contracts`](./packages/contracts)
- Documentation: [oaknetwork.org](https://www.oaknetwork.org/)
- Documentation: [oaknetwork.org/docs/contracts-sdk/overview](https://oaknetwork.org/docs/contracts-sdk/overview)
- npm: [npmjs.com/package/@oaknetwork/contracts-sdk](https://www.npmjs.com/package/@oaknetwork/contracts-sdk)

## Monorepo quick start

Expand Down
9 changes: 5 additions & 4 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

## Supported Versions

We actively maintain and provide security updates for the following versions of `@oaknetwork/payments-sdk`:
We actively maintain and provide security updates for the following published packages:

| Version | Supported |
| ------- | ----------------- |
| 1.x | ✅ Active support |
| Package | Supported versions | Status |
| ---------------------------- | ------------------ | ----------------- |
| `@oaknetwork/payments-sdk` | 1.x | ✅ Active support |
| `@oaknetwork/contracts-sdk` | 1.x | ✅ Active support |

## Reporting a Vulnerability

Expand Down
33 changes: 8 additions & 25 deletions packages/contracts/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,15 @@
# @oaknetwork/contracts
---

## 1.0.0

### Major Changes

### Major Changes

- Added contract for sdk

## 0.1.0

### Minor Changes

### Minor Changes

- testing changeset for releases

## 1.0.0

### Major Changes

### Major Changes
- Initial release of `@oaknetwork/contracts-sdk`

Package renamed from `@oaknetwork/contracts` to `@oaknetwork/contracts-sdk`.
'@oaknetwork/contracts-sdk': major
---
Comment thread
devmahmud marked this conversation as resolved.

- project setup

### Minor Changes

### Minor Changes
Initial release of `@oaknetwork/contracts-sdk`

- update changeset
- Fix release CI
Package renamed from `@oaknetwork/contracts` to `@oaknetwork/contracts-sdk`.
39 changes: 20 additions & 19 deletions packages/contracts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,23 @@ TypeScript SDK for interacting with Oak Network smart contracts. Provides a type
## Installation

```bash
pnpm add @oaknetwork/contracts
pnpm add @oaknetwork/contracts-sdk
```

```bash
npm install @oaknetwork/contracts
npm install @oaknetwork/contracts-sdk
```

```bash
yarn add @oaknetwork/contracts
yarn add @oaknetwork/contracts-sdk
```

**Requirements:** Node.js 18+, TypeScript 5.x recommended.

### Supported Chain IDs

```typescript
import { CHAIN_IDS } from "@oaknetwork/contracts";
import { CHAIN_IDS } from "@oaknetwork/contracts-sdk";

CHAIN_IDS.ETHEREUM_MAINNET; // 1
CHAIN_IDS.CELO_MAINNET; // 42220
Expand All @@ -45,7 +45,7 @@ CHAIN_IDS.CELO_TESTNET_SEPOLIA; // 11142220
### Create a client

```typescript
import { createOakContractsClient, CHAIN_IDS } from "@oaknetwork/contracts";
import { createOakContractsClient, CHAIN_IDS } from "@oaknetwork/contracts-sdk";

const oak = createOakContractsClient({
chainId: CHAIN_IDS.CELO_TESTNET_SEPOLIA,
Expand Down Expand Up @@ -100,7 +100,7 @@ import {
createOakContractsClient,
createWallet,
CHAIN_IDS,
} from "@oaknetwork/contracts";
} from "@oaknetwork/contracts-sdk";

const oak = createOakContractsClient({
chainId: CHAIN_IDS.CELO_TESTNET_SEPOLIA,
Expand Down Expand Up @@ -151,7 +151,7 @@ import {
http,
getChainFromId,
CHAIN_IDS,
} from "@oaknetwork/contracts";
} from "@oaknetwork/contracts-sdk";

const chain = getChainFromId(CHAIN_IDS.CELO_TESTNET_SEPOLIA);
const provider = createPublicClient({ chain, transport: http(RPC_URL) });
Expand Down Expand Up @@ -235,7 +235,7 @@ import {
getCurrentTimestamp,
addDays,
CHAIN_IDS,
} from "@oaknetwork/contracts";
} from "@oaknetwork/contracts-sdk";

const factory = oak.campaignInfoFactory("0x...");

Expand Down Expand Up @@ -468,7 +468,7 @@ Contract calls can revert with on-chain errors. The SDK decodes raw revert data
### Decoding revert errors:

```typescript
import { parseContractError, getRevertData } from "@oaknetwork/contracts";
import { parseContractError, getRevertData } from "@oaknetwork/contracts-sdk";

function handleError(err) {
// If the error is already a typed SDK error (thrown by simulate methods)
Expand Down Expand Up @@ -503,7 +503,7 @@ try {

## Utility Functions

The SDK exports pure utility functions and constants that have no client dependency. Import them from @oaknetwork/contracts or @oaknetwork/contracts/utils.
The SDK exports pure utility functions and constants that have no client dependency. Import them from @oaknetwork/contracts-sdk or @oaknetwork/contracts-sdk/utils.

```typescript
import {
Expand All @@ -528,7 +528,7 @@ import {
BYTES32_ZERO,
DATA_REGISTRY_KEYS,
scopedToPlatform,
} from "@oaknetwork/contracts";
} from "@oaknetwork/contracts-sdk";

// Hash a string to bytes32
const platformHash = keccak256(toHex("my-platform"));
Expand Down Expand Up @@ -557,11 +557,12 @@ For complete guidelines on utility functions, please refer to the following link

| Entry point | Contents |
| --------------------------------- | ------------------------------------------- |
| `@oaknetwork/contracts` | Everything — client, types, utils, errors |
| `@oaknetwork/contracts/utils` | Utility functions only (no client) |
| `@oaknetwork/contracts/contracts` | Contract entity factories only |
| `@oaknetwork/contracts/client` | `createOakContractsClient` only |
| `@oaknetwork/contracts/errors` | Error classes and `parseContractError` only |
| `@oaknetwork/contracts-sdk` | Everything — client, types, utils, errors |
| `@oaknetwork/contracts-sdk/utils` | Utility functions only (no client) |
| `@oaknetwork/contracts-sdk/contracts` | Contract entity factories only |
| `@oaknetwork/contracts-sdk/client` | `createOakContractsClient` only |
| `@oaknetwork/contracts-sdk/errors` | Error classes and `parseContractError` only |
| `@oaknetwork/contracts-sdk/metrics` | Platform, campaign, and treasury reporting helpers (not re-exported from root) |

---

Expand Down Expand Up @@ -621,8 +622,8 @@ See [CLAUDE.md](../../CLAUDE.md) for coding standards including architecture pri

## Documentation

- [Full docs](https://oaknetwork.org/docs/contracts-sdk/overview) — oaknetwork.org/docs/sdk/overview
- [Quickstart](https://oaknetwork.org/docs/contracts-sdk/quickstart) — oaknetwork.org/docs/sdk/quickstart
- [Full docs](https://oaknetwork.org/docs/contracts-sdk/overview) — oaknetwork.org/docs/contracts-sdk/overview
- [Quickstart](https://oaknetwork.org/docs/contracts-sdk/quickstart) — oaknetwork.org/docs/contracts-sdk/quickstart
- [Monorepo README](../../README.md) — README.md
- [Changelog](./CHANGELOG.md) — CHANGELOG.md

Expand All @@ -644,6 +645,6 @@ See [CLAUDE.md](../../CLAUDE.md) for coding standards including architecture pri
- [Documentation](https://oaknetwork.org/docs/contracts-sdk/overview)
- [GitHub](https://github.com/oak-network/sdk)
- [Issues](https://github.com/oak-network/sdk/issues)
- [npm](https://www.npmjs.com/package/@oaknetwork/contracts)
- [npm](https://www.npmjs.com/package/@oaknetwork/contracts-sdk)

Questions? [Open an issue](https://github.com/oak-network/sdk/issues) or contact **support@oaknetwork.org**
18 changes: 16 additions & 2 deletions packages/contracts/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
{
"name": "@oaknetwork/contracts",
"version": "1.0.0",
"name": "@oaknetwork/contracts-sdk",
"version": "0.0.0",
"description": "TypeScript SDK for Oak Network smart contracts",
"keywords": [
"sdk",
"oaknetwork",
"oak",
"typescript",
"viem",
"web3",
"celo",
"smart-contracts"
],
"homepage": "https://oaknetwork.org/docs/contracts-sdk/overview",
"bugs": {
"url": "https://github.com/oak-network/sdk/issues"
},
"publishConfig": {
"access": "public"
},
Expand Down
8 changes: 4 additions & 4 deletions packages/contracts/src/lib/viem/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import type { JsonRpcProvider, Wallet } from "../../client/types";
*
* @example
* ```typescript
* import { createJsonRpcProvider, mainnet } from '@oaknetwork/contracts'
* import { createJsonRpcProvider, mainnet } from '@oaknetwork/contracts-sdk'
*
* const provider = createJsonRpcProvider('https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY', mainnet)
* ```
Expand All @@ -45,7 +45,7 @@ export function createJsonRpcProvider(
*
* @example
* ```typescript
* import { createWallet, createJsonRpcProvider, mainnet } from '@oaknetwork/contracts'
* import { createWallet, createJsonRpcProvider, mainnet } from '@oaknetwork/contracts-sdk'
*
* const provider = createJsonRpcProvider(rpcUrl, mainnet)
* const signer = createWallet(privateKey, provider, rpcUrl)
Expand Down Expand Up @@ -81,7 +81,7 @@ export function createWallet(
*
* @example
* ```typescript
* import { createBrowserProvider, mainnet } from '@oaknetwork/contracts'
* import { createBrowserProvider, mainnet } from '@oaknetwork/contracts-sdk'
*
* const provider = createBrowserProvider(window.ethereum, mainnet)
* ```
Expand All @@ -106,7 +106,7 @@ export function createBrowserProvider(
*
* @example
* ```typescript
* import { createBrowserProvider, getSigner, mainnet } from '@oaknetwork/contracts'
* import { createBrowserProvider, getSigner, mainnet } from '@oaknetwork/contracts-sdk'
*
* const provider = createBrowserProvider(window.ethereum, mainnet)
* const signer = await getSigner(window.ethereum, mainnet)
Expand Down
3 changes: 1 addition & 2 deletions packages/contracts/src/metrics/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
/**
* @file metrics/index.ts
* Public surface for the @oaknetwork/contracts/metrics sub-path export.
* TODO: Register in package.json exports as `@oaknetwork/contracts/metrics`.
* Public surface for the @oaknetwork/contracts-sdk/metrics sub-path export.
*/

export { getPlatformStats } from "./platform";
Expand Down
10 changes: 9 additions & 1 deletion packages/payments/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,16 @@
"description": "A fully-typed TypeScript SDK for the Oak Network payment API.",
"keywords": [
"sdk",
"oaknetwork"
"oaknetwork",
"oak",
"typescript",
"payments",
"api"
],
"homepage": "https://www.oaknetwork.org/docs/sdk/overview",
"bugs": {
"url": "https://github.com/oak-network/sdk/issues"
},
"publishConfig": {
"access": "public"
},
Expand Down
Loading