@openfort/openfort-node 0.9.2 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/index.d.mts +559 -582
- package/dist/index.d.ts +559 -582
- package/dist/index.js +539 -189
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +538 -182
- package/dist/index.mjs.map +1 -1
- package/examples/evm/delegation/sendTransaction.ts +34 -0
- package/examples/evm/policies/createAccountPolicy.ts +68 -0
- package/examples/evm/policies/createProjectPolicy.ts +53 -0
- package/examples/evm/policies/deletePolicy.ts +34 -0
- package/examples/evm/policies/getPolicyById.ts +34 -0
- package/examples/evm/policies/listAccountPolicies.ts +11 -0
- package/examples/evm/policies/listPolicies.ts +11 -0
- package/examples/evm/policies/listProjectPolicies.ts +11 -0
- package/examples/evm/policies/signTypedDataPolicy.ts +35 -0
- package/examples/evm/policies/updatePolicy.ts +44 -0
- package/examples/evm/policies/validation.ts +45 -0
- package/examples/evm/transactions/sendTransaction.ts +44 -0
- package/examples/package.json +13 -0
- package/examples/pnpm-lock.yaml +933 -0
- package/examples/solana/policies/createSolAllowlistPolicy.ts +27 -0
- package/examples/solana/policies/createSolMessagePolicy.ts +29 -0
- package/examples/solana/policies/createSplTokenLimitsPolicy.ts +33 -0
- package/examples/solana/transactions/sendRawTransaction.ts +23 -0
- package/examples/solana/transactions/sendTransaction.ts +37 -0
- package/examples/solana/transactions/transfer.ts +44 -0
- package/knip.json +10 -1
- package/openapi.json +28 -637
- package/package.json +42 -4
- package/tsconfig.json +3 -4
- package/examples/policies/createAccountPolicy.ts +0 -71
- package/examples/policies/createEvmPolicy.ts +0 -149
- package/examples/policies/createSolanaPolicy.ts +0 -176
- package/examples/policies/createTypedDataPolicy.ts +0 -159
- package/examples/policies/deletePolicy.ts +0 -34
- package/examples/policies/getPolicy.ts +0 -41
- package/examples/policies/listPolicies.ts +0 -34
- package/examples/policies/multiRulePolicy.ts +0 -133
- package/examples/policies/updatePolicy.ts +0 -77
- package/examples/policies/validatePolicy.ts +0 -176
- /package/examples/{contracts → evm/contracts}/createContract.ts +0 -0
- /package/examples/{contracts → evm/contracts}/listContracts.ts +0 -0
- /package/examples/{transactions → evm/transactionIntents}/createTransactionIntent.ts +0 -0
- /package/examples/{transactions → evm/transactionIntents}/estimateGas.ts +0 -0
- /package/examples/{transactions → evm/transactionIntents}/getTransactionIntent.ts +0 -0
- /package/examples/{transactions → evm/transactionIntents}/listTransactionIntents.ts +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Usage: pnpm tsx solana/policies/createSolAllowlistPolicy.ts
|
|
2
|
+
|
|
3
|
+
import Openfort from "@openfort/openfort-node";
|
|
4
|
+
import "dotenv/config";
|
|
5
|
+
|
|
6
|
+
const openfort = new Openfort(process.env.OPENFORT_API_KEY!, {
|
|
7
|
+
basePath: process.env.OPENFORT_BASE_URL,
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
const policy = await openfort.policies.create({
|
|
11
|
+
scope: "account",
|
|
12
|
+
description: "SOL Allowlist Policy",
|
|
13
|
+
rules: [
|
|
14
|
+
{
|
|
15
|
+
action: "accept",
|
|
16
|
+
operation: "signSolTransaction",
|
|
17
|
+
criteria: [
|
|
18
|
+
{
|
|
19
|
+
type: "solAddress",
|
|
20
|
+
addresses: ["DtdSSG8ZJRZVv5Jx7K1MeWp7Zxcu19GD5wQRGRpQ9uMF"],
|
|
21
|
+
operator: "in",
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
});
|
|
27
|
+
console.log("Created sol allowlist policy: ", policy.id);
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Usage: pnpm tsx solana/policies/createSolMessagePolicy.ts
|
|
2
|
+
|
|
3
|
+
import Openfort from "@openfort/openfort-node";
|
|
4
|
+
import "dotenv/config";
|
|
5
|
+
|
|
6
|
+
const openfort = new Openfort(process.env.OPENFORT_API_KEY!, {
|
|
7
|
+
basePath: process.env.OPENFORT_BASE_URL,
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
// Create a policy that only allows signing messages starting with "Openfort:"
|
|
11
|
+
const policy = await openfort.policies.create({
|
|
12
|
+
scope: "account",
|
|
13
|
+
description: "Allow messages with Openfort prefix only",
|
|
14
|
+
rules: [
|
|
15
|
+
{
|
|
16
|
+
action: "accept",
|
|
17
|
+
operation: "signSolMessage",
|
|
18
|
+
criteria: [
|
|
19
|
+
{
|
|
20
|
+
type: "solMessage",
|
|
21
|
+
operator: "match",
|
|
22
|
+
pattern: "^Openfort:.*",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
console.log("Created sol message policy: ", policy.id);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Usage: pnpm tsx solana/policies/createSplTokenLimitsPolicy.ts
|
|
2
|
+
|
|
3
|
+
import Openfort from "@openfort/openfort-node";
|
|
4
|
+
import "dotenv/config";
|
|
5
|
+
|
|
6
|
+
const openfort = new Openfort(process.env.OPENFORT_API_KEY!, {
|
|
7
|
+
basePath: process.env.OPENFORT_BASE_URL,
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
// Create a policy that allows sending up to 1 USDC on Solana devnet
|
|
11
|
+
const policy = await openfort.policies.create({
|
|
12
|
+
scope: "account",
|
|
13
|
+
description: "SPL Token Limits Policy",
|
|
14
|
+
rules: [
|
|
15
|
+
{
|
|
16
|
+
action: "accept",
|
|
17
|
+
operation: "sendSolTransaction",
|
|
18
|
+
criteria: [
|
|
19
|
+
{
|
|
20
|
+
type: "splValue",
|
|
21
|
+
value: "1000000",
|
|
22
|
+
operator: "<=",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
type: "mintAddress",
|
|
26
|
+
addresses: ["4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"],
|
|
27
|
+
operator: "in",
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
});
|
|
33
|
+
console.log("Created spl token limits policy: ", policy.id);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Usage: pnpm tsx solana/transactions/sendRawTransaction.ts
|
|
2
|
+
|
|
3
|
+
import Openfort from "@openfort/openfort-node";
|
|
4
|
+
import "dotenv/config";
|
|
5
|
+
|
|
6
|
+
const openfort = new Openfort(process.env.OPENFORT_API_KEY!, {
|
|
7
|
+
basePath: process.env.OPENFORT_BASE_URL,
|
|
8
|
+
walletSecret: process.env.OPENFORT_WALLET_SECRET,
|
|
9
|
+
publishableKey: process.env.OPENFORT_PUBLISHABLE_KEY,
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
const account = await openfort.accounts.solana.backend.get({
|
|
13
|
+
address: "o24A5URLU3JNKg7AoeUrPsfsAo1NQeeAB4uQViAkpjq",
|
|
14
|
+
});
|
|
15
|
+
console.log("Solana account:", account.address);
|
|
16
|
+
|
|
17
|
+
const base64Transaction = "AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAIAAgVNIUjL89213czrp82aA7pwQtVnJ433tRk70i1jD6x8RgvJ6NInwPBPRE1nsK0uFlw4un64nQPWoQ5z6rMgnEa401TyQ9UGEEZNtkD5WCpVzr4hzSQjxMXpK3bGAFWS+d8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAALajv1ShJYnJUlo8NjFHgtGjF+2MgsBy4LMtqcDvTyfUDBAAJA0BCDwAAAAAABAAFAkANAwADAgECDAIAAAAKAAAAAAAAAAA=";
|
|
18
|
+
|
|
19
|
+
const result = await account.sendRawTransaction({
|
|
20
|
+
cluster: "devnet",
|
|
21
|
+
transaction: base64Transaction,
|
|
22
|
+
});
|
|
23
|
+
console.log("Transaction signature:", result.signature);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Usage: pnpm tsx solana/transactions/sendTransaction.ts
|
|
2
|
+
//
|
|
3
|
+
// Low-level example using raw instructions.
|
|
4
|
+
// For simple transfers, see solana/transfer.ts instead.
|
|
5
|
+
|
|
6
|
+
import Openfort from "@openfort/openfort-node";
|
|
7
|
+
import { getTransferSolInstruction } from "@solana-program/system";
|
|
8
|
+
import { address, createNoopSigner } from "@solana/kit";
|
|
9
|
+
import "dotenv/config";
|
|
10
|
+
|
|
11
|
+
const openfort = new Openfort(process.env.OPENFORT_API_KEY!, {
|
|
12
|
+
basePath: process.env.OPENFORT_BASE_URL,
|
|
13
|
+
walletSecret: process.env.OPENFORT_WALLET_SECRET,
|
|
14
|
+
publishableKey: process.env.OPENFORT_PUBLISHABLE_KEY,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const account = await openfort.accounts.solana.backend.get({
|
|
18
|
+
address: "o24A5URLU3JNKg7AoeUrPsfsAo1NQeeAB4uQViAkpjq",
|
|
19
|
+
});
|
|
20
|
+
console.log("Solana account:", account.address);
|
|
21
|
+
|
|
22
|
+
const DESTINATION = address("FDx9mfVqTvXUaSPQDELwDtGgMqxirmAFsEK2s4YsKfsc");
|
|
23
|
+
|
|
24
|
+
// Build a raw SOL transfer instruction
|
|
25
|
+
const solTransferIx = getTransferSolInstruction({
|
|
26
|
+
source: createNoopSigner(address(account.address)),
|
|
27
|
+
destination: DESTINATION,
|
|
28
|
+
amount: 10n,
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
const result = await openfort.accounts.solana.backend.sendTransaction({
|
|
33
|
+
account,
|
|
34
|
+
cluster: "devnet",
|
|
35
|
+
instructions: [solTransferIx],
|
|
36
|
+
});
|
|
37
|
+
console.log("Transaction signature:", result.signature);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Usage: pnpm tsx solana/transactions/transfer.ts
|
|
2
|
+
|
|
3
|
+
import Openfort from "@openfort/openfort-node";
|
|
4
|
+
import "dotenv/config";
|
|
5
|
+
|
|
6
|
+
const openfort = new Openfort(process.env.OPENFORT_API_KEY!, {
|
|
7
|
+
basePath: process.env.OPENFORT_BASE_URL,
|
|
8
|
+
walletSecret: process.env.OPENFORT_WALLET_SECRET,
|
|
9
|
+
publishableKey: process.env.OPENFORT_PUBLISHABLE_KEY,
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
// Prefunded devnet account with some SOL and USDC for testing transfers
|
|
13
|
+
const account = await openfort.accounts.solana.backend.get({
|
|
14
|
+
address: "o24A5URLU3JNKg7AoeUrPsfsAo1NQeeAB4uQViAkpjq",
|
|
15
|
+
});
|
|
16
|
+
console.log("Solana account:", account.address);
|
|
17
|
+
|
|
18
|
+
const DEST = "FDx9mfVqTvXUaSPQDELwDtGgMqxirmAFsEK2s4YsKfsc";
|
|
19
|
+
|
|
20
|
+
// --- Example 1: SOL transfer ---
|
|
21
|
+
const solResult = await account.transfer({
|
|
22
|
+
to: DEST,
|
|
23
|
+
amount: 1_000_000n,
|
|
24
|
+
cluster: "devnet",
|
|
25
|
+
});
|
|
26
|
+
console.log("SOL transfer signature:", solResult.signature);
|
|
27
|
+
|
|
28
|
+
// --- Example 2: USDC transfer by name ---
|
|
29
|
+
const usdcResult = await account.transfer({
|
|
30
|
+
to: DEST,
|
|
31
|
+
amount: 1_000_000n,
|
|
32
|
+
token: "usdc",
|
|
33
|
+
cluster: "devnet",
|
|
34
|
+
});
|
|
35
|
+
console.log("USDC transfer signature:", usdcResult.signature);
|
|
36
|
+
|
|
37
|
+
// --- Example 3: SPL transfer by mint address ---
|
|
38
|
+
const splResult = await account.transfer({
|
|
39
|
+
to: DEST,
|
|
40
|
+
amount: 2_000_000n,
|
|
41
|
+
token: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
|
|
42
|
+
cluster: "devnet",
|
|
43
|
+
});
|
|
44
|
+
console.log("SPL transfer signature:", splResult.signature);
|
package/knip.json
CHANGED
|
@@ -2,5 +2,14 @@
|
|
|
2
2
|
"$schema": "https://unpkg.com/knip@latest/schema.json",
|
|
3
3
|
"entry": ["src/index.ts!"],
|
|
4
4
|
"project": ["src/**/*.ts!"],
|
|
5
|
-
"ignore": ["example/**"]
|
|
5
|
+
"ignore": ["example/**"],
|
|
6
|
+
"ignoreDependencies": [
|
|
7
|
+
"@solana-program/compute-budget",
|
|
8
|
+
"@solana-program/system",
|
|
9
|
+
"@solana-program/token",
|
|
10
|
+
"@solana/kit",
|
|
11
|
+
"@solana/kora",
|
|
12
|
+
"@solana/transaction-confirmation",
|
|
13
|
+
"viem"
|
|
14
|
+
]
|
|
6
15
|
}
|