paytaca-cli 0.6.2 → 0.8.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/README.md +183 -34
- package/dist/ai/autoRefill.d.ts +85 -0
- package/dist/ai/autoRefill.d.ts.map +1 -0
- package/dist/ai/autoRefill.js +266 -0
- package/dist/ai/autoRefill.js.map +1 -0
- package/dist/ai/client.d.ts +73 -0
- package/dist/ai/client.d.ts.map +1 -0
- package/dist/ai/client.js +90 -0
- package/dist/ai/client.js.map +1 -0
- package/dist/ai/config.d.ts +8 -0
- package/dist/ai/config.d.ts.map +1 -0
- package/dist/ai/config.js +17 -0
- package/dist/ai/config.js.map +1 -0
- package/dist/ai/configure.d.ts +61 -0
- package/dist/ai/configure.d.ts.map +1 -0
- package/dist/ai/configure.js +452 -0
- package/dist/ai/configure.js.map +1 -0
- package/dist/ai/credits.d.ts +27 -0
- package/dist/ai/credits.d.ts.map +1 -0
- package/dist/ai/credits.js +108 -0
- package/dist/ai/credits.js.map +1 -0
- package/dist/ai/images.d.ts +128 -0
- package/dist/ai/images.d.ts.map +1 -0
- package/dist/ai/images.js +399 -0
- package/dist/ai/images.js.map +1 -0
- package/dist/ai/models.d.ts +13 -0
- package/dist/ai/models.d.ts.map +1 -0
- package/dist/ai/models.js +49 -0
- package/dist/ai/models.js.map +1 -0
- package/dist/ai/oauth.d.ts +45 -0
- package/dist/ai/oauth.d.ts.map +1 -0
- package/dist/ai/oauth.js +137 -0
- package/dist/ai/oauth.js.map +1 -0
- package/dist/ai/purchase.d.ts +30 -0
- package/dist/ai/purchase.d.ts.map +1 -0
- package/dist/ai/purchase.js +456 -0
- package/dist/ai/purchase.js.map +1 -0
- package/dist/commands/address.d.ts.map +1 -1
- package/dist/commands/address.js +86 -47
- package/dist/commands/address.js.map +1 -1
- package/dist/commands/ai.d.ts +9 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +951 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/balance.d.ts.map +1 -1
- package/dist/commands/balance.js +68 -129
- package/dist/commands/balance.js.map +1 -1
- package/dist/commands/history.d.ts.map +1 -1
- package/dist/commands/history.js +38 -78
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/mcp.d.ts +14 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +68 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/pay.js +1 -1
- package/dist/commands/pay.js.map +1 -1
- package/dist/commands/receive.d.ts +1 -8
- package/dist/commands/receive.d.ts.map +1 -1
- package/dist/commands/receive.js +51 -124
- package/dist/commands/receive.js.map +1 -1
- package/dist/commands/send.d.ts +0 -10
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +40 -50
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/swap.js +1 -1
- package/dist/commands/swap.js.map +1 -1
- package/dist/commands/token.d.ts +1 -9
- package/dist/commands/token.d.ts.map +1 -1
- package/dist/commands/token.js +192 -289
- package/dist/commands/token.js.map +1 -1
- package/dist/commands/update.d.ts +32 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +200 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/wallet.js +1 -1
- package/dist/commands/wallet.js.map +1 -1
- package/dist/commands/web.d.ts +3 -0
- package/dist/commands/web.d.ts.map +1 -0
- package/dist/commands/web.js +71 -0
- package/dist/commands/web.js.map +1 -0
- package/dist/core/context.d.ts +30 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +45 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/wallet.d.ts +130 -0
- package/dist/core/wallet.d.ts.map +1 -0
- package/dist/core/wallet.js +276 -0
- package/dist/core/wallet.js.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +52 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +7 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +752 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/utils/format.d.ts +23 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +62 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/x402.js +1 -1
- package/dist/utils/x402.js.map +1 -1
- package/dist/wallet/cauldron/swap.d.ts +15 -0
- package/dist/wallet/cauldron/swap.d.ts.map +1 -1
- package/dist/wallet/cauldron/swap.js +31 -0
- package/dist/wallet/cauldron/swap.js.map +1 -1
- package/dist/wallet/index.d.ts +29 -1
- package/dist/wallet/index.d.ts.map +1 -1
- package/dist/wallet/index.js +92 -8
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/keys.d.ts.map +1 -1
- package/dist/wallet/keys.js +2 -0
- package/dist/wallet/keys.js.map +1 -1
- package/dist/web/assets.d.ts +3 -0
- package/dist/web/assets.d.ts.map +1 -0
- package/dist/web/assets.js +3 -0
- package/dist/web/assets.js.map +1 -0
- package/dist/web/page.d.ts +2 -0
- package/dist/web/page.d.ts.map +1 -0
- package/dist/web/page.js +637 -0
- package/dist/web/page.js.map +1 -0
- package/dist/web/server.d.ts +79 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +665 -0
- package/dist/web/server.js.map +1 -0
- package/package.json +8 -3
- package/dist/commands/wallet.test.d.ts +0 -2
- package/dist/commands/wallet.test.d.ts.map +0 -1
- package/dist/commands/wallet.test.js +0 -68
- package/dist/commands/wallet.test.js.map +0 -1
- package/dist/nostr/chat.test.d.ts +0 -2
- package/dist/nostr/chat.test.d.ts.map +0 -1
- package/dist/nostr/chat.test.js +0 -121
- package/dist/nostr/chat.test.js.map +0 -1
- package/dist/nostr/store.test.d.ts +0 -2
- package/dist/nostr/store.test.d.ts.map +0 -1
- package/dist/nostr/store.test.js +0 -456
- package/dist/nostr/store.test.js.map +0 -1
- package/dist/utils/prices.test.d.ts +0 -5
- package/dist/utils/prices.test.d.ts.map +0 -1
- package/dist/utils/prices.test.js +0 -62
- package/dist/utils/prices.test.js.map +0 -1
- package/dist/utils/x402.test.d.ts +0 -2
- package/dist/utils/x402.test.d.ts.map +0 -1
- package/dist/utils/x402.test.js +0 -216
- package/dist/utils/x402.test.js.map +0 -1
- package/dist/wallet/cauldron/pools.test.d.ts +0 -3
- package/dist/wallet/cauldron/pools.test.d.ts.map +0 -1
- package/dist/wallet/cauldron/pools.test.js +0 -149
- package/dist/wallet/cauldron/pools.test.js.map +0 -1
- package/dist/wallet/cauldron/swap.test.d.ts +0 -2
- package/dist/wallet/cauldron/swap.test.d.ts.map +0 -1
- package/dist/wallet/cauldron/swap.test.js +0 -179
- package/dist/wallet/cauldron/swap.test.js.map +0 -1
- package/skills/README.md +0 -68
- package/skills/paytaca-send/SKILL.md +0 -159
- package/skills/paytaca-wallet/SKILL.md +0 -164
- package/skills/paytaca-x402/SKILL.md +0 -130
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bitcoin Cash OAuth (bitcoincash-oauth) client for the Paytaca AI backend.
|
|
3
|
+
*
|
|
4
|
+
* Flow: sign a challenge with a wallet-derived key, register the key's
|
|
5
|
+
* address, exchange the signature for an access token, then mint an API key
|
|
6
|
+
* bound to the wallet hash. The API key is an identity only — AI usage is
|
|
7
|
+
* still metered against the wallet's credits.
|
|
8
|
+
*/
|
|
9
|
+
export declare const OAUTH_DOMAIN = "oauth";
|
|
10
|
+
export declare const OAUTH_AUTH_PATH = "2/0";
|
|
11
|
+
export interface WalletAuthMaterial {
|
|
12
|
+
userId: string;
|
|
13
|
+
publicKey: string;
|
|
14
|
+
address: string;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
domain: string;
|
|
17
|
+
signature: string;
|
|
18
|
+
}
|
|
19
|
+
export interface CreatedApiKey {
|
|
20
|
+
id: string;
|
|
21
|
+
key: string;
|
|
22
|
+
keyPrefix: string;
|
|
23
|
+
name: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function buildAuthMessage(userId: string, timestamp: number, domain?: string): string;
|
|
26
|
+
/** Raw DER ECDSA over sha256(message) — no Bitcoin Signed Message prefix. */
|
|
27
|
+
export declare function signAuthMessage(message: string, privateKey: Uint8Array): string;
|
|
28
|
+
export declare function createAuthMaterial(mnemonic: string, walletHash: string, timestamp?: number): WalletAuthMaterial;
|
|
29
|
+
export declare function registerOAuthUser(material: WalletAuthMaterial, opts?: {
|
|
30
|
+
backendUrl?: string;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
export declare function createAccessToken(material: WalletAuthMaterial, opts?: {
|
|
33
|
+
backendUrl?: string;
|
|
34
|
+
}): Promise<string>;
|
|
35
|
+
export declare function createApiKey(accessToken: string, name: string, opts?: {
|
|
36
|
+
backendUrl?: string;
|
|
37
|
+
}): Promise<CreatedApiKey>;
|
|
38
|
+
export declare function provisionApiKey(options: {
|
|
39
|
+
mnemonic: string;
|
|
40
|
+
walletHash: string;
|
|
41
|
+
backendUrl?: string;
|
|
42
|
+
name?: string;
|
|
43
|
+
timestamp?: number;
|
|
44
|
+
}): Promise<CreatedApiKey>;
|
|
45
|
+
//# sourceMappingURL=oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/ai/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,eAAO,MAAM,YAAY,UAAU,CAAA;AACnC,eAAO,MAAM,eAAe,QAAQ,CAAA;AAEpC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AASD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAAqB,GAC5B,MAAM,CAER;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAI/E;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,kBAAkB,CAcpB;AAkDD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACjC,OAAO,CAAC,aAAa,CAAC,CAmBxB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,aAAa,CAAC,CAMzB"}
|
package/dist/ai/oauth.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bitcoin Cash OAuth (bitcoincash-oauth) client for the Paytaca AI backend.
|
|
3
|
+
*
|
|
4
|
+
* Flow: sign a challenge with a wallet-derived key, register the key's
|
|
5
|
+
* address, exchange the signature for an access token, then mint an API key
|
|
6
|
+
* bound to the wallet hash. The API key is an identity only — AI usage is
|
|
7
|
+
* still metered against the wallet's credits.
|
|
8
|
+
*/
|
|
9
|
+
import { binToHex, secp256k1, sha256 } from '@bitauth/libauth';
|
|
10
|
+
import { LibauthHDWallet } from '../wallet/keys.js';
|
|
11
|
+
import { BCH_DERIVATION_PATH } from '../utils/network.js';
|
|
12
|
+
import { pubkeyToAddress } from '../utils/crypto.js';
|
|
13
|
+
import { resolveBackendUrl, apiUrl } from './config.js';
|
|
14
|
+
import { AiApiError } from './client.js';
|
|
15
|
+
export const OAUTH_DOMAIN = 'oauth';
|
|
16
|
+
export const OAUTH_AUTH_PATH = '2/0';
|
|
17
|
+
export function buildAuthMessage(userId, timestamp, domain = OAUTH_DOMAIN) {
|
|
18
|
+
return `bitcoincash-oauth|${domain}|${userId}|${timestamp}`;
|
|
19
|
+
}
|
|
20
|
+
/** Raw DER ECDSA over sha256(message) — no Bitcoin Signed Message prefix. */
|
|
21
|
+
export function signAuthMessage(message, privateKey) {
|
|
22
|
+
const digest = sha256.hash(new TextEncoder().encode(message));
|
|
23
|
+
const signature = secp256k1.signMessageHashDER(privateKey, digest);
|
|
24
|
+
return typeof signature === 'string' ? signature : binToHex(signature);
|
|
25
|
+
}
|
|
26
|
+
export function createAuthMaterial(mnemonic, walletHash, timestamp) {
|
|
27
|
+
const hdWallet = new LibauthHDWallet(mnemonic, BCH_DERIVATION_PATH, 'mainnet');
|
|
28
|
+
const node = hdWallet.getNodeAt(OAUTH_AUTH_PATH);
|
|
29
|
+
const publicKey = hdWallet.getPubkeyAt(OAUTH_AUTH_PATH);
|
|
30
|
+
const ts = timestamp ?? Math.floor(Date.now() / 1000);
|
|
31
|
+
const signature = signAuthMessage(buildAuthMessage(walletHash, ts), node.privateKey);
|
|
32
|
+
return {
|
|
33
|
+
userId: walletHash,
|
|
34
|
+
publicKey,
|
|
35
|
+
address: pubkeyToAddress(publicKey, false),
|
|
36
|
+
timestamp: ts,
|
|
37
|
+
domain: OAUTH_DOMAIN,
|
|
38
|
+
signature,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async function postJson(url, body, token, timeoutMs = 15000) {
|
|
42
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
43
|
+
if (token)
|
|
44
|
+
headers.Authorization = `Bearer ${token}`;
|
|
45
|
+
let response;
|
|
46
|
+
try {
|
|
47
|
+
response = await fetch(url, {
|
|
48
|
+
method: 'POST',
|
|
49
|
+
headers,
|
|
50
|
+
body: JSON.stringify(body),
|
|
51
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
throw new AiApiError(`Backend unreachable: ${err?.message || err}`);
|
|
56
|
+
}
|
|
57
|
+
const text = await response.text();
|
|
58
|
+
let parsed = null;
|
|
59
|
+
if (text) {
|
|
60
|
+
try {
|
|
61
|
+
parsed = JSON.parse(text);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
parsed = text;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
ok: response.ok,
|
|
69
|
+
status: response.status,
|
|
70
|
+
statusText: response.statusText,
|
|
71
|
+
body: parsed,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function errorMessage(response) {
|
|
75
|
+
const body = response.body;
|
|
76
|
+
if (body && typeof body === 'object') {
|
|
77
|
+
return body.error || body.detail || body.message || JSON.stringify(body);
|
|
78
|
+
}
|
|
79
|
+
if (typeof body === 'string' && body)
|
|
80
|
+
return body;
|
|
81
|
+
return response.statusText;
|
|
82
|
+
}
|
|
83
|
+
export async function registerOAuthUser(material, opts = {}) {
|
|
84
|
+
const url = apiUrl(resolveBackendUrl(opts.backendUrl), '/v1/auth/register');
|
|
85
|
+
const response = await postJson(url, {
|
|
86
|
+
bitcoincash_address: material.address,
|
|
87
|
+
user_id: material.userId,
|
|
88
|
+
timestamp: material.timestamp,
|
|
89
|
+
domain: material.domain,
|
|
90
|
+
public_key: material.publicKey,
|
|
91
|
+
signature: material.signature,
|
|
92
|
+
});
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
const message = errorMessage(response);
|
|
95
|
+
if (response.status === 409 || /already|exists/i.test(message))
|
|
96
|
+
return;
|
|
97
|
+
throw new AiApiError(`OAuth register failed (${response.status} ${response.statusText}): ${message}`, response.status, response.body);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export async function createAccessToken(material, opts = {}) {
|
|
101
|
+
const url = apiUrl(resolveBackendUrl(opts.backendUrl), '/v1/auth/token');
|
|
102
|
+
const response = await postJson(url, {
|
|
103
|
+
user_id: material.userId,
|
|
104
|
+
timestamp: material.timestamp,
|
|
105
|
+
domain: material.domain,
|
|
106
|
+
public_key: material.publicKey,
|
|
107
|
+
signature: material.signature,
|
|
108
|
+
scopes: ['read'],
|
|
109
|
+
});
|
|
110
|
+
const token = response.body?.access_token;
|
|
111
|
+
if (!response.ok || typeof token !== 'string' || !token) {
|
|
112
|
+
throw new AiApiError(`OAuth token request failed (${response.status} ${response.statusText}): ${errorMessage(response)}`, response.status, response.body);
|
|
113
|
+
}
|
|
114
|
+
return token;
|
|
115
|
+
}
|
|
116
|
+
export async function createApiKey(accessToken, name, opts = {}) {
|
|
117
|
+
const url = apiUrl(resolveBackendUrl(opts.backendUrl), '/v1/api-keys');
|
|
118
|
+
const response = await postJson(url, { name }, accessToken);
|
|
119
|
+
const rawKey = response.body?.key;
|
|
120
|
+
if (!response.ok || typeof rawKey !== 'string' || !rawKey) {
|
|
121
|
+
throw new AiApiError(`API key creation failed (${response.status} ${response.statusText}): ${errorMessage(response)}`, response.status, response.body);
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
id: String(response.body?.id ?? ''),
|
|
125
|
+
key: rawKey,
|
|
126
|
+
keyPrefix: String(response.body?.key_prefix ?? rawKey.slice(0, 12)),
|
|
127
|
+
name,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export async function provisionApiKey(options) {
|
|
131
|
+
const { mnemonic, walletHash, backendUrl, name = 'paytaca-cli', timestamp } = options;
|
|
132
|
+
const material = createAuthMaterial(mnemonic, walletHash, timestamp);
|
|
133
|
+
await registerOAuthUser(material, { backendUrl });
|
|
134
|
+
const accessToken = await createAccessToken(material, { backendUrl });
|
|
135
|
+
return createApiKey(accessToken, name, { backendUrl });
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/ai/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type PaymentMethod = 'bch' | 'lift';
|
|
2
|
+
export interface BuyPlanOptions {
|
|
3
|
+
model: string;
|
|
4
|
+
minutes: number;
|
|
5
|
+
paymentMethod?: PaymentMethod;
|
|
6
|
+
isChipnet?: boolean;
|
|
7
|
+
confirmed?: boolean;
|
|
8
|
+
backendUrl?: string;
|
|
9
|
+
skipProbe?: boolean;
|
|
10
|
+
skipActiveCreditGuard?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface BuyPlanResult {
|
|
13
|
+
success: boolean;
|
|
14
|
+
paid: boolean;
|
|
15
|
+
model?: string;
|
|
16
|
+
displayName?: string;
|
|
17
|
+
minutes?: number;
|
|
18
|
+
priceSats?: number;
|
|
19
|
+
paymentMethod?: PaymentMethod;
|
|
20
|
+
txid?: string;
|
|
21
|
+
recipientAddress?: string;
|
|
22
|
+
status?: number;
|
|
23
|
+
sessionActivated?: boolean;
|
|
24
|
+
timeRemainingSeconds?: number;
|
|
25
|
+
data?: unknown;
|
|
26
|
+
error?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function probePlanStability(baseUrl: string, modelId: string, minutes: number): Promise<void>;
|
|
29
|
+
export declare function buyPlan(opts: BuyPlanOptions): Promise<BuyPlanResult>;
|
|
30
|
+
//# sourceMappingURL=purchase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchase.d.ts","sourceRoot":"","sources":["../../src/ai/purchase.ts"],"names":[],"mappings":"AAuCA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAA;AAE1C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAUD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAwCf;AAgND,wBAAsB,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkS1E"}
|