@intent-engine/solver 0.1.27 → 0.1.29
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/backoff.d.ts +18 -0
- package/dist/src/backoff.js +42 -0
- package/dist/src/backoff.js.map +1 -0
- package/dist/src/costs.d.ts +22 -0
- package/dist/src/costs.js +85 -0
- package/dist/src/costs.js.map +1 -0
- package/dist/src/solver.d.ts +3 -37
- package/dist/src/solver.js +6 -124
- package/dist/src/solver.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Address } from "@solana/kit";
|
|
2
|
+
import { type Intent } from "@intent-engine/core";
|
|
3
|
+
export declare const BACKOFF_MAX_INTERVALS = 32;
|
|
4
|
+
export type Backoff = {
|
|
5
|
+
waiting(address: Address, intent: Intent): {
|
|
6
|
+
failures: number;
|
|
7
|
+
seconds: number;
|
|
8
|
+
} | null;
|
|
9
|
+
failed(address: Address, intent: Intent): void;
|
|
10
|
+
succeeded(address: Address): void;
|
|
11
|
+
retain(intents: readonly {
|
|
12
|
+
address: Address;
|
|
13
|
+
intent: Intent;
|
|
14
|
+
}[], now: bigint): void;
|
|
15
|
+
size(): number;
|
|
16
|
+
};
|
|
17
|
+
export declare function backoff(interval: number, clock?: () => number): Backoff;
|
|
18
|
+
export declare const backingOff: (failures: number, seconds: number) => string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { IntentStatus } from "@intent-engine/core";
|
|
2
|
+
export const BACKOFF_MAX_INTERVALS = 32;
|
|
3
|
+
const fingerprint = (intent) => JSON.stringify(intent, (_, value) => (typeof value === "bigint" ? value.toString() : value));
|
|
4
|
+
const MS_PER_SECOND = 1_000;
|
|
5
|
+
export function backoff(interval, clock = Date.now) {
|
|
6
|
+
const held = new Map();
|
|
7
|
+
return {
|
|
8
|
+
waiting: (address, intent) => {
|
|
9
|
+
const entry = held.get(address);
|
|
10
|
+
if (entry === undefined) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (entry.print !== fingerprint(intent)) {
|
|
14
|
+
held.delete(address);
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const left = entry.until - clock();
|
|
18
|
+
return left > 0 ? { failures: entry.failures, seconds: Math.ceil(left / MS_PER_SECOND) } : null;
|
|
19
|
+
},
|
|
20
|
+
failed: (address, intent) => {
|
|
21
|
+
const print = fingerprint(intent);
|
|
22
|
+
const entry = held.get(address);
|
|
23
|
+
const failures = (entry?.print === print ? entry.failures : 0) + 1;
|
|
24
|
+
const wait = interval * Math.min(2 ** (failures - 1), BACKOFF_MAX_INTERVALS);
|
|
25
|
+
held.set(address, { print, failures, until: clock() + wait * MS_PER_SECOND });
|
|
26
|
+
},
|
|
27
|
+
succeeded: (address) => {
|
|
28
|
+
held.delete(address);
|
|
29
|
+
},
|
|
30
|
+
retain: (intents, now) => {
|
|
31
|
+
const open = new Set(intents.filter(({ intent }) => intent.status === IntentStatus.Open && now < intent.expiresAt).map(({ address }) => address));
|
|
32
|
+
for (const address of [...held.keys()]) {
|
|
33
|
+
if (!open.has(address)) {
|
|
34
|
+
held.delete(address);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
size: () => held.size,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export const backingOff = (failures, seconds) => `${failures} fill${failures === 1 ? "" : "s"} of this intent failed in a row; it is tried again in ${seconds} second${seconds === 1 ? "" : "s"}`;
|
|
42
|
+
//# sourceMappingURL=backoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backoff.js","sourceRoot":"","sources":["../../src/backoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type Address, type Base64EncodedWireTransaction, type Instruction } from "@solana/kit";
|
|
2
|
+
export declare const LAMPORTS_PER_SIGNATURE = 5000n;
|
|
3
|
+
export declare const MICRO_LAMPORTS_PER_LAMPORT = 1000000n;
|
|
4
|
+
export declare const DEFAULT_MAX_SOL_COST = 10000000n;
|
|
5
|
+
export declare const DEFAULT_MAX_RENT = 10000000n;
|
|
6
|
+
export declare const TOKEN_ACCOUNT_SPACE = 165;
|
|
7
|
+
export declare const TOKEN_2022_ACCOUNT_SPACE = 170;
|
|
8
|
+
export declare const TOKEN_2022_PROGRAM: Address;
|
|
9
|
+
export declare const rentExempt: (space: number) => bigint;
|
|
10
|
+
export declare function mintExtensions(data: Uint8Array | null): number[];
|
|
11
|
+
export declare function tokenAccountSpace(tokenProgram: Address, mint: Uint8Array | null): number;
|
|
12
|
+
export type SolCost = {
|
|
13
|
+
signatures: number;
|
|
14
|
+
unitPrice: bigint;
|
|
15
|
+
computeUnits: number;
|
|
16
|
+
tip: bigint;
|
|
17
|
+
};
|
|
18
|
+
export declare function solCost(cost: SolCost): bigint;
|
|
19
|
+
export declare const tooCostly: (cost: bigint, cap: bigint) => string;
|
|
20
|
+
export declare const tooMuchRent: (rent: bigint, cap: bigint) => string;
|
|
21
|
+
export declare function signaturesOf(wire: Base64EncodedWireTransaction): number;
|
|
22
|
+
export declare function createdRent(instructions: readonly Instruction[], exists: (address: Address) => Promise<boolean>, mintData?: (mint: Address) => Promise<Uint8Array | null>): Promise<bigint>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { getBase64Encoder, getTransactionDecoder } from "@solana/kit";
|
|
2
|
+
import { ASSOCIATED_TOKEN_PROGRAM } from "./jupiter.js";
|
|
3
|
+
export const LAMPORTS_PER_SIGNATURE = 5000n;
|
|
4
|
+
export const MICRO_LAMPORTS_PER_LAMPORT = 1000000n;
|
|
5
|
+
export const DEFAULT_MAX_SOL_COST = 10000000n;
|
|
6
|
+
export const DEFAULT_MAX_RENT = 10000000n;
|
|
7
|
+
export const TOKEN_ACCOUNT_SPACE = 165;
|
|
8
|
+
export const TOKEN_2022_ACCOUNT_SPACE = 170;
|
|
9
|
+
export const TOKEN_2022_PROGRAM = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
|
|
10
|
+
const ACCOUNT_STORAGE_OVERHEAD = 128n;
|
|
11
|
+
const LAMPORTS_PER_BYTE_YEAR = 3480n;
|
|
12
|
+
const EXEMPTION_YEARS = 2n;
|
|
13
|
+
const ATA_ADDRESS = 1;
|
|
14
|
+
const ATA_MINT = 3;
|
|
15
|
+
const ATA_TOKEN_PROGRAM = 5;
|
|
16
|
+
export const rentExempt = (space) => (ACCOUNT_STORAGE_OVERHEAD + BigInt(space)) * LAMPORTS_PER_BYTE_YEAR * EXEMPTION_YEARS;
|
|
17
|
+
const ACCOUNT_TYPE_SPACE = 1;
|
|
18
|
+
const EXTENSION_HEADER_SPACE = 4;
|
|
19
|
+
const MULTISIG_SPACE = 355;
|
|
20
|
+
const EXTENSION_TYPE_SPACE = 2;
|
|
21
|
+
const IMMUTABLE_OWNER_SPACE = 0;
|
|
22
|
+
const ACCOUNT_EXTENSION_SPACE = new Map([
|
|
23
|
+
[1, 8],
|
|
24
|
+
[9, 0],
|
|
25
|
+
[14, 1],
|
|
26
|
+
[16, 64],
|
|
27
|
+
[26, 0],
|
|
28
|
+
]);
|
|
29
|
+
export function mintExtensions(data) {
|
|
30
|
+
const found = [];
|
|
31
|
+
if (data === null || data.length <= TOKEN_ACCOUNT_SPACE + ACCOUNT_TYPE_SPACE) {
|
|
32
|
+
return found;
|
|
33
|
+
}
|
|
34
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
35
|
+
for (let at = TOKEN_ACCOUNT_SPACE + ACCOUNT_TYPE_SPACE; at + EXTENSION_HEADER_SPACE <= data.length;) {
|
|
36
|
+
const type = view.getUint16(at, true);
|
|
37
|
+
if (type === 0) {
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
found.push(type);
|
|
41
|
+
at += EXTENSION_HEADER_SPACE + view.getUint16(at + 2, true);
|
|
42
|
+
}
|
|
43
|
+
return found;
|
|
44
|
+
}
|
|
45
|
+
export function tokenAccountSpace(tokenProgram, mint) {
|
|
46
|
+
if (tokenProgram !== TOKEN_2022_PROGRAM) {
|
|
47
|
+
return TOKEN_ACCOUNT_SPACE;
|
|
48
|
+
}
|
|
49
|
+
const extensions = [
|
|
50
|
+
IMMUTABLE_OWNER_SPACE,
|
|
51
|
+
...mintExtensions(mint).flatMap((type) => {
|
|
52
|
+
const space = ACCOUNT_EXTENSION_SPACE.get(type);
|
|
53
|
+
return space === undefined ? [] : [space];
|
|
54
|
+
}),
|
|
55
|
+
];
|
|
56
|
+
const space = extensions.reduce((total, extension) => total + EXTENSION_HEADER_SPACE + extension, TOKEN_ACCOUNT_SPACE + ACCOUNT_TYPE_SPACE);
|
|
57
|
+
return space === MULTISIG_SPACE ? space + EXTENSION_TYPE_SPACE : space;
|
|
58
|
+
}
|
|
59
|
+
export function solCost(cost) {
|
|
60
|
+
const priority = (cost.unitPrice * BigInt(cost.computeUnits) + MICRO_LAMPORTS_PER_LAMPORT - 1n) / MICRO_LAMPORTS_PER_LAMPORT;
|
|
61
|
+
return LAMPORTS_PER_SIGNATURE * BigInt(cost.signatures) + priority + cost.tip;
|
|
62
|
+
}
|
|
63
|
+
export const tooCostly = (cost, cap) => `the fill costs ${cost} lamports in fees and tip, more than the cap of ${cap}`;
|
|
64
|
+
export const tooMuchRent = (rent, cap) => `the fill opens token accounts that keep ${rent} lamports of rent, more than the cap of ${cap}`;
|
|
65
|
+
export function signaturesOf(wire) {
|
|
66
|
+
return Object.keys(getTransactionDecoder().decode(getBase64Encoder().encode(wire)).signatures).length;
|
|
67
|
+
}
|
|
68
|
+
export async function createdRent(instructions, exists, mintData = async () => null) {
|
|
69
|
+
const opened = new Map();
|
|
70
|
+
for (const ix of instructions) {
|
|
71
|
+
const account = ix.accounts?.[ATA_ADDRESS]?.address;
|
|
72
|
+
if (ix.programAddress === ASSOCIATED_TOKEN_PROGRAM && account !== undefined && !opened.has(account)) {
|
|
73
|
+
opened.set(account, { program: ix.accounts?.[ATA_TOKEN_PROGRAM]?.address ?? account, mint: ix.accounts?.[ATA_MINT]?.address });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
let rent = 0n;
|
|
77
|
+
for (const [account, { program, mint }] of opened) {
|
|
78
|
+
if (!(await exists(account))) {
|
|
79
|
+
const data = program === TOKEN_2022_PROGRAM && mint !== undefined ? await mintData(mint) : null;
|
|
80
|
+
rent += rentExempt(tokenAccountSpace(program, data));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return rent;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=costs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costs.js","sourceRoot":"","sources":["../../src/costs.ts"],"names":[],"mappings":"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"}
|
package/dist/src/solver.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { type Address, type Base64EncodedWireTransaction, type Blockhash, type Instruction, type TransactionSigner } from "@solana/kit";
|
|
2
2
|
import { type Config, type Intent } from "@intent-engine/core";
|
|
3
|
+
import { type Backoff } from "./backoff.js";
|
|
3
4
|
import { type Tip } from "./build.js";
|
|
4
5
|
import type { Pricer } from "./market.js";
|
|
5
6
|
import { type Strategy } from "./plan.js";
|
|
7
|
+
export { BACKOFF_MAX_INTERVALS, type Backoff, backingOff, backoff } from "./backoff.js";
|
|
8
|
+
export { createdRent, DEFAULT_MAX_RENT, DEFAULT_MAX_SOL_COST, LAMPORTS_PER_SIGNATURE, MICRO_LAMPORTS_PER_LAMPORT, mintExtensions, rentExempt, type SolCost, signaturesOf, solCost, TOKEN_2022_ACCOUNT_SPACE, TOKEN_2022_PROGRAM, TOKEN_ACCOUNT_SPACE, tokenAccountSpace, tooCostly, tooMuchRent, } from "./costs.js";
|
|
6
9
|
export type Chain = {
|
|
7
10
|
config(): Promise<Config>;
|
|
8
11
|
intents(): Promise<{
|
|
@@ -70,43 +73,6 @@ export declare const SIMULATION_REFUSED = "the fill failed in simulation, so it
|
|
|
70
73
|
export declare const BALANCES_REFUSED = "the fill would leave the solver with less of a token than planned, so it was not sent";
|
|
71
74
|
export declare const ROUTE_ACCOUNT_BUDGETS: readonly [40, 30, 20];
|
|
72
75
|
export declare const tooLarge: (bytes: number | null, accounts: number) => string;
|
|
73
|
-
export declare const LAMPORTS_PER_SIGNATURE = 5000n;
|
|
74
|
-
export declare const MICRO_LAMPORTS_PER_LAMPORT = 1000000n;
|
|
75
|
-
export declare const DEFAULT_MAX_SOL_COST = 10000000n;
|
|
76
|
-
export declare const DEFAULT_MAX_RENT = 10000000n;
|
|
77
|
-
export declare const TOKEN_ACCOUNT_SPACE = 165;
|
|
78
|
-
export declare const TOKEN_2022_ACCOUNT_SPACE = 170;
|
|
79
|
-
export declare const TOKEN_2022_PROGRAM: Address;
|
|
80
|
-
export declare const rentExempt: (space: number) => bigint;
|
|
81
|
-
export declare function mintExtensions(data: Uint8Array | null): number[];
|
|
82
|
-
export declare function tokenAccountSpace(tokenProgram: Address, mint: Uint8Array | null): number;
|
|
83
|
-
export type SolCost = {
|
|
84
|
-
signatures: number;
|
|
85
|
-
unitPrice: bigint;
|
|
86
|
-
computeUnits: number;
|
|
87
|
-
tip: bigint;
|
|
88
|
-
};
|
|
89
|
-
export declare function solCost(cost: SolCost): bigint;
|
|
90
|
-
export declare const tooCostly: (cost: bigint, cap: bigint) => string;
|
|
91
|
-
export declare const tooMuchRent: (rent: bigint, cap: bigint) => string;
|
|
92
|
-
export declare function signaturesOf(wire: Base64EncodedWireTransaction): number;
|
|
93
|
-
export declare function createdRent(instructions: readonly Instruction[], exists: (address: Address) => Promise<boolean>, mintData?: (mint: Address) => Promise<Uint8Array | null>): Promise<bigint>;
|
|
94
|
-
export declare const BACKOFF_MAX_INTERVALS = 32;
|
|
95
|
-
export type Backoff = {
|
|
96
|
-
waiting(address: Address, intent: Intent): {
|
|
97
|
-
failures: number;
|
|
98
|
-
seconds: number;
|
|
99
|
-
} | null;
|
|
100
|
-
failed(address: Address, intent: Intent): void;
|
|
101
|
-
succeeded(address: Address): void;
|
|
102
|
-
retain(intents: readonly {
|
|
103
|
-
address: Address;
|
|
104
|
-
intent: Intent;
|
|
105
|
-
}[], now: bigint): void;
|
|
106
|
-
size(): number;
|
|
107
|
-
};
|
|
108
|
-
export declare function backoff(interval: number, clock?: () => number): Backoff;
|
|
109
|
-
export declare const backingOff: (failures: number, seconds: number) => string;
|
|
110
76
|
export declare function tick(o: SolverOptions): Promise<Report>;
|
|
111
77
|
export type Flight = {
|
|
112
78
|
until: bigint;
|
package/dist/src/solver.js
CHANGED
|
@@ -1,134 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {} from "@solana/kit";
|
|
2
2
|
import { findAssociatedTokenAddress, IntentStatus } from "@intent-engine/core";
|
|
3
|
+
import { backingOff } from "./backoff.js";
|
|
4
|
+
import { createdRent, DEFAULT_MAX_RENT, DEFAULT_MAX_SOL_COST, signaturesOf, solCost, tooCostly, tooMuchRent } from "./costs.js";
|
|
3
5
|
import { accountsOf, bytesFit, compile, fillInstructions, headroom, locksFit, lookupTablesOf, MAX_COMPUTE_UNITS, MAX_TX_ACCOUNTS, PACKET_DATA_SIZE, payoutAccounts, wireSize, } from "./build.js";
|
|
4
|
-
import {
|
|
6
|
+
import { RateLimited } from "./jupiter.js";
|
|
5
7
|
import { decide, standing } from "./plan.js";
|
|
8
|
+
export { BACKOFF_MAX_INTERVALS, backingOff, backoff } from "./backoff.js";
|
|
9
|
+
export { createdRent, DEFAULT_MAX_RENT, DEFAULT_MAX_SOL_COST, LAMPORTS_PER_SIGNATURE, MICRO_LAMPORTS_PER_LAMPORT, mintExtensions, rentExempt, signaturesOf, solCost, TOKEN_2022_ACCOUNT_SPACE, TOKEN_2022_PROGRAM, TOKEN_ACCOUNT_SPACE, tokenAccountSpace, tooCostly, tooMuchRent, } from "./costs.js";
|
|
6
10
|
export const SIMULATION_REFUSED = "the fill failed in simulation, so it was not sent";
|
|
7
11
|
export const BALANCES_REFUSED = "the fill would leave the solver with less of a token than planned, so it was not sent";
|
|
8
12
|
export const ROUTE_ACCOUNT_BUDGETS = [40, 30, 20];
|
|
9
13
|
export const tooLarge = (bytes, accounts) => `even the smallest route makes the fill ${bytes === null ? "lock" : `${bytes} bytes with`} ${accounts} accounts; a transaction holds ${PACKET_DATA_SIZE} bytes and ${MAX_TX_ACCOUNTS} accounts`;
|
|
10
|
-
export const LAMPORTS_PER_SIGNATURE = 5000n;
|
|
11
|
-
export const MICRO_LAMPORTS_PER_LAMPORT = 1000000n;
|
|
12
|
-
export const DEFAULT_MAX_SOL_COST = 10000000n;
|
|
13
|
-
export const DEFAULT_MAX_RENT = 10000000n;
|
|
14
|
-
export const TOKEN_ACCOUNT_SPACE = 165;
|
|
15
|
-
export const TOKEN_2022_ACCOUNT_SPACE = 170;
|
|
16
|
-
export const TOKEN_2022_PROGRAM = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
|
|
17
|
-
const ACCOUNT_STORAGE_OVERHEAD = 128n;
|
|
18
|
-
const LAMPORTS_PER_BYTE_YEAR = 3480n;
|
|
19
|
-
const EXEMPTION_YEARS = 2n;
|
|
20
|
-
const ATA_ADDRESS = 1;
|
|
21
|
-
const ATA_MINT = 3;
|
|
22
|
-
const ATA_TOKEN_PROGRAM = 5;
|
|
23
|
-
export const rentExempt = (space) => (ACCOUNT_STORAGE_OVERHEAD + BigInt(space)) * LAMPORTS_PER_BYTE_YEAR * EXEMPTION_YEARS;
|
|
24
|
-
const ACCOUNT_TYPE_SPACE = 1;
|
|
25
|
-
const EXTENSION_HEADER_SPACE = 4;
|
|
26
|
-
const MULTISIG_SPACE = 355;
|
|
27
|
-
const EXTENSION_TYPE_SPACE = 2;
|
|
28
|
-
const IMMUTABLE_OWNER_SPACE = 0;
|
|
29
|
-
const ACCOUNT_EXTENSION_SPACE = new Map([
|
|
30
|
-
[1, 8],
|
|
31
|
-
[9, 0],
|
|
32
|
-
[14, 1],
|
|
33
|
-
[16, 64],
|
|
34
|
-
[26, 0],
|
|
35
|
-
]);
|
|
36
|
-
export function mintExtensions(data) {
|
|
37
|
-
const found = [];
|
|
38
|
-
if (data === null || data.length <= TOKEN_ACCOUNT_SPACE + ACCOUNT_TYPE_SPACE) {
|
|
39
|
-
return found;
|
|
40
|
-
}
|
|
41
|
-
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
42
|
-
for (let at = TOKEN_ACCOUNT_SPACE + ACCOUNT_TYPE_SPACE; at + EXTENSION_HEADER_SPACE <= data.length;) {
|
|
43
|
-
const type = view.getUint16(at, true);
|
|
44
|
-
if (type === 0) {
|
|
45
|
-
break;
|
|
46
|
-
}
|
|
47
|
-
found.push(type);
|
|
48
|
-
at += EXTENSION_HEADER_SPACE + view.getUint16(at + 2, true);
|
|
49
|
-
}
|
|
50
|
-
return found;
|
|
51
|
-
}
|
|
52
|
-
export function tokenAccountSpace(tokenProgram, mint) {
|
|
53
|
-
if (tokenProgram !== TOKEN_2022_PROGRAM) {
|
|
54
|
-
return TOKEN_ACCOUNT_SPACE;
|
|
55
|
-
}
|
|
56
|
-
const extensions = [
|
|
57
|
-
IMMUTABLE_OWNER_SPACE,
|
|
58
|
-
...mintExtensions(mint).flatMap((type) => {
|
|
59
|
-
const space = ACCOUNT_EXTENSION_SPACE.get(type);
|
|
60
|
-
return space === undefined ? [] : [space];
|
|
61
|
-
}),
|
|
62
|
-
];
|
|
63
|
-
const space = extensions.reduce((total, extension) => total + EXTENSION_HEADER_SPACE + extension, TOKEN_ACCOUNT_SPACE + ACCOUNT_TYPE_SPACE);
|
|
64
|
-
return space === MULTISIG_SPACE ? space + EXTENSION_TYPE_SPACE : space;
|
|
65
|
-
}
|
|
66
|
-
export function solCost(cost) {
|
|
67
|
-
const priority = (cost.unitPrice * BigInt(cost.computeUnits) + MICRO_LAMPORTS_PER_LAMPORT - 1n) / MICRO_LAMPORTS_PER_LAMPORT;
|
|
68
|
-
return LAMPORTS_PER_SIGNATURE * BigInt(cost.signatures) + priority + cost.tip;
|
|
69
|
-
}
|
|
70
|
-
export const tooCostly = (cost, cap) => `the fill costs ${cost} lamports in fees and tip, more than the cap of ${cap}`;
|
|
71
|
-
export const tooMuchRent = (rent, cap) => `the fill opens token accounts that keep ${rent} lamports of rent, more than the cap of ${cap}`;
|
|
72
|
-
export function signaturesOf(wire) {
|
|
73
|
-
return Object.keys(getTransactionDecoder().decode(getBase64Encoder().encode(wire)).signatures).length;
|
|
74
|
-
}
|
|
75
|
-
export async function createdRent(instructions, exists, mintData = async () => null) {
|
|
76
|
-
const opened = new Map();
|
|
77
|
-
for (const ix of instructions) {
|
|
78
|
-
const account = ix.accounts?.[ATA_ADDRESS]?.address;
|
|
79
|
-
if (ix.programAddress === ASSOCIATED_TOKEN_PROGRAM && account !== undefined && !opened.has(account)) {
|
|
80
|
-
opened.set(account, { program: ix.accounts?.[ATA_TOKEN_PROGRAM]?.address ?? account, mint: ix.accounts?.[ATA_MINT]?.address });
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
let rent = 0n;
|
|
84
|
-
for (const [account, { program, mint }] of opened) {
|
|
85
|
-
if (!(await exists(account))) {
|
|
86
|
-
const data = program === TOKEN_2022_PROGRAM && mint !== undefined ? await mintData(mint) : null;
|
|
87
|
-
rent += rentExempt(tokenAccountSpace(program, data));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return rent;
|
|
91
|
-
}
|
|
92
|
-
export const BACKOFF_MAX_INTERVALS = 32;
|
|
93
|
-
const fingerprint = (intent) => JSON.stringify(intent, (_, value) => (typeof value === "bigint" ? value.toString() : value));
|
|
94
|
-
const MS_PER_SECOND = 1_000;
|
|
95
|
-
export function backoff(interval, clock = Date.now) {
|
|
96
|
-
const held = new Map();
|
|
97
|
-
return {
|
|
98
|
-
waiting: (address, intent) => {
|
|
99
|
-
const entry = held.get(address);
|
|
100
|
-
if (entry === undefined) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
if (entry.print !== fingerprint(intent)) {
|
|
104
|
-
held.delete(address);
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
const left = entry.until - clock();
|
|
108
|
-
return left > 0 ? { failures: entry.failures, seconds: Math.ceil(left / MS_PER_SECOND) } : null;
|
|
109
|
-
},
|
|
110
|
-
failed: (address, intent) => {
|
|
111
|
-
const print = fingerprint(intent);
|
|
112
|
-
const entry = held.get(address);
|
|
113
|
-
const failures = (entry?.print === print ? entry.failures : 0) + 1;
|
|
114
|
-
const wait = interval * Math.min(2 ** (failures - 1), BACKOFF_MAX_INTERVALS);
|
|
115
|
-
held.set(address, { print, failures, until: clock() + wait * MS_PER_SECOND });
|
|
116
|
-
},
|
|
117
|
-
succeeded: (address) => {
|
|
118
|
-
held.delete(address);
|
|
119
|
-
},
|
|
120
|
-
retain: (intents, now) => {
|
|
121
|
-
const open = new Set(intents.filter(({ intent }) => intent.status === IntentStatus.Open && now < intent.expiresAt).map(({ address }) => address));
|
|
122
|
-
for (const address of [...held.keys()]) {
|
|
123
|
-
if (!open.has(address)) {
|
|
124
|
-
held.delete(address);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
size: () => held.size,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
export const backingOff = (failures, seconds) => `${failures} fill${failures === 1 ? "" : "s"} of this intent failed in a row; it is tried again in ${seconds} second${seconds === 1 ? "" : "s"}`;
|
|
132
14
|
export async function tick(o) {
|
|
133
15
|
const report = { filled: [], sent: [], skipped: [], failed: [] };
|
|
134
16
|
const [config, now, intents] = await Promise.all([o.chain.config(), o.chain.now(), o.chain.intents()]);
|
package/dist/src/solver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/solver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solver.js","sourceRoot":"","sources":["../../src/solver.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6G,MAAM,aAAa,CAAC;AACxI,OAAO,EAAe,0BAA0B,EAAe,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChI,OAAO,EACL,UAAU,EACV,QAAQ,EACR,OAAO,EAEP,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,EAEd,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAa,QAAQ,EAAiB,MAAM,WAAW,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAgB,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,EACd,UAAU,EAEV,YAAY,EACZ,OAAO,EACP,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,WAAW,GACZ,MAAM,YAAY,CAAC;AAwCpB,MAAM,CAAC,MAAM,kBAAkB,GAAG,mDAAmD,CAAC;AAEtF,MAAM,CAAC,MAAM,gBAAgB,GAAG,uFAAuF,CAAC;AAExH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AAE3D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,QAAgB,EAAU,EAAE,CACzE,0CAA0C,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,IAAI,QAAQ,kCAAkC,gBAAgB,cAAc,eAAe,WAAW,CAAC;AAElM,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,CAAgB;IACzC,MAAM,MAAM,GAAW,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvG,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,IAAI,oBAAoB,CAAC;IACjD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC7D,MAAM,QAAQ,GAAG,CAAC,IAAa,EAA8B,EAAE;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,KAAK,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QAC1C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1D,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC;QAC5D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChG,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;gBACtC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC;aACxC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,EAAE,KAA2C,EAAE,EAAE;gBACpE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;gBACpF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACzF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjF,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;YACxF,CAAC,CAAC;YACF,MAAM,WAAW,GAAG,MAAM,0BAA0B,CAAC;gBACnD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,SAAS;gBACtB,YAAY,EAAE,iBAAiB;aAChC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,0BAA0B,CAAC;gBACpD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,UAAU;gBACvB,YAAY,EAAE,kBAAkB;aACjC,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC5D,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC3B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC5B,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE;aACpB,CAAC,CAAC;YACH,MAAM,KAAK,GAAgB;gBACzB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,iBAAiB;gBACjB,kBAAkB;gBAClB,YAAY,EAAE,iBAAiB;gBAC/B,SAAS,EAAE,EAAE;gBACb,iBAAiB,EAAE,CAAC,WAAW;gBAC/B,kBAAkB,EAAE,CAAC,YAAY;gBACjC,GAAG,EAAE,CAAC,CAAC,GAAG;aACX,CAAC;YACF,IAAI,OAAO,GACT,IAAI,CAAC;YACP,IAAI,OAAO,GAAkB,IAAI,CAAC;YAClC,IAAI,IAAI,GAA+C,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YACpF,KAAK,MAAM,aAAa,IAAI,qBAAqB,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;gBACnI,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC7B,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAC1B,MAAM;gBACR,CAAC;gBACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC3B,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChG,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxB,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;oBACjC,SAAS;gBACX,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBAChF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAC3B,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpB,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;oBAC3C,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACjG,SAAS;YACX,CAAC;YACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACxG,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;YACvE,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,kBAAkB,KAAK,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1F,SAAS;YACX,CAAC;YACD,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC;YACrD,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5K,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACjB,MAAM,EAAE,OAAO;oBACf,KAAK,EAAE,GAAG,gBAAgB,WAAW,MAAM,CAAC,CAAC,CAAC,OAAO,UAAU,YAAY,MAAM,CAAC,CAAC,CAAC,OAAO,WAAW,uBAAuB,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE;iBACxJ,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3H,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9G,MAAM,IAAI,GAAG,OAAO,CAAC;gBACnB,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE;aAC/B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC7F,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;gBACf,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBAChF,SAAS;YACX,CAAC;YACD,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACtF,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;gBACpE,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;oBACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,kBAAkB,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACxF,SAAS;gBACX,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACpI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1D,SAAS;YACX,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/E,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACvC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAID,MAAM,CAAC,MAAM,eAAe,GAAG,uCAAuC,CAAC;AAEvE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAA6B,EAC7B,GAAW,EACX,MAAuD,EACvD,aAAsD,EACtD,IAAa;IAEb,MAAM,MAAM,GAAyC,EAAE,CAAC;IACxD,KAAK,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,eAAe,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAEpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAIvC,SAAS,KAAK,CAAI,GAAW,EAAE,KAAmB,EAAE,IAAsB;IACxE,IAAI,IAAI,GAA6C,IAAI,CAAC;IAC1D,OAAO;QACL,GAAG,EAAE,GAAG,EAAE;YACR,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;gBAC7C,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;gBACrC,IAAI,GAAG,KAAK,CAAC;gBACb,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;oBACf,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;wBACnB,IAAI,GAAG,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,IAAI,GAAG,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,KAAK,GAAiB,IAAI,CAAC,GAAG;IACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAW,CAAC;IACpC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC1E,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE;QAC1B,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE;QAChC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;YAC9B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,QAAQ,EAAE,CAAC,IAAa,EAAE,EAAE;oBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,OAAO,KAAK,CAAC;oBACf,CAAC;oBACD,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC/D,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACxB,MAAM,CAAC,IAAI,CACT,CAAC,IAAI,EAAE,EAAE;wBACP,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;4BAClB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBACrB,CAAC;oBACH,CAAC,EACD,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CACzB,CAAC;oBACF,OAAO,MAAM,CAAC;gBAChB,CAAC;aACF,CAAC;QACN,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intent-engine/solver",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.29",
|
|
4
4
|
"description": "A solver that fills intent engine intents at a profit",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@solana-program/system": "0.14.1",
|
|
34
34
|
"@solana-program/token": "0.16.1",
|
|
35
35
|
"@solana/kit": "8.4.0",
|
|
36
|
-
"@intent-engine/core": "0.1.
|
|
36
|
+
"@intent-engine/core": "0.1.29"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "26.6.4",
|