@waiaas/core 2.6.0-rc → 2.6.0-rc.2
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/caip/asset-helpers.d.ts +34 -0
- package/dist/caip/asset-helpers.d.ts.map +1 -0
- package/dist/caip/asset-helpers.js +66 -0
- package/dist/caip/asset-helpers.js.map +1 -0
- package/dist/caip/caip19.d.ts +13 -0
- package/dist/caip/caip19.d.ts.map +1 -0
- package/dist/caip/caip19.js +27 -0
- package/dist/caip/caip19.js.map +1 -0
- package/dist/caip/caip2.d.ts +10 -0
- package/dist/caip/caip2.d.ts.map +1 -0
- package/dist/caip/caip2.js +19 -0
- package/dist/caip/caip2.js.map +1 -0
- package/dist/caip/index.d.ts +5 -0
- package/dist/caip/index.d.ts.map +1 -0
- package/dist/caip/index.js +9 -0
- package/dist/caip/index.js.map +1 -0
- package/dist/caip/network-map.d.ts +27 -0
- package/dist/caip/network-map.d.ts.map +1 -0
- package/dist/caip/network-map.js +42 -0
- package/dist/caip/network-map.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/INotificationChannel.d.ts +2 -0
- package/dist/interfaces/INotificationChannel.d.ts.map +1 -1
- package/dist/interfaces/index.d.ts +1 -0
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js +2 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/price-oracle.types.d.ts +8 -0
- package/dist/interfaces/price-oracle.types.d.ts.map +1 -1
- package/dist/interfaces/price-oracle.types.js +6 -1
- package/dist/interfaces/price-oracle.types.js.map +1 -1
- package/dist/interfaces/x402.types.d.ts +2 -13
- package/dist/interfaces/x402.types.d.ts.map +1 -1
- package/dist/interfaces/x402.types.js +3 -33
- package/dist/interfaces/x402.types.js.map +1 -1
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/policy.schema.d.ts +79 -11
- package/dist/schemas/policy.schema.d.ts.map +1 -1
- package/dist/schemas/policy.schema.js +74 -6
- package/dist/schemas/policy.schema.js.map +1 -1
- package/dist/schemas/transaction.schema.d.ts +174 -46
- package/dist/schemas/transaction.schema.d.ts.map +1 -1
- package/dist/schemas/transaction.schema.js +27 -1
- package/dist/schemas/transaction.schema.js.map +1 -1
- package/dist/utils/explorer-url.d.ts +12 -0
- package/dist/utils/explorer-url.d.ts.map +1 -0
- package/dist/utils/explorer-url.js +38 -0
- package/dist/utils/explorer-url.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402.types.js","sourceRoot":"","sources":["../../src/interfaces/x402.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,8BAA8B;AAC9B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAS5B,
|
|
1
|
+
{"version":3,"file":"x402.types.js","sourceRoot":"","sources":["../../src/interfaces/x402.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,8BAA8B;AAC9B,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAS5B,4EAA4E;AAC5E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;IACrE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,gEAAgE;AAEhE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAGH,wBAAwB;AACxB,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,CAAC"}
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { WalletSchema, type Wallet, CreateWalletRequestSchema, type CreateWalletRequest } from './wallet.schema.js';
|
|
2
2
|
export { SessionSchema, type Session, CreateSessionRequestSchema, type CreateSessionRequest } from './session.schema.js';
|
|
3
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';
|
|
4
|
+
export { PolicySchema, type Policy, CreatePolicyRequestSchema, type CreatePolicyRequest, UpdatePolicyRequestSchema, type UpdatePolicyRequest, TokenLimitSchema, type TokenLimit, SpendingLimitRulesSchema, type SpendingLimitRules, WhitelistRulesSchema, type WhitelistRules, RateLimitRulesSchema, type RateLimitRules, TimeRestrictionRulesSchema, type TimeRestrictionRules, X402AllowedDomainsRulesSchema, type X402AllowedDomainsRules, } from './policy.schema.js';
|
|
5
5
|
export { ConfigSchema, type Config } from './config.schema.js';
|
|
6
6
|
export { AssetInfoSchema, type AssetInfoDto } from './asset.schema.js';
|
|
7
7
|
export { IncomingTransactionSchema, type IncomingTransaction as IncomingTransactionDto, } from './incoming-transaction.schema.js';
|
|
@@ -1 +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;AAGvE,OAAO,EACL,yBAAyB,EACzB,KAAK,mBAAmB,IAAI,sBAAsB,GACnD,MAAM,kCAAkC,CAAC"}
|
|
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,gBAAgB,EAChB,KAAK,UAAU,EACf,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;AAGvE,OAAO,EACL,yBAAyB,EACzB,KAAK,mBAAmB,IAAI,sBAAsB,GACnD,MAAM,kCAAkC,CAAC"}
|
package/dist/schemas/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { SessionSchema, CreateSessionRequestSchema } from './session.schema.js';
|
|
|
3
3
|
export { TransactionSchema, SendTransactionRequestSchema,
|
|
4
4
|
// v1.4 discriminatedUnion 5-type transaction request schemas
|
|
5
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';
|
|
6
|
+
export { PolicySchema, CreatePolicyRequestSchema, UpdatePolicyRequestSchema, TokenLimitSchema, SpendingLimitRulesSchema, WhitelistRulesSchema, RateLimitRulesSchema, TimeRestrictionRulesSchema, X402AllowedDomainsRulesSchema, } from './policy.schema.js';
|
|
7
7
|
export { ConfigSchema } from './config.schema.js';
|
|
8
8
|
export { AssetInfoSchema } from './asset.schema.js';
|
|
9
9
|
// v27.1 incoming transaction schema (Zod SSoT)
|
|
@@ -1 +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;AAEvE,+CAA+C;AAC/C,OAAO,EACL,yBAAyB,GAE1B,MAAM,kCAAkC,CAAC"}
|
|
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,gBAAgB,EAEhB,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;AAEvE,+CAA+C;AAC/C,OAAO,EACL,yBAAyB,GAE1B,MAAM,kCAAkC,CAAC"}
|
|
@@ -28,14 +28,28 @@ export declare const PolicySchema: z.ZodObject<{
|
|
|
28
28
|
enabled: boolean;
|
|
29
29
|
}>;
|
|
30
30
|
export type Policy = z.infer<typeof PolicySchema>;
|
|
31
|
-
/**
|
|
32
|
-
export declare const
|
|
33
|
-
/** INSTANT 티어 최대 금액 (lamports/wei 문자열) */
|
|
31
|
+
/** Per-token spending limit in human-readable units (e.g., "1.5" SOL, "1000" USDC). */
|
|
32
|
+
export declare const TokenLimitSchema: z.ZodObject<{
|
|
34
33
|
instant_max: z.ZodString;
|
|
35
|
-
/** NOTIFY 티어 최대 금액 */
|
|
36
34
|
notify_max: z.ZodString;
|
|
37
|
-
/** DELAY 티어 최대 금액 */
|
|
38
35
|
delay_max: z.ZodString;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
instant_max: string;
|
|
38
|
+
notify_max: string;
|
|
39
|
+
delay_max: string;
|
|
40
|
+
}, {
|
|
41
|
+
instant_max: string;
|
|
42
|
+
notify_max: string;
|
|
43
|
+
delay_max: string;
|
|
44
|
+
}>;
|
|
45
|
+
export type TokenLimit = z.infer<typeof TokenLimitSchema>;
|
|
46
|
+
export declare const SpendingLimitRulesSchema: z.ZodEffects<z.ZodObject<{
|
|
47
|
+
/** INSTANT 티어 최대 금액 (lamports/wei 문자열, deprecated -- optional since Phase 235) */
|
|
48
|
+
instant_max: z.ZodOptional<z.ZodString>;
|
|
49
|
+
/** NOTIFY 티어 최대 금액 */
|
|
50
|
+
notify_max: z.ZodOptional<z.ZodString>;
|
|
51
|
+
/** DELAY 티어 최대 금액 */
|
|
52
|
+
delay_max: z.ZodOptional<z.ZodString>;
|
|
39
53
|
/** INSTANT 티어 최대 USD 금액 (optional, 미설정 시 네이티브만 사용) */
|
|
40
54
|
instant_max_usd: z.ZodOptional<z.ZodNumber>;
|
|
41
55
|
/** NOTIFY 티어 최대 USD 금액 */
|
|
@@ -48,26 +62,80 @@ export declare const SpendingLimitRulesSchema: z.ZodObject<{
|
|
|
48
62
|
daily_limit_usd: z.ZodOptional<z.ZodNumber>;
|
|
49
63
|
/** 30일 롤링 윈도우 내 누적 USD 지출 상한 */
|
|
50
64
|
monthly_limit_usd: z.ZodOptional<z.ZodNumber>;
|
|
65
|
+
/** 토큰별 한도 (Phase 235): CAIP-19/native 키 → human-readable 한도 */
|
|
66
|
+
token_limits: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
67
|
+
instant_max: z.ZodString;
|
|
68
|
+
notify_max: z.ZodString;
|
|
69
|
+
delay_max: z.ZodString;
|
|
70
|
+
}, "strip", z.ZodTypeAny, {
|
|
71
|
+
instant_max: string;
|
|
72
|
+
notify_max: string;
|
|
73
|
+
delay_max: string;
|
|
74
|
+
}, {
|
|
75
|
+
instant_max: string;
|
|
76
|
+
notify_max: string;
|
|
77
|
+
delay_max: string;
|
|
78
|
+
}>>>;
|
|
51
79
|
}, "strip", z.ZodTypeAny, {
|
|
52
|
-
instant_max: string;
|
|
53
|
-
notify_max: string;
|
|
54
|
-
delay_max: string;
|
|
55
80
|
delay_seconds: number;
|
|
81
|
+
instant_max?: string | undefined;
|
|
82
|
+
notify_max?: string | undefined;
|
|
83
|
+
delay_max?: string | undefined;
|
|
56
84
|
instant_max_usd?: number | undefined;
|
|
57
85
|
notify_max_usd?: number | undefined;
|
|
58
86
|
delay_max_usd?: number | undefined;
|
|
59
87
|
daily_limit_usd?: number | undefined;
|
|
60
88
|
monthly_limit_usd?: number | undefined;
|
|
89
|
+
token_limits?: Record<string, {
|
|
90
|
+
instant_max: string;
|
|
91
|
+
notify_max: string;
|
|
92
|
+
delay_max: string;
|
|
93
|
+
}> | undefined;
|
|
61
94
|
}, {
|
|
62
|
-
instant_max
|
|
63
|
-
notify_max
|
|
64
|
-
delay_max
|
|
95
|
+
instant_max?: string | undefined;
|
|
96
|
+
notify_max?: string | undefined;
|
|
97
|
+
delay_max?: string | undefined;
|
|
98
|
+
instant_max_usd?: number | undefined;
|
|
99
|
+
notify_max_usd?: number | undefined;
|
|
100
|
+
delay_max_usd?: number | undefined;
|
|
101
|
+
delay_seconds?: number | undefined;
|
|
102
|
+
daily_limit_usd?: number | undefined;
|
|
103
|
+
monthly_limit_usd?: number | undefined;
|
|
104
|
+
token_limits?: Record<string, {
|
|
105
|
+
instant_max: string;
|
|
106
|
+
notify_max: string;
|
|
107
|
+
delay_max: string;
|
|
108
|
+
}> | undefined;
|
|
109
|
+
}>, {
|
|
110
|
+
delay_seconds: number;
|
|
111
|
+
instant_max?: string | undefined;
|
|
112
|
+
notify_max?: string | undefined;
|
|
113
|
+
delay_max?: string | undefined;
|
|
114
|
+
instant_max_usd?: number | undefined;
|
|
115
|
+
notify_max_usd?: number | undefined;
|
|
116
|
+
delay_max_usd?: number | undefined;
|
|
117
|
+
daily_limit_usd?: number | undefined;
|
|
118
|
+
monthly_limit_usd?: number | undefined;
|
|
119
|
+
token_limits?: Record<string, {
|
|
120
|
+
instant_max: string;
|
|
121
|
+
notify_max: string;
|
|
122
|
+
delay_max: string;
|
|
123
|
+
}> | undefined;
|
|
124
|
+
}, {
|
|
125
|
+
instant_max?: string | undefined;
|
|
126
|
+
notify_max?: string | undefined;
|
|
127
|
+
delay_max?: string | undefined;
|
|
65
128
|
instant_max_usd?: number | undefined;
|
|
66
129
|
notify_max_usd?: number | undefined;
|
|
67
130
|
delay_max_usd?: number | undefined;
|
|
68
131
|
delay_seconds?: number | undefined;
|
|
69
132
|
daily_limit_usd?: number | undefined;
|
|
70
133
|
monthly_limit_usd?: number | undefined;
|
|
134
|
+
token_limits?: Record<string, {
|
|
135
|
+
instant_max: string;
|
|
136
|
+
notify_max: string;
|
|
137
|
+
delay_max: string;
|
|
138
|
+
}> | undefined;
|
|
71
139
|
}>;
|
|
72
140
|
export type SpendingLimitRules = z.infer<typeof SpendingLimitRulesSchema>;
|
|
73
141
|
/** WHITELIST: rules.allowed_addresses array (permitted destination addresses). */
|
|
@@ -1 +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;
|
|
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;AAKxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;EASvB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAsDlD,uFAAuF;AACvF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAI3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AA0C1D,eAAO,MAAM,wBAAwB;IAtBnC,kFAAkF;;IAElF,sBAAsB;;IAEtB,qBAAqB;;IAErB,sDAAsD;;IAEtD,0BAA0B;;IAE1B,yBAAyB;;IAEzB,0BAA0B;;IAE1B,4DAA4D;;IAE5D,gCAAgC;;IAEhC,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmD/D,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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { PolicyTypeEnum, PolicyTierEnum } from '../enums/policy.js';
|
|
3
3
|
import { ChainTypeEnum, NetworkTypeEnum } from '../enums/chain.js';
|
|
4
|
+
import { Caip19Schema } from '../caip/index.js';
|
|
4
5
|
export const PolicySchema = z.object({
|
|
5
6
|
id: z.string().uuid(),
|
|
6
7
|
walletId: z.string().uuid(),
|
|
@@ -15,12 +16,13 @@ export const PolicySchema = z.object({
|
|
|
15
16
|
// v1.4 Policy type-specific rules schemas (internal, not exported).
|
|
16
17
|
// Used by superRefine to validate rules per PolicyType.
|
|
17
18
|
// ---------------------------------------------------------------------------
|
|
18
|
-
/** ALLOWED_TOKENS: rules.tokens array (mint/contract addresses). */
|
|
19
|
+
/** ALLOWED_TOKENS: rules.tokens array (mint/contract addresses + optional CAIP-19). */
|
|
19
20
|
const AllowedTokensRulesSchema = z.object({
|
|
20
21
|
tokens: z.array(z.object({
|
|
21
22
|
address: z.string().min(1),
|
|
22
23
|
symbol: z.string().min(1).max(10).optional(),
|
|
23
24
|
chain: ChainTypeEnum.optional(),
|
|
25
|
+
assetId: Caip19Schema.optional(),
|
|
24
26
|
})).min(1, 'At least one token required'),
|
|
25
27
|
});
|
|
26
28
|
/** CONTRACT_WHITELIST: rules.contracts array. */
|
|
@@ -55,14 +57,34 @@ const ApproveAmountLimitRulesSchema = z.object({
|
|
|
55
57
|
const ApproveTierOverrideRulesSchema = z.object({
|
|
56
58
|
tier: PolicyTierEnum,
|
|
57
59
|
});
|
|
60
|
+
/** Per-token spending limit in human-readable units (e.g., "1.5" SOL, "1000" USDC). */
|
|
61
|
+
export const TokenLimitSchema = z.object({
|
|
62
|
+
instant_max: z.string().regex(/^\d+(\.\d+)?$/, 'Must be a non-negative decimal string'),
|
|
63
|
+
notify_max: z.string().regex(/^\d+(\.\d+)?$/, 'Must be a non-negative decimal string'),
|
|
64
|
+
delay_max: z.string().regex(/^\d+(\.\d+)?$/, 'Must be a non-negative decimal string'),
|
|
65
|
+
});
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// token_limits key validation (Phase 235)
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
const VALID_CHAIN_TYPES = new Set(['solana', 'ethereum']);
|
|
70
|
+
// Duplicated from caip19.ts to avoid circular dependency risk
|
|
71
|
+
const CAIP19_REGEX = /^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}\/[-a-z0-9]{3,8}:[-.%a-zA-Z0-9]{1,128}$/;
|
|
72
|
+
function isValidTokenLimitKey(key) {
|
|
73
|
+
if (key === 'native')
|
|
74
|
+
return true;
|
|
75
|
+
if (key.startsWith('native:')) {
|
|
76
|
+
return VALID_CHAIN_TYPES.has(key.slice(7));
|
|
77
|
+
}
|
|
78
|
+
return CAIP19_REGEX.test(key);
|
|
79
|
+
}
|
|
58
80
|
/** SPENDING_LIMIT: 금액 기반 4-티어 보안 분류. */
|
|
59
|
-
|
|
60
|
-
/** INSTANT 티어 최대 금액 (lamports/wei
|
|
61
|
-
instant_max: z.string().regex(/^\d+$/, '양의 정수 문자열이어야 합니다'),
|
|
81
|
+
const SpendingLimitRulesBaseSchema = z.object({
|
|
82
|
+
/** INSTANT 티어 최대 금액 (lamports/wei 문자열, deprecated -- optional since Phase 235) */
|
|
83
|
+
instant_max: z.string().regex(/^\d+$/, '양의 정수 문자열이어야 합니다').optional(),
|
|
62
84
|
/** NOTIFY 티어 최대 금액 */
|
|
63
|
-
notify_max: z.string().regex(/^\d+$/, '양의 정수 문자열이어야 합니다'),
|
|
85
|
+
notify_max: z.string().regex(/^\d+$/, '양의 정수 문자열이어야 합니다').optional(),
|
|
64
86
|
/** DELAY 티어 최대 금액 */
|
|
65
|
-
delay_max: z.string().regex(/^\d+$/, '양의 정수 문자열이어야 합니다'),
|
|
87
|
+
delay_max: z.string().regex(/^\d+$/, '양의 정수 문자열이어야 합니다').optional(),
|
|
66
88
|
/** INSTANT 티어 최대 USD 금액 (optional, 미설정 시 네이티브만 사용) */
|
|
67
89
|
instant_max_usd: z.number().nonnegative().optional(),
|
|
68
90
|
/** NOTIFY 티어 최대 USD 금액 */
|
|
@@ -75,6 +97,52 @@ export const SpendingLimitRulesSchema = z.object({
|
|
|
75
97
|
daily_limit_usd: z.number().positive().optional(),
|
|
76
98
|
/** 30일 롤링 윈도우 내 누적 USD 지출 상한 */
|
|
77
99
|
monthly_limit_usd: z.number().positive().optional(),
|
|
100
|
+
/** 토큰별 한도 (Phase 235): CAIP-19/native 키 → human-readable 한도 */
|
|
101
|
+
token_limits: z.record(z.string(), TokenLimitSchema).optional(),
|
|
102
|
+
});
|
|
103
|
+
export const SpendingLimitRulesSchema = SpendingLimitRulesBaseSchema.superRefine((data, ctx) => {
|
|
104
|
+
// SCHM-04: At least one limit source must be present
|
|
105
|
+
const hasRaw = data.instant_max !== undefined || data.notify_max !== undefined || data.delay_max !== undefined;
|
|
106
|
+
const hasUsd = data.instant_max_usd !== undefined || data.notify_max_usd !== undefined || data.delay_max_usd !== undefined;
|
|
107
|
+
const hasTokenLimits = data.token_limits !== undefined && Object.keys(data.token_limits).length > 0;
|
|
108
|
+
if (!hasRaw && !hasUsd && !hasTokenLimits) {
|
|
109
|
+
ctx.addIssue({
|
|
110
|
+
code: z.ZodIssueCode.custom,
|
|
111
|
+
message: 'At least one of USD limits, token_limits, or raw limits must be specified',
|
|
112
|
+
path: [],
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
// Validate token_limits if present
|
|
116
|
+
if (data.token_limits) {
|
|
117
|
+
for (const [key, limit] of Object.entries(data.token_limits)) {
|
|
118
|
+
// SCHM-06: Key format validation
|
|
119
|
+
if (!isValidTokenLimitKey(key)) {
|
|
120
|
+
ctx.addIssue({
|
|
121
|
+
code: z.ZodIssueCode.custom,
|
|
122
|
+
message: `Invalid token_limits key "${key}". Must be "native", "native:{chain}", or a valid CAIP-19 asset ID`,
|
|
123
|
+
path: ['token_limits', key],
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// SCHM-05: Ordering validation (instant_max <= notify_max <= delay_max)
|
|
127
|
+
const instantMax = parseFloat(limit.instant_max);
|
|
128
|
+
const notifyMax = parseFloat(limit.notify_max);
|
|
129
|
+
const delayMax = parseFloat(limit.delay_max);
|
|
130
|
+
if (instantMax > notifyMax) {
|
|
131
|
+
ctx.addIssue({
|
|
132
|
+
code: z.ZodIssueCode.custom,
|
|
133
|
+
message: `token_limits["${key}"]: instant_max (${limit.instant_max}) must be <= notify_max (${limit.notify_max})`,
|
|
134
|
+
path: ['token_limits', key, 'instant_max'],
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
if (notifyMax > delayMax) {
|
|
138
|
+
ctx.addIssue({
|
|
139
|
+
code: z.ZodIssueCode.custom,
|
|
140
|
+
message: `token_limits["${key}"]: notify_max (${limit.notify_max}) must be <= delay_max (${limit.delay_max})`,
|
|
141
|
+
path: ['token_limits', key, 'notify_max'],
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
78
146
|
});
|
|
79
147
|
/** ALLOWED_NETWORKS: rules.networks array (permitted networks for wallet). */
|
|
80
148
|
const AllowedNetworksRulesSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.schema.js","sourceRoot":"","sources":["../../src/schemas/policy.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"policy.schema.js","sourceRoot":"","sources":["../../src/schemas/policy.schema.ts"],"names":[],"mappings":"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"}
|