@subly_fi/pay 0.2.0 → 0.3.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/dist/deposit.js +18 -18
- package/dist/mcp-server.js +442 -378
- package/dist/pay.js +472 -572
- package/dist/withdraw.js +17 -17
- package/package.json +9 -7
package/dist/withdraw.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// src/client/agent-wallet-signer.ts
|
|
1
|
+
// ../../src/client/agent-wallet-signer.ts
|
|
2
2
|
import { signBytes } from "@solana/kit";
|
|
3
3
|
import bs584 from "bs58";
|
|
4
4
|
|
|
5
|
-
// src/solana/tx.ts
|
|
5
|
+
// ../../src/solana/tx.ts
|
|
6
6
|
import bs58 from "bs58";
|
|
7
7
|
import {
|
|
8
8
|
appendTransactionMessageInstructions,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
setTransactionMessageLifetimeUsingBlockhash
|
|
18
18
|
} from "@solana/kit";
|
|
19
19
|
|
|
20
|
-
// src/lib/hash.ts
|
|
20
|
+
// ../../src/lib/hash.ts
|
|
21
21
|
import { createHash } from "node:crypto";
|
|
22
22
|
function sha256TaggedHex(data) {
|
|
23
23
|
return `sha256-${createHash("sha256").update(data).digest("hex")}`;
|
|
@@ -42,7 +42,7 @@ function hashStableJson(value) {
|
|
|
42
42
|
return sha256TaggedHex(stableStringify(value));
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
// src/solana/tx.ts
|
|
45
|
+
// ../../src/solana/tx.ts
|
|
46
46
|
function decodeSerializedTransaction(serializedBase64) {
|
|
47
47
|
return getTransactionDecoder().decode(Buffer.from(serializedBase64, "base64"));
|
|
48
48
|
}
|
|
@@ -62,11 +62,11 @@ function signatureBase58ForSigner(transaction, signer2) {
|
|
|
62
62
|
return bs58.encode(signature);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
// src/client/transaction-intent-validator.ts
|
|
65
|
+
// ../../src/client/transaction-intent-validator.ts
|
|
66
66
|
import bs583 from "bs58";
|
|
67
67
|
import { getCompiledTransactionMessageDecoder } from "@solana/kit";
|
|
68
68
|
|
|
69
|
-
// src/config/constants.ts
|
|
69
|
+
// ../../src/config/constants.ts
|
|
70
70
|
var PAYMENT_SCHEME = "subly-yield-exact";
|
|
71
71
|
var SOLANA_MAINNET_NETWORK = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
72
72
|
var SPL_TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
|
|
@@ -82,7 +82,7 @@ var SUBLY_VAULT = {
|
|
|
82
82
|
};
|
|
83
83
|
var USDC_DECIMALS = 6;
|
|
84
84
|
|
|
85
|
-
// src/domain/request-binding.ts
|
|
85
|
+
// ../../src/domain/request-binding.ts
|
|
86
86
|
function computeRequestBindingHash(fields) {
|
|
87
87
|
return hashStableJson({
|
|
88
88
|
sellerRequestId: fields.sellerRequestId,
|
|
@@ -97,7 +97,7 @@ function computeRequestBindingHash(fields) {
|
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
// src/lib/associated-token-account.ts
|
|
100
|
+
// ../../src/lib/associated-token-account.ts
|
|
101
101
|
import { createHash as createHash2 } from "node:crypto";
|
|
102
102
|
import bs582 from "bs58";
|
|
103
103
|
var PDA_MARKER = Buffer.from("ProgramDerivedAddress", "utf8");
|
|
@@ -189,7 +189,7 @@ function modPow(base, exponent, modulus) {
|
|
|
189
189
|
return result;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
// src/client/transaction-intent-validator.ts
|
|
192
|
+
// ../../src/client/transaction-intent-validator.ts
|
|
193
193
|
var COMPUTE_BUDGET_PROGRAM_ID = "ComputeBudget111111111111111111111111111111";
|
|
194
194
|
var SYSTEM_PROGRAM_ID = "11111111111111111111111111111111";
|
|
195
195
|
var ASSOCIATED_TOKEN_PROGRAM_ID2 = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
|
|
@@ -875,7 +875,7 @@ function readShortVec(bytes, startOffset) {
|
|
|
875
875
|
return null;
|
|
876
876
|
}
|
|
877
877
|
|
|
878
|
-
// src/client/agent-wallet-signer.ts
|
|
878
|
+
// ../../src/client/agent-wallet-signer.ts
|
|
879
879
|
var LocalKeypairAgentWalletSigner = class {
|
|
880
880
|
validationMode = "structured_intent_transaction";
|
|
881
881
|
keyPairSigner;
|
|
@@ -945,7 +945,7 @@ var LocalKeypairAgentWalletSigner = class {
|
|
|
945
945
|
}
|
|
946
946
|
};
|
|
947
947
|
|
|
948
|
-
// src/api/wallet-auth.ts
|
|
948
|
+
// ../../src/api/wallet-auth.ts
|
|
949
949
|
import { createHash as createHash3 } from "node:crypto";
|
|
950
950
|
import bs585 from "bs58";
|
|
951
951
|
import nacl from "tweetnacl";
|
|
@@ -963,7 +963,7 @@ function walletAuthMessage(params) {
|
|
|
963
963
|
);
|
|
964
964
|
}
|
|
965
965
|
|
|
966
|
-
// src/client/wallet-auth-headers.ts
|
|
966
|
+
// ../../src/client/wallet-auth-headers.ts
|
|
967
967
|
async function walletAuthHeaders(params) {
|
|
968
968
|
const signedAtMs = String(Date.now());
|
|
969
969
|
const message = walletAuthMessage({
|
|
@@ -979,7 +979,7 @@ async function walletAuthHeaders(params) {
|
|
|
979
979
|
};
|
|
980
980
|
}
|
|
981
981
|
|
|
982
|
-
// src/client/lookup-tables.ts
|
|
982
|
+
// ../../src/client/lookup-tables.ts
|
|
983
983
|
import { fetchAllMaybeAddressLookupTable } from "@solana-program/address-lookup-table";
|
|
984
984
|
import { address, getCompiledTransactionMessageDecoder as getCompiledTransactionMessageDecoder2 } from "@solana/kit";
|
|
985
985
|
function lookupTableAddressesForTransaction(serializedTransaction) {
|
|
@@ -1019,7 +1019,7 @@ async function fetchLookupTablesForTransaction(rpc2, serializedTransaction) {
|
|
|
1019
1019
|
return result;
|
|
1020
1020
|
}
|
|
1021
1021
|
|
|
1022
|
-
// src/solana/keys.ts
|
|
1022
|
+
// ../../src/solana/keys.ts
|
|
1023
1023
|
import { readFileSync } from "node:fs";
|
|
1024
1024
|
import bs586 from "bs58";
|
|
1025
1025
|
import {
|
|
@@ -1044,13 +1044,13 @@ async function loadKeyPairSigner(params) {
|
|
|
1044
1044
|
throw new Error(`${label} keypair is not configured`);
|
|
1045
1045
|
}
|
|
1046
1046
|
|
|
1047
|
-
// src/solana/rpc.ts
|
|
1047
|
+
// ../../src/solana/rpc.ts
|
|
1048
1048
|
import { createSolanaRpc } from "@solana/kit";
|
|
1049
1049
|
function createRpc(url) {
|
|
1050
1050
|
return createSolanaRpc(url);
|
|
1051
1051
|
}
|
|
1052
1052
|
|
|
1053
|
-
// demo/shared.ts
|
|
1053
|
+
// ../../demo/shared.ts
|
|
1054
1054
|
function fail(message) {
|
|
1055
1055
|
console.error(message);
|
|
1056
1056
|
process.exit(1);
|
|
@@ -1062,7 +1062,7 @@ function formatRawUsdc(raw) {
|
|
|
1062
1062
|
return `${whole}.${fraction}`;
|
|
1063
1063
|
}
|
|
1064
1064
|
|
|
1065
|
-
// demo/withdraw.ts
|
|
1065
|
+
// ../../demo/withdraw.ts
|
|
1066
1066
|
var facilitatorBaseUrl = process.env.SUBLY_FACILITATOR_URL ?? "https://api.demo.sublyfi.com";
|
|
1067
1067
|
var amountRawUsdc = process.argv[2];
|
|
1068
1068
|
if (amountRawUsdc === void 0 || !/^[1-9]\d*$/.test(amountRawUsdc)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subly_fi/pay",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Subly client: pay for ANY standard x402 (HTTP 402) paid API from Kamino vault yield — the seller needs no Subly integration. Ships an MCP server and a one-shot pay/deposit CLI; non-custodial (signs locally with your own key).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -15,20 +15,22 @@
|
|
|
15
15
|
"README.md"
|
|
16
16
|
],
|
|
17
17
|
"scripts": {
|
|
18
|
-
"build": "node build.mjs"
|
|
18
|
+
"build": "node build.mjs",
|
|
19
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
19
20
|
},
|
|
20
21
|
"dependencies": {
|
|
21
22
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
22
|
-
"@solana-program/address-lookup-table": "^0.
|
|
23
|
-
"@solana/kit": "^
|
|
24
|
-
"@
|
|
23
|
+
"@solana-program/address-lookup-table": "^0.10.0",
|
|
24
|
+
"@solana/kit": "^5.1.0",
|
|
25
|
+
"@x402/fetch": "^2.17.0",
|
|
26
|
+
"@x402/svm": "^2.17.0",
|
|
25
27
|
"bs58": "^6.0.0",
|
|
26
28
|
"tweetnacl": "^1.0.3",
|
|
27
|
-
"x402-solana": "^2.0.4",
|
|
28
29
|
"zod": "^4.1.13"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
|
-
"esbuild": "^0.28.1"
|
|
32
|
+
"esbuild": "^0.28.1",
|
|
33
|
+
"typescript": "^5.9.3"
|
|
32
34
|
},
|
|
33
35
|
"publishConfig": {
|
|
34
36
|
"access": "public"
|