@black-market/sdk 0.8.1 → 0.9.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 +76 -94
- package/assets/abyss-ziggurat-v3-pale-text-1500x500.png +0 -0
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.d.ts +67 -0
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.d.ts.map +1 -0
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.js +69 -0
- package/dist/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.js.map +1 -0
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.d.ts +67 -0
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.d.ts.map +1 -0
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.js +69 -0
- package/dist/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.js.map +1 -0
- package/dist/lifecycle/hmm.d.ts +125 -0
- package/dist/lifecycle/hmm.d.ts.map +1 -0
- package/dist/lifecycle/hmm.js +91 -0
- package/dist/lifecycle/hmm.js.map +1 -0
- package/dist/lifecycle/index.d.ts +1 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +1 -0
- package/dist/lifecycle/index.js.map +1 -1
- package/dist/lifecycle/markets.d.ts +3 -0
- package/dist/lifecycle/markets.d.ts.map +1 -1
- package/dist/lifecycle/markets.js +24 -1
- package/dist/lifecycle/markets.js.map +1 -1
- package/dist/lifecycle/presets.d.ts +7 -3
- package/dist/lifecycle/presets.d.ts.map +1 -1
- package/dist/lifecycle/presets.js +27 -1
- package/dist/lifecycle/presets.js.map +1 -1
- package/docs/launch-lifecycle.md +67 -0
- package/examples/README.md +5 -1
- package/examples/hmm-launch-config.ts +29 -0
- package/package.json +1 -1
- package/src/lifecycle/deployments/hmm-dynamic-pool-hook-v1-20261011.ts +71 -0
- package/src/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.ts +71 -0
- package/src/lifecycle/hmm.ts +99 -0
- package/src/lifecycle/index.ts +1 -0
- package/src/lifecycle/markets.ts +22 -1
- package/src/lifecycle/presets.ts +29 -1
- package/assets/abyss-social.webp +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// Black Market main 1ca9881: pool-hook-template-v1/20261011T214314Z-hmm-fixed.
|
|
2
|
+
// Generated by scripts/generate-hmm-presets.mjs from admission bytes and hash-checked live storage children.
|
|
3
|
+
export const hmmFixedEnvelope = Object.freeze({
|
|
4
|
+
artifactDigest: "0x699b5108d783395b1a88a6c92cc135ce80a45d190266922942d05ddf388ae1ac",
|
|
5
|
+
reviewManifestDigest: "0x77b7f0d34c662e1c1f25d6b2161a6bba37fcb61edefd13d0ee0bc84a7372bf97",
|
|
6
|
+
configBoundsDigest: "0x72e0b2d542556d472a47f9c38b2c91079c72793af847dee77933f0eca203129d",
|
|
7
|
+
termsDigest: "0x27373dbb7f9ebdfafb4cfbf6257131eda0b23fe47fd6e95a020e6729976e2e03",
|
|
8
|
+
topology: 2,
|
|
9
|
+
configVersion: 6,
|
|
10
|
+
economicVersion: 3,
|
|
11
|
+
capabilities: 123n,
|
|
12
|
+
flags: 0n,
|
|
13
|
+
callbackFlags: 6908,
|
|
14
|
+
callbackMask: 16383,
|
|
15
|
+
protocolTreasury: "0x961981916AB6575C3af3eeCecbf6A3b7Fad7C9e1",
|
|
16
|
+
protocolFeeDenominator: 6,
|
|
17
|
+
beneficiary: "0x7cb44b8693b3C350A2BcD4b681aF85365aa27783",
|
|
18
|
+
maximumDeveloperFeeBps: 0,
|
|
19
|
+
bounds: Object.freeze({
|
|
20
|
+
minimumTickSpacing: 1,
|
|
21
|
+
maximumTickSpacing: 32767,
|
|
22
|
+
maximumPositions: 32,
|
|
23
|
+
maximumOracleCardinality: 4096,
|
|
24
|
+
feeModeFlags: 3,
|
|
25
|
+
}),
|
|
26
|
+
graph: Object.freeze({
|
|
27
|
+
manager: "0x8366a39CC670B4001A1121B8F6A443A643e40951",
|
|
28
|
+
hookRoot: "0x0000000000000000000000000000000000000000",
|
|
29
|
+
oracleFactory: "0xe7feF2BC860B25bbdEB6F6AB96d88bAAa77ddad7",
|
|
30
|
+
locker: "0x30ba05aB5E0A12569Bd6D2A481F3efd1aE6544FA",
|
|
31
|
+
collectorFactory: "0x3802dd3035C592FE0a13b00eB93aa225f323345A",
|
|
32
|
+
collectorDeployer: "0x29DB95f6ddd29D0CFf6481fb2eFd96C26Cbe8e51",
|
|
33
|
+
hookDeployer: "0xad3bBE3d921C5B9A5310550EAc2f24938C53a9c7",
|
|
34
|
+
coreCodeHash: "0x9fb8f46c3b980b9db25dfdb487a69a308a86be145860269b4036a4e74480787b",
|
|
35
|
+
managerCodeHash: "0xbd3881180b547f5fe817545743cfb4343e96b1bc6640dcd70c106b0066e95626",
|
|
36
|
+
hookRuntimeCodeHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
37
|
+
oracleFactoryCodeHash: "0x974fb5c72d91ccb99f1eb4679a5d4432c82bbaa0906b1c2917ec4da3499b7b98",
|
|
38
|
+
lockerCodeHash: "0xf8f7ad4ca06f9a2c7e9296ea9c68b00297f16a9a8309aa3f74d63ff66fb6aac5",
|
|
39
|
+
collectorFactoryCodeHash: "0x81694220f02ab66fb12815eee2ccf4d75dad10968d79a29cfc6c8e21cf74ed6b",
|
|
40
|
+
collectorDeployerCodeHash: "0xa7728eb517ca3826a4f939fb61c7739fe22ab66d86aa61d6224362242764e204",
|
|
41
|
+
hookDeployerCodeHash: "0x8534539c433244bd9015a53b34eee99b2df2b13123408e2a26bd63e7f54b6a1e",
|
|
42
|
+
hookCreationCodeHash: "0x699b5108d783395b1a88a6c92cc135ce80a45d190266922942d05ddf388ae1ac",
|
|
43
|
+
codeChunk0: "0xC187971CC76C2378078D7D3BD97D2f429D6cd52b",
|
|
44
|
+
codeChunk0Hash: "0xa69d8927c316f7d0bb54055bb79572bbd1902de61be8f76be12252113090cbca",
|
|
45
|
+
codeChunk1: "0x0000000000000000000000000000000000000000",
|
|
46
|
+
codeChunk1Hash: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
47
|
+
sharedHookSalt: "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
48
|
+
}),
|
|
49
|
+
});
|
|
50
|
+
export const hmmFixedAdapter = Object.freeze({
|
|
51
|
+
implementation: "0xb755Eb31B62ABA95bfeB09f87956BB766ACEE69C",
|
|
52
|
+
codeHash: "0x590f76629def4711ecd0a48bbd50dd78fc95f75247e18ca08f3b1720c9205c35",
|
|
53
|
+
capabilities: 123n,
|
|
54
|
+
configVersion: 6,
|
|
55
|
+
enabled: true,
|
|
56
|
+
});
|
|
57
|
+
export const hmmFixedRegistration = Object.freeze({
|
|
58
|
+
adapterId: "0xb13c8134a4c8af50976ca7920a93f2428d1c288a62c8787ce0adbc503c7b6dba",
|
|
59
|
+
configSchema: "0x51c5ca14c40012f78425cd1afb1ea77980da3fed0490a00911a8a4ed34792045",
|
|
60
|
+
dependencyDigest: "0xc827c83120f0eeb870bf6932420db1a4f3558a2f6548ce2c5529913106cda38f",
|
|
61
|
+
venue: "0x8366a39CC670B4001A1121B8F6A443A643e40951",
|
|
62
|
+
factory: "0x0000000000000000000000000000000000000000",
|
|
63
|
+
hook: "0x0000000000000000000000000000000000000000",
|
|
64
|
+
capabilities: 123n,
|
|
65
|
+
enabled: true,
|
|
66
|
+
});
|
|
67
|
+
// 22876 bytes; keccak256 0x699b5108d783395b1a88a6c92cc135ce80a45d190266922942d05ddf388ae1ac; append 640-byte V2 constructor.
|
|
68
|
+
export const hmmFixedCreationCode = "0x610240604052348015610010575f5ffd5b5060405161595c38038061595c83398101604081905261002f91610b66565b8061003981610408565b611afc613fff30161461005f57604051632a96f9e160e21b815260040160405180910390fd5b80516001600160a01b039081166080908152602080840151831660a0908152604080860151851660c0526060860151851660e0529285015184166101005284015190921661012052516100b491839101610ceb565b60408051808303601f1901815291905280516020909101206101609081526102408201516101809081526101208301516001600160a01b039081166101a05261026084015163ffffffff166101c052908301519183015160189290921b66ffffffff0000001662ffffff909216919091176101e05260a082015160c08301519082169116105f81610149578260a0015161014f565b8260c001515b90505f82610161578360c00151610167565b8360a001515b6001600160a01b038084166102008190529082166102208190526040805160a081018252928352602083019190915260e087015162ffffff169082015261010086015160020b60608201523060808201529091506101c68160a0902090565b6101405280515f80546001600160a01b03199081166001600160a01b03938416178255602080850151600180546040808901516060808b0151958a166001600160b81b031990941693909317600160a01b62ffffff928316021762ffffff60b81b1916600160b81b91909516029390931782556080808901516002805490971690891617909555825161012081018452958652938b015186169285019290925260c08a0151909416938301939093526101a088015191929083019160ff169081111561029457610294610e90565b60018111156102a5576102a5610e90565b815261014087015162ffffff166020808301919091526101c088015160ff166040808401919091526101e08901516001600160a01b039081166060808601919091526102008b0151151560808601526102208b015160a0909501949094528451600380549183166001600160a01b031992831617815593860151600480549184169183169190911790559185015160058054919092169281168317825593850151929390916001600160a81b031990911617600160a01b83600181111561036e5761036e610e90565b0217905550608082015160028201805460a085015160ff16600160c01b0260ff60c01b1962ffffff909416600160a81b029390931663ffffffff60a81b199091161791909117905560c082015160038201805460e08501511515600160a01b026001600160a81b03199091166001600160a01b03909316929092179190911790556101009091015160049091015550610ec6945050505050565b80516001600160a01b03163b158061042c575060208101516001600160a01b03163b155b80610443575060408101516001600160a01b03163b155b8061045a575060608101516001600160a01b03163b155b80610471575060808101516001600160a01b03163b155b80610488575060c08101516001600160a01b03163b155b8061049e575060a08101516001600160a01b0316155b806104c257508060c001516001600160a01b03168160a001516001600160a01b0316145b806104d9575060a08101516001600160a01b031630145b806104fd575080606001516001600160a01b031681602001516001600160a01b0316145b806105205750805f01516001600160a01b031681602001516001600160a01b0316145b80610537575060208101516001600160a01b031630145b8061054e575060608101516001600160a01b031630145b80610565575060808101516001600160a01b031630145b806105885750805f01516001600160a01b031681608001516001600160a01b0316145b8061059b575060e081015162ffffff1615155b806105b15750600160020b81610100015160020b125b806105c85750610100810151617fff60029190910b135b806105ee57506401000276a36001600160a01b03168161012001516001600160a01b0316105b80610624575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168161012001516001600160a01b031610155b806106405750620f424062ffffff1681610140015162ffffff16115b8061065e575080610140015162ffffff1681610160015162ffffff16115b806106745750600160ff16816101a0015160ff16115b806106ab57506101c081015160ff16158015906106ab57506004816101c0015160ff1610806106ab5750600a816101c0015160ff16115b806106d457506101c081015160ff16158015906106d457506101e08101516001600160a01b0316155b806106ec57506101e08101516001600160a01b031630145b806107105750805f01516001600160a01b0316816101e001516001600160a01b0316145b80610735575080608001516001600160a01b0316816101e001516001600160a01b0316145b806107435750610240810151155b80610757575061026081015163ffffffff16155b8061076d5750602081610260015163ffffffff16115b1561078b5760405163c52a9bd360e01b815260040160405180910390fd5b5f816020015190505f8260800151905082606001516001600160a01b0316826001600160a01b031663f2f4eb266040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107e5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108099190610ea4565b6001600160a01b03161415806108935750825f01516001600160a01b0316826001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610863573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108879190610ea4565b6001600160a01b031614155b80610913575082604001516001600160a01b0316826001600160a01b031663c7f7fb906040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109079190610ea4565b6001600160a01b031614155b80610993575082608001516001600160a01b0316826001600160a01b031663d7b96d4e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610963573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109879190610ea4565b6001600160a01b031614155b80610a13575082602001516001600160a01b0316816001600160a01b03166316eebd1e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a079190610ea4565b6001600160a01b031614155b80610a925750825f01516001600160a01b0316816001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a62573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a869190610ea4565b6001600160a01b031614155b15610ab05760405163c52a9bd360e01b815260040160405180910390fd5b505050565b60405161028081016001600160401b0381118282101715610ae457634e487b7160e01b5f52604160045260245ffd5b60405290565b6001600160a01b0381168114610afe575f5ffd5b50565b8051610b0c81610aea565b919050565b805162ffffff81168114610b0c575f5ffd5b8051600281900b8114610b0c575f5ffd5b805163ffffffff81168114610b0c575f5ffd5b805160ff81168114610b0c575f5ffd5b80518015158114610b0c575f5ffd5b5f610280828403128015610b78575f5ffd5b50610b81610ab5565b610b8a83610b01565b8152610b9860208401610b01565b6020820152610ba960408401610b01565b6040820152610bba60608401610b01565b6060820152610bcb60808401610b01565b6080820152610bdc60a08401610b01565b60a0820152610bed60c08401610b01565b60c0820152610bfe60e08401610b11565b60e0820152610c106101008401610b23565b610100820152610c236101208401610b01565b610120820152610c366101408401610b11565b610140820152610c496101608401610b11565b610160820152610c5c6101808401610b34565b610180820152610c6f6101a08401610b47565b6101a0820152610c826101c08401610b47565b6101c0820152610c956101e08401610b01565b6101e0820152610ca86102008401610b57565b61020082015261022083810151908201526102408084015190820152610cd16102608401610b34565b6102608201529392505050565b6001600160a01b03169052565b5f61028082019050610cfe828451610cde565b6020830151610d106020840182610cde565b506040830151610d236040840182610cde565b506060830151610d366060840182610cde565b506080830151610d496080840182610cde565b5060a0830151610d5c60a0840182610cde565b5060c0830151610d6f60c0840182610cde565b5060e0830151610d8660e084018262ffffff169052565b50610100830151610d9d61010084018260020b9052565b50610120830151610db2610120840182610cde565b50610140830151610dcb61014084018262ffffff169052565b50610160830151610de461016084018262ffffff169052565b50610180830151610dfe61018084018263ffffffff169052565b506101a0830151610e156101a084018260ff169052565b506101c0830151610e2c6101c084018260ff169052565b506101e0830151610e416101e0840182610cde565b50610200830151610e5761020084018215159052565b50610220830151610220830152610240830151610240830152610260830151610e8961026084018263ffffffff169052565b5092915050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610eb4575f5ffd5b8151610ebf81610aea565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161480061115c5f395f8181611cad01528181611db30152612e6401525f8181611c6c01528181611d780152612e4301525f8181610405015281816105010152612be201525f81816104bf0152612fa301525f8181610451015261103701525f61065f01525f6103a801525f81816103200152818161081201528181610c0301528181610ea70152818161109d015281816112f6015281816116140152818161196801528181611ab001528181611d4d01528181612223015281816123a4015281816126d801528181612b6401528181612c1101528181612f3001528181612f6b015261371a01525f818161072e01528181612895015281816131e501526137fa01525f818161049801528181610bcb01528181610d8001528181610ef501528181611afc01528181611b6701528181611bd101528181611d2701528181612249015281816122ed015281816123810152612e2201525f81816106d3015281816128e401528181613234015261375201525f6105d201525f81816102920152818161079801528181610aff01528181610ffa0152818161292e0152818161301701526137d701525f81816106860152818161098701528181610a1401528181610c8101528181610e8601528181610f69015281816111270152818161126601528181611504015281816116fb015281816118a501528181611d060152818161250c0152818161259b0152818161261801528181612b8b01528181612c4901528181612e01015281816133de015281816138b601528181613a7201528181613b0101528181613b7e01528181613c4d01528181613c980152613d0501526148005ff3fe608060405234801561000f575f5ffd5b5060043610610202575f3560e01c80630268e293146102065780630581555f1461021b5780630885f7321461022e57806321d0ee701461024e578063259982e51461027a5780632b20e3971461028d57806333827438146102cc578063359b4f30146102d45780633e451d6a146102f557806342ea83e01461030857806347f8496c1461031b5780635524d54814610342578063575e24b4146103655780635955d09a146103a357806360f89f2e146103ca5780636fe7e6eb146103dd578063747a68cd146103f05780637dbeb94e14610403578063847211a6146104395780638bc801c11461044c57806391dd7346146104735780639759164a146104935780639e5fe062146104ba578063a3f4bac7146104f6578063a8691114146104ff578063aae49d7014610528578063ac4e405414610532578063ac5555aa1461053b578063b47b2fb11461054e578063b6a8b0fa14610584578063c5c51dca14610597578063c5fbb298146105ac578063c67046af146105bf578063c7f7fb90146105cd578063ca266dfe146105f4578063ce1b8e4f1461065a578063dc4c90d314610681578063e1b4af69146106a8578063e2e65ec1146106bb578063f2f4eb26146106ce578063f399150c146106f5578063f9bc70e714610716578063fc0c546a14610729578063fd5b6d5b14610750575b5f5ffd5b610219610214366004613de7565b610763565b005b6040515f81526020015b60405180910390f35b61024161023c366004613e01565b610866565b6040516102259190613e62565b61026161025c366004613f64565b61097b565b6040516001600160e01b03199091168152602001610225565b610261610288366004613f64565b610a08565b6102b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610225565b6016546102b4565b6102e76102e2366004613fe4565b610a9c565b604051908152602001610225565b6102e7610303366004614012565b610ab9565b61021961031636600461402d565b610aca565b6102e77f000000000000000000000000000000000000000000000000000000000000000081565b610355610350366004613e01565b610c5e565b6040519015158152602001610225565b61037861037336600461407c565b610c73565b604080516001600160e01b03199094168452602084019290925262ffffff1690820152606001610225565b6102e77f000000000000000000000000000000000000000000000000000000000000000081565b6102196103d83660046140d5565b610e77565b6102616103eb36600461412d565b610f5d565b6102e76103fe366004614012565b6110f4565b7f00000000000000000000000000000000000000000000000000000000000000005b60405162ffffff9091168152602001610225565b6102e7610447366004613e01565b611108565b6102b47f000000000000000000000000000000000000000000000000000000000000000081565b610486610481366004614184565b61111a565b60405161022591906141c2565b6102b47f000000000000000000000000000000000000000000000000000000000000000081565b6104e17f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610225565b6102b4613fff81565b7f000000000000000000000000000000000000000000000000000000000000000060181c6104e1565b610425620f424081565b6102b4611afc81565b610355610549366004613e01565b61123f565b61056161055c3660046141f7565b611259565b604080516001600160e01b03199093168352600f9190910b602083015201610225565b610261610592366004614277565b6114f8565b61059f6115aa565b60405161022591906142d0565b6102e76105ba366004613e01565b611655565b5f6040516102259190614312565b6102b47f000000000000000000000000000000000000000000000000000000000000000081565b610607610602366004613e01565b611665565b604051610225919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015160020b90830152608092830151169181019190915260a00190565b6102e77f000000000000000000000000000000000000000000000000000000000000000081565b6102b47f000000000000000000000000000000000000000000000000000000000000000081565b6102616106b6366004614277565b6116ef565b6102e76106c9366004613fe4565b6117a9565b6102b47f000000000000000000000000000000000000000000000000000000000000000081565b610708610703366004613de7565b6117c7565b604051610225929190614325565b610425610724366004614333565b6119d1565b6102b47f000000000000000000000000000000000000000000000000000000000000000081565b6102e761075e366004613fe4565b611a3e565b3068929eee149b4bd2126854036107815763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107d5576040516282b42960e81b815260040160405180910390fd5b6107de81611a5c565b601354156107ff576040516304c7cf6760e51b815260040160405180910390fd5b4260135561080b611a9b565b60405142907f0000000000000000000000000000000000000000000000000000000000000000907ff1bac50d2c6f6c83cb8ff6fac488b03adc5fb0cc9fae30db2077588d5d9e5fbd905f90a33868929eee149b4bd212685550565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101919091526108b782611aae565b6040805161012081018252600380546001600160a01b039081168352600454811660208401526005549081169383019390935290916060830190600160a01b900460ff16600181111561090c5761090c613e25565b600181111561091d5761091d613e25565b8152600282015462ffffff600160a81b820416602083015260ff600160c01b9091048116604083015260038301546001600160a01b0381166060840152600160a01b9004161515608082015260049091015460a09091015292915050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c4576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036109e25763ab143c065f526004601cfd5b6109eb85611a5c565b6109f58685611aed565b5063021d0ee760e41b5b95945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a51576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610a6f5763ab143c065f526004601cfd5b610a7885611a5c565b610a828685611aed565b610a8a611c3e565b5063259982e560e01b95945050505050565b5f610aa683611aae565b610aaf82611c69565b5490505b92915050565b5f610ac382611c69565b5492915050565b3068929eee149b4bd212685403610ae85763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b3c576040516282b42960e81b815260040160405180910390fd5b610b5d610b58610b51368590038501856143a3565b60a0902090565b611aae565b60125460ff1615610b8157604051630ea075bf60e21b815260040160405180910390fd5b610b8a81611d04565b610b938161200d565b610ba06020820182614012565b600380546001600160a01b0319166001600160a01b039283161790556012805460ff191660011790557f000000000000000000000000000000000000000000000000000000000000000016610bf86020830183614012565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007ffafdbdd88ac30f0aa936e576be61816ea751908540523fa81b80c4a406ad7bec60405160405180910390a43868929eee149b4bd21268555050565b5f610c6882611aae565b505060125460ff1690565b5f8080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cbe576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610cdc5763ab143c065f526004601cfd5b60155460ff1615610d005760405163558a1e0360e11b815260040160405180910390fd5b610d0987611a5c565b610d11611c3e565b60035f610d1e8a896120a6565b90505f610d2b8a8a6120d3565b90505f62ffffff831615801590610d495750610d49828c8c87612118565b15610d6757610d64610d5e8b6020013561219c565b846121d7565b90505b6040516364b3357d60e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c9666afa90610db9908f908f908790600401614500565b602060405180830381865afa158015610dd4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df8919061452b565b9050610e348c610e0b60208e018e614542565b610e15575f610e17565b825b610e2460208f018f614542565b610e2e5783612215565b5f612215565b8115610e5657610e5683838760020160189054906101000a900460ff16612402565b506315d7892d60e21b965060801b94505f9350505050955095509592505050565b610e8083611a5c565b5f610ecb7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612747565b5050600354919250506001600160a01b038481169116141580610f205750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b80610f3257506001600160a01b038116155b15610f4f5760405162820f3560e61b815260040160405180910390fd5b610f576127f9565b50505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fa6576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610fc45763ab143c065f526004601cfd5b610fd9610b58610b51368790038701876143a3565b60125460ff161580610ff25750601254610100900460ff165b8061102f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8061106c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156110895760405162820f3560e61b815260040160405180910390fd5b6012805461ff0019166101001790556040517f0000000000000000000000000000000000000000000000000000000000000000907febcc9ffea17e08841d7588f2ecd87720e1cfb444bb3b5e662c4a5005c3c94ab2905f90a250636fe7e6eb60e01b5b949350505050565b5f6110fe82611c69565b6003015492915050565b5f61111282611aae565b505060135490565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611164576040516282b42960e81b815260040160405180910390fd5b601454158061118c5750601454838360405161118192919061455b565b604051809103902014155b156111aa5760405163f7a632f560e01b815260040160405180910390fd5b5f60148190556111bc838501856143a3565b90506111cc610b588260a0902090565b601254610100900460ff166111f35760405162820f3560e61b815260040160405180910390fd5b5f611200825f01516129de565b90505f61121083602001516129de565b90508181604051602001611225929190614325565b604051602081830303815290604052935050505092915050565b5f61124982611aae565b5050601254610100900460ff1690565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112a3576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036112c15763ab143c065f526004601cfd5b60155460ff16156112e55760405163558a1e0360e11b815260040160405180910390fd5b6112ee87611a5c565b5f61131c60107f00000000000000000000000000000000000000000000000000000000000000008b8a612a77565b9050611329885f5f612215565b60035f6113368a8a6120d3565b90505f61134660208c018c614012565b6001600160a01b0316826001600160a01b0316146113705761136b60208c018c614012565b611380565b61138060408c0160208d01614012565b905062ffffff84161580159061139d575061139d828c8c86612118565b15611436575f6113b96113b38c6020013561219c565b866121d7565b90508015611434575f6113cf60208e018e614012565b6001600160a01b0316846001600160a01b0316146113f6576113f18b600f0b90565b611400565b6114008b60801d90565b90506114108260208e013561457e565b81600f0b146114325760405163161b48a960e21b815260040160405180910390fd5b505b505b5f62ffffff8516158015906114525750611452828d8d87612118565b156114d3575f61146560208e018e614012565b6001600160a01b0316836001600160a01b03161461148c576114878b600f0b90565b611496565b6114968b60801d90565b90506114ad6114a782600f0b61219c565b876121d7565b915081156114d1576114d183838760020160189054906101000a900460ff16612402565b505b6114de8c8c8c612ae5565b63b47b2fb160e01b9d909c509a5050505050505050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611541576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd21268540361155f5763ab143c065f526004601cfd5b60155460ff16156115835760405163558a1e0360e11b815260040160405180910390fd5b61158c86611a5c565b611597868686612215565b50635b54587d60e11b9695505050505050565b60125460609060ff166115bd575f6115c0565b60015b60ff166001600160401b038111156115da576115da61434d565b604051908082528060200260200182016040528015611603578160200160208202803683370190505b5060125490915060ff1615611652577f0000000000000000000000000000000000000000000000000000000000000000815f81518110611645576116456145a5565b6020026020010181815250505b90565b5f61165f82611aae565b5f610ab3565b6040805160a0810182525f8082526020820181905291810182905260608101829052608081019190915261169882611aae565b50506040805160a0810182525f546001600160a01b039081168252600154808216602084015262ffffff600160a01b82041693830193909352600160b81b909204600290810b606083015254909116608082015290565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611738576040516282b42960e81b815260040160405180910390fd5b60155460ff161561175c5760405163558a1e0360e11b815260040160405180910390fd5b3068929eee149b4bd21268540361177a5763ab143c065f526004601cfd5b61178386611a5c565b61178e865f5f612215565b611796612b04565b5063e1b4af6960e01b9695505050505050565b5f6117b383611aae565b6117bc82611c69565b600101549392505050565b5f5f3068929eee149b4bd2126854036117e75763ab143c065f526004601cfd5b3068929eee149b4bd212685560155460ff16156118175760405163558a1e0360e11b815260040160405180910390fd5b61182083611a5c565b6003546001600160a01b0316331461184a576040516282b42960e81b815260040160405180910390fd5b60085415158061185b5750600c5415155b1561195c575f8360405160200161187291906145b9565b60408051601f1981840301815290829052805160208201206014556348c8949160e01b825291505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906348c89491906118da9085906004016141c2565b5f604051808303815f875af11580156118f5573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261191c91908101906145c7565b601454909150156119405760405163f7a632f560e01b815260040160405180910390fd5b808060200190518101906119549190614659565b909450925050505b336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f4a93be8d0a356d70b54fdf016f78a2ed8b8a3c420952848eb4f4b2c4546405b684846040516119b8929190614325565b60405180910390a33868929eee149b4bd2126855915091565b5f3068929eee149b4bd2126854036119f05763ab143c065f526004601cfd5b601254610100900460ff16611a175760405162820f3560e61b815260040160405180910390fd5b611a1f6127f9565b5f611a2983612b15565b509050611a3581612cf9565b9150505b919050565b5f611a4883611aae565b611a5182611c69565b600201549392505050565b611a71610b58610b51368490038401846143a3565b601254610100900460ff16611a985760405162820f3560e61b815260040160405180910390fd5b50565b611aac632520a12d60e11b5f612d61565b565b7f00000000000000000000000000000000000000000000000000000000000000008114611a985760405162820f3560e61b815260040160405180910390fd5b60155460ff168015611b3e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580611b3e5750604081013515155b15611b5c5760405163558a1e0360e11b815260040160405180910390fd5b6013545f03611bbb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614611bb757604051637cd5a0ad60e01b815260040160405180910390fd5b5050565b600654600160a01b900460ff168015611c0657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b8015611c20575060155460ff1680611c2057506016548214155b15611bb757604051630af9fb3360e21b815260040160405180910390fd5b601554610100900460ff1615611c5057565b611c586127f9565b6015805461ff001916610100179055565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611cab57506008919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603611cec5750600c919050565b60405162820f3560e61b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f611d71837f0000000000000000000000000000000000000000000000000000000000000000612747565b50505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b5f1480611dd657506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b155b80611de957506001600160a01b03811615155b80611e1557506001600160a01b038216611e096040860160208701614012565b6001600160a01b031614155b80611e4357506005546001600160a01b0316611e376060860160408701614012565b6001600160a01b031614155b80611e8b5750600554600160a01b900460ff166001811115611e6757611e67613e25565b611e77608086016060870161467b565b6001811115611e8857611e88613e25565b14155b80611eb85750600554600160a81b900462ffffff16611eb060a0860160808701614699565b62ffffff1614155b80611ee15750600554600160c01b900460ff16611edb60c0860160a087016146b2565b60ff1614155b80611f0f57506006546001600160a01b0316611f0360e0860160c08701614012565b6001600160a01b031614155b80611f3a5750600654600160a01b900460ff161515611f35610100860160e08701614542565b151514155b80611f4c575060075461010085013514155b80611f6b5750611f5f6020850185614012565b6001600160a01b03163b155b80611f9357506001600160a01b038216611f886020860186614012565b6001600160a01b0316145b80611fb2575030611fa76020860186614012565b6001600160a01b0316145b80611fda57506001600160a01b038316611fcf6020860186614012565b6001600160a01b0316145b15611ff85760405163c52a9bd360e01b815260040160405180910390fd5b610f576120086020860186614012565b612dff565b5f61201b6020830183614012565b90506306704e8760e31b637f5a7c7b60e01b5f80612064565b5f604051838152602081600483865afa601f3d118116612052575f5ffd5b5051905060a081901c15610ab3575f5ffd5b61206e8486612034565b91503061207b8484612034565b1490508061209c5760405163c52a9bd360e01b815260040160405180910390fd5b5060165550505050565b5f5f5f6120b284612b15565b604082015191935091506120c960108488886132be565b9695505050505050565b5f6120e16020830183614542565b15155f60208401351214612104576120ff6040840160208501614012565b612111565b6121116020840184614012565b9392505050565b5f8060016002840154600160a01b900460ff16600181111561213c5761213c613e25565b146121745761214e6020850185614542565b612167576121626040860160208701614012565b612183565b6121626020860186614012565b60028301546001600160a01b03165b6001600160a01b03878116911614915050949350505050565b5f600160ff1b82036121c157604051637e2df70960e11b815260040160405180910390fd5b5f82126121ce5781610ab3565b610ab3826146d2565b5f6121eb838362ffffff16620f424061333c565b905060016001607f1b03811115610ab357604051637e2df70960e11b815260040160405180910390fd5b60405162e568cf60e71b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906372b4678090602401602060405180830381865afa158015612296573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122ba919061452b565b5f036122c557505050565b6015805460ff191660011790556040516381f8a9d160e01b81525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906381f8a9d190612326908890889088906004016146ec565b60408051808303815f875af1158015612341573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123659190614659565b6015805460ff1916905560405191935091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000907fa30ca6140dfb2cac1c1021c5303d8dc7de0cd4db47221fb3ad068fac7ef8185e906123f39086908690614325565b60405180910390a35050505050565b3068929eee149b4bd2126854036124205763ab143c065f526004601cfd5b3068929eee149b4bd2126855825f61243782611c69565b90505f8160020154825f015461244d919061470b565b90506124608160016001607f1b0361470b565b851115612472576124728683836133ca565b5f60ff8516156124a557606461248b60ff87168861471e565b61249690607d61473d565b6124a0919061471e565b6124a7565b5f5b905085835f015f8282546124bb9190614754565b9250508190555080836001015f8282546124d59190614754565b9250508190555085836003015f8282546124ef9190614754565b9091555050604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e906125429030908990600401614767565b602060405180830381865afa15801561255d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612581919061452b565b604051630ab714fb60e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063156e29f6906125d490309089908c90600401614781565b5f604051808303815f87803b1580156125eb575f5ffd5b505af11580156125fd573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e9061264f9030908a90600401614767565b602060405180830381865afa15801561266a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061268e919061452b565b9050818110806126a057508782820314155b806126ae5750846003015481105b156126cc5760405163104eed1d60e31b815260040160405180910390fd5b856001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f2616e25de5abcc9e6a698b140fb6c92f55ace21b7a57f76172f195dbbf693af68a86604051612728929190614325565b60405180910390a35050505050503868929eee149b4bd2126855505050565b5f5f5f5f5f6127558661346e565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa15801561279d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c1919061452b565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b601554610100900460ff161561280b57565b6003546001600160a01b03165f61283161282c83630d96a1bf60e21b6134aa565b6134c4565b90505f6128538263537df88f60e11b6001600160a01b038616602460c06134d6565b9050606081015160a01c815160a01c171561286c575f5ffd5b60a081015160808201511760101c15612883575f5ffd5b60c081016040525f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166128c961282c8563514526c360e11b6134aa565b6001600160a01b031614158061292457506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661291861282c8563056a0fbf60e31b6134aa565b6001600160a01b031614155b80612959575081517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b8061296d57505f61296b836020015190565b145b8061298157505f61297f836040015190565b145b8061299557505f612993836060015190565b145b806129ae57508061ffff166129ab8360a0015190565b14155b806129c05750608082015160a0830151115b15610f575760405163c52a9bd360e01b815260040160405180910390fd5b5f81816129ea82611c69565b80549091505f819003612a0157505f949350505050565b612a1b8583846002015484612a16919061470b565b6133ca565b6001820180545f808555918290556002840191909155612a3b818361470b565b600654909550612a569085906001600160a01b03168361350b565b600354612a6e9085906001600160a01b03168761350b565b50505050919050565b60018401545f9063ffffffff16801580612a9c5750612a9785858561359b565b865414155b15612abd576040516001620787ab60e51b0319815260040160405180910390fd5b612ac86001826147a5565b5f87556001909601805463ffffffff191690555093949350505050565b608081811c15159082901b151516610f57632f02d37f60e21b82612d61565b611aac6309f17b8160e31b5f612d61565b612b6160408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290529061010082015290565b5f7f0000000000000000000000000000000000000000000000000000000000000000818080612bb07f000000000000000000000000000000000000000000000000000000000000000085612747565b509250925092508062ffffff165f14612bdc5760405163c52a9bd360e01b815260040160405180910390fd5b8194505f7f000000000000000000000000000000000000000000000000000000000000000090506040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000008152602001856001600160a01b03168152602001612c6e7f0000000000000000000000000000000000000000000000000000000000000000886135d0565b6001600160801b0316815260200189602001358152602001895f016020810190612c989190614542565b1515815260055462ffffff600160a81b8204811660208401528416604083015263ffffffff601885901c16606083015260809091019060ff600160a01b909104166001811115612cea57612cea613e25565b81525096505050505050915091565b5f600160ff1b826060015103612d2257604051637e2df70960e11b815260040160405180910390fd5b5060a081015160c082015181908062ffffff168362ffffff161015612d5a576040516302cce67760e31b815260040160405180910390fd5b5050919050565b6016546001600160a01b038116612d7757505050565b5f612710603f612d8b622dc6c0604061473d565b612d95919061471e565b612d9f9190614754565b905063c52a9bd360e01b7f6e819d90474482ea53f17905af71585dac910232de1a68f42349cd60badb2874825a1015612dda57815f5260045ffd5b855f52846004525f5f60245f5f88622dc6c0f1612df7578060205fa15b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f612e9861282c87630d96a1bf60e21b6134aa565b90505f612ea6878585613653565b90506001600160a01b038616612ec661282c8963dc4c90d360e01b6134aa565b6001600160a01b0316141580612f0157506001600160a01b038516612ef561282c89636bdcb6a760e11b6134aa565b6001600160a01b031614155b80612f28575030612f1c61282c89636620eee760e11b6134aa565b6001600160a01b031614155b80612f6357507f0000000000000000000000000000000000000000000000000000000000000000612f6088631f06e1a760e11b6134aa565b14155b80612f9657507f0000000000000000000000000000000000000000000000000000000000000000612f93886136ee565b14155b80612fd7575063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016612fd488634f2ff03160e11b6134aa565b14155b8061300757506001600160a01b038616612ffb61282c8763dc4c90d360e01b6134aa565b6001600160a01b031614155b8061305757506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661304b61282c87630b775e8f60e11b6134aa565b6001600160a01b031614155b8061307157505f61306e8662e568cf60e71b613711565b14155b80613090575061309061308b86630323715f60e11b613711565b613742565b806130ab57505f6130a886635c0af38360e01b613711565b14155b806130d257505f6130c661282c87630961712f60e01b613711565b6001600160a01b031614155b806130db575080155b806130ee57506001600160a01b0382163b155b8061310157506001600160a01b03821630145b8061311d5750866001600160a01b0316826001600160a01b0316145b806131395750846001600160a01b0316826001600160a01b0316145b806131555750856001600160a01b0316826001600160a01b0316145b806131715750836001600160a01b0316826001600160a01b0316145b8061318d5750826001600160a01b0316826001600160a01b0316145b806131a557506006546001600160a01b038381169116145b806131bd57506006546001600160a01b038881169116145b156131db5760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661321961282c8463514526c360e11b6134aa565b6001600160a01b031614158061327457506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661326861282c8463056a0fbf60e31b6134aa565b6001600160a01b031614155b8061328e575061328e61308b8363b3f05b9760e01b6134aa565b156132ac5760405163c52a9bd360e01b815260040160405180910390fd5b6132b582613750565b50505050505050565b60018401545f9063ffffffff16156132ec576040516001620787ab60e51b0319815260040160405180910390fd5b83516132f785612cf9565b915061330481858561359b565b865561331662ffffff831660016147c1565b600196909601805463ffffffff191663ffffffff90971696909617909555949350505050565b828202818385830414851517026133c3575f198385098181108201900382848609835f0384168285116133765763ae47f7025f526004601cfd5b93849004938382119092035f839003839004600101029203041760026003830281188084028203028084028203028084028203028084028203028084028203028084029091030202612111565b0492915050565b805f036133d657505050565b8281613402827f0000000000000000000000000000000000000000000000000000000000000000613a30565b1015613421576040516365169c1d60e01b815260040160405180910390fd5b81836003015f828254613434919061470b565b909155506134459050818484613a5a565b613450843084613c39565b81836002015f8282546134639190614754565b909155505050505050565b6040515f9061348d908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b5f806134bb848483600460206134d6565b51949350505050565b5f8160a01c156134d2575f5ffd5b5090565b60405184815260231983016134ec578360048201525b81818483895afa6134ff573d5f823e3d81fd5b813d10156109ff575f5ffd5b805f0361351757505050565b5f6135228430613a30565b90505f61352f8585613a30565b905061353c858585613d87565b5f6135478630613a30565b90505f6135548787613a30565b90508382118061356657508482850314155b8061357057508281105b8061357d57508483820314155b156132b557604051631dc418c360e31b815260040160405180910390fd5b5f8383836040516020016135b1939291906147dd565b6040516020818303038152906040528051906020012090509392505050565b5f5f6135db8361346e565b90505f6135e9600383614754565b604051631e2eaeaf60e01b8152600481018290529091506001600160a01b03861690631e2eaeaf90602401602060405180830381865afa15801561362f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ff919061452b565b5f8061366b856371a9730560e01b83600460206134d6565b80519091506001600160a01b0380861691908516903d906001600160401b038111601f1983018211171561369d575f5ffd5b602081863e8451602080838503030481116001600160401b03821117156136c2575f5ffd5b600281036136e157604060208301873e83602087015114858751141696505b5050505050509392505050565b5f806137068363182148ef60e01b83600460a06134d6565b60a090209392505050565b5f5f6134bb84847f0000000000000000000000000000000000000000000000000000000000000000602460206134d6565b5f60018211156134d2575f5ffd5b7f00000000000000000000000000000000000000000000000000000000000000005f6137898263086fce0d60e11b8360046101606134d6565b90505f6005905080604083015111602083015160201c17156137a9575f5ffd5b6101408201606083015b818110156137d157805160a01c156137c9575f5ffd5b6020016137b3565b505081517f000000000000000000000000000000000000000000000000000000000000000091507f00000000000000000000000000000000000000000000000000000000000000009080158061382c57506001604085015114155b8061384a57506001600160a01b038316613847856060015190565b14155b8061386857506001600160a01b038316613865856080015190565b14155b8061388657506001600160a01b0382166138838560a0015190565b14155b806138a657506005546001600160a01b03166138a38560c0015190565b14155b806138e457506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166138e18560e0015190565b14155b15613901576040516282b42960e81b815260040160405180910390fd5b5f61390d856020015190565b905061392686636373dff160e11b8460246101c06134d6565b94505f600190505f600590508060a0880151118260808901511117604088015160a01c1715613953575f5ffd5b610120870160c088015b8181101561397b57805160a01c15613973575f5ffd5b60200161395d565b50506101a0870161012088015b818110156139a657805160201c1561399e575f5ffd5b602001613988565b5050865184925090501415806139c15750600160a086015114155b806139df57506001600160a01b0383166139dc8660c0015190565b14155b806139fd57506001600160a01b0387166139fa8660e0015190565b14155b80613a13575061014085015163ffffffff821610155b156132b5576040516282b42960e81b815260040160405180910390fd5b5f816014526370a0823160601b5f5260208060246010865afa601f3d111660205102905092915050565b604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e90613aa89030908890600401614767565b602060405180830381865afa158015613ac3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ae7919061452b565b604051637a94c56560e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f5298aca90613b3a90309088908790600401614781565b5f604051808303815f87803b158015613b51575f5ffd5b505af1158015613b63573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e90613bb59030908990600401614767565b602060405180830381865afa158015613bd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bf4919061452b565b905081811180613c0657508281830314155b80613c145750836003015481105b15613c325760405163104eed1d60e31b815260040160405180910390fd5b5050505050565b805f03613c4557505050565b825f613c71827f0000000000000000000000000000000000000000000000000000000000000000613a30565b90505f613c7e8386613a30565b604051630b0d9c0960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c0990613cd190899089908990600401614781565b5f604051808303815f87803b158015613ce8575f5ffd5b505af1158015613cfa573d5f5f3e3d5ffd5b505050505f613d29847f0000000000000000000000000000000000000000000000000000000000000000613a30565b90505f613d368588613a30565b905083821180613d4857508582850314155b80613d5257508281105b80613d5f57508583820314155b15613d7d57604051631dc418c360e31b815260040160405180910390fd5b5050505050505050565b816014528060345263a9059cbb60601b5f5260205f604460105f875af18060015f511416613dc757803d853b151710613dc7576390b8ec185f526004601cfd5b505f603452505050565b5f60a08284031215613de1575f5ffd5b50919050565b5f60a08284031215613df7575f5ffd5b6121118383613dd1565b5f60208284031215613e11575f5ffd5b5035919050565b6001600160a01b03169052565b634e487b7160e01b5f52602160045260245ffd5b60028110611a9857634e487b7160e01b5f52602160045260245ffd5b613e5e81613e39565b9052565b81516001600160a01b03908116825260208084015190911690820152604080830151610120830191613e9690840182613e18565b506060830151613ea96060840182613e55565b506080830151613ec0608084018262ffffff169052565b5060a0830151613ed560a084018260ff169052565b5060c0830151613ee860c0840182613e18565b5060e0830151613efc60e084018215159052565b5061010092830151919092015290565b6001600160a01b0381168114611a98575f5ffd5b5f5f83601f840112613f30575f5ffd5b5081356001600160401b03811115613f46575f5ffd5b602083019150836020828501011115613f5d575f5ffd5b9250929050565b5f5f5f5f5f858703610160811215613f7a575f5ffd5b8635613f8581613f0c565b9550613f948860208901613dd1565b9450608060bf1982011215613fa7575f5ffd5b5060c0860192506101408601356001600160401b03811115613fc7575f5ffd5b613fd388828901613f20565b969995985093965092949392505050565b5f5f60408385031215613ff5575f5ffd5b82359150602083013561400781613f0c565b809150509250929050565b5f60208284031215614022575f5ffd5b813561211181613f0c565b5f5f8284036101c0811215614040575f5ffd5b61404a8585613dd1565b9250610120609f198201121561405e575f5ffd5b5060a0830190509250929050565b5f60608284031215613de1575f5ffd5b5f5f5f5f5f6101408688031215614091575f5ffd5b853561409c81613f0c565b94506140ab8760208801613dd1565b93506140ba8760c0880161406c565b92506101208601356001600160401b03811115613fc7575f5ffd5b5f5f5f60e084860312156140e7575f5ffd5b6140f18585613dd1565b925060a084013561410181613f0c565b915060c084013561411181613f0c565b809150509250925092565b8035600281900b8114611a39575f5ffd5b5f5f5f5f6101008587031215614141575f5ffd5b843561414c81613f0c565b935061415b8660208701613dd1565b925060c085013561416b81613f0c565b915061417960e0860161411c565b905092959194509250565b5f5f60208385031215614195575f5ffd5b82356001600160401b038111156141aa575f5ffd5b6141b685828601613f20565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f5f5f5f610160878903121561420d575f5ffd5b863561421881613f0c565b95506142278860208901613dd1565b94506142368860c0890161406c565b935061012087013592506101408701356001600160401b03811115614259575f5ffd5b61426589828a01613f20565b979a9699509497509295939492505050565b5f5f5f5f5f5f610120878903121561428d575f5ffd5b863561429881613f0c565b95506142a78860208901613dd1565b945060c0870135935060e087013592506101008701356001600160401b03811115614259575f5ffd5b602080825282518282018190525f918401906040840190835b818110156143075783518352602093840193909201916001016142e9565b509095945050505050565b6020810161431f83613e39565b91905290565b918252602082015260400190565b5f60608284031215614343575f5ffd5b612111838361406c565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156143895761438961434d565b604052919050565b803562ffffff81168114611a39575f5ffd5b5f60a08284031280156143b4575f5ffd5b5060405160a081016001600160401b03811182821017156143d7576143d761434d565b60405282356143e581613f0c565b815260208301356143f581613f0c565b602082015261440660408401614391565b60408201526144176060840161411c565b6060820152608083013561442a81613f0c565b60808201529392505050565b803561444181613f0c565b6001600160a01b03168252602081013561445a81613f0c565b6001600160a01b0316602083015262ffffff61447860408301614391565b16604083015261448a6060820161411c565b60020b606083015260808101356144a081613f0c565b6001600160a01b03166080929092019190915250565b80358015158114611a39575f5ffd5b6144ce816144b6565b151582526020818101359083015260408101356144ea81613f0c565b6001600160a01b03166040929092019190915250565b610120810161450f8286614436565b61451c60a08301856144c5565b82610100830152949350505050565b5f6020828403121561453b575f5ffd5b5051919050565b5f60208284031215614552575f5ffd5b612111826144b6565b818382375f9101908152919050565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f83128015821682158216171561459d5761459d61456a565b505092915050565b634e487b7160e01b5f52603260045260245ffd5b60a08101610ab38284614436565b5f602082840312156145d7575f5ffd5b81516001600160401b038111156145ec575f5ffd5b8201601f810184136145fc575f5ffd5b80516001600160401b038111156146155761461561434d565b614628601f8201601f1916602001614361565b81815285602083850101111561463c575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f6040838503121561466a575f5ffd5b505080516020909101519092909150565b5f6020828403121561468b575f5ffd5b813560028110612111575f5ffd5b5f602082840312156146a9575f5ffd5b61211182614391565b5f602082840312156146c2575f5ffd5b813560ff81168114612111575f5ffd5b5f600160ff1b82016146e6576146e661456a565b505f0390565b60e081016146fa8286614436565b60a082019390935260c00152919050565b81810381811115610ab357610ab361456a565b5f8261473857634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610ab357610ab361456a565b80820180821115610ab357610ab361456a565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b63ffffffff8281168282160390811115610ab357610ab361456a565b63ffffffff8181168382160190811115610ab357610ab361456a565b8381526001600160a01b038316602082015260a081016110ec60408301846144c556";
|
|
69
|
+
//# sourceMappingURL=hmm-fixed-pool-hook-v1-20261011.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmm-fixed-pool-hook-v1-20261011.js","sourceRoot":"","sources":["../../../src/lifecycle/deployments/hmm-fixed-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAGA,+EAA+E;AAC/E,6GAA6G;AAC7G,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,cAAc,EAAE,oEAAoE;IACpF,oBAAoB,EAAE,oEAAoE;IAC1F,kBAAkB,EAAE,oEAAoE;IACxF,WAAW,EAAE,oEAAoE;IACjF,QAAQ,EAAE,CAAC;IACX,aAAa,EAAE,CAAC;IAChB,eAAe,EAAE,CAAC;IAClB,YAAY,EAAE,IAAI;IAClB,KAAK,EAAE,EAAE;IACT,aAAa,EAAE,IAAI;IACnB,YAAY,EAAE,KAAK;IACnB,gBAAgB,EAAE,4CAA4C;IAC9D,sBAAsB,EAAE,CAAC;IACzB,WAAW,EAAE,4CAA4C;IACzD,sBAAsB,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,kBAAkB,EAAE,CAAC;QACrB,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,EAAE;QACpB,wBAAwB,EAAE,IAAI;QAC9B,YAAY,EAAE,CAAC;KAChB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,4CAA4C;QACrD,QAAQ,EAAE,4CAA4C;QACtD,aAAa,EAAE,4CAA4C;QAC3D,MAAM,EAAE,4CAA4C;QACpD,gBAAgB,EAAE,4CAA4C;QAC9D,iBAAiB,EAAE,4CAA4C;QAC/D,YAAY,EAAE,4CAA4C;QAC1D,YAAY,EAAE,oEAAoE;QAClF,eAAe,EAAE,oEAAoE;QACrF,mBAAmB,EAAE,oEAAoE;QACzF,qBAAqB,EAAE,oEAAoE;QAC3F,cAAc,EAAE,oEAAoE;QACpF,wBAAwB,EAAE,oEAAoE;QAC9F,yBAAyB,EAAE,oEAAoE;QAC/F,oBAAoB,EAAE,oEAAoE;QAC1F,oBAAoB,EAAE,oEAAoE;QAC1F,UAAU,EAAE,4CAA4C;QACxD,cAAc,EAAE,oEAAoE;QACpF,UAAU,EAAE,4CAA4C;QACxD,cAAc,EAAE,oEAAoE;QACpF,cAAc,EAAE,oEAAoE;KACrF,CAAC;CACH,CAA4B,CAAC;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,cAAc,EAAE,4CAA4C;IAC5D,QAAQ,EAAE,oEAAoE;IAC9E,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,IAAI;CACd,CAAiC,CAAC;AACnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,SAAS,EAAE,oEAAoE;IAC/E,YAAY,EAAE,oEAAoE;IAClF,gBAAgB,EAAE,oEAAoE;IACtF,KAAK,EAAE,4CAA4C;IACnD,OAAO,EAAE,4CAA4C;IACrD,IAAI,EAAE,4CAA4C;IAClD,YAAY,EAAE,IAAI;IAClB,OAAO,EAAE,IAAI;CACd,CAAiC,CAAC;AACnC,6HAA6H;AAC7H,MAAM,CAAC,MAAM,oBAAoB,GAAQ,4r5CAA4r5C,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { type Address, type Hex } from "viem";
|
|
2
|
+
export declare const HMM_FIXED_PROFILE_ID: Hex;
|
|
3
|
+
export declare const HMM_DYNAMIC_PROFILE_ID: Hex;
|
|
4
|
+
export declare function isHmmProfile(profileId: Hex): boolean;
|
|
5
|
+
/** Widths and displacement are tick spacings; amounts are raw token/quote units. */
|
|
6
|
+
export type HmmStrategyConfig = {
|
|
7
|
+
bidWidth: number;
|
|
8
|
+
askWidth: number;
|
|
9
|
+
gap: number;
|
|
10
|
+
staleAfterSeconds: number;
|
|
11
|
+
staleDisplacement: number;
|
|
12
|
+
minQuoteDeploy: bigint;
|
|
13
|
+
minQuoteHarvest: bigint;
|
|
14
|
+
minTokenHarvest: bigint;
|
|
15
|
+
resalePremiumBps: number;
|
|
16
|
+
maxAsks: number;
|
|
17
|
+
maxAskTokenExposure: bigint;
|
|
18
|
+
maxAcquiredInventory: bigint;
|
|
19
|
+
premiumDecaySeconds: number;
|
|
20
|
+
};
|
|
21
|
+
export type HmmLaunchConfig = {
|
|
22
|
+
strategyShareBps: number;
|
|
23
|
+
strategy: HmmStrategyConfig;
|
|
24
|
+
};
|
|
25
|
+
export declare const hmmStrategyComponents: readonly [{
|
|
26
|
+
readonly name: "bidWidth";
|
|
27
|
+
readonly type: "int24";
|
|
28
|
+
}, {
|
|
29
|
+
readonly name: "askWidth";
|
|
30
|
+
readonly type: "int24";
|
|
31
|
+
}, {
|
|
32
|
+
readonly name: "gap";
|
|
33
|
+
readonly type: "int24";
|
|
34
|
+
}, {
|
|
35
|
+
readonly name: "staleAfterSeconds";
|
|
36
|
+
readonly type: "uint32";
|
|
37
|
+
}, {
|
|
38
|
+
readonly name: "staleDisplacement";
|
|
39
|
+
readonly type: "int24";
|
|
40
|
+
}, {
|
|
41
|
+
readonly name: "minQuoteDeploy";
|
|
42
|
+
readonly type: "uint256";
|
|
43
|
+
}, {
|
|
44
|
+
readonly name: "minQuoteHarvest";
|
|
45
|
+
readonly type: "uint256";
|
|
46
|
+
}, {
|
|
47
|
+
readonly name: "minTokenHarvest";
|
|
48
|
+
readonly type: "uint256";
|
|
49
|
+
}, {
|
|
50
|
+
readonly name: "resalePremiumBps";
|
|
51
|
+
readonly type: "uint16";
|
|
52
|
+
}, {
|
|
53
|
+
readonly name: "maxAsks";
|
|
54
|
+
readonly type: "uint8";
|
|
55
|
+
}, {
|
|
56
|
+
readonly name: "maxAskTokenExposure";
|
|
57
|
+
readonly type: "uint256";
|
|
58
|
+
}, {
|
|
59
|
+
readonly name: "maxAcquiredInventory";
|
|
60
|
+
readonly type: "uint256";
|
|
61
|
+
}, {
|
|
62
|
+
readonly name: "premiumDecaySeconds";
|
|
63
|
+
readonly type: "uint32";
|
|
64
|
+
}];
|
|
65
|
+
export declare const hmmLaunchComponents: readonly [{
|
|
66
|
+
readonly name: "strategyShareBps";
|
|
67
|
+
readonly type: "uint16";
|
|
68
|
+
}, {
|
|
69
|
+
readonly name: "strategy";
|
|
70
|
+
readonly type: "tuple";
|
|
71
|
+
readonly components: readonly [{
|
|
72
|
+
readonly name: "bidWidth";
|
|
73
|
+
readonly type: "int24";
|
|
74
|
+
}, {
|
|
75
|
+
readonly name: "askWidth";
|
|
76
|
+
readonly type: "int24";
|
|
77
|
+
}, {
|
|
78
|
+
readonly name: "gap";
|
|
79
|
+
readonly type: "int24";
|
|
80
|
+
}, {
|
|
81
|
+
readonly name: "staleAfterSeconds";
|
|
82
|
+
readonly type: "uint32";
|
|
83
|
+
}, {
|
|
84
|
+
readonly name: "staleDisplacement";
|
|
85
|
+
readonly type: "int24";
|
|
86
|
+
}, {
|
|
87
|
+
readonly name: "minQuoteDeploy";
|
|
88
|
+
readonly type: "uint256";
|
|
89
|
+
}, {
|
|
90
|
+
readonly name: "minQuoteHarvest";
|
|
91
|
+
readonly type: "uint256";
|
|
92
|
+
}, {
|
|
93
|
+
readonly name: "minTokenHarvest";
|
|
94
|
+
readonly type: "uint256";
|
|
95
|
+
}, {
|
|
96
|
+
readonly name: "resalePremiumBps";
|
|
97
|
+
readonly type: "uint16";
|
|
98
|
+
}, {
|
|
99
|
+
readonly name: "maxAsks";
|
|
100
|
+
readonly type: "uint8";
|
|
101
|
+
}, {
|
|
102
|
+
readonly name: "maxAskTokenExposure";
|
|
103
|
+
readonly type: "uint256";
|
|
104
|
+
}, {
|
|
105
|
+
readonly name: "maxAcquiredInventory";
|
|
106
|
+
readonly type: "uint256";
|
|
107
|
+
}, {
|
|
108
|
+
readonly name: "premiumDecaySeconds";
|
|
109
|
+
readonly type: "uint32";
|
|
110
|
+
}];
|
|
111
|
+
}];
|
|
112
|
+
/** Mirrors HMMFeeCollectorFactoryV1._decodeHMM, including Solidity field widths. */
|
|
113
|
+
export declare function validateHmmLaunchConfig(config: HmmLaunchConfig): void;
|
|
114
|
+
/** Exactly abi.encode(HMMLaunchConfigV1): fourteen static words (448 bytes). */
|
|
115
|
+
export declare function encodeHmmLaunchTail(config: HmmLaunchConfig): Hex;
|
|
116
|
+
export declare function decodeHmmLaunchTail(encoded: Hex): HmmLaunchConfig;
|
|
117
|
+
/** Model calibration defaults, not an investment recommendation. Unknown quotes need explicit thresholds. */
|
|
118
|
+
export declare function defaultHmmLaunchConfig(options: {
|
|
119
|
+
tokenBudget: bigint;
|
|
120
|
+
quoteAsset: Address | string;
|
|
121
|
+
quoteDecimals?: number;
|
|
122
|
+
minQuoteDeploy?: bigint;
|
|
123
|
+
minQuoteHarvest?: bigint;
|
|
124
|
+
}): HmmLaunchConfig;
|
|
125
|
+
//# sourceMappingURL=hmm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmm.d.ts","sourceRoot":"","sources":["../../src/lifecycle/hmm.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAIxF,eAAO,MAAM,oBAAoB,EAAE,GAA0E,CAAC;AAC9G,eAAO,MAAM,sBAAsB,EAAE,GAA0E,CAAC;AAChH,wBAAgB,YAAY,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAGpD;AAED,oFAAoF;AACpF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IACtG,cAAc,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IACzE,gBAAgB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IACrG,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CAAC;AACxF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AACX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEtB,CAAC;AAUX,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAkBrE;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,GAAG,CAGhE;AACD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,eAAe,CAKjE;AAED,6GAA6G;AAC7G,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnD,GAAG,eAAe,CAsBlB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { decodeAbiParameters, encodeAbiParameters } from "viem";
|
|
2
|
+
import { AUCTION_QUOTE_OPTIONS, ROBINHOOD_WETH } from "../auction.js";
|
|
3
|
+
import { LifecyclePlanningError } from "./types.js";
|
|
4
|
+
export const HMM_FIXED_PROFILE_ID = "0x7e51d9aa979940e7867c75a82e05e924aa067e9d436f7731c3e3299f9e55d53d";
|
|
5
|
+
export const HMM_DYNAMIC_PROFILE_ID = "0x109598e017b8f12648aff0f0dc04dbf8d4c0493f41a63068682d8f9d0a07a83d";
|
|
6
|
+
export function isHmmProfile(profileId) {
|
|
7
|
+
const id = profileId.toLowerCase();
|
|
8
|
+
return id === HMM_FIXED_PROFILE_ID || id === HMM_DYNAMIC_PROFILE_ID;
|
|
9
|
+
}
|
|
10
|
+
export const hmmStrategyComponents = [
|
|
11
|
+
{ name: "bidWidth", type: "int24" }, { name: "askWidth", type: "int24" }, { name: "gap", type: "int24" },
|
|
12
|
+
{ name: "staleAfterSeconds", type: "uint32" }, { name: "staleDisplacement", type: "int24" },
|
|
13
|
+
{ name: "minQuoteDeploy", type: "uint256" }, { name: "minQuoteHarvest", type: "uint256" },
|
|
14
|
+
{ name: "minTokenHarvest", type: "uint256" }, { name: "resalePremiumBps", type: "uint16" },
|
|
15
|
+
{ name: "maxAsks", type: "uint8" }, { name: "maxAskTokenExposure", type: "uint256" },
|
|
16
|
+
{ name: "maxAcquiredInventory", type: "uint256" }, { name: "premiumDecaySeconds", type: "uint32" },
|
|
17
|
+
];
|
|
18
|
+
export const hmmLaunchComponents = [
|
|
19
|
+
{ name: "strategyShareBps", type: "uint16" }, { name: "strategy", type: "tuple", components: hmmStrategyComponents },
|
|
20
|
+
];
|
|
21
|
+
function integer(name, value, min, max) {
|
|
22
|
+
if (!Number.isInteger(value) || value < min || value > max)
|
|
23
|
+
invalid(`${name} must be an integer between ${min} and ${max}`);
|
|
24
|
+
}
|
|
25
|
+
function amount(name, value, min, max = (1n << 256n) - 1n) {
|
|
26
|
+
if (typeof value !== "bigint" || value < min || value > max)
|
|
27
|
+
invalid(`${name} must be a bigint between ${min} and ${max}`);
|
|
28
|
+
}
|
|
29
|
+
function invalid(message) { throw new LifecyclePlanningError("INVALID_HMM_CONFIG", message); }
|
|
30
|
+
/** Mirrors HMMFeeCollectorFactoryV1._decodeHMM, including Solidity field widths. */
|
|
31
|
+
export function validateHmmLaunchConfig(config) {
|
|
32
|
+
integer("strategyShareBps", config.strategyShareBps, 0, 10000);
|
|
33
|
+
const s = config.strategy;
|
|
34
|
+
integer("bidWidth", s.bidWidth, 1, 8388607);
|
|
35
|
+
integer("askWidth", s.askWidth, 1, 8388607);
|
|
36
|
+
integer("gap", s.gap, 0, 8388607);
|
|
37
|
+
integer("staleAfterSeconds", s.staleAfterSeconds, 1, 0xffffffff);
|
|
38
|
+
integer("staleDisplacement", s.staleDisplacement, 1, 8388607);
|
|
39
|
+
integer("resalePremiumBps", s.resalePremiumBps, 0, 5000);
|
|
40
|
+
integer("maxAsks", s.maxAsks, 1, 8);
|
|
41
|
+
integer("premiumDecaySeconds", s.premiumDecaySeconds, 0, 0xffffffff);
|
|
42
|
+
amount("minQuoteDeploy", s.minQuoteDeploy, 0n);
|
|
43
|
+
amount("minQuoteHarvest", s.minQuoteHarvest, 1n);
|
|
44
|
+
amount("minTokenHarvest", s.minTokenHarvest, 1n);
|
|
45
|
+
const cap = (1n << 128n) - 1n;
|
|
46
|
+
amount("maxAskTokenExposure", s.maxAskTokenExposure, 0n, cap);
|
|
47
|
+
amount("maxAcquiredInventory", s.maxAcquiredInventory, s.minTokenHarvest, cap);
|
|
48
|
+
if (s.maxAskTokenExposure < BigInt(s.maxAsks) || s.maxAskTokenExposure < s.minTokenHarvest)
|
|
49
|
+
invalid("maxAskTokenExposure must cover maxAsks and minTokenHarvest");
|
|
50
|
+
}
|
|
51
|
+
/** Exactly abi.encode(HMMLaunchConfigV1): fourteen static words (448 bytes). */
|
|
52
|
+
export function encodeHmmLaunchTail(config) {
|
|
53
|
+
validateHmmLaunchConfig(config);
|
|
54
|
+
return encodeAbiParameters([{ type: "tuple", components: hmmLaunchComponents }], [config]);
|
|
55
|
+
}
|
|
56
|
+
export function decodeHmmLaunchTail(encoded) {
|
|
57
|
+
if (encoded.length !== 2 + 448 * 2)
|
|
58
|
+
invalid("HMM launch tail must be exactly 448 bytes");
|
|
59
|
+
const config = decodeAbiParameters([{ type: "tuple", components: hmmLaunchComponents }], encoded)[0];
|
|
60
|
+
if (encodeHmmLaunchTail(config).toLowerCase() !== encoded.toLowerCase())
|
|
61
|
+
invalid("HMM launch tail is not canonical");
|
|
62
|
+
return config;
|
|
63
|
+
}
|
|
64
|
+
/** Model calibration defaults, not an investment recommendation. Unknown quotes need explicit thresholds. */
|
|
65
|
+
export function defaultHmmLaunchConfig(options) {
|
|
66
|
+
amount("tokenBudget", options.tokenBudget, 1n, (1n << 128n) - 1n);
|
|
67
|
+
const quote = AUCTION_QUOTE_OPTIONS.find((q) => q.id === options.quoteAsset || q.address.toLowerCase() === options.quoteAsset.toLowerCase());
|
|
68
|
+
const decimals = options.quoteDecimals ?? quote?.decimals;
|
|
69
|
+
if (decimals !== undefined)
|
|
70
|
+
integer("quoteDecimals", decimals, 0, 255);
|
|
71
|
+
if (quote !== undefined && decimals !== quote.decimals)
|
|
72
|
+
invalid("quoteDecimals must match the supported quote asset");
|
|
73
|
+
const weth = quote?.address.toLowerCase() === ROBINHOOD_WETH.toLowerCase();
|
|
74
|
+
const unit = decimals === undefined ? undefined : 10n ** BigInt(decimals);
|
|
75
|
+
const minQuoteDeploy = options.minQuoteDeploy ?? (weth ? 500000000000000n : quote?.usdPeg && unit !== undefined ? unit : undefined);
|
|
76
|
+
const minQuoteHarvest = options.minQuoteHarvest ?? (weth ? 5000000000000000n : quote?.usdPeg && unit !== undefined ? 10n * unit : undefined);
|
|
77
|
+
if (minQuoteDeploy === undefined || minQuoteHarvest === undefined)
|
|
78
|
+
invalid("Unsupported quote asset requires explicit minQuoteDeploy and minQuoteHarvest");
|
|
79
|
+
const config = {
|
|
80
|
+
strategyShareBps: 5000,
|
|
81
|
+
strategy: {
|
|
82
|
+
bidWidth: 5, askWidth: 5, gap: 1, staleAfterSeconds: 86400, staleDisplacement: 5,
|
|
83
|
+
minQuoteDeploy, minQuoteHarvest, minTokenHarvest: options.tokenBudget / 100000n,
|
|
84
|
+
resalePremiumBps: 500, maxAsks: 4, maxAskTokenExposure: options.tokenBudget / 10n,
|
|
85
|
+
maxAcquiredInventory: options.tokenBudget, premiumDecaySeconds: 0,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
validateHmmLaunchConfig(config);
|
|
89
|
+
return config;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=hmm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmm.js","sourceRoot":"","sources":["../../src/lifecycle/hmm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACnH,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACnH,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,KAAK,2BAA2B,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/lifecycle/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACnH,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAiE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AACnH,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAiE,MAAM,cAAc,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Address, type Hex } from "viem";
|
|
2
2
|
import type { MarketConfigV1 } from "./schema.js";
|
|
3
3
|
import { type LifecycleProfile, type PoolBoundHookSaltProgress } from "./types.js";
|
|
4
|
+
import { type HmmLaunchConfig } from "./hmm.js";
|
|
4
5
|
export type V4LifecyclePositionConfig = {
|
|
5
6
|
tickLower: number;
|
|
6
7
|
tickUpper: number;
|
|
@@ -117,6 +118,7 @@ export type V4PoolBoundLifecycleMarketConfigV6 = Omit<V4LifecycleMarketConfig, "
|
|
|
117
118
|
minimumHookFeePips: number;
|
|
118
119
|
feeSensitivityPipsSecondsPerTick: number;
|
|
119
120
|
hookSalt: Hex;
|
|
121
|
+
hmmLaunchConfig?: HmmLaunchConfig;
|
|
120
122
|
};
|
|
121
123
|
export type V4PoolBoundLifecycleMarketConfig = V4PoolBoundLifecycleMarketConfigV5 | V4PoolBoundLifecycleMarketConfigV6;
|
|
122
124
|
export declare const V4_LIFECYCLE_CONFIG_SCHEMA: `0x${string}`;
|
|
@@ -263,6 +265,7 @@ export declare const poolBoundV4LifecycleMarketComponentsV6: readonly [{
|
|
|
263
265
|
}];
|
|
264
266
|
export declare function isPoolBoundV4ConfigVersion(version: number): version is PoolBoundLifecycleConfigVersion;
|
|
265
267
|
export declare function poolBoundV4LifecycleConfigSchema(version: PoolBoundLifecycleConfigVersion): Hex;
|
|
268
|
+
/** HMM profile selection requires a typed tail and appends it automatically. */
|
|
266
269
|
export declare function encodePoolBoundV4LifecycleMarketConfig(config: V4PoolBoundLifecycleMarketConfig): Hex;
|
|
267
270
|
export declare function decodePoolBoundV4LifecycleMarketConfig(encoded: Hex, expectedVersion?: PoolBoundLifecycleConfigVersion): V4PoolBoundLifecycleMarketConfig;
|
|
268
271
|
/** Immutable per-pool fee policy: pips, and fee-pips * seconds per observed tick. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../src/lifecycle/markets.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6H,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AACzK,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA0B,KAAK,gBAAgB,EAAE,KAAK,yBAAyB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../src/lifecycle/markets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { concatHex, decodeAbiParameters, encodeAbiParameters, getAddress, hexToBytes, keccak256, pad, stringToHex, toHex, zeroHash } from "viem";
|
|
2
2
|
import { LifecyclePlanningError } from "./types.js";
|
|
3
|
+
import { decodeHmmLaunchTail, encodeHmmLaunchTail, isHmmProfile } from "./hmm.js";
|
|
3
4
|
export const v4LifecyclePositionComponents = [
|
|
4
5
|
{ name: "tickLower", type: "int24" }, { name: "tickUpper", type: "int24" },
|
|
5
6
|
{ name: "liquidity", type: "uint128" }, { name: "salt", type: "bytes32" }, { name: "maxTokenAmount", type: "uint256" },
|
|
@@ -69,7 +70,21 @@ function assertV1HookFeeShape(config) {
|
|
|
69
70
|
throw new LifecyclePlanningError("UNSUPPORTED_CONFIG_VERSION", "Config5/V1 cannot encode config6/V2 fee-policy fields");
|
|
70
71
|
}
|
|
71
72
|
}
|
|
73
|
+
/** HMM profile selection requires a typed tail and appends it automatically. */
|
|
72
74
|
export function encodePoolBoundV4LifecycleMarketConfig(config) {
|
|
75
|
+
const prefix = encodePoolBoundV4Prefix(config);
|
|
76
|
+
if (isHmmProfile(config.profileId)) {
|
|
77
|
+
if (config.version !== 6 || config.hmmLaunchConfig === undefined)
|
|
78
|
+
throw new LifecyclePlanningError("INVALID_HMM_CONFIG", "HMM profiles require config6 and an explicit hmmLaunchConfig");
|
|
79
|
+
if (config.lpFeePips !== 0)
|
|
80
|
+
throw new LifecyclePlanningError("INVALID_HOOK_FEES", "HMM profiles require zero LP fee");
|
|
81
|
+
return concatHex([prefix, encodeHmmLaunchTail(config.hmmLaunchConfig)]);
|
|
82
|
+
}
|
|
83
|
+
if (config.version === 6 && config.hmmLaunchConfig !== undefined)
|
|
84
|
+
throw new LifecyclePlanningError("INVALID_HMM_CONFIG", "An HMM launch tail requires an HMM profile");
|
|
85
|
+
return prefix;
|
|
86
|
+
}
|
|
87
|
+
function encodePoolBoundV4Prefix(config) {
|
|
73
88
|
if (!isPoolBoundV4ConfigVersion(config.version))
|
|
74
89
|
throw new LifecyclePlanningError("UNSUPPORTED_CONFIG_VERSION", "Pool-bound V4 config version must be explicitly 5 or 6");
|
|
75
90
|
if (config.version === 6)
|
|
@@ -93,6 +108,12 @@ export function decodePoolBoundV4LifecycleMarketConfig(encoded, expectedVersion)
|
|
|
93
108
|
const config = version === 5
|
|
94
109
|
? decodeAbiParameters([{ type: "tuple", components: poolBoundV4LifecycleMarketComponentsV5 }], encoded)[0]
|
|
95
110
|
: decodeAbiParameters([{ type: "tuple", components: poolBoundV4LifecycleMarketComponentsV6 }], encoded)[0];
|
|
111
|
+
if (isHmmProfile(config.profileId)) {
|
|
112
|
+
if (config.version !== 6)
|
|
113
|
+
throw new LifecyclePlanningError("INVALID_HMM_CONFIG", "HMM profiles require config6");
|
|
114
|
+
const prefixLength = encodePoolBoundV4Prefix(config).length;
|
|
115
|
+
config.hmmLaunchConfig = decodeHmmLaunchTail(`0x${encoded.slice(prefixLength)}`);
|
|
116
|
+
}
|
|
96
117
|
if (encodePoolBoundV4LifecycleMarketConfig(config).toLowerCase() !== encoded.toLowerCase())
|
|
97
118
|
throw new LifecyclePlanningError("INVALID_BOUND_MARKET", "Pool-bound config is not canonical for its explicit schema");
|
|
98
119
|
return config;
|
|
@@ -203,7 +224,9 @@ export function hashPoolBoundV4MarketCommitment(options) {
|
|
|
203
224
|
const config = decodePoolBoundV4LifecycleMarketConfig(market.config, market.configVersion);
|
|
204
225
|
if (config.profileId.toLowerCase() !== market.profileId.toLowerCase())
|
|
205
226
|
throw new LifecyclePlanningError("INVALID_BOUND_MARKET", "Config profile differs from the committed market profile");
|
|
206
|
-
|
|
227
|
+
// The collector factory commits the V6 prefix, not the auxiliary HMM tail.
|
|
228
|
+
// The full plan commitment separately binds every byte of that tail.
|
|
229
|
+
const configHash = keccak256(encodePoolBoundV4Prefix({ ...config, hookSalt: zeroHash }));
|
|
207
230
|
return keccak256(encodeAbiParameters([
|
|
208
231
|
{ type: "bytes32" }, { type: "uint256" }, { type: "address" }, { type: "address" }, { type: "address" },
|
|
209
232
|
{ type: "bytes32" }, { type: "bytes32" }, { type: "address" }, { type: "uint256" }, { type: "uint32" }, { type: "bytes32" },
|