@waiaas/core 2.0.0-rc.1
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/enums/audit.d.ts +5 -0
- package/dist/enums/audit.d.ts.map +1 -0
- package/dist/enums/audit.js +31 -0
- package/dist/enums/audit.js.map +1 -0
- package/dist/enums/chain.d.ts +50 -0
- package/dist/enums/chain.d.ts.map +1 -0
- package/dist/enums/chain.js +123 -0
- package/dist/enums/chain.js.map +1 -0
- package/dist/enums/index.d.ts +10 -0
- package/dist/enums/index.d.ts.map +1 -0
- package/dist/enums/index.js +10 -0
- package/dist/enums/index.js.map +1 -0
- package/dist/enums/notification.d.ts +8 -0
- package/dist/enums/notification.d.ts.map +1 -0
- package/dist/enums/notification.js +34 -0
- package/dist/enums/notification.js.map +1 -0
- package/dist/enums/owner.d.ts +5 -0
- package/dist/enums/owner.d.ts.map +1 -0
- package/dist/enums/owner.js +5 -0
- package/dist/enums/owner.js.map +1 -0
- package/dist/enums/policy.d.ts +8 -0
- package/dist/enums/policy.d.ts.map +1 -0
- package/dist/enums/policy.js +19 -0
- package/dist/enums/policy.js.map +1 -0
- package/dist/enums/session.d.ts +5 -0
- package/dist/enums/session.d.ts.map +1 -0
- package/dist/enums/session.js +5 -0
- package/dist/enums/session.js.map +1 -0
- package/dist/enums/system.d.ts +5 -0
- package/dist/enums/system.d.ts.map +1 -0
- package/dist/enums/system.js +4 -0
- package/dist/enums/system.js.map +1 -0
- package/dist/enums/transaction.d.ts +8 -0
- package/dist/enums/transaction.d.ts.map +1 -0
- package/dist/enums/transaction.js +25 -0
- package/dist/enums/transaction.js.map +1 -0
- package/dist/enums/wallet.d.ts +5 -0
- package/dist/enums/wallet.d.ts.map +1 -0
- package/dist/enums/wallet.js +10 -0
- package/dist/enums/wallet.js.map +1 -0
- package/dist/errors/base-error.d.ts +25 -0
- package/dist/errors/base-error.d.ts.map +1 -0
- package/dist/errors/base-error.js +33 -0
- package/dist/errors/base-error.js.map +1 -0
- package/dist/errors/chain-error.d.ts +48 -0
- package/dist/errors/chain-error.d.ts.map +1 -0
- package/dist/errors/chain-error.js +83 -0
- package/dist/errors/chain-error.js.map +1 -0
- package/dist/errors/error-codes.d.ts +667 -0
- package/dist/errors/error-codes.d.ts.map +1 -0
- package/dist/errors/error-codes.js +671 -0
- package/dist/errors/error-codes.js.map +1 -0
- package/dist/errors/index.d.ts +4 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +4 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/events/event-bus.d.ts +36 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +74 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/events/event-types.d.ts +59 -0
- package/dist/events/event-types.d.ts.map +1 -0
- package/dist/events/event-types.js +16 -0
- package/dist/events/event-types.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +3 -0
- package/dist/events/index.js.map +1 -0
- package/dist/i18n/en.d.ts +57 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +194 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +5 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +7 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/ko.d.ts +3 -0
- package/dist/i18n/ko.d.ts.map +1 -0
- package/dist/i18n/ko.js +194 -0
- package/dist/i18n/ko.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/IChainAdapter.d.ts +61 -0
- package/dist/interfaces/IChainAdapter.d.ts.map +1 -0
- package/dist/interfaces/IChainAdapter.js +2 -0
- package/dist/interfaces/IChainAdapter.js.map +1 -0
- package/dist/interfaces/ILocalKeyStore.d.ts +24 -0
- package/dist/interfaces/ILocalKeyStore.d.ts.map +1 -0
- package/dist/interfaces/ILocalKeyStore.js +2 -0
- package/dist/interfaces/ILocalKeyStore.js.map +1 -0
- package/dist/interfaces/INotificationChannel.d.ts +32 -0
- package/dist/interfaces/INotificationChannel.d.ts.map +1 -0
- package/dist/interfaces/INotificationChannel.js +2 -0
- package/dist/interfaces/INotificationChannel.js.map +1 -0
- package/dist/interfaces/IPolicyEngine.d.ts +44 -0
- package/dist/interfaces/IPolicyEngine.d.ts.map +1 -0
- package/dist/interfaces/IPolicyEngine.js +2 -0
- package/dist/interfaces/IPolicyEngine.js.map +1 -0
- package/dist/interfaces/action-provider.types.d.ts +123 -0
- package/dist/interfaces/action-provider.types.d.ts.map +1 -0
- package/dist/interfaces/action-provider.types.js +65 -0
- package/dist/interfaces/action-provider.types.js.map +1 -0
- package/dist/interfaces/chain-adapter.types.d.ts +216 -0
- package/dist/interfaces/chain-adapter.types.d.ts.map +1 -0
- package/dist/interfaces/chain-adapter.types.js +2 -0
- package/dist/interfaces/chain-adapter.types.js.map +1 -0
- package/dist/interfaces/forex-rate.types.d.ts +63 -0
- package/dist/interfaces/forex-rate.types.d.ts.map +1 -0
- package/dist/interfaces/forex-rate.types.js +41 -0
- package/dist/interfaces/forex-rate.types.js.map +1 -0
- package/dist/interfaces/index.d.ts +15 -0
- package/dist/interfaces/index.d.ts.map +1 -0
- package/dist/interfaces/index.js +5 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/price-oracle.types.d.ts +99 -0
- package/dist/interfaces/price-oracle.types.d.ts.map +1 -0
- package/dist/interfaces/price-oracle.types.js +48 -0
- package/dist/interfaces/price-oracle.types.js.map +1 -0
- package/dist/interfaces/x402.types.d.ts +112 -0
- package/dist/interfaces/x402.types.d.ts.map +1 -0
- package/dist/interfaces/x402.types.js +69 -0
- package/dist/interfaces/x402.types.js.map +1 -0
- package/dist/schemas/asset.schema.d.ts +32 -0
- package/dist/schemas/asset.schema.d.ts.map +1 -0
- package/dist/schemas/asset.schema.js +15 -0
- package/dist/schemas/asset.schema.js.map +1 -0
- package/dist/schemas/config.schema.d.ts +58 -0
- package/dist/schemas/config.schema.d.ts.map +1 -0
- package/dist/schemas/config.schema.js +23 -0
- package/dist/schemas/config.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +7 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +9 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/policy.schema.d.ts +192 -0
- package/dist/schemas/policy.schema.d.ts.map +1 -0
- package/dist/schemas/policy.schema.js +157 -0
- package/dist/schemas/policy.schema.js.map +1 -0
- package/dist/schemas/session.schema.d.ts +51 -0
- package/dist/schemas/session.schema.d.ts.map +1 -0
- package/dist/schemas/session.schema.js +19 -0
- package/dist/schemas/session.schema.js.map +1 -0
- package/dist/schemas/transaction.schema.d.ts +834 -0
- package/dist/schemas/transaction.schema.d.ts.map +1 -0
- package/dist/schemas/transaction.schema.js +112 -0
- package/dist/schemas/transaction.schema.js.map +1 -0
- package/dist/schemas/wallet.schema.d.ts +54 -0
- package/dist/schemas/wallet.schema.d.ts.map +1 -0
- package/dist/schemas/wallet.schema.js +21 -0
- package/dist/schemas/wallet.schema.js.map +1 -0
- package/dist/testing/chain-adapter-contract.d.ts +42 -0
- package/dist/testing/chain-adapter-contract.d.ts.map +1 -0
- package/dist/testing/chain-adapter-contract.js +370 -0
- package/dist/testing/chain-adapter-contract.js.map +1 -0
- package/dist/testing/index.d.ts +8 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +7 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/utils/format-amount.d.ts +41 -0
- package/dist/utils/format-amount.d.ts.map +1 -0
- package/dist/utils/format-amount.js +60 -0
- package/dist/utils/format-amount.js.map +1 -0
- package/dist/utils/format-currency.d.ts +42 -0
- package/dist/utils/format-currency.d.ts.map +1 -0
- package/dist/utils/format-currency.js +92 -0
- package/dist/utils/format-currency.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ChainType, NetworkType } from '../enums/chain.js';
|
|
3
|
+
import { PaymentRequiredV2Schema, PaymentPayloadV2Schema, PaymentRequirementsV2Schema } from '@x402/core/schemas';
|
|
4
|
+
import type { PaymentRequired, PaymentPayload, PaymentRequirements } from '@x402/core/types';
|
|
5
|
+
export declare const CAIP2_TO_NETWORK: Record<string, {
|
|
6
|
+
chain: ChainType;
|
|
7
|
+
network: NetworkType;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const NETWORK_TO_CAIP2: Record<NetworkType, string>;
|
|
10
|
+
/**
|
|
11
|
+
* Parse a CAIP-2 identifier into namespace and reference.
|
|
12
|
+
* @example parseCaip2('eip155:1') => { namespace: 'eip155', reference: '1' }
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseCaip2(caip2Network: string): {
|
|
15
|
+
namespace: string;
|
|
16
|
+
reference: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Resolve a CAIP-2 network identifier to WAIaaS chain+network.
|
|
20
|
+
* Throws if the CAIP-2 identifier is not supported.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveX402Network(caip2: string): {
|
|
23
|
+
chain: ChainType;
|
|
24
|
+
network: NetworkType;
|
|
25
|
+
};
|
|
26
|
+
export declare const X402FetchRequestSchema: z.ZodObject<{
|
|
27
|
+
url: z.ZodString;
|
|
28
|
+
method: z.ZodDefault<z.ZodEnum<["GET", "POST", "PUT", "DELETE", "PATCH"]>>;
|
|
29
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
30
|
+
body: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, "strip", z.ZodTypeAny, {
|
|
32
|
+
url: string;
|
|
33
|
+
method: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
|
|
34
|
+
headers?: Record<string, string> | undefined;
|
|
35
|
+
body?: string | undefined;
|
|
36
|
+
}, {
|
|
37
|
+
url: string;
|
|
38
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | undefined;
|
|
39
|
+
headers?: Record<string, string> | undefined;
|
|
40
|
+
body?: string | undefined;
|
|
41
|
+
}>;
|
|
42
|
+
export type X402FetchRequest = z.infer<typeof X402FetchRequestSchema>;
|
|
43
|
+
export declare const X402PaymentInfoSchema: z.ZodObject<{
|
|
44
|
+
amount: z.ZodString;
|
|
45
|
+
asset: z.ZodString;
|
|
46
|
+
network: z.ZodString;
|
|
47
|
+
payTo: z.ZodString;
|
|
48
|
+
txId: z.ZodString;
|
|
49
|
+
}, "strip", z.ZodTypeAny, {
|
|
50
|
+
network: string;
|
|
51
|
+
amount: string;
|
|
52
|
+
asset: string;
|
|
53
|
+
payTo: string;
|
|
54
|
+
txId: string;
|
|
55
|
+
}, {
|
|
56
|
+
network: string;
|
|
57
|
+
amount: string;
|
|
58
|
+
asset: string;
|
|
59
|
+
payTo: string;
|
|
60
|
+
txId: string;
|
|
61
|
+
}>;
|
|
62
|
+
export type X402PaymentInfo = z.infer<typeof X402PaymentInfoSchema>;
|
|
63
|
+
export declare const X402FetchResponseSchema: z.ZodObject<{
|
|
64
|
+
status: z.ZodNumber;
|
|
65
|
+
headers: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
66
|
+
body: z.ZodString;
|
|
67
|
+
payment: z.ZodOptional<z.ZodObject<{
|
|
68
|
+
amount: z.ZodString;
|
|
69
|
+
asset: z.ZodString;
|
|
70
|
+
network: z.ZodString;
|
|
71
|
+
payTo: z.ZodString;
|
|
72
|
+
txId: z.ZodString;
|
|
73
|
+
}, "strip", z.ZodTypeAny, {
|
|
74
|
+
network: string;
|
|
75
|
+
amount: string;
|
|
76
|
+
asset: string;
|
|
77
|
+
payTo: string;
|
|
78
|
+
txId: string;
|
|
79
|
+
}, {
|
|
80
|
+
network: string;
|
|
81
|
+
amount: string;
|
|
82
|
+
asset: string;
|
|
83
|
+
payTo: string;
|
|
84
|
+
txId: string;
|
|
85
|
+
}>>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
status: number;
|
|
88
|
+
headers: Record<string, string>;
|
|
89
|
+
body: string;
|
|
90
|
+
payment?: {
|
|
91
|
+
network: string;
|
|
92
|
+
amount: string;
|
|
93
|
+
asset: string;
|
|
94
|
+
payTo: string;
|
|
95
|
+
txId: string;
|
|
96
|
+
} | undefined;
|
|
97
|
+
}, {
|
|
98
|
+
status: number;
|
|
99
|
+
headers: Record<string, string>;
|
|
100
|
+
body: string;
|
|
101
|
+
payment?: {
|
|
102
|
+
network: string;
|
|
103
|
+
amount: string;
|
|
104
|
+
asset: string;
|
|
105
|
+
payTo: string;
|
|
106
|
+
txId: string;
|
|
107
|
+
} | undefined;
|
|
108
|
+
}>;
|
|
109
|
+
export type X402FetchResponse = z.infer<typeof X402FetchResponseSchema>;
|
|
110
|
+
export { PaymentRequiredV2Schema, PaymentPayloadV2Schema, PaymentRequirementsV2Schema };
|
|
111
|
+
export type { PaymentRequired, PaymentPayload, PaymentRequirements };
|
|
112
|
+
//# sourceMappingURL=x402.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402.types.d.ts","sourceRoot":"","sources":["../../src/interfaces/x402.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAI1B,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAgBvF,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAExB,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEjC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAOzF;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,CAI5F;AAID,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAKjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;EAMhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,CAAC;AACxF,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// @x402/core Zod schemas (v2)
|
|
3
|
+
import { PaymentRequiredV2Schema, PaymentPayloadV2Schema, PaymentRequirementsV2Schema, } from '@x402/core/schemas';
|
|
4
|
+
// ── CAIP-2 <-> WAIaaS NetworkType Mapping ────────────────────
|
|
5
|
+
export const CAIP2_TO_NETWORK = {
|
|
6
|
+
// EVM
|
|
7
|
+
'eip155:1': { chain: 'ethereum', network: 'ethereum-mainnet' },
|
|
8
|
+
'eip155:11155111': { chain: 'ethereum', network: 'ethereum-sepolia' },
|
|
9
|
+
'eip155:137': { chain: 'ethereum', network: 'polygon-mainnet' },
|
|
10
|
+
'eip155:80002': { chain: 'ethereum', network: 'polygon-amoy' },
|
|
11
|
+
'eip155:42161': { chain: 'ethereum', network: 'arbitrum-mainnet' },
|
|
12
|
+
'eip155:421614': { chain: 'ethereum', network: 'arbitrum-sepolia' },
|
|
13
|
+
'eip155:10': { chain: 'ethereum', network: 'optimism-mainnet' },
|
|
14
|
+
'eip155:11155420': { chain: 'ethereum', network: 'optimism-sepolia' },
|
|
15
|
+
'eip155:8453': { chain: 'ethereum', network: 'base-mainnet' },
|
|
16
|
+
'eip155:84532': { chain: 'ethereum', network: 'base-sepolia' },
|
|
17
|
+
// Solana
|
|
18
|
+
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp': { chain: 'solana', network: 'mainnet' },
|
|
19
|
+
'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1': { chain: 'solana', network: 'devnet' },
|
|
20
|
+
'solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z': { chain: 'solana', network: 'testnet' },
|
|
21
|
+
};
|
|
22
|
+
// Reverse mapping (WAIaaS NetworkType -> CAIP-2)
|
|
23
|
+
export const NETWORK_TO_CAIP2 = Object.fromEntries(Object.entries(CAIP2_TO_NETWORK).map(([caip2, { network }]) => [network, caip2]));
|
|
24
|
+
/**
|
|
25
|
+
* Parse a CAIP-2 identifier into namespace and reference.
|
|
26
|
+
* @example parseCaip2('eip155:1') => { namespace: 'eip155', reference: '1' }
|
|
27
|
+
*/
|
|
28
|
+
export function parseCaip2(caip2Network) {
|
|
29
|
+
const colonIndex = caip2Network.indexOf(':');
|
|
30
|
+
if (colonIndex === -1)
|
|
31
|
+
throw new Error(`Invalid CAIP-2 identifier: ${caip2Network}`);
|
|
32
|
+
return {
|
|
33
|
+
namespace: caip2Network.slice(0, colonIndex),
|
|
34
|
+
reference: caip2Network.slice(colonIndex + 1),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resolve a CAIP-2 network identifier to WAIaaS chain+network.
|
|
39
|
+
* Throws if the CAIP-2 identifier is not supported.
|
|
40
|
+
*/
|
|
41
|
+
export function resolveX402Network(caip2) {
|
|
42
|
+
const resolved = CAIP2_TO_NETWORK[caip2];
|
|
43
|
+
if (!resolved)
|
|
44
|
+
throw new Error(`Unsupported x402 network: ${caip2}`);
|
|
45
|
+
return resolved;
|
|
46
|
+
}
|
|
47
|
+
// ── WAIaaS X402 Request/Response Schemas (Zod SSoT) ──────────
|
|
48
|
+
export const X402FetchRequestSchema = z.object({
|
|
49
|
+
url: z.string().url(),
|
|
50
|
+
method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH']).default('GET'),
|
|
51
|
+
headers: z.record(z.string()).optional(),
|
|
52
|
+
body: z.string().optional(),
|
|
53
|
+
});
|
|
54
|
+
export const X402PaymentInfoSchema = z.object({
|
|
55
|
+
amount: z.string(),
|
|
56
|
+
asset: z.string(),
|
|
57
|
+
network: z.string(),
|
|
58
|
+
payTo: z.string(),
|
|
59
|
+
txId: z.string(),
|
|
60
|
+
});
|
|
61
|
+
export const X402FetchResponseSchema = z.object({
|
|
62
|
+
status: z.number().int(),
|
|
63
|
+
headers: z.record(z.string()),
|
|
64
|
+
body: z.string(),
|
|
65
|
+
payment: X402PaymentInfoSchema.optional(),
|
|
66
|
+
});
|
|
67
|
+
// @x402/core re-exports
|
|
68
|
+
export { PaymentRequiredV2Schema, PaymentPayloadV2Schema, PaymentRequirementsV2Schema };
|
|
69
|
+
//# sourceMappingURL=x402.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402.types.js","sourceRoot":"","sources":["../../src/interfaces/x402.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* AssetInfo Zod schema for JSON serialization.
|
|
4
|
+
* Note: balance is string (bigint serialized) for JSON transport.
|
|
5
|
+
*/
|
|
6
|
+
export declare const AssetInfoSchema: z.ZodObject<{
|
|
7
|
+
mint: z.ZodString;
|
|
8
|
+
symbol: z.ZodString;
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
balance: z.ZodString;
|
|
11
|
+
decimals: z.ZodNumber;
|
|
12
|
+
isNative: z.ZodBoolean;
|
|
13
|
+
usdValue: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
symbol: string;
|
|
16
|
+
name: string;
|
|
17
|
+
decimals: number;
|
|
18
|
+
mint: string;
|
|
19
|
+
balance: string;
|
|
20
|
+
isNative: boolean;
|
|
21
|
+
usdValue?: number | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
symbol: string;
|
|
24
|
+
name: string;
|
|
25
|
+
decimals: number;
|
|
26
|
+
mint: string;
|
|
27
|
+
balance: string;
|
|
28
|
+
isNative: boolean;
|
|
29
|
+
usdValue?: number | undefined;
|
|
30
|
+
}>;
|
|
31
|
+
export type AssetInfoDto = z.infer<typeof AssetInfoSchema>;
|
|
32
|
+
//# sourceMappingURL=asset.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/asset.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* AssetInfo Zod schema for JSON serialization.
|
|
4
|
+
* Note: balance is string (bigint serialized) for JSON transport.
|
|
5
|
+
*/
|
|
6
|
+
export const AssetInfoSchema = z.object({
|
|
7
|
+
mint: z.string(),
|
|
8
|
+
symbol: z.string(),
|
|
9
|
+
name: z.string(),
|
|
10
|
+
balance: z.string(), // bigint as string for JSON
|
|
11
|
+
decimals: z.number().int(),
|
|
12
|
+
isNative: z.boolean(),
|
|
13
|
+
usdValue: z.number().optional(),
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=asset.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.schema.js","sourceRoot":"","sources":["../../src/schemas/asset.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,4BAA4B;IACjD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const ConfigSchema: z.ZodObject<{
|
|
3
|
+
server_port: z.ZodDefault<z.ZodNumber>;
|
|
4
|
+
server_host: z.ZodDefault<z.ZodString>;
|
|
5
|
+
data_dir: z.ZodDefault<z.ZodString>;
|
|
6
|
+
log_level: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
|
|
7
|
+
session_default_ttl: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
session_max_ttl: z.ZodDefault<z.ZodNumber>;
|
|
9
|
+
session_max_renewals: z.ZodDefault<z.ZodNumber>;
|
|
10
|
+
session_absolute_lifetime: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
security_master_password_max_attempts: z.ZodDefault<z.ZodNumber>;
|
|
12
|
+
security_master_password_lockout_duration: z.ZodDefault<z.ZodNumber>;
|
|
13
|
+
security_auto_stop_enabled: z.ZodDefault<z.ZodBoolean>;
|
|
14
|
+
rpc_solana_mainnet: z.ZodDefault<z.ZodString>;
|
|
15
|
+
rpc_solana_devnet: z.ZodDefault<z.ZodString>;
|
|
16
|
+
rpc_solana_testnet: z.ZodDefault<z.ZodString>;
|
|
17
|
+
policy_default_tier: z.ZodDefault<z.ZodEnum<["INSTANT", "NOTIFY", "DELAY", "APPROVAL"]>>;
|
|
18
|
+
notification_channels: z.ZodDefault<z.ZodArray<z.ZodEnum<["TELEGRAM", "DISCORD", "NTFY"]>, "many">>;
|
|
19
|
+
kill_switch_recovery_timeout: z.ZodDefault<z.ZodNumber>;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
server_port: number;
|
|
22
|
+
server_host: string;
|
|
23
|
+
data_dir: string;
|
|
24
|
+
log_level: "debug" | "info" | "warn" | "error";
|
|
25
|
+
session_default_ttl: number;
|
|
26
|
+
session_max_ttl: number;
|
|
27
|
+
session_max_renewals: number;
|
|
28
|
+
session_absolute_lifetime: number;
|
|
29
|
+
security_master_password_max_attempts: number;
|
|
30
|
+
security_master_password_lockout_duration: number;
|
|
31
|
+
security_auto_stop_enabled: boolean;
|
|
32
|
+
rpc_solana_mainnet: string;
|
|
33
|
+
rpc_solana_devnet: string;
|
|
34
|
+
rpc_solana_testnet: string;
|
|
35
|
+
policy_default_tier: "INSTANT" | "NOTIFY" | "DELAY" | "APPROVAL";
|
|
36
|
+
notification_channels: ("TELEGRAM" | "DISCORD" | "NTFY")[];
|
|
37
|
+
kill_switch_recovery_timeout: number;
|
|
38
|
+
}, {
|
|
39
|
+
server_port?: number | undefined;
|
|
40
|
+
server_host?: string | undefined;
|
|
41
|
+
data_dir?: string | undefined;
|
|
42
|
+
log_level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
43
|
+
session_default_ttl?: number | undefined;
|
|
44
|
+
session_max_ttl?: number | undefined;
|
|
45
|
+
session_max_renewals?: number | undefined;
|
|
46
|
+
session_absolute_lifetime?: number | undefined;
|
|
47
|
+
security_master_password_max_attempts?: number | undefined;
|
|
48
|
+
security_master_password_lockout_duration?: number | undefined;
|
|
49
|
+
security_auto_stop_enabled?: boolean | undefined;
|
|
50
|
+
rpc_solana_mainnet?: string | undefined;
|
|
51
|
+
rpc_solana_devnet?: string | undefined;
|
|
52
|
+
rpc_solana_testnet?: string | undefined;
|
|
53
|
+
policy_default_tier?: "INSTANT" | "NOTIFY" | "DELAY" | "APPROVAL" | undefined;
|
|
54
|
+
notification_channels?: ("TELEGRAM" | "DISCORD" | "NTFY")[] | undefined;
|
|
55
|
+
kill_switch_recovery_timeout?: number | undefined;
|
|
56
|
+
}>;
|
|
57
|
+
export type Config = z.infer<typeof ConfigSchema>;
|
|
58
|
+
//# sourceMappingURL=config.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { PolicyTierEnum } from '../enums/policy.js';
|
|
3
|
+
// 17 flattened config keys (24-monorepo-data-directory section 3)
|
|
4
|
+
export const ConfigSchema = z.object({
|
|
5
|
+
server_port: z.number().int().min(1).max(65535).default(3100),
|
|
6
|
+
server_host: z.string().default('127.0.0.1'),
|
|
7
|
+
data_dir: z.string().default('~/.waiaas'),
|
|
8
|
+
log_level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
|
|
9
|
+
session_default_ttl: z.number().int().min(60).default(3600),
|
|
10
|
+
session_max_ttl: z.number().int().min(300).default(86400),
|
|
11
|
+
session_max_renewals: z.number().int().min(0).default(24),
|
|
12
|
+
session_absolute_lifetime: z.number().int().min(3600).default(604800),
|
|
13
|
+
security_master_password_max_attempts: z.number().int().min(1).default(5),
|
|
14
|
+
security_master_password_lockout_duration: z.number().int().min(60).default(1800),
|
|
15
|
+
security_auto_stop_enabled: z.boolean().default(true),
|
|
16
|
+
rpc_solana_mainnet: z.string().url().default('https://api.mainnet-beta.solana.com'),
|
|
17
|
+
rpc_solana_devnet: z.string().url().default('https://api.devnet.solana.com'),
|
|
18
|
+
rpc_solana_testnet: z.string().url().default('https://api.testnet.solana.com'),
|
|
19
|
+
policy_default_tier: PolicyTierEnum.default('INSTANT'),
|
|
20
|
+
notification_channels: z.array(z.enum(['TELEGRAM', 'DISCORD', 'NTFY'])).default([]),
|
|
21
|
+
kill_switch_recovery_timeout: z.number().int().min(60).default(86400),
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=config.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../src/schemas/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,kEAAkE;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACrE,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3D,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzD,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzD,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACrE,qCAAqC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzE,yCAAyC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACjF,0BAA0B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACrD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC;IACnF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAC;IAC5E,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC;IAC9E,mBAAmB,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;IACtD,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnF,4BAA4B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CACtE,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { WalletSchema, type Wallet, CreateWalletRequestSchema, type CreateWalletRequest } from './wallet.schema.js';
|
|
2
|
+
export { SessionSchema, type Session, CreateSessionRequestSchema, type CreateSessionRequest } from './session.schema.js';
|
|
3
|
+
export { TransactionSchema, type Transaction, SendTransactionRequestSchema, type SendTransactionRequest, TransactionRequestSchema, type TransactionRequest, TransferRequestSchema, type TransferRequestInput, TokenTransferRequestSchema, type TokenTransferRequest, ContractCallRequestSchema, type ContractCallRequest, ApproveRequestSchema, type ApproveRequest, BatchRequestSchema, type BatchRequest, } from './transaction.schema.js';
|
|
4
|
+
export { PolicySchema, type Policy, CreatePolicyRequestSchema, type CreatePolicyRequest, UpdatePolicyRequestSchema, type UpdatePolicyRequest, SpendingLimitRulesSchema, type SpendingLimitRules, WhitelistRulesSchema, type WhitelistRules, RateLimitRulesSchema, type RateLimitRules, TimeRestrictionRulesSchema, type TimeRestrictionRules, X402AllowedDomainsRulesSchema, type X402AllowedDomainsRules, } from './policy.schema.js';
|
|
5
|
+
export { ConfigSchema, type Config } from './config.schema.js';
|
|
6
|
+
export { AssetInfoSchema, type AssetInfoDto } from './asset.schema.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,KAAK,OAAO,EAAE,0BAA0B,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzH,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,4BAA4B,EAC5B,KAAK,sBAAsB,EAE3B,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,KAAK,cAAc,EACnB,kBAAkB,EAClB,KAAK,YAAY,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,KAAK,MAAM,EACX,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,oBAAoB,EACpB,KAAK,cAAc,EACnB,oBAAoB,EACpB,KAAK,cAAc,EACnB,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,6BAA6B,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { WalletSchema, CreateWalletRequestSchema } from './wallet.schema.js';
|
|
2
|
+
export { SessionSchema, CreateSessionRequestSchema } from './session.schema.js';
|
|
3
|
+
export { TransactionSchema, SendTransactionRequestSchema,
|
|
4
|
+
// v1.4 discriminatedUnion 5-type transaction request schemas
|
|
5
|
+
TransactionRequestSchema, TransferRequestSchema, TokenTransferRequestSchema, ContractCallRequestSchema, ApproveRequestSchema, BatchRequestSchema, } from './transaction.schema.js';
|
|
6
|
+
export { PolicySchema, CreatePolicyRequestSchema, UpdatePolicyRequestSchema, SpendingLimitRulesSchema, WhitelistRulesSchema, RateLimitRulesSchema, TimeRestrictionRulesSchema, X402AllowedDomainsRulesSchema, } from './policy.schema.js';
|
|
7
|
+
export { ConfigSchema } from './config.schema.js';
|
|
8
|
+
export { AssetInfoSchema } from './asset.schema.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,yBAAyB,EAA4B,MAAM,oBAAoB,CAAC;AACpH,OAAO,EAAE,aAAa,EAAgB,0BAA0B,EAA6B,MAAM,qBAAqB,CAAC;AACzH,OAAO,EACL,iBAAiB,EAEjB,4BAA4B;AAE5B,6DAA6D;AAC7D,wBAAwB,EAExB,qBAAqB,EAErB,0BAA0B,EAE1B,yBAAyB,EAEzB,oBAAoB,EAEpB,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EAEZ,yBAAyB,EAEzB,yBAAyB,EAEzB,wBAAwB,EAExB,oBAAoB,EAEpB,oBAAoB,EAEpB,0BAA0B,EAE1B,6BAA6B,GAE9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAe,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAqB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const PolicySchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
walletId: z.ZodString;
|
|
5
|
+
type: z.ZodEnum<["SPENDING_LIMIT", "WHITELIST", "TIME_RESTRICTION", "RATE_LIMIT", "ALLOWED_TOKENS", "CONTRACT_WHITELIST", "METHOD_WHITELIST", "APPROVED_SPENDERS", "APPROVE_AMOUNT_LIMIT", "APPROVE_TIER_OVERRIDE", "ALLOWED_NETWORKS", "X402_ALLOWED_DOMAINS"]>;
|
|
6
|
+
ruleConfig: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
7
|
+
enabled: z.ZodBoolean;
|
|
8
|
+
network: z.ZodNullable<z.ZodEnum<["mainnet", "devnet", "testnet", "ethereum-mainnet", "ethereum-sepolia", "polygon-mainnet", "polygon-amoy", "arbitrum-mainnet", "arbitrum-sepolia", "optimism-mainnet", "optimism-sepolia", "base-mainnet", "base-sepolia"]>>;
|
|
9
|
+
createdAt: z.ZodNumber;
|
|
10
|
+
updatedAt: z.ZodNumber;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
id: string;
|
|
13
|
+
createdAt: number;
|
|
14
|
+
updatedAt: number;
|
|
15
|
+
type: "SPENDING_LIMIT" | "WHITELIST" | "TIME_RESTRICTION" | "RATE_LIMIT" | "ALLOWED_TOKENS" | "CONTRACT_WHITELIST" | "METHOD_WHITELIST" | "APPROVED_SPENDERS" | "APPROVE_AMOUNT_LIMIT" | "APPROVE_TIER_OVERRIDE" | "ALLOWED_NETWORKS" | "X402_ALLOWED_DOMAINS";
|
|
16
|
+
walletId: string;
|
|
17
|
+
network: "mainnet" | "devnet" | "testnet" | "ethereum-mainnet" | "ethereum-sepolia" | "polygon-mainnet" | "polygon-amoy" | "arbitrum-mainnet" | "arbitrum-sepolia" | "optimism-mainnet" | "optimism-sepolia" | "base-mainnet" | "base-sepolia" | null;
|
|
18
|
+
ruleConfig: Record<string, unknown>;
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
}, {
|
|
21
|
+
id: string;
|
|
22
|
+
createdAt: number;
|
|
23
|
+
updatedAt: number;
|
|
24
|
+
type: "SPENDING_LIMIT" | "WHITELIST" | "TIME_RESTRICTION" | "RATE_LIMIT" | "ALLOWED_TOKENS" | "CONTRACT_WHITELIST" | "METHOD_WHITELIST" | "APPROVED_SPENDERS" | "APPROVE_AMOUNT_LIMIT" | "APPROVE_TIER_OVERRIDE" | "ALLOWED_NETWORKS" | "X402_ALLOWED_DOMAINS";
|
|
25
|
+
walletId: string;
|
|
26
|
+
network: "mainnet" | "devnet" | "testnet" | "ethereum-mainnet" | "ethereum-sepolia" | "polygon-mainnet" | "polygon-amoy" | "arbitrum-mainnet" | "arbitrum-sepolia" | "optimism-mainnet" | "optimism-sepolia" | "base-mainnet" | "base-sepolia" | null;
|
|
27
|
+
ruleConfig: Record<string, unknown>;
|
|
28
|
+
enabled: boolean;
|
|
29
|
+
}>;
|
|
30
|
+
export type Policy = z.infer<typeof PolicySchema>;
|
|
31
|
+
/** SPENDING_LIMIT: 금액 기반 4-티어 보안 분류. */
|
|
32
|
+
export declare const SpendingLimitRulesSchema: z.ZodObject<{
|
|
33
|
+
/** INSTANT 티어 최대 금액 (lamports/wei 문자열) */
|
|
34
|
+
instant_max: z.ZodString;
|
|
35
|
+
/** NOTIFY 티어 최대 금액 */
|
|
36
|
+
notify_max: z.ZodString;
|
|
37
|
+
/** DELAY 티어 최대 금액 */
|
|
38
|
+
delay_max: z.ZodString;
|
|
39
|
+
/** INSTANT 티어 최대 USD 금액 (optional, 미설정 시 네이티브만 사용) */
|
|
40
|
+
instant_max_usd: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
/** NOTIFY 티어 최대 USD 금액 */
|
|
42
|
+
notify_max_usd: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
/** DELAY 티어 최대 USD 금액 */
|
|
44
|
+
delay_max_usd: z.ZodOptional<z.ZodNumber>;
|
|
45
|
+
/** DELAY 티어 쿨다운 시간 (초) */
|
|
46
|
+
delay_seconds: z.ZodDefault<z.ZodNumber>;
|
|
47
|
+
/** 24시간 롤링 윈도우 내 누적 USD 지출 상한 (optional, 미설정 시 누적 한도 없음) */
|
|
48
|
+
daily_limit_usd: z.ZodOptional<z.ZodNumber>;
|
|
49
|
+
/** 30일 롤링 윈도우 내 누적 USD 지출 상한 */
|
|
50
|
+
monthly_limit_usd: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
instant_max: string;
|
|
53
|
+
notify_max: string;
|
|
54
|
+
delay_max: string;
|
|
55
|
+
delay_seconds: number;
|
|
56
|
+
instant_max_usd?: number | undefined;
|
|
57
|
+
notify_max_usd?: number | undefined;
|
|
58
|
+
delay_max_usd?: number | undefined;
|
|
59
|
+
daily_limit_usd?: number | undefined;
|
|
60
|
+
monthly_limit_usd?: number | undefined;
|
|
61
|
+
}, {
|
|
62
|
+
instant_max: string;
|
|
63
|
+
notify_max: string;
|
|
64
|
+
delay_max: string;
|
|
65
|
+
instant_max_usd?: number | undefined;
|
|
66
|
+
notify_max_usd?: number | undefined;
|
|
67
|
+
delay_max_usd?: number | undefined;
|
|
68
|
+
delay_seconds?: number | undefined;
|
|
69
|
+
daily_limit_usd?: number | undefined;
|
|
70
|
+
monthly_limit_usd?: number | undefined;
|
|
71
|
+
}>;
|
|
72
|
+
export type SpendingLimitRules = z.infer<typeof SpendingLimitRulesSchema>;
|
|
73
|
+
/** WHITELIST: rules.allowed_addresses array (permitted destination addresses). */
|
|
74
|
+
export declare const WhitelistRulesSchema: z.ZodObject<{
|
|
75
|
+
allowed_addresses: z.ZodArray<z.ZodString, "many">;
|
|
76
|
+
}, "strip", z.ZodTypeAny, {
|
|
77
|
+
allowed_addresses: string[];
|
|
78
|
+
}, {
|
|
79
|
+
allowed_addresses: string[];
|
|
80
|
+
}>;
|
|
81
|
+
export type WhitelistRules = z.infer<typeof WhitelistRulesSchema>;
|
|
82
|
+
/** RATE_LIMIT: rules.max_requests + window_seconds. */
|
|
83
|
+
export declare const RateLimitRulesSchema: z.ZodObject<{
|
|
84
|
+
max_requests: z.ZodNumber;
|
|
85
|
+
window_seconds: z.ZodNumber;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
max_requests: number;
|
|
88
|
+
window_seconds: number;
|
|
89
|
+
}, {
|
|
90
|
+
max_requests: number;
|
|
91
|
+
window_seconds: number;
|
|
92
|
+
}>;
|
|
93
|
+
export type RateLimitRules = z.infer<typeof RateLimitRulesSchema>;
|
|
94
|
+
/** TIME_RESTRICTION: rules.allowed_hours + allowed_days. */
|
|
95
|
+
export declare const TimeRestrictionRulesSchema: z.ZodObject<{
|
|
96
|
+
allowed_hours: z.ZodObject<{
|
|
97
|
+
start: z.ZodNumber;
|
|
98
|
+
end: z.ZodNumber;
|
|
99
|
+
}, "strip", z.ZodTypeAny, {
|
|
100
|
+
start: number;
|
|
101
|
+
end: number;
|
|
102
|
+
}, {
|
|
103
|
+
start: number;
|
|
104
|
+
end: number;
|
|
105
|
+
}>;
|
|
106
|
+
allowed_days: z.ZodArray<z.ZodNumber, "many">;
|
|
107
|
+
}, "strip", z.ZodTypeAny, {
|
|
108
|
+
allowed_hours: {
|
|
109
|
+
start: number;
|
|
110
|
+
end: number;
|
|
111
|
+
};
|
|
112
|
+
allowed_days: number[];
|
|
113
|
+
}, {
|
|
114
|
+
allowed_hours: {
|
|
115
|
+
start: number;
|
|
116
|
+
end: number;
|
|
117
|
+
};
|
|
118
|
+
allowed_days: number[];
|
|
119
|
+
}>;
|
|
120
|
+
export type TimeRestrictionRules = z.infer<typeof TimeRestrictionRulesSchema>;
|
|
121
|
+
/** X402_ALLOWED_DOMAINS: rules.domains array (permitted x402 payment domains). */
|
|
122
|
+
export declare const X402AllowedDomainsRulesSchema: z.ZodObject<{
|
|
123
|
+
domains: z.ZodArray<z.ZodString, "many">;
|
|
124
|
+
}, "strip", z.ZodTypeAny, {
|
|
125
|
+
domains: string[];
|
|
126
|
+
}, {
|
|
127
|
+
domains: string[];
|
|
128
|
+
}>;
|
|
129
|
+
export type X402AllowedDomainsRules = z.infer<typeof X402AllowedDomainsRulesSchema>;
|
|
130
|
+
/**
|
|
131
|
+
* CreatePolicyRequestSchema - body for POST /v1/policies.
|
|
132
|
+
*
|
|
133
|
+
* walletId is optional (null = global policy).
|
|
134
|
+
* rules is validated per-type via superRefine for all 12 PolicyTypes.
|
|
135
|
+
*/
|
|
136
|
+
export declare const CreatePolicyRequestSchema: z.ZodEffects<z.ZodObject<{
|
|
137
|
+
walletId: z.ZodOptional<z.ZodString>;
|
|
138
|
+
type: z.ZodEnum<["SPENDING_LIMIT", "WHITELIST", "TIME_RESTRICTION", "RATE_LIMIT", "ALLOWED_TOKENS", "CONTRACT_WHITELIST", "METHOD_WHITELIST", "APPROVED_SPENDERS", "APPROVE_AMOUNT_LIMIT", "APPROVE_TIER_OVERRIDE", "ALLOWED_NETWORKS", "X402_ALLOWED_DOMAINS"]>;
|
|
139
|
+
rules: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
140
|
+
priority: z.ZodDefault<z.ZodNumber>;
|
|
141
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
142
|
+
network: z.ZodOptional<z.ZodEnum<["mainnet", "devnet", "testnet", "ethereum-mainnet", "ethereum-sepolia", "polygon-mainnet", "polygon-amoy", "arbitrum-mainnet", "arbitrum-sepolia", "optimism-mainnet", "optimism-sepolia", "base-mainnet", "base-sepolia"]>>;
|
|
143
|
+
}, "strip", z.ZodTypeAny, {
|
|
144
|
+
type: "SPENDING_LIMIT" | "WHITELIST" | "TIME_RESTRICTION" | "RATE_LIMIT" | "ALLOWED_TOKENS" | "CONTRACT_WHITELIST" | "METHOD_WHITELIST" | "APPROVED_SPENDERS" | "APPROVE_AMOUNT_LIMIT" | "APPROVE_TIER_OVERRIDE" | "ALLOWED_NETWORKS" | "X402_ALLOWED_DOMAINS";
|
|
145
|
+
enabled: boolean;
|
|
146
|
+
rules: Record<string, unknown>;
|
|
147
|
+
priority: number;
|
|
148
|
+
walletId?: string | undefined;
|
|
149
|
+
network?: "mainnet" | "devnet" | "testnet" | "ethereum-mainnet" | "ethereum-sepolia" | "polygon-mainnet" | "polygon-amoy" | "arbitrum-mainnet" | "arbitrum-sepolia" | "optimism-mainnet" | "optimism-sepolia" | "base-mainnet" | "base-sepolia" | undefined;
|
|
150
|
+
}, {
|
|
151
|
+
type: "SPENDING_LIMIT" | "WHITELIST" | "TIME_RESTRICTION" | "RATE_LIMIT" | "ALLOWED_TOKENS" | "CONTRACT_WHITELIST" | "METHOD_WHITELIST" | "APPROVED_SPENDERS" | "APPROVE_AMOUNT_LIMIT" | "APPROVE_TIER_OVERRIDE" | "ALLOWED_NETWORKS" | "X402_ALLOWED_DOMAINS";
|
|
152
|
+
rules: Record<string, unknown>;
|
|
153
|
+
walletId?: string | undefined;
|
|
154
|
+
network?: "mainnet" | "devnet" | "testnet" | "ethereum-mainnet" | "ethereum-sepolia" | "polygon-mainnet" | "polygon-amoy" | "arbitrum-mainnet" | "arbitrum-sepolia" | "optimism-mainnet" | "optimism-sepolia" | "base-mainnet" | "base-sepolia" | undefined;
|
|
155
|
+
enabled?: boolean | undefined;
|
|
156
|
+
priority?: number | undefined;
|
|
157
|
+
}>, {
|
|
158
|
+
type: "SPENDING_LIMIT" | "WHITELIST" | "TIME_RESTRICTION" | "RATE_LIMIT" | "ALLOWED_TOKENS" | "CONTRACT_WHITELIST" | "METHOD_WHITELIST" | "APPROVED_SPENDERS" | "APPROVE_AMOUNT_LIMIT" | "APPROVE_TIER_OVERRIDE" | "ALLOWED_NETWORKS" | "X402_ALLOWED_DOMAINS";
|
|
159
|
+
enabled: boolean;
|
|
160
|
+
rules: Record<string, unknown>;
|
|
161
|
+
priority: number;
|
|
162
|
+
walletId?: string | undefined;
|
|
163
|
+
network?: "mainnet" | "devnet" | "testnet" | "ethereum-mainnet" | "ethereum-sepolia" | "polygon-mainnet" | "polygon-amoy" | "arbitrum-mainnet" | "arbitrum-sepolia" | "optimism-mainnet" | "optimism-sepolia" | "base-mainnet" | "base-sepolia" | undefined;
|
|
164
|
+
}, {
|
|
165
|
+
type: "SPENDING_LIMIT" | "WHITELIST" | "TIME_RESTRICTION" | "RATE_LIMIT" | "ALLOWED_TOKENS" | "CONTRACT_WHITELIST" | "METHOD_WHITELIST" | "APPROVED_SPENDERS" | "APPROVE_AMOUNT_LIMIT" | "APPROVE_TIER_OVERRIDE" | "ALLOWED_NETWORKS" | "X402_ALLOWED_DOMAINS";
|
|
166
|
+
rules: Record<string, unknown>;
|
|
167
|
+
walletId?: string | undefined;
|
|
168
|
+
network?: "mainnet" | "devnet" | "testnet" | "ethereum-mainnet" | "ethereum-sepolia" | "polygon-mainnet" | "polygon-amoy" | "arbitrum-mainnet" | "arbitrum-sepolia" | "optimism-mainnet" | "optimism-sepolia" | "base-mainnet" | "base-sepolia" | undefined;
|
|
169
|
+
enabled?: boolean | undefined;
|
|
170
|
+
priority?: number | undefined;
|
|
171
|
+
}>;
|
|
172
|
+
export type CreatePolicyRequest = z.infer<typeof CreatePolicyRequestSchema>;
|
|
173
|
+
/**
|
|
174
|
+
* UpdatePolicyRequestSchema - body for PUT /v1/policies/:id.
|
|
175
|
+
*
|
|
176
|
+
* All fields optional (partial update).
|
|
177
|
+
*/
|
|
178
|
+
export declare const UpdatePolicyRequestSchema: z.ZodObject<{
|
|
179
|
+
rules: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
180
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
181
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
182
|
+
}, "strip", z.ZodTypeAny, {
|
|
183
|
+
enabled?: boolean | undefined;
|
|
184
|
+
rules?: Record<string, unknown> | undefined;
|
|
185
|
+
priority?: number | undefined;
|
|
186
|
+
}, {
|
|
187
|
+
enabled?: boolean | undefined;
|
|
188
|
+
rules?: Record<string, unknown> | undefined;
|
|
189
|
+
priority?: number | undefined;
|
|
190
|
+
}>;
|
|
191
|
+
export type UpdatePolicyRequest = z.infer<typeof UpdatePolicyRequestSchema>;
|
|
192
|
+
//# sourceMappingURL=policy.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/policy.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;EASvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAqDlD,wCAAwC;AACxC,eAAO,MAAM,wBAAwB;IACnC,0CAA0C;;IAE1C,sBAAsB;;IAEtB,qBAAqB;;IAErB,sDAAsD;;IAEtD,0BAA0B;;IAE1B,yBAAyB;;IAEzB,0BAA0B;;IAE1B,4DAA4D;;IAE5D,gCAAgC;;;;;;;;;;;;;;;;;;;;;;EAEhC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAU1E,kFAAkF;AAClF,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,uDAAuD;AACvD,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,4DAA4D;AAC5D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;EAMrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,kFAAkF;AAClF,eAAO,MAAM,6BAA6B;;;;;;EAExC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAmBpF;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAIpC,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|