@intent-engine/core 0.1.23 → 0.1.26
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/src/admin-builders.d.ts +49 -0
- package/dist/src/admin-builders.js +52 -0
- package/dist/src/admin-builders.js.map +1 -0
- package/dist/src/bounty.d.ts +3 -1
- package/dist/src/bounty.js +6 -2
- package/dist/src/bounty.js.map +1 -1
- package/dist/src/builder-accounts.d.ts +62 -0
- package/dist/src/builder-accounts.js +64 -0
- package/dist/src/builder-accounts.js.map +1 -0
- package/dist/src/builders.d.ts +5 -213
- package/dist/src/builders.js +5 -493
- package/dist/src/builders.js.map +1 -1
- package/dist/src/describe.d.ts +5 -1
- package/dist/src/describe.js +22 -3
- package/dist/src/describe.js.map +1 -1
- package/dist/src/errors.d.ts +2 -1
- package/dist/src/errors.js +39 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/fee.d.ts +1 -0
- package/dist/src/fee.js +13 -5
- package/dist/src/fee.js.map +1 -1
- package/dist/src/fill-builders.d.ts +51 -0
- package/dist/src/fill-builders.js +167 -0
- package/dist/src/fill-builders.js.map +1 -0
- package/dist/src/intent-builders.d.ts +61 -0
- package/dist/src/intent-builders.js +152 -0
- package/dist/src/intent-builders.js.map +1 -0
- package/dist/src/mandate.js +2 -2
- package/dist/src/mandate.js.map +1 -1
- package/dist/src/math.d.ts +1 -0
- package/dist/src/math.js +9 -0
- package/dist/src/math.js.map +1 -1
- package/dist/src/memo.d.ts +2 -1
- package/dist/src/memo.js +12 -4
- package/dist/src/memo.js.map +1 -1
- package/dist/src/owner-builders.d.ts +52 -0
- package/dist/src/owner-builders.js +83 -0
- package/dist/src/owner-builders.js.map +1 -0
- package/dist/src/sig.d.ts +1 -0
- package/dist/src/sig.js +4 -0
- package/dist/src/sig.js.map +1 -1
- package/dist/src/validate.d.ts +2 -0
- package/dist/src/validate.js +15 -0
- package/dist/src/validate.js.map +1 -1
- package/package.json +17 -4
- package/dist/generated/client/types/configSettings.d.ts +0 -25
- package/dist/generated/client/types/configSettings.js +0 -30
- package/dist/generated/client/types/configSettings.js.map +0 -1
package/dist/src/errors.js
CHANGED
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
export const CORE_ERROR_CODES = [
|
|
2
|
+
"Overflow",
|
|
3
|
+
"DivideByZero",
|
|
4
|
+
"Truncated",
|
|
5
|
+
"NonCanonical",
|
|
6
|
+
"UnknownKind",
|
|
7
|
+
"UnknownStatus",
|
|
8
|
+
"InvalidParams",
|
|
9
|
+
"AmountMismatch",
|
|
10
|
+
"InsufficientOutput",
|
|
11
|
+
"InvalidTransition",
|
|
12
|
+
"IntentExpired",
|
|
13
|
+
"NotExpired",
|
|
14
|
+
"NonceUsed",
|
|
15
|
+
"NonceOutOfWindow",
|
|
16
|
+
"NonceRegression",
|
|
17
|
+
"SigProgram",
|
|
18
|
+
"SigHeader",
|
|
19
|
+
"SigPubkey",
|
|
20
|
+
"SigMessage",
|
|
21
|
+
"KindMismatch",
|
|
22
|
+
"ResultOutOfBounds",
|
|
23
|
+
"FlashEndProgram",
|
|
24
|
+
"FlashEndDiscriminator",
|
|
25
|
+
"FlashEndIntent",
|
|
26
|
+
"ExtTooLong",
|
|
27
|
+
"ExtMalformed",
|
|
28
|
+
"ExtUnknown",
|
|
29
|
+
"FlagsUnknown",
|
|
30
|
+
"PartnerFeeTooHigh",
|
|
31
|
+
"MandateInvalid",
|
|
32
|
+
"MandateExpired",
|
|
33
|
+
"MandateKind",
|
|
34
|
+
"MandateTtl",
|
|
35
|
+
"MandateCap",
|
|
36
|
+
"MandateBudget",
|
|
37
|
+
"MandateCount",
|
|
38
|
+
"MandatePrice",
|
|
39
|
+
];
|
|
1
40
|
export class IntentCoreError extends Error {
|
|
2
41
|
code;
|
|
3
42
|
constructor(code) {
|
package/dist/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU;IACV,cAAc;IACd,WAAW;IACX,cAAc;IACd,aAAa;IACb,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,eAAe;IACf,YAAY;IACZ,WAAW;IACX,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,WAAW;IACX,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,iBAAiB;IACjB,uBAAuB;IACvB,gBAAgB;IAChB,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,cAAc;IACd,cAAc;CACN,CAAC;AAIX,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAgB;IAE7B,YAAY,IAAmB;QAC7B,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF"}
|
package/dist/src/fee.d.ts
CHANGED
package/dist/src/fee.js
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
import { IntentCoreError } from "./errors.js";
|
|
2
|
-
import { mulDivCeil, mulDivFloor, U64_MAX } from "./math.js";
|
|
2
|
+
import { checkU64, mulDivCeil, mulDivFloor, U64_MAX } from "./math.js";
|
|
3
3
|
export const BPS_DENOMINATOR = 10000n;
|
|
4
|
+
export function checkBps(bps, name = "bps") {
|
|
5
|
+
if (!Number.isInteger(bps) || bps < 0 || bps > Number(BPS_DENOMINATOR)) {
|
|
6
|
+
throw new RangeError(`${name} ${String(bps)} is not between 0 and ${BPS_DENOMINATOR}`);
|
|
7
|
+
}
|
|
8
|
+
return BigInt(bps);
|
|
9
|
+
}
|
|
4
10
|
export function splitFee(amount, feeBps) {
|
|
5
|
-
|
|
11
|
+
checkU64(amount);
|
|
12
|
+
const fee = mulDivCeil(amount, checkBps(feeBps, "fee bps"), BPS_DENOMINATOR);
|
|
6
13
|
if (fee > amount) {
|
|
7
14
|
throw new IntentCoreError("InvalidParams");
|
|
8
15
|
}
|
|
9
16
|
return { fee, net: amount - fee };
|
|
10
17
|
}
|
|
11
18
|
export function splitFees(amount, feeBps, partnerBps, cutBps) {
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
const
|
|
19
|
+
checkU64(amount);
|
|
20
|
+
const fee = mulDivCeil(amount, checkBps(feeBps, "fee bps"), BPS_DENOMINATOR);
|
|
21
|
+
const gross = mulDivCeil(amount, checkBps(partnerBps, "partner bps"), BPS_DENOMINATOR);
|
|
22
|
+
const cut = mulDivFloor(gross, checkBps(cutBps, "partner cut bps"), BPS_DENOMINATOR);
|
|
15
23
|
if (cut > gross) {
|
|
16
24
|
throw new IntentCoreError("InvalidParams");
|
|
17
25
|
}
|
package/dist/src/fee.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fee.js","sourceRoot":"","sources":["../../src/fee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fee.js","sourceRoot":"","sources":["../../src/fee.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,MAAO,CAAC;AAEvC,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAI,GAAG,KAAK;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,yBAAyB,eAAe,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAID,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,MAAc;IACrD,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7E,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;QACjB,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;AACpC,CAAC;AAID,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,MAAc,EAAE,UAAkB,EAAE,MAAc;IAC1F,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;IACvF,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,eAAe,CAAC,CAAC;IACrF,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC;IAC3B,IAAI,QAAQ,GAAG,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,GAAG,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Address, Instruction, TransactionSigner } from "@solana/kit";
|
|
2
|
+
export type FillIntentSpec = {
|
|
3
|
+
solver: TransactionSigner;
|
|
4
|
+
owner: Address;
|
|
5
|
+
nonce: bigint;
|
|
6
|
+
inputMint: Address;
|
|
7
|
+
outputMint: Address;
|
|
8
|
+
inputTokenProgram: Address;
|
|
9
|
+
outputTokenProgram: Address;
|
|
10
|
+
receiver: Address;
|
|
11
|
+
solverOutput: Address;
|
|
12
|
+
solverInput: Address;
|
|
13
|
+
feeRecipient?: Address;
|
|
14
|
+
partner?: Address;
|
|
15
|
+
mandate?: Address;
|
|
16
|
+
agent?: Address;
|
|
17
|
+
amountIn: bigint;
|
|
18
|
+
amountOut: bigint;
|
|
19
|
+
maxFeeBps: number;
|
|
20
|
+
ext?: Uint8Array;
|
|
21
|
+
};
|
|
22
|
+
export declare function buildFillIntent(input: FillIntentSpec): Promise<import("../generated/client/index.js").FillIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
23
|
+
export type FillAttestedSpec = {
|
|
24
|
+
solver: TransactionSigner;
|
|
25
|
+
owner: Address;
|
|
26
|
+
nonce: bigint;
|
|
27
|
+
inputMint: Address;
|
|
28
|
+
inputTokenProgram: Address;
|
|
29
|
+
payee: Address;
|
|
30
|
+
feeRecipient?: Address;
|
|
31
|
+
partner?: Address;
|
|
32
|
+
judge?: Address;
|
|
33
|
+
amountIn: bigint;
|
|
34
|
+
result: bigint;
|
|
35
|
+
maxFeeBps: number;
|
|
36
|
+
ext?: Uint8Array;
|
|
37
|
+
};
|
|
38
|
+
export declare function buildFillAttested(input: FillAttestedSpec): Promise<import("../generated/client/index.js").FillAttestedInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, "Sysvar1nstructions1111111111111111111111111", string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
39
|
+
export type FillAttestedSplitSpec = Omit<FillAttestedSpec, "payee"> & {
|
|
40
|
+
recipients: Address[];
|
|
41
|
+
weights: number[];
|
|
42
|
+
};
|
|
43
|
+
export declare function buildFillAttestedSplit(input: FillAttestedSplitSpec): Promise<import("../generated/client/index.js").FillAttestedSplitInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "Sysvar1nstructions1111111111111111111111111", string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
44
|
+
export type FlashFillSpec = Omit<FillIntentSpec, "ext"> & {
|
|
45
|
+
beginExt?: Uint8Array;
|
|
46
|
+
endExt?: Uint8Array;
|
|
47
|
+
baseIndex?: number;
|
|
48
|
+
prefix?: Instruction[];
|
|
49
|
+
route?: Instruction[];
|
|
50
|
+
};
|
|
51
|
+
export declare function buildFlashFill(input: FlashFillSpec): Promise<Instruction[]>;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { getBeginFillInstructionAsync, getEndFillInstruction, getFillAttestedInstructionAsync, getFillAttestedSplitInstructionAsync, getFillIntentInstructionAsync, } from "../generated/client/index.js";
|
|
2
|
+
import { agentAccount, events, fillExt, INSTRUCTIONS_SYSVAR_ADDRESS, intentOf, mandateAccounts, partnerAccount, } from "./builder-accounts.js";
|
|
3
|
+
import { MAX_SPLIT_RECIPIENTS } from "./bounty.js";
|
|
4
|
+
import { findAssociatedTokenAddress } from "./pdas.js";
|
|
5
|
+
export async function buildFillIntent(input) {
|
|
6
|
+
const feeTo = input.feeRecipient === undefined
|
|
7
|
+
? undefined
|
|
8
|
+
: await findAssociatedTokenAddress({
|
|
9
|
+
owner: input.feeRecipient,
|
|
10
|
+
mint: input.inputMint,
|
|
11
|
+
tokenProgram: input.inputTokenProgram,
|
|
12
|
+
});
|
|
13
|
+
return getFillIntentInstructionAsync({
|
|
14
|
+
solver: input.solver,
|
|
15
|
+
intent: await intentOf(input.owner, input.nonce),
|
|
16
|
+
inputMint: input.inputMint,
|
|
17
|
+
outputMint: input.outputMint,
|
|
18
|
+
receiver: input.receiver,
|
|
19
|
+
solverOutput: input.solverOutput,
|
|
20
|
+
solverInput: input.solverInput,
|
|
21
|
+
...(feeTo === undefined ? {} : { feeTo }),
|
|
22
|
+
...(await partnerAccount(input)),
|
|
23
|
+
inputTokenProgram: input.inputTokenProgram,
|
|
24
|
+
outputTokenProgram: input.outputTokenProgram,
|
|
25
|
+
...(await mandateAccounts(input)),
|
|
26
|
+
...(await agentAccount(input)),
|
|
27
|
+
amountIn: input.amountIn,
|
|
28
|
+
amountOut: input.amountOut,
|
|
29
|
+
maxFeeBps: input.maxFeeBps,
|
|
30
|
+
ext: fillExt(input.ext),
|
|
31
|
+
...(await events()),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export async function buildFillAttested(input) {
|
|
35
|
+
const feeTo = input.feeRecipient === undefined
|
|
36
|
+
? undefined
|
|
37
|
+
: await findAssociatedTokenAddress({
|
|
38
|
+
owner: input.feeRecipient,
|
|
39
|
+
mint: input.inputMint,
|
|
40
|
+
tokenProgram: input.inputTokenProgram,
|
|
41
|
+
});
|
|
42
|
+
const judgeTo = input.judge === undefined
|
|
43
|
+
? undefined
|
|
44
|
+
: await findAssociatedTokenAddress({
|
|
45
|
+
owner: input.judge,
|
|
46
|
+
mint: input.inputMint,
|
|
47
|
+
tokenProgram: input.inputTokenProgram,
|
|
48
|
+
});
|
|
49
|
+
return getFillAttestedInstructionAsync({
|
|
50
|
+
solver: input.solver,
|
|
51
|
+
intent: await intentOf(input.owner, input.nonce),
|
|
52
|
+
inputMint: input.inputMint,
|
|
53
|
+
payee: input.payee,
|
|
54
|
+
...(feeTo === undefined ? {} : { feeTo }),
|
|
55
|
+
...(await partnerAccount(input)),
|
|
56
|
+
...(judgeTo === undefined ? {} : { judgeTo }),
|
|
57
|
+
inputTokenProgram: input.inputTokenProgram,
|
|
58
|
+
instructions: INSTRUCTIONS_SYSVAR_ADDRESS,
|
|
59
|
+
amountIn: input.amountIn,
|
|
60
|
+
result: input.result,
|
|
61
|
+
maxFeeBps: input.maxFeeBps,
|
|
62
|
+
ext: fillExt(input.ext),
|
|
63
|
+
...(await events()),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
export async function buildFillAttestedSplit(input) {
|
|
67
|
+
if (input.recipients.length < 1 || input.recipients.length > MAX_SPLIT_RECIPIENTS) {
|
|
68
|
+
throw new Error(`split needs 1..=${MAX_SPLIT_RECIPIENTS} recipients, got ${input.recipients.length}`);
|
|
69
|
+
}
|
|
70
|
+
if (input.weights.length !== input.recipients.length) {
|
|
71
|
+
throw new Error(`split needs one weight per recipient, got ${input.weights.length} for ${input.recipients.length}`);
|
|
72
|
+
}
|
|
73
|
+
const feeTo = input.feeRecipient === undefined
|
|
74
|
+
? undefined
|
|
75
|
+
: await findAssociatedTokenAddress({
|
|
76
|
+
owner: input.feeRecipient,
|
|
77
|
+
mint: input.inputMint,
|
|
78
|
+
tokenProgram: input.inputTokenProgram,
|
|
79
|
+
});
|
|
80
|
+
const judgeTo = input.judge === undefined
|
|
81
|
+
? undefined
|
|
82
|
+
: await findAssociatedTokenAddress({
|
|
83
|
+
owner: input.judge,
|
|
84
|
+
mint: input.inputMint,
|
|
85
|
+
tokenProgram: input.inputTokenProgram,
|
|
86
|
+
});
|
|
87
|
+
const slots = await Promise.all(input.recipients.map((owner) => findAssociatedTokenAddress({
|
|
88
|
+
owner,
|
|
89
|
+
mint: input.inputMint,
|
|
90
|
+
tokenProgram: input.inputTokenProgram,
|
|
91
|
+
})));
|
|
92
|
+
return getFillAttestedSplitInstructionAsync({
|
|
93
|
+
solver: input.solver,
|
|
94
|
+
intent: await intentOf(input.owner, input.nonce),
|
|
95
|
+
inputMint: input.inputMint,
|
|
96
|
+
...(feeTo === undefined ? {} : { feeTo }),
|
|
97
|
+
...(await partnerAccount(input)),
|
|
98
|
+
...(judgeTo === undefined ? {} : { judgeTo }),
|
|
99
|
+
...(slots[0] === undefined ? {} : { recipient0: slots[0] }),
|
|
100
|
+
...(slots[1] === undefined ? {} : { recipient1: slots[1] }),
|
|
101
|
+
...(slots[2] === undefined ? {} : { recipient2: slots[2] }),
|
|
102
|
+
...(slots[3] === undefined ? {} : { recipient3: slots[3] }),
|
|
103
|
+
...(slots[4] === undefined ? {} : { recipient4: slots[4] }),
|
|
104
|
+
...(slots[5] === undefined ? {} : { recipient5: slots[5] }),
|
|
105
|
+
...(slots[6] === undefined ? {} : { recipient6: slots[6] }),
|
|
106
|
+
...(slots[7] === undefined ? {} : { recipient7: slots[7] }),
|
|
107
|
+
inputTokenProgram: input.inputTokenProgram,
|
|
108
|
+
instructions: INSTRUCTIONS_SYSVAR_ADDRESS,
|
|
109
|
+
amountIn: input.amountIn,
|
|
110
|
+
result: input.result,
|
|
111
|
+
maxFeeBps: input.maxFeeBps,
|
|
112
|
+
recipients: input.recipients,
|
|
113
|
+
weights: input.weights,
|
|
114
|
+
ext: fillExt(input.ext),
|
|
115
|
+
...(await events()),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
export async function buildFlashFill(input) {
|
|
119
|
+
const baseIndex = input.baseIndex ?? 0;
|
|
120
|
+
if (!Number.isInteger(baseIndex) || baseIndex < 0) {
|
|
121
|
+
throw new RangeError(`baseIndex must be a non-negative integer, got ${baseIndex}`);
|
|
122
|
+
}
|
|
123
|
+
const prefix = input.prefix ?? [];
|
|
124
|
+
const route = input.route ?? [];
|
|
125
|
+
const endIndex = baseIndex + prefix.length + 1 + route.length;
|
|
126
|
+
if (endIndex > 0xffff) {
|
|
127
|
+
throw new RangeError(`a flash fill cannot end at instruction ${endIndex}`);
|
|
128
|
+
}
|
|
129
|
+
const intent = await intentOf(input.owner, input.nonce);
|
|
130
|
+
const feeTo = input.feeRecipient === undefined
|
|
131
|
+
? undefined
|
|
132
|
+
: await findAssociatedTokenAddress({
|
|
133
|
+
owner: input.feeRecipient,
|
|
134
|
+
mint: input.inputMint,
|
|
135
|
+
tokenProgram: input.inputTokenProgram,
|
|
136
|
+
});
|
|
137
|
+
const begin = await getBeginFillInstructionAsync({
|
|
138
|
+
solver: input.solver,
|
|
139
|
+
intent,
|
|
140
|
+
inputMint: input.inputMint,
|
|
141
|
+
solverInput: input.solverInput,
|
|
142
|
+
...(feeTo === undefined ? {} : { feeTo }),
|
|
143
|
+
...(await partnerAccount(input)),
|
|
144
|
+
inputTokenProgram: input.inputTokenProgram,
|
|
145
|
+
instructions: INSTRUCTIONS_SYSVAR_ADDRESS,
|
|
146
|
+
...(await mandateAccounts(input)),
|
|
147
|
+
...(await agentAccount(input)),
|
|
148
|
+
amountIn: input.amountIn,
|
|
149
|
+
endIndex,
|
|
150
|
+
maxFeeBps: input.maxFeeBps,
|
|
151
|
+
ext: fillExt(input.beginExt),
|
|
152
|
+
...(await events()),
|
|
153
|
+
});
|
|
154
|
+
const end = getEndFillInstruction({
|
|
155
|
+
intent,
|
|
156
|
+
solver: input.solver,
|
|
157
|
+
outputMint: input.outputMint,
|
|
158
|
+
receiver: input.receiver,
|
|
159
|
+
solverOutput: input.solverOutput,
|
|
160
|
+
outputTokenProgram: input.outputTokenProgram,
|
|
161
|
+
amountOut: input.amountOut,
|
|
162
|
+
ext: fillExt(input.endExt),
|
|
163
|
+
...(await events()),
|
|
164
|
+
});
|
|
165
|
+
return [...prefix, begin, ...route, end];
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=fill-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill-builders.js","sourceRoot":"","sources":["../../src/fill-builders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Address, TransactionSigner } from "@solana/kit";
|
|
2
|
+
import type { Partner } from "./ext.js";
|
|
3
|
+
import type { IntentParams } from "./kinds.js";
|
|
4
|
+
export type CreateIntentSpec = {
|
|
5
|
+
owner: TransactionSigner;
|
|
6
|
+
treasury: Address;
|
|
7
|
+
maxCreateFee: number;
|
|
8
|
+
maxBounty: number;
|
|
9
|
+
nonce: bigint;
|
|
10
|
+
params: IntentParams;
|
|
11
|
+
expiresAt: bigint;
|
|
12
|
+
flags?: number;
|
|
13
|
+
ext?: Uint8Array;
|
|
14
|
+
partner?: Partner;
|
|
15
|
+
inputMint: Address;
|
|
16
|
+
outputMint: Address;
|
|
17
|
+
inputTokenProgram: Address;
|
|
18
|
+
outputTokenProgram: Address;
|
|
19
|
+
ownerInput?: Address;
|
|
20
|
+
receiver?: Address;
|
|
21
|
+
receiverAuthority?: Address;
|
|
22
|
+
};
|
|
23
|
+
export declare function buildCreateIntent(input: CreateIntentSpec): Promise<import("../generated/client/index.js").CreateIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
24
|
+
type IntentRef = {
|
|
25
|
+
owner: Address;
|
|
26
|
+
nonce: bigint;
|
|
27
|
+
inputMint: Address;
|
|
28
|
+
tokenProgram: Address;
|
|
29
|
+
};
|
|
30
|
+
export declare function buildCancelIntent(input: Omit<IntentRef, "owner"> & {
|
|
31
|
+
owner: TransactionSigner;
|
|
32
|
+
refundTo?: Address;
|
|
33
|
+
ext?: Uint8Array;
|
|
34
|
+
}): Promise<import("../generated/client/index.js").CancelIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
35
|
+
export declare function buildExpireIntent(input: IntentRef & {
|
|
36
|
+
cranker: TransactionSigner;
|
|
37
|
+
refundTo?: Address;
|
|
38
|
+
ext?: Uint8Array;
|
|
39
|
+
}): Promise<import("../generated/client/index.js").ExpireIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
40
|
+
export declare function buildCloseIntent(input: IntentRef & {
|
|
41
|
+
cranker: TransactionSigner;
|
|
42
|
+
rentPayer?: Address;
|
|
43
|
+
refundTo?: Address;
|
|
44
|
+
ext?: Uint8Array;
|
|
45
|
+
}): Promise<import("../generated/client/index.js").CloseIntentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
46
|
+
export type CreateIntentSignedSpec = Omit<CreateIntentSpec, "owner"> & {
|
|
47
|
+
payer: TransactionSigner;
|
|
48
|
+
owner: Address;
|
|
49
|
+
submitBy: bigint;
|
|
50
|
+
relayerFee?: bigint;
|
|
51
|
+
relayerFeeAccount?: Address;
|
|
52
|
+
};
|
|
53
|
+
export declare function buildCreateIntentSigned(input: CreateIntentSignedSpec): Promise<import("../generated/client/index.js").CreateIntentSignedInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "Sysvar1nstructions1111111111111111111111111", string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
54
|
+
export type CreateIntentByAgentSpec = Omit<CreateIntentSpec, "owner" | "treasury" | "receiverAuthority"> & {
|
|
55
|
+
agent: TransactionSigner;
|
|
56
|
+
owner: Address;
|
|
57
|
+
mandateId: bigint;
|
|
58
|
+
treasury: Address;
|
|
59
|
+
};
|
|
60
|
+
export declare function buildCreateIntentByAgent(input: CreateIntentByAgentSpec): Promise<import("../generated/client/index.js").CreateIntentByAgentInstruction<Address<"GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU">, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "GHFB9q4fhhqRyCoycoivdxMhFkp1aLHJk5VvroUsgrJU", []>>;
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { findDelegatePda, getCancelIntentInstructionAsync, getCloseIntentInstructionAsync, getCreateIntentInstructionAsync, getCreateIntentByAgentInstructionAsync, getCreateIntentSignedInstructionAsync, getExpireIntentInstructionAsync, } from "../generated/client/index.js";
|
|
2
|
+
import { createArgs, events, INSTRUCTIONS_SYSVAR_ADDRESS, intentOf, settleExt } from "./builder-accounts.js";
|
|
3
|
+
import { findAssociatedTokenAddress, findMandatePda } from "./pdas.js";
|
|
4
|
+
export async function buildCreateIntent(input) {
|
|
5
|
+
const owner = input.owner.address;
|
|
6
|
+
const args = createArgs(input);
|
|
7
|
+
const ownerInput = input.ownerInput ??
|
|
8
|
+
(await findAssociatedTokenAddress({
|
|
9
|
+
owner,
|
|
10
|
+
mint: input.inputMint,
|
|
11
|
+
tokenProgram: input.inputTokenProgram,
|
|
12
|
+
}));
|
|
13
|
+
const receiver = input.receiver ??
|
|
14
|
+
(await findAssociatedTokenAddress({
|
|
15
|
+
owner,
|
|
16
|
+
mint: input.outputMint,
|
|
17
|
+
tokenProgram: input.outputTokenProgram,
|
|
18
|
+
}));
|
|
19
|
+
return getCreateIntentInstructionAsync({
|
|
20
|
+
owner: input.owner,
|
|
21
|
+
intent: await intentOf(owner, input.nonce),
|
|
22
|
+
inputMint: input.inputMint,
|
|
23
|
+
outputMint: input.outputMint,
|
|
24
|
+
ownerInput,
|
|
25
|
+
receiver,
|
|
26
|
+
receiverAuthority: input.receiverAuthority ?? owner,
|
|
27
|
+
treasury: input.treasury,
|
|
28
|
+
inputTokenProgram: input.inputTokenProgram,
|
|
29
|
+
outputTokenProgram: input.outputTokenProgram,
|
|
30
|
+
args,
|
|
31
|
+
...(await events()),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async function canonicalRefund(ref) {
|
|
35
|
+
return findAssociatedTokenAddress({
|
|
36
|
+
owner: ref.owner,
|
|
37
|
+
mint: ref.inputMint,
|
|
38
|
+
tokenProgram: ref.tokenProgram,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export async function buildCancelIntent(input) {
|
|
42
|
+
const ref = { ...input, owner: input.owner.address };
|
|
43
|
+
const ext = settleExt(input.ext);
|
|
44
|
+
return getCancelIntentInstructionAsync({
|
|
45
|
+
owner: input.owner,
|
|
46
|
+
intent: await intentOf(ref.owner, input.nonce),
|
|
47
|
+
inputMint: input.inputMint,
|
|
48
|
+
refundTo: input.refundTo ?? (await canonicalRefund(ref)),
|
|
49
|
+
tokenProgram: input.tokenProgram,
|
|
50
|
+
ext,
|
|
51
|
+
...(await events()),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
export async function buildExpireIntent(input) {
|
|
55
|
+
const ext = settleExt(input.ext);
|
|
56
|
+
return getExpireIntentInstructionAsync({
|
|
57
|
+
cranker: input.cranker,
|
|
58
|
+
intent: await intentOf(input.owner, input.nonce),
|
|
59
|
+
inputMint: input.inputMint,
|
|
60
|
+
refundTo: input.refundTo ?? (await canonicalRefund(input)),
|
|
61
|
+
canonicalRefund: await canonicalRefund(input),
|
|
62
|
+
tokenProgram: input.tokenProgram,
|
|
63
|
+
ext,
|
|
64
|
+
...(await events()),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export async function buildCloseIntent(input) {
|
|
68
|
+
const ext = settleExt(input.ext);
|
|
69
|
+
return getCloseIntentInstructionAsync({
|
|
70
|
+
cranker: input.cranker,
|
|
71
|
+
intent: await intentOf(input.owner, input.nonce),
|
|
72
|
+
inputMint: input.inputMint,
|
|
73
|
+
refundTo: input.refundTo ?? (await canonicalRefund(input)),
|
|
74
|
+
canonicalRefund: await canonicalRefund(input),
|
|
75
|
+
owner: input.owner,
|
|
76
|
+
rentPayer: input.rentPayer ?? input.owner,
|
|
77
|
+
tokenProgram: input.tokenProgram,
|
|
78
|
+
ext,
|
|
79
|
+
...(await events()),
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
async function feeAccount(name, fee, account, owner, input) {
|
|
83
|
+
if (fee === 0n) {
|
|
84
|
+
return {};
|
|
85
|
+
}
|
|
86
|
+
const address = account ?? (await findAssociatedTokenAddress({ owner, mint: input.inputMint, tokenProgram: input.inputTokenProgram }));
|
|
87
|
+
return { [name]: address };
|
|
88
|
+
}
|
|
89
|
+
export async function buildCreateIntentSigned(input) {
|
|
90
|
+
const owner = input.owner;
|
|
91
|
+
const relayerFee = input.relayerFee ?? 0n;
|
|
92
|
+
const args = createArgs(input);
|
|
93
|
+
const ownerInput = input.ownerInput ??
|
|
94
|
+
(await findAssociatedTokenAddress({
|
|
95
|
+
owner,
|
|
96
|
+
mint: input.inputMint,
|
|
97
|
+
tokenProgram: input.inputTokenProgram,
|
|
98
|
+
}));
|
|
99
|
+
const receiver = input.receiver ??
|
|
100
|
+
(await findAssociatedTokenAddress({
|
|
101
|
+
owner,
|
|
102
|
+
mint: input.outputMint,
|
|
103
|
+
tokenProgram: input.outputTokenProgram,
|
|
104
|
+
}));
|
|
105
|
+
return getCreateIntentSignedInstructionAsync({
|
|
106
|
+
payer: input.payer,
|
|
107
|
+
owner,
|
|
108
|
+
intent: await intentOf(owner, input.nonce),
|
|
109
|
+
inputMint: input.inputMint,
|
|
110
|
+
outputMint: input.outputMint,
|
|
111
|
+
ownerInput,
|
|
112
|
+
receiver,
|
|
113
|
+
receiverAuthority: input.receiverAuthority ?? owner,
|
|
114
|
+
delegate: (await findDelegatePda({ owner }))[0],
|
|
115
|
+
treasury: input.treasury,
|
|
116
|
+
inputTokenProgram: input.inputTokenProgram,
|
|
117
|
+
outputTokenProgram: input.outputTokenProgram,
|
|
118
|
+
instructions: INSTRUCTIONS_SYSVAR_ADDRESS,
|
|
119
|
+
...(await feeAccount("relayerFeeTo", relayerFee, input.relayerFeeAccount, input.payer.address, input)),
|
|
120
|
+
args,
|
|
121
|
+
submitBy: input.submitBy,
|
|
122
|
+
relayerFee,
|
|
123
|
+
...(await events()),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
export async function buildCreateIntentByAgent(input) {
|
|
127
|
+
const owner = input.owner;
|
|
128
|
+
const args = createArgs(input);
|
|
129
|
+
const ownerInput = input.ownerInput ??
|
|
130
|
+
(await findAssociatedTokenAddress({ owner, mint: input.inputMint, tokenProgram: input.inputTokenProgram }));
|
|
131
|
+
const receiver = input.receiver ??
|
|
132
|
+
(await findAssociatedTokenAddress({ owner, mint: input.outputMint, tokenProgram: input.outputTokenProgram }));
|
|
133
|
+
const [mandate] = await findMandatePda({ owner, agent: input.agent.address, id: input.mandateId });
|
|
134
|
+
return getCreateIntentByAgentInstructionAsync({
|
|
135
|
+
agent: input.agent,
|
|
136
|
+
owner,
|
|
137
|
+
mandate,
|
|
138
|
+
intent: await intentOf(owner, input.nonce),
|
|
139
|
+
inputMint: input.inputMint,
|
|
140
|
+
outputMint: input.outputMint,
|
|
141
|
+
ownerInput,
|
|
142
|
+
receiver,
|
|
143
|
+
receiverAuthority: owner,
|
|
144
|
+
delegate: (await findDelegatePda({ owner }))[0],
|
|
145
|
+
treasury: input.treasury,
|
|
146
|
+
inputTokenProgram: input.inputTokenProgram,
|
|
147
|
+
outputTokenProgram: input.outputTokenProgram,
|
|
148
|
+
args,
|
|
149
|
+
...(await events()),
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=intent-builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-builders.js","sourceRoot":"","sources":["../../src/intent-builders.ts"],"names":[],"mappings":"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"}
|
package/dist/src/mandate.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { formatAmount, formatTime, tokenOf } from "./describe.js";
|
|
1
|
+
import { formatAmount, formatTime, partnerFeeLine, tokenOf } from "./describe.js";
|
|
2
2
|
import { encodePartner } from "./ext.js";
|
|
3
3
|
import { Kind, kindBit } from "./kinds.js";
|
|
4
4
|
export const MANDATE_KINDS = Number(kindBit(Kind.SwapExactIn) | kindBit(Kind.LimitOrder) | kindBit(Kind.DutchAuction));
|
|
@@ -68,7 +68,7 @@ export function describeMandate(spec, o) {
|
|
|
68
68
|
`Price floor: at least ${formatAmount(spec.floorOut, o.outputDecimals)} of ${tokenOf(o.outputMint, o.outputName)} for every ${sell(spec.floorIn)}`,
|
|
69
69
|
`Each intent expires within ${spec.maxTtl} seconds of its creation`,
|
|
70
70
|
`Valid until: ${formatTime(spec.validUntil)}`,
|
|
71
|
-
...(spec.partner === undefined ? [] : [
|
|
71
|
+
...(spec.partner === undefined ? [] : [partnerFeeLine(spec.partner.bps, spec.partner.key)]),
|
|
72
72
|
...(agentFee === 0n
|
|
73
73
|
? []
|
|
74
74
|
: [
|
package/dist/src/mandate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mandate.js","sourceRoot":"","sources":["../../src/mandate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAmB,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"mandate.js","sourceRoot":"","sources":["../../src/mandate.ts"],"names":[],"mappings":"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"}
|
package/dist/src/math.d.ts
CHANGED
package/dist/src/math.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { IntentCoreError } from "./errors.js";
|
|
2
2
|
export const U64_MAX = (1n << 64n) - 1n;
|
|
3
|
+
export function checkU64(value, name = "amount") {
|
|
4
|
+
if (value < 0n || value > U64_MAX) {
|
|
5
|
+
throw new RangeError(`${name} ${String(value)} is not between 0 and ${U64_MAX}`);
|
|
6
|
+
}
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
3
9
|
function quotient(a, b, d) {
|
|
10
|
+
checkU64(a, "operand");
|
|
11
|
+
checkU64(b, "operand");
|
|
12
|
+
checkU64(d, "divisor");
|
|
4
13
|
if (d === 0n) {
|
|
5
14
|
throw new IntentCoreError("DivideByZero");
|
|
6
15
|
}
|
package/dist/src/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAExC,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC/C,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;QAChB,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACzD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/math.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AAExC,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,IAAI,GAAG,QAAQ;IACrD,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC/C,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACvB,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;QAChB,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACzD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
package/dist/src/memo.d.ts
CHANGED
|
@@ -12,8 +12,9 @@ export type DeliveryMemo = {
|
|
|
12
12
|
sha256: string;
|
|
13
13
|
url: string;
|
|
14
14
|
};
|
|
15
|
-
export declare const MEMO_URL_RULE = "an https url of at most 200 printable characters without spaces, or http on localhost";
|
|
15
|
+
export declare const MEMO_URL_RULE = "an https url of at most 200 printable characters without spaces or backslashes, or http on localhost, 127.0.0.1 or [::1], in canonical form: lowercase scheme and host, no default port, no . or .. path segments, a / path before any ? or #, and characters percent-encoded as new URL() would";
|
|
16
16
|
export declare function isMemoUrl(url: string): boolean;
|
|
17
|
+
export declare function isLegacyMemoUrl(url: string): boolean;
|
|
17
18
|
export declare function isSha256Hex(text: string): boolean;
|
|
18
19
|
export declare function specMemo(url: string): string;
|
|
19
20
|
export declare function parseSpecMemo(text: string): SpecMemo | null;
|