mppx 0.4.11 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/dist/Expires.d.ts +7 -0
- package/dist/Expires.d.ts.map +1 -1
- package/dist/Expires.js +21 -0
- package/dist/Expires.js.map +1 -1
- package/dist/internal/env.d.ts +1 -1
- package/dist/internal/env.d.ts.map +1 -1
- package/dist/internal/env.js +2 -6
- package/dist/internal/env.js.map +1 -1
- package/dist/internal/types.d.ts +23 -0
- package/dist/internal/types.d.ts.map +1 -1
- package/dist/server/Mppx.d.ts +1 -1
- package/dist/server/Mppx.d.ts.map +1 -1
- package/dist/server/Mppx.js +55 -7
- package/dist/server/Mppx.js.map +1 -1
- package/dist/stripe/server/Charge.d.ts.map +1 -1
- package/dist/stripe/server/Charge.js +3 -3
- package/dist/stripe/server/Charge.js.map +1 -1
- package/dist/tempo/Methods.d.ts +18 -0
- package/dist/tempo/Methods.d.ts.map +1 -1
- package/dist/tempo/Methods.js +28 -3
- package/dist/tempo/Methods.js.map +1 -1
- package/dist/tempo/client/Charge.d.ts +24 -0
- package/dist/tempo/client/Charge.d.ts.map +1 -1
- package/dist/tempo/client/Charge.js +51 -9
- package/dist/tempo/client/Charge.js.map +1 -1
- package/dist/tempo/client/Methods.d.ts +18 -0
- package/dist/tempo/client/Methods.d.ts.map +1 -1
- package/dist/tempo/internal/account.d.ts +5 -11
- package/dist/tempo/internal/account.d.ts.map +1 -1
- package/dist/tempo/internal/charge.d.ts +20 -0
- package/dist/tempo/internal/charge.d.ts.map +1 -0
- package/dist/tempo/internal/charge.js +23 -0
- package/dist/tempo/internal/charge.js.map +1 -0
- package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
- package/dist/tempo/internal/fee-payer.js +15 -3
- package/dist/tempo/internal/fee-payer.js.map +1 -1
- package/dist/tempo/internal/proof.d.ts +23 -0
- package/dist/tempo/internal/proof.d.ts.map +1 -0
- package/dist/tempo/internal/proof.js +17 -0
- package/dist/tempo/internal/proof.js.map +1 -0
- package/dist/tempo/server/Charge.d.ts +20 -2
- package/dist/tempo/server/Charge.d.ts.map +1 -1
- package/dist/tempo/server/Charge.js +180 -103
- package/dist/tempo/server/Charge.js.map +1 -1
- package/dist/tempo/server/Methods.d.ts +20 -2
- package/dist/tempo/server/Methods.d.ts.map +1 -1
- package/dist/tempo/server/Methods.js +4 -1
- package/dist/tempo/server/Methods.js.map +1 -1
- package/dist/tempo/server/Session.d.ts +9 -4
- package/dist/tempo/server/Session.d.ts.map +1 -1
- package/dist/tempo/server/Session.js +18 -3
- package/dist/tempo/server/Session.js.map +1 -1
- package/dist/tempo/session/Chain.d.ts +18 -2
- package/dist/tempo/session/Chain.d.ts.map +1 -1
- package/dist/tempo/session/Chain.js +18 -14
- package/dist/tempo/session/Chain.js.map +1 -1
- package/package.json +1 -1
- package/src/Expires.ts +25 -0
- package/src/cli/cli.test.ts +230 -1
- package/src/internal/env.test.ts +12 -12
- package/src/internal/env.ts +2 -6
- package/src/internal/types.ts +25 -0
- package/src/middlewares/elysia.test.ts +127 -4
- package/src/middlewares/express.test.ts +120 -54
- package/src/middlewares/hono.test.ts +73 -34
- package/src/middlewares/nextjs.test.ts +159 -36
- package/src/server/Mppx.test.ts +373 -0
- package/src/server/Mppx.ts +64 -10
- package/src/stripe/server/Charge.ts +3 -7
- package/src/tempo/Methods.test.ts +105 -0
- package/src/tempo/Methods.ts +54 -17
- package/src/tempo/client/Charge.ts +67 -11
- package/src/tempo/internal/account.ts +7 -14
- package/src/tempo/internal/charge.test.ts +66 -0
- package/src/tempo/internal/charge.ts +43 -0
- package/src/tempo/internal/fee-payer.test.ts +33 -14
- package/src/tempo/internal/fee-payer.ts +21 -6
- package/src/tempo/internal/proof.test.ts +36 -0
- package/src/tempo/internal/proof.ts +19 -0
- package/src/tempo/server/Charge.test.ts +593 -1
- package/src/tempo/server/Charge.ts +233 -126
- package/src/tempo/server/Methods.ts +4 -1
- package/src/tempo/server/Session.test.ts +1152 -54
- package/src/tempo/server/Session.ts +26 -17
- package/src/tempo/server/internal/transport.test.ts +32 -0
- package/src/tempo/session/Chain.test.ts +60 -5
- package/src/tempo/session/Chain.ts +30 -14
- package/src/tempo/session/Sse.test.ts +31 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
1
2
|
import * as Method from '../../Method.js';
|
|
2
3
|
import * as Account from '../../viem/Account.js';
|
|
3
4
|
import * as Client from '../../viem/Client.js';
|
|
@@ -27,6 +28,9 @@ export declare function charge(parameters?: charge.Parameters): Method.Client<{
|
|
|
27
28
|
}, z.core.$strip>, z.ZodMiniObject<{
|
|
28
29
|
signature: z.ZodMiniString<string>;
|
|
29
30
|
type: z.ZodMiniLiteral<"transaction">;
|
|
31
|
+
}, z.core.$strip>, z.ZodMiniObject<{
|
|
32
|
+
signature: z.ZodMiniString<string>;
|
|
33
|
+
type: z.ZodMiniLiteral<"proof">;
|
|
30
34
|
}, z.core.$strip>], "type">;
|
|
31
35
|
};
|
|
32
36
|
readonly request: z.ZodMiniPipe<z.ZodMiniObject<{
|
|
@@ -39,8 +43,18 @@ export declare function charge(parameters?: charge.Parameters): Method.Client<{
|
|
|
39
43
|
feePayer: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniCustom<import("viem").Account, import("viem").Account>]>, z.ZodMiniTransform<boolean, boolean | import("viem").Account>>>;
|
|
40
44
|
memo: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
41
45
|
recipient: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
46
|
+
splits: z.ZodMiniOptional<z.ZodMiniArray<z.ZodMiniObject<{
|
|
47
|
+
amount: z.ZodMiniString<string>;
|
|
48
|
+
memo: z.ZodMiniOptional<z.ZodMiniString<string>>;
|
|
49
|
+
recipient: z.ZodMiniPipe<z.ZodMiniString<string>, z.ZodMiniTransform<`0x${string}`, string>>;
|
|
50
|
+
}, z.core.$strip>>>;
|
|
42
51
|
}, z.core.$strip>, z.ZodMiniTransform<{
|
|
43
52
|
methodDetails?: {
|
|
53
|
+
splits?: {
|
|
54
|
+
amount: string;
|
|
55
|
+
recipient: `0x${string}`;
|
|
56
|
+
memo?: string | undefined;
|
|
57
|
+
}[] | undefined;
|
|
44
58
|
memo?: string | undefined;
|
|
45
59
|
feePayer?: boolean | undefined;
|
|
46
60
|
chainId?: number | undefined;
|
|
@@ -60,6 +74,11 @@ export declare function charge(parameters?: charge.Parameters): Method.Client<{
|
|
|
60
74
|
feePayer?: boolean | undefined;
|
|
61
75
|
memo?: string | undefined;
|
|
62
76
|
recipient?: string | undefined;
|
|
77
|
+
splits?: {
|
|
78
|
+
amount: string;
|
|
79
|
+
recipient: `0x${string}`;
|
|
80
|
+
memo?: string | undefined;
|
|
81
|
+
}[] | undefined;
|
|
63
82
|
}>>;
|
|
64
83
|
};
|
|
65
84
|
}, z.ZodMiniObject<{
|
|
@@ -82,6 +101,11 @@ export declare namespace charge {
|
|
|
82
101
|
autoSwap?: AutoSwap | undefined;
|
|
83
102
|
/** Client identifier used to derive the client fingerprint in attribution memos. */
|
|
84
103
|
clientId?: string | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* Allowlist of expected split recipient addresses. When set, the client
|
|
106
|
+
* rejects any challenge whose split recipients are not in this list.
|
|
107
|
+
*/
|
|
108
|
+
expectedRecipients?: readonly Address[] | undefined;
|
|
85
109
|
/**
|
|
86
110
|
* Controls how the charge transaction is submitted.
|
|
87
111
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/client/Charge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/client/Charge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAWnC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,OAAO,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,CAAC,MAAM,cAAc,CAAA;AAEjC,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAA;AAMpD;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,UAAU,GAAE,MAAM,CAAC,UAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAqIxD;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAA;IAEtC,KAAK,UAAU,GAAG;QAChB;;;;;WAKG;QACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;QAC/B,oFAAoF;QACpF,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC7B;;;WAGG;QACH,kBAAkB,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAA;QACnD;;;;;;;WAOG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KACnC,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,GAChC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAA;CAChC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { prepareTransactionRequest, sendCallsSync, signTransaction } from 'viem/actions';
|
|
1
|
+
import { prepareTransactionRequest, sendCallsSync, signTypedData, signTransaction, } from 'viem/actions';
|
|
2
2
|
import { tempo as tempo_chain } from 'viem/chains';
|
|
3
3
|
import { Actions } from 'viem/tempo';
|
|
4
4
|
import * as Credential from '../../Credential.js';
|
|
@@ -8,7 +8,9 @@ import * as Client from '../../viem/Client.js';
|
|
|
8
8
|
import * as z from '../../zod.js';
|
|
9
9
|
import * as Attribution from '../Attribution.js';
|
|
10
10
|
import * as AutoSwap from '../internal/auto-swap.js';
|
|
11
|
+
import * as Charge_internal from '../internal/charge.js';
|
|
11
12
|
import * as defaults from '../internal/defaults.js';
|
|
13
|
+
import * as Proof from '../internal/proof.js';
|
|
12
14
|
import * as Methods from '../Methods.js';
|
|
13
15
|
/**
|
|
14
16
|
* Creates a Tempo charge method intent for usage on the client.
|
|
@@ -41,20 +43,52 @@ export function charge(parameters = {}) {
|
|
|
41
43
|
const chainId = challenge.request.methodDetails?.chainId;
|
|
42
44
|
const client = await getClient({ chainId });
|
|
43
45
|
const account = getAccount(client, context);
|
|
44
|
-
const mode = context?.mode ?? parameters.mode ?? (account.type === 'json-rpc' ? 'push' : 'pull');
|
|
45
46
|
const { request } = challenge;
|
|
46
47
|
const { amount, methodDetails } = request;
|
|
48
|
+
// Zero-amount: sign EIP-712 typed data instead of creating a transaction.
|
|
49
|
+
if (BigInt(amount) === 0n) {
|
|
50
|
+
const signature = await signTypedData(client, {
|
|
51
|
+
account,
|
|
52
|
+
domain: Proof.domain(chainId),
|
|
53
|
+
types: Proof.types,
|
|
54
|
+
primaryType: 'Proof',
|
|
55
|
+
message: Proof.message(challenge.id),
|
|
56
|
+
});
|
|
57
|
+
return Credential.serialize({
|
|
58
|
+
challenge,
|
|
59
|
+
payload: { signature, type: 'proof' },
|
|
60
|
+
source: Proof.proofSource({ address: account.address, chainId: chainId }),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const mode = context?.mode ?? parameters.mode ?? (account.type === 'json-rpc' ? 'push' : 'pull');
|
|
47
64
|
const currency = request.currency;
|
|
48
|
-
|
|
65
|
+
if (parameters.expectedRecipients) {
|
|
66
|
+
const allowed = new Set(parameters.expectedRecipients.map((a) => a.toLowerCase()));
|
|
67
|
+
const splits = methodDetails?.splits;
|
|
68
|
+
if (splits) {
|
|
69
|
+
for (const split of splits) {
|
|
70
|
+
if (!allowed.has(split.recipient.toLowerCase()))
|
|
71
|
+
throw new Error(`Unexpected split recipient: ${split.recipient}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
49
75
|
const memo = methodDetails?.memo
|
|
50
76
|
? methodDetails.memo
|
|
51
77
|
: Attribution.encode({ serverId: challenge.realm, clientId });
|
|
52
|
-
const
|
|
53
|
-
amount
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
78
|
+
const transfers = Charge_internal.getTransfers({
|
|
79
|
+
amount,
|
|
80
|
+
methodDetails: {
|
|
81
|
+
...methodDetails,
|
|
82
|
+
memo,
|
|
83
|
+
},
|
|
84
|
+
recipient: request.recipient,
|
|
57
85
|
});
|
|
86
|
+
const transferCalls = transfers.map((transfer) => Actions.token.transfer.call({
|
|
87
|
+
amount: BigInt(transfer.amount),
|
|
88
|
+
...(transfer.memo && { memo: transfer.memo }),
|
|
89
|
+
to: transfer.recipient,
|
|
90
|
+
token: currency,
|
|
91
|
+
}));
|
|
58
92
|
const autoSwap = AutoSwap.resolve(context?.autoSwap ?? parameters.autoSwap, AutoSwap.defaultCurrencies);
|
|
59
93
|
const swapCalls = autoSwap
|
|
60
94
|
? await AutoSwap.findCalls(client, {
|
|
@@ -65,7 +99,14 @@ export function charge(parameters = {}) {
|
|
|
65
99
|
slippage: autoSwap.slippage,
|
|
66
100
|
})
|
|
67
101
|
: undefined;
|
|
68
|
-
const calls = [...(swapCalls ?? []),
|
|
102
|
+
const calls = [...(swapCalls ?? []), ...transferCalls];
|
|
103
|
+
const validBefore = (() => {
|
|
104
|
+
const defaultExpiry = Math.floor(Date.now() / 1000) + 25;
|
|
105
|
+
if (!challenge.expires)
|
|
106
|
+
return defaultExpiry;
|
|
107
|
+
const challengeExpiry = Math.floor(new Date(challenge.expires).getTime() / 1000);
|
|
108
|
+
return Math.min(defaultExpiry, challengeExpiry);
|
|
109
|
+
})();
|
|
69
110
|
if (mode === 'push') {
|
|
70
111
|
const { receipts } = await sendCallsSync(client, {
|
|
71
112
|
account,
|
|
@@ -86,6 +127,7 @@ export function charge(parameters = {}) {
|
|
|
86
127
|
calls,
|
|
87
128
|
...(methodDetails?.feePayer && { feePayer: true }),
|
|
88
129
|
nonceKey: 'expiring',
|
|
130
|
+
validBefore,
|
|
89
131
|
});
|
|
90
132
|
// FIXME: figure out gas estimation issue for fee payer tx
|
|
91
133
|
prepared.gas = prepared.gas + 5000n;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../src/tempo/client/Charge.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Charge.js","sourceRoot":"","sources":["../../../src/tempo/client/Charge.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,9 @@ export declare function tempo(parameters?: tempo.Parameters): readonly [import("
|
|
|
24
24
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
|
|
25
25
|
signature: import("zod/mini").ZodMiniString<string>;
|
|
26
26
|
type: import("zod/mini").ZodMiniLiteral<"transaction">;
|
|
27
|
+
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
|
|
28
|
+
signature: import("zod/mini").ZodMiniString<string>;
|
|
29
|
+
type: import("zod/mini").ZodMiniLiteral<"proof">;
|
|
27
30
|
}, import("zod/v4/core").$strip>], "type">;
|
|
28
31
|
};
|
|
29
32
|
readonly request: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniObject<{
|
|
@@ -36,8 +39,18 @@ export declare function tempo(parameters?: tempo.Parameters): readonly [import("
|
|
|
36
39
|
feePayer: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniBoolean<boolean>, import("zod/mini").ZodMiniCustom<import("viem").Account, import("viem").Account>]>, import("zod/mini").ZodMiniTransform<boolean, boolean | import("viem").Account>>>;
|
|
37
40
|
memo: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
38
41
|
recipient: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
42
|
+
splits: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniArray<import("zod/mini").ZodMiniObject<{
|
|
43
|
+
amount: import("zod/mini").ZodMiniString<string>;
|
|
44
|
+
memo: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
45
|
+
recipient: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<`0x${string}`, string>>;
|
|
46
|
+
}, import("zod/v4/core").$strip>>>;
|
|
39
47
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniTransform<{
|
|
40
48
|
methodDetails?: {
|
|
49
|
+
splits?: {
|
|
50
|
+
amount: string;
|
|
51
|
+
recipient: `0x${string}`;
|
|
52
|
+
memo?: string | undefined;
|
|
53
|
+
}[] | undefined;
|
|
41
54
|
memo?: string | undefined;
|
|
42
55
|
feePayer?: boolean | undefined;
|
|
43
56
|
chainId?: number | undefined;
|
|
@@ -57,6 +70,11 @@ export declare function tempo(parameters?: tempo.Parameters): readonly [import("
|
|
|
57
70
|
feePayer?: boolean | undefined;
|
|
58
71
|
memo?: string | undefined;
|
|
59
72
|
recipient?: string | undefined;
|
|
73
|
+
splits?: {
|
|
74
|
+
amount: string;
|
|
75
|
+
recipient: `0x${string}`;
|
|
76
|
+
memo?: string | undefined;
|
|
77
|
+
}[] | undefined;
|
|
60
78
|
}>>;
|
|
61
79
|
};
|
|
62
80
|
}, import("zod/mini").ZodMiniObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/tempo/client/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEhE;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,UAAU,GAAE,KAAK,CAAC,UAAe
|
|
1
|
+
{"version":3,"file":"Methods.d.ts","sourceRoot":"","sources":["../../../src/tempo/client/Methods.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEhE;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,UAAU,GAAE,KAAK,CAAC,UAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAEtD;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,CAAA;IAEvE,kFAAkF;IAC3E,MAAM,MAAM,gBAAU,CAAA;IAC7B,6EAA6E;IACtE,MAAM,OAAO,iBAAW,CAAA;CAChC"}
|
|
@@ -19,16 +19,10 @@ export declare function resolve(parameters: resolve.Parameters): {
|
|
|
19
19
|
export declare namespace resolve {
|
|
20
20
|
type Parameters = {
|
|
21
21
|
recipient?: Address | undefined;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
account
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} | {
|
|
28
|
-
/** Address that receives payment. */
|
|
29
|
-
account?: Address | undefined;
|
|
30
|
-
/** Optional fee payer account or fee payer URL for covering transaction fees. */
|
|
31
|
-
feePayer?: Account | string | undefined;
|
|
32
|
-
});
|
|
22
|
+
/** Account or address that performs payment operations / receives payment. */
|
|
23
|
+
account?: Account | Address | undefined;
|
|
24
|
+
/** When `true`, the account also sponsors fees. An `Account` object or URL string can also be provided as a dedicated fee payer. */
|
|
25
|
+
feePayer?: Account | string | true | undefined;
|
|
26
|
+
};
|
|
33
27
|
}
|
|
34
28
|
//# sourceMappingURL=account.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/tempo/internal/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE5C;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU;;;;eAkBa,OAAO,GAAG,SAAS;EACrF;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,UAAU,GAAG;
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/tempo/internal/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAE5C;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU;;;;eAkBa,OAAO,GAAG,SAAS;EACrF;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAK,UAAU,GAAG;QAChB,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC/B,8EAA8E;QAC9E,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;QACvC,oIAAoI;QACpI,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAC/C,CAAA;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
export type Split = {
|
|
3
|
+
amount: string;
|
|
4
|
+
memo?: string | undefined;
|
|
5
|
+
recipient: Address;
|
|
6
|
+
};
|
|
7
|
+
export type Transfer = {
|
|
8
|
+
amount: string;
|
|
9
|
+
memo?: string | undefined;
|
|
10
|
+
recipient: Address;
|
|
11
|
+
};
|
|
12
|
+
export declare function getTransfers(request: {
|
|
13
|
+
amount: string;
|
|
14
|
+
methodDetails?: {
|
|
15
|
+
memo?: string | undefined;
|
|
16
|
+
splits?: readonly Split[] | undefined;
|
|
17
|
+
};
|
|
18
|
+
recipient: Address;
|
|
19
|
+
}): Transfer[];
|
|
20
|
+
//# sourceMappingURL=charge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/internal/charge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IACpF,SAAS,EAAE,OAAO,CAAA;CACnB,GAAG,QAAQ,EAAE,CAwBb"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function getTransfers(request) {
|
|
2
|
+
const totalAmount = BigInt(request.amount);
|
|
3
|
+
const splits = request.methodDetails?.splits ?? [];
|
|
4
|
+
const splitTotal = splits.reduce((sum, split) => sum + BigInt(split.amount), 0n);
|
|
5
|
+
if (splitTotal >= totalAmount)
|
|
6
|
+
throw new Error('Invalid charge request: split total must be less than total amount.');
|
|
7
|
+
const primaryAmount = totalAmount - splitTotal;
|
|
8
|
+
if (primaryAmount <= 0n)
|
|
9
|
+
throw new Error('Invalid charge request: primary transfer amount must be positive.');
|
|
10
|
+
return [
|
|
11
|
+
{
|
|
12
|
+
amount: primaryAmount.toString(),
|
|
13
|
+
memo: request.methodDetails?.memo,
|
|
14
|
+
recipient: request.recipient,
|
|
15
|
+
},
|
|
16
|
+
...splits.map((split) => ({
|
|
17
|
+
amount: split.amount,
|
|
18
|
+
memo: split.memo,
|
|
19
|
+
recipient: split.recipient,
|
|
20
|
+
})),
|
|
21
|
+
];
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=charge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charge.js","sourceRoot":"","sources":["../../../src/tempo/internal/charge.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,YAAY,CAAC,OAI5B;IACC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,MAAM,IAAI,EAAE,CAAA;IAElD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;IAChF,IAAI,UAAU,IAAI,WAAW;QAC3B,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;IAExF,MAAM,aAAa,GAAG,WAAW,GAAG,UAAU,CAAA;IAC9C,IAAI,aAAa,IAAI,EAAE;QACrB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;IAEtF,OAAO;QACL;YACE,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE;YAChC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,IAAI;YACjC,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B;QACD,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;KACJ,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fee-payer.d.ts","sourceRoot":"","sources":["../../../src/tempo/internal/fee-payer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAQ5C,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAK1E;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,mBAKtB,CAAA;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS;IAAE,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,GAAG,SAAS,CAAA;CAAE,EAAE,EAC7F,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"fee-payer.d.ts","sourceRoot":"","sources":["../../../src/tempo/internal/fee-payer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAQ5C,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAK1E;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,mBAKtB,CAAA;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS;IAAE,IAAI,CAAC,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAAC;IAAC,EAAE,CAAC,EAAE,YAAY,CAAC,OAAO,GAAG,SAAS,CAAA;CAAE,EAAE,EAC7F,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAuChC;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,SAAkB,IAAI,6BAA4B;gBAEtC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAQ5D"}
|
|
@@ -20,11 +20,23 @@ export const callScopes = [
|
|
|
20
20
|
];
|
|
21
21
|
/** Validates that a set of transaction calls matches an allowed fee-payer pattern. */
|
|
22
22
|
export function validateCalls(calls, details) {
|
|
23
|
+
if (calls.length === 0)
|
|
24
|
+
throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details);
|
|
23
25
|
const callSelectors = calls.map((c) => c.data?.slice(0, 10));
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
const hasSwapPrefix = callSelectors[0] === Selectors.approve;
|
|
27
|
+
if (hasSwapPrefix) {
|
|
28
|
+
if (callSelectors[1] !== Selectors.swapExactAmountOut)
|
|
29
|
+
throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details);
|
|
30
|
+
}
|
|
31
|
+
else if (callSelectors[0] === Selectors.swapExactAmountOut) {
|
|
27
32
|
throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details);
|
|
33
|
+
}
|
|
34
|
+
const transferSelectors = callSelectors.slice(hasSwapPrefix ? 2 : 0);
|
|
35
|
+
if (transferSelectors.length === 0 ||
|
|
36
|
+
transferSelectors.length > 11 ||
|
|
37
|
+
transferSelectors.some((selector) => selector !== Selectors.transfer && selector !== Selectors.transferWithMemo)) {
|
|
38
|
+
throw new FeePayerValidationError('disallowed call pattern in fee-payer transaction', details);
|
|
39
|
+
}
|
|
28
40
|
// Validate approve spender and buy target are the DEX.
|
|
29
41
|
const approveCall = calls.find((c) => c.data?.slice(0, 10) === Selectors.approve);
|
|
30
42
|
if (approveCall) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fee-payer.js","sourceRoot":"","sources":["../../../src/tempo/internal/fee-payer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,KAAK,qBAAqB,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,UAA8B;IAC/D,OAAO,CACL,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,IAAI;QAC/D,UAAU,EAAE,UAAU,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,IAAI,CAC/D,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,CAAC,SAAS,CAAC,QAAQ,CAAC;IACpB,CAAC,SAAS,CAAC,gBAAgB,CAAC;IAC5B,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,kBAAkB,EAAE,SAAS,CAAC,QAAQ,CAAC;IACrE,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,kBAAkB,EAAE,SAAS,CAAC,gBAAgB,CAAC;CAC9E,CAAA;AAED,sFAAsF;AACtF,MAAM,UAAU,aAAa,CAC3B,KAA6F,EAC7F,OAA+B;IAE/B,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAC5D,MAAM,
|
|
1
|
+
{"version":3,"file":"fee-payer.js","sourceRoot":"","sources":["../../../src/tempo/internal/fee-payer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** EIP-712 typed data types for proof credentials. */
|
|
2
|
+
export declare const types: {
|
|
3
|
+
readonly Proof: readonly [{
|
|
4
|
+
readonly name: "challengeId";
|
|
5
|
+
readonly type: "string";
|
|
6
|
+
}];
|
|
7
|
+
};
|
|
8
|
+
/** Constructs the EIP-712 domain for a proof credential. */
|
|
9
|
+
export declare function domain(chainId: number): {
|
|
10
|
+
readonly name: "MPP";
|
|
11
|
+
readonly version: "1";
|
|
12
|
+
readonly chainId: number;
|
|
13
|
+
};
|
|
14
|
+
/** Constructs the EIP-712 message for a proof credential. */
|
|
15
|
+
export declare function message(challengeId: string): {
|
|
16
|
+
readonly challengeId: string;
|
|
17
|
+
};
|
|
18
|
+
/** Constructs the expected `did:pkh` source DID for a proof credential. */
|
|
19
|
+
export declare function proofSource(parameters: {
|
|
20
|
+
address: string;
|
|
21
|
+
chainId: number;
|
|
22
|
+
}): string;
|
|
23
|
+
//# sourceMappingURL=proof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof.d.ts","sourceRoot":"","sources":["../../../src/tempo/internal/proof.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,eAAO,MAAM,KAAK;;;;;CAER,CAAA;AAEV,4DAA4D;AAC5D,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM;;;;EAErC;AAED,6DAA6D;AAC7D,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM;;EAE1C;AAED,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEpF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** EIP-712 typed data types for proof credentials. */
|
|
2
|
+
export const types = {
|
|
3
|
+
Proof: [{ name: 'challengeId', type: 'string' }],
|
|
4
|
+
};
|
|
5
|
+
/** Constructs the EIP-712 domain for a proof credential. */
|
|
6
|
+
export function domain(chainId) {
|
|
7
|
+
return { name: 'MPP', version: '1', chainId };
|
|
8
|
+
}
|
|
9
|
+
/** Constructs the EIP-712 message for a proof credential. */
|
|
10
|
+
export function message(challengeId) {
|
|
11
|
+
return { challengeId };
|
|
12
|
+
}
|
|
13
|
+
/** Constructs the expected `did:pkh` source DID for a proof credential. */
|
|
14
|
+
export function proofSource(parameters) {
|
|
15
|
+
return `did:pkh:eip155:${parameters.chainId}:${parameters.address}`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=proof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof.js","sourceRoot":"","sources":["../../../src/tempo/internal/proof.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;CACxC,CAAA;AAEV,4DAA4D;AAC5D,MAAM,UAAU,MAAM,CAAC,OAAe;IACpC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,CAAA;AACxD,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,OAAO,CAAC,WAAmB;IACzC,OAAO,EAAE,WAAW,EAAW,CAAA;AACjC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,UAAgD;IAC1E,OAAO,kBAAkB,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,CAAA;AACrE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LooseOmit } from '../../internal/types.js';
|
|
1
|
+
import type { LooseOmit, NoExtraKeys } from '../../internal/types.js';
|
|
2
2
|
import * as Method from '../../Method.js';
|
|
3
3
|
import * as Store from '../../Store.js';
|
|
4
4
|
import * as Client from '../../viem/Client.js';
|
|
@@ -15,7 +15,7 @@ import * as Methods from '../Methods.js';
|
|
|
15
15
|
* const charge = tempo.charge()
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
|
-
export declare function charge<const parameters extends charge.Parameters>(parameters?: parameters): Method.Server<{
|
|
18
|
+
export declare function charge<const parameters extends charge.Parameters>(parameters?: NoExtraKeys<parameters, charge.Parameters>): Method.Server<{
|
|
19
19
|
readonly name: "tempo";
|
|
20
20
|
readonly intent: "charge";
|
|
21
21
|
readonly schema: {
|
|
@@ -26,6 +26,9 @@ export declare function charge<const parameters extends charge.Parameters>(param
|
|
|
26
26
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
|
|
27
27
|
signature: import("zod/mini").ZodMiniString<string>;
|
|
28
28
|
type: import("zod/mini").ZodMiniLiteral<"transaction">;
|
|
29
|
+
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniObject<{
|
|
30
|
+
signature: import("zod/mini").ZodMiniString<string>;
|
|
31
|
+
type: import("zod/mini").ZodMiniLiteral<"proof">;
|
|
29
32
|
}, import("zod/v4/core").$strip>], "type">;
|
|
30
33
|
};
|
|
31
34
|
readonly request: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniObject<{
|
|
@@ -38,8 +41,18 @@ export declare function charge<const parameters extends charge.Parameters>(param
|
|
|
38
41
|
feePayer: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniUnion<readonly [import("zod/mini").ZodMiniBoolean<boolean>, import("zod/mini").ZodMiniCustom<import("viem").Account, import("viem").Account>]>, import("zod/mini").ZodMiniTransform<boolean, boolean | import("viem").Account>>>;
|
|
39
42
|
memo: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
40
43
|
recipient: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
44
|
+
splits: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniArray<import("zod/mini").ZodMiniObject<{
|
|
45
|
+
amount: import("zod/mini").ZodMiniString<string>;
|
|
46
|
+
memo: import("zod/mini").ZodMiniOptional<import("zod/mini").ZodMiniString<string>>;
|
|
47
|
+
recipient: import("zod/mini").ZodMiniPipe<import("zod/mini").ZodMiniString<string>, import("zod/mini").ZodMiniTransform<`0x${string}`, string>>;
|
|
48
|
+
}, import("zod/v4/core").$strip>>>;
|
|
41
49
|
}, import("zod/v4/core").$strip>, import("zod/mini").ZodMiniTransform<{
|
|
42
50
|
methodDetails?: {
|
|
51
|
+
splits?: {
|
|
52
|
+
amount: string;
|
|
53
|
+
recipient: `0x${string}`;
|
|
54
|
+
memo?: string | undefined;
|
|
55
|
+
}[] | undefined;
|
|
43
56
|
memo?: string | undefined;
|
|
44
57
|
feePayer?: boolean | undefined;
|
|
45
58
|
chainId?: number | undefined;
|
|
@@ -59,6 +72,11 @@ export declare function charge<const parameters extends charge.Parameters>(param
|
|
|
59
72
|
feePayer?: boolean | undefined;
|
|
60
73
|
memo?: string | undefined;
|
|
61
74
|
recipient?: string | undefined;
|
|
75
|
+
splits?: {
|
|
76
|
+
amount: string;
|
|
77
|
+
recipient: `0x${string}`;
|
|
78
|
+
memo?: string | undefined;
|
|
79
|
+
}[] | undefined;
|
|
62
80
|
}>>;
|
|
63
81
|
};
|
|
64
82
|
}, charge.DeriveDefaults<parameters>, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"Charge.d.ts","sourceRoot":"","sources":["../../../src/tempo/server/Charge.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAOjD,OAAO,KAAK,KAAK,KAAK,MAAM,sBAAsB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AAExC;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,EAC/D,UAAU,GAAE,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA2OF;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAK,YAAY,GAAG;QAAE,CAAC,GAAG,EAAE,eAAe,MAAM,EAAE,GAAG,MAAM,CAAA;KAAE,CAAA;IAE9D,KAAK,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC,CAAA;IAElG,KAAK,UAAU,GAAG;QAChB,oBAAoB;QACpB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC7B;;;;;WAKG;QACH,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;QAC/B;;;;;;;;;;WAUG;QACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAC1C,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,GAC/B,OAAO,CAAC,OAAO,CAAC,UAAU,GAC1B,QAAQ,CAAA;IAEV,KAAK,cAAc,CAAC,UAAU,SAAS,UAAU,IAAI,KAAK,CAAC,cAAc,CACvE,UAAU,EACV,QAAQ,CACT,GAAG;QACF,QAAQ,EAAE,MAAM,CAAA;KACjB,CAAA;CACF"}
|