@black-market/sdk 0.6.4 → 0.7.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/README.md +28 -4
- package/dist/addresses.d.ts +1 -1
- package/dist/addresses.js +4 -4
- package/dist/launch.d.ts +61 -0
- package/dist/launch.d.ts.map +1 -1
- package/dist/launch.js +171 -6
- package/dist/launch.js.map +1 -1
- package/dist/lifecycle/abi.d.ts +1999 -253
- package/dist/lifecycle/abi.d.ts.map +1 -1
- package/dist/lifecycle/abi.js +43 -14
- package/dist/lifecycle/abi.js.map +1 -1
- package/dist/lifecycle/allocations.d.ts +11 -0
- package/dist/lifecycle/allocations.d.ts.map +1 -0
- package/dist/lifecycle/allocations.js +36 -0
- package/dist/lifecycle/allocations.js.map +1 -0
- package/dist/lifecycle/calibration.d.ts +19 -0
- package/dist/lifecycle/calibration.d.ts.map +1 -0
- package/dist/lifecycle/calibration.js +65 -0
- package/dist/lifecycle/calibration.js.map +1 -0
- package/dist/lifecycle/deployments/fixed-fee-pool-hook-v1-20261008.d.ts +11 -0
- package/dist/lifecycle/deployments/fixed-fee-pool-hook-v1-20261008.d.ts.map +1 -0
- package/dist/lifecycle/deployments/fixed-fee-pool-hook-v1-20261008.js +10 -0
- package/dist/lifecycle/deployments/fixed-fee-pool-hook-v1-20261008.js.map +1 -0
- package/dist/lifecycle/index.d.ts +4 -2
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +4 -2
- package/dist/lifecycle/index.js.map +1 -1
- package/dist/lifecycle/markets.d.ts +170 -6
- package/dist/lifecycle/markets.d.ts.map +1 -1
- package/dist/lifecycle/markets.js +164 -37
- package/dist/lifecycle/markets.js.map +1 -1
- package/dist/lifecycle/planner.d.ts +7 -14
- package/dist/lifecycle/planner.d.ts.map +1 -1
- package/dist/lifecycle/planner.js +354 -400
- package/dist/lifecycle/planner.js.map +1 -1
- package/dist/lifecycle/presets.d.ts +62 -0
- package/dist/lifecycle/presets.d.ts.map +1 -0
- package/dist/lifecycle/presets.js +195 -0
- package/dist/lifecycle/presets.js.map +1 -0
- package/dist/lifecycle/progress.d.ts +5 -1
- package/dist/lifecycle/progress.d.ts.map +1 -1
- package/dist/lifecycle/progress.js +212 -53
- package/dist/lifecycle/progress.js.map +1 -1
- package/dist/lifecycle/rpc.d.ts +13 -2
- package/dist/lifecycle/rpc.d.ts.map +1 -1
- package/dist/lifecycle/rpc.js +92 -8
- package/dist/lifecycle/rpc.js.map +1 -1
- package/dist/lifecycle/simulation.d.ts +14 -4
- package/dist/lifecycle/simulation.d.ts.map +1 -1
- package/dist/lifecycle/simulation.js +383 -116
- package/dist/lifecycle/simulation.js.map +1 -1
- package/dist/lifecycle/transactions.d.ts +6 -0
- package/dist/lifecycle/transactions.d.ts.map +1 -0
- package/dist/lifecycle/transactions.js +40 -0
- package/dist/lifecycle/transactions.js.map +1 -0
- package/dist/lifecycle/types.d.ts +39 -2
- package/dist/lifecycle/types.d.ts.map +1 -1
- package/dist/lifecycle/types.js.map +1 -1
- package/docs/launch-lifecycle.md +228 -54
- package/examples/README.md +108 -18
- package/examples/generate-lifecycle-commitment-fixture.mjs +3 -1
- package/examples/launch-example-support.mjs +1 -1
- package/examples/launch-example.mjs +73 -26
- package/examples/launch-lifecycle-smoke.mjs +13 -11
- package/examples/launch.mjs +12 -11
- package/examples/quickstart.mjs +1 -1
- package/package.json +1 -1
- package/src/addresses.ts +4 -4
- package/src/launch.ts +213 -6
- package/src/lifecycle/abi.ts +43 -14
- package/src/lifecycle/allocations.ts +35 -0
- package/src/lifecycle/calibration.ts +59 -0
- package/src/lifecycle/deployments/fixed-fee-pool-hook-v1-20261008.ts +11 -0
- package/src/lifecycle/index.ts +4 -2
- package/src/lifecycle/markets.ts +169 -35
- package/src/lifecycle/planner.ts +326 -330
- package/src/lifecycle/presets.ts +243 -0
- package/src/lifecycle/progress.ts +193 -50
- package/src/lifecycle/rpc.ts +97 -9
- package/src/lifecycle/simulation.ts +370 -109
- package/src/lifecycle/transactions.ts +34 -0
- package/src/lifecycle/types.ts +35 -3
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import type { Address, Hex } from "viem";
|
|
2
|
+
import type {
|
|
3
|
+
AdapterRegistrationV1, LaunchEnvelopeV2, ProfileRegistrationV1, ProfileTopologyV1,
|
|
4
|
+
} from "./schema.js";
|
|
5
|
+
import type { LifecycleProfile } from "./types.js";
|
|
6
|
+
import { fixedFeePoolHookV1CreationCode } from "./deployments/fixed-fee-pool-hook-v1-20261008.js";
|
|
7
|
+
|
|
8
|
+
export enum KnownLifecycleProfile {
|
|
9
|
+
Abyss0 = "abyss-0",
|
|
10
|
+
Abyss1 = "abyss-1",
|
|
11
|
+
Abyss2 = "abyss-2",
|
|
12
|
+
Abyss3 = "abyss-3",
|
|
13
|
+
V4FixedFeePool = "v4-fixed-fee-pool",
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export enum KnownLifecycleHook {
|
|
17
|
+
FixedFeePoolV1 = "fixed-fee-pool-v1",
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Object.freeze(KnownLifecycleProfile);
|
|
21
|
+
Object.freeze(KnownLifecycleHook);
|
|
22
|
+
|
|
23
|
+
/** Frozen construction metadata, not a current eligibility or execution observation. */
|
|
24
|
+
export type LifecycleProfilePreset = {
|
|
25
|
+
readonly key: KnownLifecycleProfile;
|
|
26
|
+
/** Support applies only to the frozen profile's exact version, schema and constructor graph. */
|
|
27
|
+
readonly supported: boolean;
|
|
28
|
+
readonly unavailableReason?: string;
|
|
29
|
+
readonly profile: Omit<LifecycleProfile, "admitted" | "reason">;
|
|
30
|
+
readonly boundHook?: {
|
|
31
|
+
/** Constructor creation code only; append the exact per-market parameters. */
|
|
32
|
+
readonly creationCode: Hex;
|
|
33
|
+
readonly deployer: Address;
|
|
34
|
+
readonly poolManager: Address;
|
|
35
|
+
readonly oracleFactory: Address;
|
|
36
|
+
readonly liquidityLocker: Address;
|
|
37
|
+
readonly registrar: Address;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/** A versioned release snapshot. Enabled fields describe that release, not live admission. */
|
|
42
|
+
export type LifecycleDeploymentPreset = {
|
|
43
|
+
readonly chainId: bigint;
|
|
44
|
+
readonly orchestrator: Address;
|
|
45
|
+
readonly registry: Address;
|
|
46
|
+
readonly tokenFactory: Address;
|
|
47
|
+
readonly tokenFactoryCodeHash: Hex;
|
|
48
|
+
readonly fundingEscrow: Address;
|
|
49
|
+
readonly profiles: readonly LifecycleProfilePreset[];
|
|
50
|
+
readonly provenance: {
|
|
51
|
+
readonly sourceCommit: string;
|
|
52
|
+
/** Final mined deployment/admission receipt block. */
|
|
53
|
+
readonly deploymentBlock: bigint;
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
type KnownLifecycleDeploymentIdentity = { chainId: number | bigint; orchestrator: Address };
|
|
58
|
+
|
|
59
|
+
const zeroAddress: Address = "0x0000000000000000000000000000000000000000";
|
|
60
|
+
const zeroHash: Hex = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
61
|
+
|
|
62
|
+
// pool-launch-v1/20261008T000141Z-e174ce6: canonical manifest.json/readback.json,
|
|
63
|
+
// deployment.json, admission.json and release-owned config6/V2 artifact.
|
|
64
|
+
const abyssAdapter = Object.freeze({
|
|
65
|
+
implementation: "0x3ef760fcbbD618Ab6cB7E308e7fB39C93b9deFD0",
|
|
66
|
+
codeHash: "0xf4f6afdb5ae50e96b3d1cee8a92aeb67d8f007597eb5586fb90e08fec3bb3067",
|
|
67
|
+
capabilities: 123n,
|
|
68
|
+
configVersion: 1,
|
|
69
|
+
enabled: true,
|
|
70
|
+
} satisfies AdapterRegistrationV1);
|
|
71
|
+
|
|
72
|
+
const abyssRegistration = Object.freeze({
|
|
73
|
+
adapterId: "0xd79e93fc12ead15de269a5b98a9e0d2205ab77422d0cb480500370babc5687da",
|
|
74
|
+
configSchema: "0x324324a00058a3bfd5fbeeec8adabfaf4c592430fe78275197a82f291e1e33d7",
|
|
75
|
+
dependencyDigest: "0xd602187529cf0f81122ae34d9aee89b65ec308d8d836ee24cba407e20e702f62",
|
|
76
|
+
venue: "0xe7feF2BC860B25bbdEB6F6AB96d88bAAa77ddad7",
|
|
77
|
+
factory: "0xe7feF2BC860B25bbdEB6F6AB96d88bAAa77ddad7",
|
|
78
|
+
hook: zeroAddress,
|
|
79
|
+
capabilities: 123n,
|
|
80
|
+
enabled: true,
|
|
81
|
+
} satisfies ProfileRegistrationV1);
|
|
82
|
+
|
|
83
|
+
const abyssTopology = Object.freeze({
|
|
84
|
+
hookTopology: 0,
|
|
85
|
+
configVersion: 1,
|
|
86
|
+
hookDeployer: zeroAddress,
|
|
87
|
+
hookCreationCodeHash: zeroHash,
|
|
88
|
+
} satisfies ProfileTopologyV1);
|
|
89
|
+
|
|
90
|
+
function abyssPreset(key: KnownLifecycleProfile, id: Hex): LifecycleProfilePreset {
|
|
91
|
+
// Abyss economic version 0 has no reviewed V4 envelope or developer-fee terms.
|
|
92
|
+
return Object.freeze({
|
|
93
|
+
key,
|
|
94
|
+
supported: true,
|
|
95
|
+
profile: Object.freeze({ id, registration: abyssRegistration, adapter: abyssAdapter, topology: abyssTopology, venueKind: "abyss" }),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const fixedFeePoolEnvelope = Object.freeze({
|
|
100
|
+
artifactDigest: "0x11c4c7b1f265ed708b7d53ab828c89d237ca821333daa808f1913986c6f8f1ab",
|
|
101
|
+
reviewManifestDigest: "0x8fde077c6cfd39da6c8f16c56f35918c9979a9712ae86f1a43b94caf9487d9a4",
|
|
102
|
+
configBoundsDigest: "0x72e0b2d542556d472a47f9c38b2c91079c72793af847dee77933f0eca203129d",
|
|
103
|
+
termsDigest: "0xf2503b91eeec87f95c4f5e47df517a143422c766528c403ea44bdbd9b40df10e",
|
|
104
|
+
topology: 2,
|
|
105
|
+
configVersion: 6,
|
|
106
|
+
economicVersion: 3,
|
|
107
|
+
capabilities: 123n,
|
|
108
|
+
flags: 0n,
|
|
109
|
+
callbackFlags: 0x1afc,
|
|
110
|
+
callbackMask: 0x3fff,
|
|
111
|
+
protocolTreasury: "0x961981916AB6575C3af3eeCecbf6A3b7Fad7C9e1",
|
|
112
|
+
protocolFeeDenominator: 6,
|
|
113
|
+
beneficiary: "0x7cb44b8693b3C350A2BcD4b681aF85365aa27783",
|
|
114
|
+
maximumDeveloperFeeBps: 0,
|
|
115
|
+
bounds: Object.freeze({
|
|
116
|
+
minimumTickSpacing: 1,
|
|
117
|
+
maximumTickSpacing: 32767,
|
|
118
|
+
maximumPositions: 32,
|
|
119
|
+
maximumOracleCardinality: 4096,
|
|
120
|
+
feeModeFlags: 3,
|
|
121
|
+
}),
|
|
122
|
+
graph: Object.freeze({
|
|
123
|
+
manager: "0x8366a39CC670B4001A1121B8F6A443A643e40951",
|
|
124
|
+
hookRoot: zeroAddress,
|
|
125
|
+
oracleFactory: "0xe7feF2BC860B25bbdEB6F6AB96d88bAAa77ddad7",
|
|
126
|
+
locker: "0x28B84e5B9E905493E24986C91Ef109C752505B58",
|
|
127
|
+
collectorFactory: "0x43b394fE6865EE6797c60FCCcd33D7D765214b52",
|
|
128
|
+
collectorDeployer: "0x1d9Aa696568F6D4b96914C7e35DEF33781826A48",
|
|
129
|
+
hookDeployer: "0x1Df787Cc099B047A606059Ac80A8296779266f9e",
|
|
130
|
+
coreCodeHash: "0x9fb8f46c3b980b9db25dfdb487a69a308a86be145860269b4036a4e74480787b",
|
|
131
|
+
managerCodeHash: "0xbd3881180b547f5fe817545743cfb4343e96b1bc6640dcd70c106b0066e95626",
|
|
132
|
+
hookRuntimeCodeHash: zeroHash,
|
|
133
|
+
oracleFactoryCodeHash: "0x974fb5c72d91ccb99f1eb4679a5d4432c82bbaa0906b1c2917ec4da3499b7b98",
|
|
134
|
+
lockerCodeHash: "0x0799a2fd8b8d4e80b796a46b7505ee50dbfe80b1c7aa6a48b7006673d1d55be1",
|
|
135
|
+
collectorFactoryCodeHash: "0x5f82ad8883286012bbeffea84eec6fca9be9d2331b6c94c0137a4f4c6dacc2e2",
|
|
136
|
+
collectorDeployerCodeHash: "0xdbe8146da63c4445974b23b983a6ff89271f879117bc366ded7519458d1dc60a",
|
|
137
|
+
hookDeployerCodeHash: "0x649bf5e7306ca628986f71905becf8706f9bdd780245bebc641ed5cfa071b3bc",
|
|
138
|
+
hookCreationCodeHash: "0x11c4c7b1f265ed708b7d53ab828c89d237ca821333daa808f1913986c6f8f1ab",
|
|
139
|
+
codeChunk0: "0x67E8B145AeB0C01F7F3adf512a5337FB2AD8ccc2",
|
|
140
|
+
codeChunk0Hash: "0xe5f56287276954b21f4211cabf2d9c251aae68836c5fa86ce68091ffccdee26b",
|
|
141
|
+
codeChunk1: "0x0f674bD3F587c943fd165A6D2E06b95929dA40a2",
|
|
142
|
+
codeChunk1Hash: "0x76efd61e1a109a85140ce3473c43694a83f490eaac54d18673c17872a5262a47",
|
|
143
|
+
sharedHookSalt: zeroHash,
|
|
144
|
+
}),
|
|
145
|
+
} satisfies LaunchEnvelopeV2);
|
|
146
|
+
|
|
147
|
+
const fixedFeePoolAdapter = Object.freeze({
|
|
148
|
+
implementation: "0xb334b44509a5237a39cE364c159913F14b6D1186",
|
|
149
|
+
codeHash: "0xa7e90d9d6a91344611dec01a10cf3876108d14fbfe8b950a39d1523cc31f893f",
|
|
150
|
+
capabilities: 123n,
|
|
151
|
+
configVersion: 6,
|
|
152
|
+
enabled: true,
|
|
153
|
+
} satisfies AdapterRegistrationV1);
|
|
154
|
+
|
|
155
|
+
const fixedFeePoolPreset: LifecycleProfilePreset = Object.freeze({
|
|
156
|
+
key: KnownLifecycleProfile.V4FixedFeePool,
|
|
157
|
+
supported: true,
|
|
158
|
+
profile: Object.freeze({
|
|
159
|
+
id: "0xf18140c2fb66a4202a0f22d62d6288bf7976db108de5381e5497aaed332a06f8",
|
|
160
|
+
registration: Object.freeze({
|
|
161
|
+
adapterId: "0xe10c1f6655db6e06817384a2283c2e181a7d9cf21c5bee04fc6f9f073ab24587",
|
|
162
|
+
configSchema: "0x51c5ca14c40012f78425cd1afb1ea77980da3fed0490a00911a8a4ed34792045",
|
|
163
|
+
dependencyDigest: "0x2576d8944ef64f3c2eae30229b118597c4dc277dd5b1b24d00413220c7cfc5a8",
|
|
164
|
+
venue: fixedFeePoolEnvelope.graph.manager,
|
|
165
|
+
factory: zeroAddress,
|
|
166
|
+
hook: zeroAddress,
|
|
167
|
+
capabilities: 123n,
|
|
168
|
+
enabled: true,
|
|
169
|
+
}),
|
|
170
|
+
adapter: fixedFeePoolAdapter,
|
|
171
|
+
topology: Object.freeze({
|
|
172
|
+
hookTopology: 2,
|
|
173
|
+
configVersion: 6,
|
|
174
|
+
hookDeployer: fixedFeePoolEnvelope.graph.hookDeployer,
|
|
175
|
+
hookCreationCodeHash: fixedFeePoolEnvelope.graph.hookCreationCodeHash,
|
|
176
|
+
}),
|
|
177
|
+
venueKind: "uniswap-v4",
|
|
178
|
+
envelope: fixedFeePoolEnvelope,
|
|
179
|
+
developerTerms: Object.freeze({
|
|
180
|
+
adapter: fixedFeePoolAdapter.implementation,
|
|
181
|
+
beneficiary: fixedFeePoolEnvelope.beneficiary,
|
|
182
|
+
maximumDeveloperFeeBps: fixedFeePoolEnvelope.maximumDeveloperFeeBps,
|
|
183
|
+
termsDigest: fixedFeePoolEnvelope.termsDigest,
|
|
184
|
+
enabled: true,
|
|
185
|
+
}),
|
|
186
|
+
protocolMaximumDeveloperFeeBps: 2400,
|
|
187
|
+
}),
|
|
188
|
+
boundHook: Object.freeze({
|
|
189
|
+
creationCode: fixedFeePoolHookV1CreationCode,
|
|
190
|
+
deployer: fixedFeePoolEnvelope.graph.hookDeployer,
|
|
191
|
+
poolManager: fixedFeePoolEnvelope.graph.manager,
|
|
192
|
+
oracleFactory: fixedFeePoolEnvelope.graph.oracleFactory,
|
|
193
|
+
liquidityLocker: fixedFeePoolEnvelope.graph.locker,
|
|
194
|
+
registrar: fixedFeePoolAdapter.implementation,
|
|
195
|
+
}),
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
const knownDeployment: LifecycleDeploymentPreset = Object.freeze({
|
|
199
|
+
chainId: 4663n,
|
|
200
|
+
orchestrator: "0x91560876033d568d25CDe98C78c33ff8FC43962c",
|
|
201
|
+
registry: "0xB2B0f9F36617810D67b8fC175153Aa10024C1358",
|
|
202
|
+
tokenFactory: "0xd3cE64E49224a9a96075633f63761FE6BE22FE30",
|
|
203
|
+
tokenFactoryCodeHash: "0x6bbbdfe93ec615b7f1e70bac5e69aa890eba5e5f248f25e7022e866b4064d541",
|
|
204
|
+
fundingEscrow: "0x7bc77946CeF52A178583FCe1EEB7751983cEC703",
|
|
205
|
+
profiles: Object.freeze([
|
|
206
|
+
abyssPreset(KnownLifecycleProfile.Abyss0, "0x49b2ed65e2021247951193dd2c671b40867b6e064af65a2d98a70f57556412fc"),
|
|
207
|
+
abyssPreset(KnownLifecycleProfile.Abyss1, "0x2f6f494f8810473b3c0ac6b03b1a1353d067ffa5c86d3cba16b04c6b61f73c05"),
|
|
208
|
+
abyssPreset(KnownLifecycleProfile.Abyss2, "0x49b3bd30fe302526d7799f2ef15f3b2b261b5c44e075aa48b98c6b37148b7d59"),
|
|
209
|
+
abyssPreset(KnownLifecycleProfile.Abyss3, "0xe1bd95e086469e6afd9791ccc957e4d22b735012cb3db4a747f703673c62c306"),
|
|
210
|
+
fixedFeePoolPreset,
|
|
211
|
+
]),
|
|
212
|
+
provenance: Object.freeze({ sourceCommit: "e174ce695c7010f50ca9211b07b9f178c990beac", deploymentBlock: 82880546n }),
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
const knownChainNumber = Number(knownDeployment.chainId);
|
|
216
|
+
const knownCore = knownDeployment.orchestrator.toLowerCase();
|
|
217
|
+
const noProfiles: readonly LifecycleProfilePreset[] = Object.freeze([]);
|
|
218
|
+
|
|
219
|
+
/** Local lookup only. Unknown deployments remain available to explicit live discovery. */
|
|
220
|
+
export function getKnownLifecycleDeployment(options: KnownLifecycleDeploymentIdentity): LifecycleDeploymentPreset | undefined {
|
|
221
|
+
if ((options.chainId !== knownDeployment.chainId && options.chainId !== knownChainNumber) ||
|
|
222
|
+
options.orchestrator.toLowerCase() !== knownCore) return undefined;
|
|
223
|
+
return knownDeployment;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/** Resolve a documented enum key or release-owned ID, without replacement metadata. */
|
|
227
|
+
export function getKnownLifecycleProfile(options: KnownLifecycleDeploymentIdentity &
|
|
228
|
+
({ key: KnownLifecycleProfile; profileId?: never } | { profileId: Hex; key?: never })): LifecycleProfilePreset | undefined {
|
|
229
|
+
const deployment = getKnownLifecycleDeployment(options);
|
|
230
|
+
if (deployment === undefined) return undefined;
|
|
231
|
+
if (options.key !== undefined) {
|
|
232
|
+
for (const preset of deployment.profiles) if (preset.key === options.key) return preset;
|
|
233
|
+
} else {
|
|
234
|
+
const id = options.profileId.toLowerCase();
|
|
235
|
+
for (const preset of deployment.profiles) if (preset.profile.id === id) return preset;
|
|
236
|
+
}
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/** Stable, frozen release order: Abyss variants 0 through 3, then the pool-bound V4 profile. */
|
|
241
|
+
export function listKnownLifecycleProfiles(options: KnownLifecycleDeploymentIdentity): readonly LifecycleProfilePreset[] {
|
|
242
|
+
return getKnownLifecycleDeployment(options)?.profiles ?? noProfiles;
|
|
243
|
+
}
|