@the-situation/deployer 0.5.0-alpha.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/dist/admin-inputs.d.ts +130 -0
- package/dist/admin-inputs.d.ts.map +1 -0
- package/dist/admin-inputs.js +285 -0
- package/dist/admin-inputs.js.map +1 -0
- package/dist/deployer-node.d.ts +15 -0
- package/dist/deployer-node.d.ts.map +1 -0
- package/dist/deployer-node.js +41 -0
- package/dist/deployer-node.js.map +1 -0
- package/dist/deployer.d.ts +117 -0
- package/dist/deployer.d.ts.map +1 -0
- package/dist/deployer.js +260 -0
- package/dist/deployer.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +11 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +10 -0
- package/dist/node.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin input builders and validators for factory/market operations.
|
|
3
|
+
*
|
|
4
|
+
* Converts plain numbers and form-like inputs into contract-safe SDK types.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { type SQ128x128Raw } from '@the-situation/core';
|
|
9
|
+
import type { NormalMarketDeploymentParams } from '@the-situation/starknet';
|
|
10
|
+
import type { DeployFactoryParams } from './deployer';
|
|
11
|
+
/**
|
|
12
|
+
* Extension hook configuration for packed u16 call points.
|
|
13
|
+
*/
|
|
14
|
+
export interface ExtensionCallPointsConfig {
|
|
15
|
+
readonly beforeInitialize: boolean;
|
|
16
|
+
readonly afterInitialize: boolean;
|
|
17
|
+
readonly beforeTrade: boolean;
|
|
18
|
+
readonly afterTrade: boolean;
|
|
19
|
+
readonly beforeAddLiquidity: boolean;
|
|
20
|
+
readonly afterAddLiquidity: boolean;
|
|
21
|
+
readonly beforeRemoveLiquidity: boolean;
|
|
22
|
+
readonly afterRemoveLiquidity: boolean;
|
|
23
|
+
readonly beforeClaim: boolean;
|
|
24
|
+
readonly afterClaim: boolean;
|
|
25
|
+
readonly beforeSettle: boolean;
|
|
26
|
+
readonly afterSettle: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Oracle extension default call points used in contract integration tests.
|
|
30
|
+
*
|
|
31
|
+
* Enabled hooks:
|
|
32
|
+
* - before_initialize
|
|
33
|
+
* - before_trade
|
|
34
|
+
* - after_settle
|
|
35
|
+
*/
|
|
36
|
+
export declare const ORACLE_EXTENSION_CALL_POINTS = 2053;
|
|
37
|
+
/**
|
|
38
|
+
* Plain-number input shape for deploying a normal market.
|
|
39
|
+
*
|
|
40
|
+
* This input is intended for UIs and scripts. Callers should pass values in
|
|
41
|
+
* human units (for example, `k` as a decimal number), and this module will
|
|
42
|
+
* convert/validate for contract calls.
|
|
43
|
+
*/
|
|
44
|
+
export interface DeployNormalMarketInput {
|
|
45
|
+
readonly salt: string | bigint;
|
|
46
|
+
readonly marketOwner: string;
|
|
47
|
+
readonly marketAdmin: string;
|
|
48
|
+
readonly collateralToken: string;
|
|
49
|
+
readonly tokenDecimals: number;
|
|
50
|
+
readonly internalDecimals: number;
|
|
51
|
+
readonly initialMean: number;
|
|
52
|
+
readonly initialVariance: number;
|
|
53
|
+
readonly k: number;
|
|
54
|
+
readonly backing: number;
|
|
55
|
+
readonly tolerance: number;
|
|
56
|
+
readonly minTradeCollateral: number;
|
|
57
|
+
readonly lpFeeBps: number;
|
|
58
|
+
readonly protocolFeeBps: number;
|
|
59
|
+
readonly settlementFeeBps: number;
|
|
60
|
+
readonly extension?: string;
|
|
61
|
+
readonly extensionCallPoints?: number;
|
|
62
|
+
readonly metadataHash?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Deploy input that allows market owner/admin defaults to be derived from the
|
|
66
|
+
* connected operator address.
|
|
67
|
+
*/
|
|
68
|
+
export interface DeployNormalMarketInputWithSignerDefaults extends Omit<DeployNormalMarketInput, 'marketOwner' | 'marketAdmin'> {
|
|
69
|
+
readonly marketOwner?: string;
|
|
70
|
+
readonly marketAdmin?: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Converts a plain number into contract SQ128x128 raw form.
|
|
74
|
+
*
|
|
75
|
+
* @throws Error when value is non-finite or cannot be represented by SQ128x128.
|
|
76
|
+
*/
|
|
77
|
+
export declare function buildSQ128x128Raw(value: number, name: string): SQ128x128Raw;
|
|
78
|
+
/**
|
|
79
|
+
* Converts a settlement value into contract SQ128x128 raw form.
|
|
80
|
+
*
|
|
81
|
+
* @throws Error when settlement value is non-finite or cannot be represented.
|
|
82
|
+
*/
|
|
83
|
+
export declare function buildSettlementValueRaw(settlementValue: number): SQ128x128Raw;
|
|
84
|
+
/**
|
|
85
|
+
* Packs extension call-point flags into Cairo `u16` representation.
|
|
86
|
+
*
|
|
87
|
+
* @throws Error when the packed value would exceed `u16`.
|
|
88
|
+
*/
|
|
89
|
+
export declare function packExtensionCallPoints(config: ExtensionCallPointsConfig): number;
|
|
90
|
+
/**
|
|
91
|
+
* Unpacks extension call points from Cairo `u16` into boolean flags.
|
|
92
|
+
*
|
|
93
|
+
* @throws Error when the input is not a valid `u16` integer.
|
|
94
|
+
*/
|
|
95
|
+
export declare function unpackExtensionCallPoints(packed: number): ExtensionCallPointsConfig;
|
|
96
|
+
/**
|
|
97
|
+
* Plain input for factory deployment from class hashes.
|
|
98
|
+
*/
|
|
99
|
+
export interface DeployFactoryInput {
|
|
100
|
+
readonly factoryClassHash: string;
|
|
101
|
+
readonly ammClassHash: string;
|
|
102
|
+
readonly mathClassHash: string;
|
|
103
|
+
readonly owner: string;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Validates and normalizes factory deployment inputs.
|
|
107
|
+
*/
|
|
108
|
+
export declare function buildDeployFactoryParams(input: DeployFactoryInput): DeployFactoryParams;
|
|
109
|
+
/**
|
|
110
|
+
* Builds a validated `deploy_normal_market` payload from plain-number input.
|
|
111
|
+
*
|
|
112
|
+
* Invariants enforced:
|
|
113
|
+
* - decimals are non-negative integers and `internalDecimals <= tokenDecimals`
|
|
114
|
+
* - initial variance is strictly positive
|
|
115
|
+
* - `k`, `backing`, `tolerance`, and `minTradeCollateral` are strictly positive
|
|
116
|
+
* - fee fields are non-negative integers and sum to <= `MAX_FEE_BPS`
|
|
117
|
+
* - extension call points, if provided, fit in Cairo `u16`
|
|
118
|
+
*
|
|
119
|
+
* @throws Error when any invariant is violated.
|
|
120
|
+
*/
|
|
121
|
+
export declare function buildDeployNormalMarketParams(input: DeployNormalMarketInput): NormalMarketDeploymentParams;
|
|
122
|
+
/**
|
|
123
|
+
* Builds deploy params while defaulting market owner/admin to connected signer.
|
|
124
|
+
*
|
|
125
|
+
* Additional defaults:
|
|
126
|
+
* - When an extension is present and `extensionCallPoints` is omitted, uses
|
|
127
|
+
* `ORACLE_EXTENSION_CALL_POINTS`.
|
|
128
|
+
*/
|
|
129
|
+
export declare function buildDeployNormalMarketParamsWithSignerDefaults(input: DeployNormalMarketInputWithSignerDefaults, connectedAddress: string): NormalMarketDeploymentParams;
|
|
130
|
+
//# sourceMappingURL=admin-inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-inputs.d.ts","sourceRoot":"","sources":["../src/admin-inputs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin input builders and validators for factory/market operations.
|
|
3
|
+
*
|
|
4
|
+
* Converts plain numbers and form-like inputs into contract-safe SDK types.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import { MAX_FEE_BPS, createFeeConfigRaw } from '@the-situation/abi';
|
|
9
|
+
import { NormalDistribution, SQ128x128 } from '@the-situation/core';
|
|
10
|
+
import { computeHints } from '@the-situation/utils';
|
|
11
|
+
/**
|
|
12
|
+
* Create a NormalDistribution from target mean and variance.
|
|
13
|
+
*
|
|
14
|
+
* Computes sigma as sqrt(variance), then recomputes variance
|
|
15
|
+
* from sigma to ensure exact equality: variance == sigma * sigma
|
|
16
|
+
*/
|
|
17
|
+
function createNormalDistributionFromMeanVariance(targetMean, targetVariance) {
|
|
18
|
+
if (targetVariance < 0) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const sigma = Math.sqrt(targetVariance);
|
|
22
|
+
const sigmaSq = SQ128x128.fromNumber(sigma);
|
|
23
|
+
if (!sigmaSq) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const varianceSq = sigmaSq.mul(sigmaSq);
|
|
27
|
+
if (!varianceSq) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const meanSq = SQ128x128.fromNumber(targetMean);
|
|
31
|
+
if (!meanSq) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return NormalDistribution.withSigma(meanSq, varianceSq, sigmaSq);
|
|
35
|
+
}
|
|
36
|
+
const EXTENSION_CALL_POINT_BITS = {
|
|
37
|
+
beforeInitialize: 1 << 0,
|
|
38
|
+
afterInitialize: 1 << 1,
|
|
39
|
+
beforeTrade: 1 << 2,
|
|
40
|
+
afterTrade: 1 << 3,
|
|
41
|
+
beforeAddLiquidity: 1 << 4,
|
|
42
|
+
afterAddLiquidity: 1 << 5,
|
|
43
|
+
beforeRemoveLiquidity: 1 << 6,
|
|
44
|
+
afterRemoveLiquidity: 1 << 7,
|
|
45
|
+
beforeClaim: 1 << 8,
|
|
46
|
+
afterClaim: 1 << 9,
|
|
47
|
+
beforeSettle: 1 << 10,
|
|
48
|
+
afterSettle: 1 << 11,
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Oracle extension default call points used in contract integration tests.
|
|
52
|
+
*
|
|
53
|
+
* Enabled hooks:
|
|
54
|
+
* - before_initialize
|
|
55
|
+
* - before_trade
|
|
56
|
+
* - after_settle
|
|
57
|
+
*/
|
|
58
|
+
export const ORACLE_EXTENSION_CALL_POINTS = 0x805;
|
|
59
|
+
function assertFiniteNumber(value, name) {
|
|
60
|
+
if (!Number.isFinite(value)) {
|
|
61
|
+
throw new Error(`${name} must be a finite number`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function assertPositiveFiniteNumber(value, name) {
|
|
65
|
+
assertFiniteNumber(value, name);
|
|
66
|
+
if (value <= 0) {
|
|
67
|
+
throw new Error(`${name} must be positive`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function assertNonNegativeInteger(value, name) {
|
|
71
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
72
|
+
throw new Error(`${name} must be a non-negative integer`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function normalizeOptional(value) {
|
|
76
|
+
if (!value) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const trimmed = value.trim();
|
|
80
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
81
|
+
}
|
|
82
|
+
function normalizeRequiredHex(value, label) {
|
|
83
|
+
const trimmed = value.trim();
|
|
84
|
+
if (trimmed.length === 0) {
|
|
85
|
+
throw new Error(`${label} is required`);
|
|
86
|
+
}
|
|
87
|
+
if (!/^0x[0-9a-fA-F]+$/.test(trimmed)) {
|
|
88
|
+
throw new Error(`${label} must be a 0x-prefixed hex string`);
|
|
89
|
+
}
|
|
90
|
+
return trimmed.toLowerCase();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Converts a plain number into contract SQ128x128 raw form.
|
|
94
|
+
*
|
|
95
|
+
* @throws Error when value is non-finite or cannot be represented by SQ128x128.
|
|
96
|
+
*/
|
|
97
|
+
export function buildSQ128x128Raw(value, name) {
|
|
98
|
+
assertFiniteNumber(value, name);
|
|
99
|
+
const sq = SQ128x128.fromNumber(value);
|
|
100
|
+
if (!sq) {
|
|
101
|
+
throw new Error(`${name} is out of SQ128x128 range`);
|
|
102
|
+
}
|
|
103
|
+
return sq.toRaw();
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Converts a settlement value into contract SQ128x128 raw form.
|
|
107
|
+
*
|
|
108
|
+
* @throws Error when settlement value is non-finite or cannot be represented.
|
|
109
|
+
*/
|
|
110
|
+
export function buildSettlementValueRaw(settlementValue) {
|
|
111
|
+
return buildSQ128x128Raw(settlementValue, 'Settlement value');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Packs extension call-point flags into Cairo `u16` representation.
|
|
115
|
+
*
|
|
116
|
+
* @throws Error when the packed value would exceed `u16`.
|
|
117
|
+
*/
|
|
118
|
+
export function packExtensionCallPoints(config) {
|
|
119
|
+
let packed = 0;
|
|
120
|
+
if (config.beforeInitialize) {
|
|
121
|
+
packed |= EXTENSION_CALL_POINT_BITS.beforeInitialize;
|
|
122
|
+
}
|
|
123
|
+
if (config.afterInitialize) {
|
|
124
|
+
packed |= EXTENSION_CALL_POINT_BITS.afterInitialize;
|
|
125
|
+
}
|
|
126
|
+
if (config.beforeTrade) {
|
|
127
|
+
packed |= EXTENSION_CALL_POINT_BITS.beforeTrade;
|
|
128
|
+
}
|
|
129
|
+
if (config.afterTrade) {
|
|
130
|
+
packed |= EXTENSION_CALL_POINT_BITS.afterTrade;
|
|
131
|
+
}
|
|
132
|
+
if (config.beforeAddLiquidity) {
|
|
133
|
+
packed |= EXTENSION_CALL_POINT_BITS.beforeAddLiquidity;
|
|
134
|
+
}
|
|
135
|
+
if (config.afterAddLiquidity) {
|
|
136
|
+
packed |= EXTENSION_CALL_POINT_BITS.afterAddLiquidity;
|
|
137
|
+
}
|
|
138
|
+
if (config.beforeRemoveLiquidity) {
|
|
139
|
+
packed |= EXTENSION_CALL_POINT_BITS.beforeRemoveLiquidity;
|
|
140
|
+
}
|
|
141
|
+
if (config.afterRemoveLiquidity) {
|
|
142
|
+
packed |= EXTENSION_CALL_POINT_BITS.afterRemoveLiquidity;
|
|
143
|
+
}
|
|
144
|
+
if (config.beforeClaim) {
|
|
145
|
+
packed |= EXTENSION_CALL_POINT_BITS.beforeClaim;
|
|
146
|
+
}
|
|
147
|
+
if (config.afterClaim) {
|
|
148
|
+
packed |= EXTENSION_CALL_POINT_BITS.afterClaim;
|
|
149
|
+
}
|
|
150
|
+
if (config.beforeSettle) {
|
|
151
|
+
packed |= EXTENSION_CALL_POINT_BITS.beforeSettle;
|
|
152
|
+
}
|
|
153
|
+
if (config.afterSettle) {
|
|
154
|
+
packed |= EXTENSION_CALL_POINT_BITS.afterSettle;
|
|
155
|
+
}
|
|
156
|
+
if (packed < 0 || packed > 0xffff) {
|
|
157
|
+
throw new Error('Extension call points must fit in u16');
|
|
158
|
+
}
|
|
159
|
+
return packed;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Unpacks extension call points from Cairo `u16` into boolean flags.
|
|
163
|
+
*
|
|
164
|
+
* @throws Error when the input is not a valid `u16` integer.
|
|
165
|
+
*/
|
|
166
|
+
export function unpackExtensionCallPoints(packed) {
|
|
167
|
+
if (!Number.isInteger(packed) || packed < 0 || packed > 0xffff) {
|
|
168
|
+
throw new Error('Extension call points must be a u16 integer');
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
beforeInitialize: (packed & EXTENSION_CALL_POINT_BITS.beforeInitialize) !== 0,
|
|
172
|
+
afterInitialize: (packed & EXTENSION_CALL_POINT_BITS.afterInitialize) !== 0,
|
|
173
|
+
beforeTrade: (packed & EXTENSION_CALL_POINT_BITS.beforeTrade) !== 0,
|
|
174
|
+
afterTrade: (packed & EXTENSION_CALL_POINT_BITS.afterTrade) !== 0,
|
|
175
|
+
beforeAddLiquidity: (packed & EXTENSION_CALL_POINT_BITS.beforeAddLiquidity) !== 0,
|
|
176
|
+
afterAddLiquidity: (packed & EXTENSION_CALL_POINT_BITS.afterAddLiquidity) !== 0,
|
|
177
|
+
beforeRemoveLiquidity: (packed & EXTENSION_CALL_POINT_BITS.beforeRemoveLiquidity) !== 0,
|
|
178
|
+
afterRemoveLiquidity: (packed & EXTENSION_CALL_POINT_BITS.afterRemoveLiquidity) !== 0,
|
|
179
|
+
beforeClaim: (packed & EXTENSION_CALL_POINT_BITS.beforeClaim) !== 0,
|
|
180
|
+
afterClaim: (packed & EXTENSION_CALL_POINT_BITS.afterClaim) !== 0,
|
|
181
|
+
beforeSettle: (packed & EXTENSION_CALL_POINT_BITS.beforeSettle) !== 0,
|
|
182
|
+
afterSettle: (packed & EXTENSION_CALL_POINT_BITS.afterSettle) !== 0,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Validates and normalizes factory deployment inputs.
|
|
187
|
+
*/
|
|
188
|
+
export function buildDeployFactoryParams(input) {
|
|
189
|
+
return {
|
|
190
|
+
factoryClassHash: normalizeRequiredHex(input.factoryClassHash, 'Factory class hash'),
|
|
191
|
+
ammClassHash: normalizeRequiredHex(input.ammClassHash, 'AMM class hash'),
|
|
192
|
+
mathClassHash: normalizeRequiredHex(input.mathClassHash, 'Math class hash'),
|
|
193
|
+
owner: normalizeRequiredHex(input.owner, 'Factory owner'),
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Builds a validated `deploy_normal_market` payload from plain-number input.
|
|
198
|
+
*
|
|
199
|
+
* Invariants enforced:
|
|
200
|
+
* - decimals are non-negative integers and `internalDecimals <= tokenDecimals`
|
|
201
|
+
* - initial variance is strictly positive
|
|
202
|
+
* - `k`, `backing`, `tolerance`, and `minTradeCollateral` are strictly positive
|
|
203
|
+
* - fee fields are non-negative integers and sum to <= `MAX_FEE_BPS`
|
|
204
|
+
* - extension call points, if provided, fit in Cairo `u16`
|
|
205
|
+
*
|
|
206
|
+
* @throws Error when any invariant is violated.
|
|
207
|
+
*/
|
|
208
|
+
export function buildDeployNormalMarketParams(input) {
|
|
209
|
+
assertNonNegativeInteger(input.tokenDecimals, 'Token decimals');
|
|
210
|
+
assertNonNegativeInteger(input.internalDecimals, 'Internal decimals');
|
|
211
|
+
if (input.internalDecimals > input.tokenDecimals) {
|
|
212
|
+
throw new Error('Internal decimals cannot exceed token decimals');
|
|
213
|
+
}
|
|
214
|
+
assertFiniteNumber(input.initialMean, 'Initial mean');
|
|
215
|
+
assertPositiveFiniteNumber(input.initialVariance, 'Initial variance');
|
|
216
|
+
assertPositiveFiniteNumber(input.k, 'k');
|
|
217
|
+
assertPositiveFiniteNumber(input.backing, 'Backing');
|
|
218
|
+
assertPositiveFiniteNumber(input.tolerance, 'Tolerance');
|
|
219
|
+
assertPositiveFiniteNumber(input.minTradeCollateral, 'Minimum trade collateral');
|
|
220
|
+
const initialDistribution = createNormalDistributionFromMeanVariance(input.initialMean, input.initialVariance);
|
|
221
|
+
if (!initialDistribution) {
|
|
222
|
+
throw new Error('Initial distribution is invalid');
|
|
223
|
+
}
|
|
224
|
+
const initialHints = computeHints(initialDistribution.sigma);
|
|
225
|
+
if (!initialHints) {
|
|
226
|
+
throw new Error('Failed to compute initial sqrt hints');
|
|
227
|
+
}
|
|
228
|
+
assertNonNegativeInteger(input.lpFeeBps, 'LP fee (bps)');
|
|
229
|
+
assertNonNegativeInteger(input.protocolFeeBps, 'Protocol fee (bps)');
|
|
230
|
+
assertNonNegativeInteger(input.settlementFeeBps, 'Settlement fee (bps)');
|
|
231
|
+
const feeConfig = createFeeConfigRaw(input.lpFeeBps, input.protocolFeeBps, input.settlementFeeBps);
|
|
232
|
+
if (!feeConfig) {
|
|
233
|
+
throw new Error(`Total fees exceed ${MAX_FEE_BPS} bps`);
|
|
234
|
+
}
|
|
235
|
+
const extension = normalizeOptional(input.extension);
|
|
236
|
+
const metadataHash = normalizeOptional(input.metadataHash);
|
|
237
|
+
if (input.extensionCallPoints !== undefined) {
|
|
238
|
+
assertNonNegativeInteger(input.extensionCallPoints, 'Extension call points');
|
|
239
|
+
if (input.extensionCallPoints > 0xffff) {
|
|
240
|
+
throw new Error('Extension call points must fit in u16');
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
const baseParams = {
|
|
244
|
+
salt: input.salt,
|
|
245
|
+
marketOwner: input.marketOwner,
|
|
246
|
+
marketAdmin: input.marketAdmin,
|
|
247
|
+
collateralToken: input.collateralToken,
|
|
248
|
+
tokenDecimals: input.tokenDecimals,
|
|
249
|
+
internalDecimals: input.internalDecimals,
|
|
250
|
+
initialDistribution: initialDistribution.toRaw(),
|
|
251
|
+
k: buildSQ128x128Raw(input.k, 'k'),
|
|
252
|
+
backing: buildSQ128x128Raw(input.backing, 'Backing'),
|
|
253
|
+
tolerance: buildSQ128x128Raw(input.tolerance, 'Tolerance'),
|
|
254
|
+
minTradeCollateral: buildSQ128x128Raw(input.minTradeCollateral, 'Minimum trade collateral'),
|
|
255
|
+
initialHints,
|
|
256
|
+
feeConfig,
|
|
257
|
+
};
|
|
258
|
+
return {
|
|
259
|
+
...baseParams,
|
|
260
|
+
...(extension !== undefined ? { extension } : {}),
|
|
261
|
+
...(input.extensionCallPoints !== undefined
|
|
262
|
+
? { extensionCallPoints: input.extensionCallPoints }
|
|
263
|
+
: {}),
|
|
264
|
+
...(metadataHash !== undefined ? { metadataHash } : {}),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Builds deploy params while defaulting market owner/admin to connected signer.
|
|
269
|
+
*
|
|
270
|
+
* Additional defaults:
|
|
271
|
+
* - When an extension is present and `extensionCallPoints` is omitted, uses
|
|
272
|
+
* `ORACLE_EXTENSION_CALL_POINTS`.
|
|
273
|
+
*/
|
|
274
|
+
export function buildDeployNormalMarketParamsWithSignerDefaults(input, connectedAddress) {
|
|
275
|
+
const normalizedConnectedAddress = normalizeRequiredHex(connectedAddress, 'Connected address');
|
|
276
|
+
return buildDeployNormalMarketParams({
|
|
277
|
+
...input,
|
|
278
|
+
marketOwner: input.marketOwner ?? normalizedConnectedAddress,
|
|
279
|
+
marketAdmin: input.marketAdmin ?? normalizedConnectedAddress,
|
|
280
|
+
...(input.extension !== undefined && input.extensionCallPoints === undefined
|
|
281
|
+
? { extensionCallPoints: ORACLE_EXTENSION_CALL_POINTS }
|
|
282
|
+
: {}),
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=admin-inputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-inputs.js","sourceRoot":"","sources":["../src/admin-inputs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-only deployer helpers that require filesystem access.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { CoreBuildArtifacts } from './deployer';
|
|
7
|
+
/**
|
|
8
|
+
* Loads deployable Sierra/CASM artifacts from a packaged contracts release directory.
|
|
9
|
+
*
|
|
10
|
+
* Expected directory shape:
|
|
11
|
+
* - manifest.json
|
|
12
|
+
* - referenced `*.contract_class.json` and `*.compiled_contract_class.json` files
|
|
13
|
+
*/
|
|
14
|
+
export declare function loadCoreBuildArtifactsFromReleaseDir(releaseDir: string): CoreBuildArtifacts;
|
|
15
|
+
//# sourceMappingURL=deployer-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployer-node.d.ts","sourceRoot":"","sources":["../src/deployer-node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAyB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAY5E;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,CA8B3F"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-only deployer helpers that require filesystem access.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
/**
|
|
9
|
+
* Loads deployable Sierra/CASM artifacts from a packaged contracts release directory.
|
|
10
|
+
*
|
|
11
|
+
* Expected directory shape:
|
|
12
|
+
* - manifest.json
|
|
13
|
+
* - referenced `*.contract_class.json` and `*.compiled_contract_class.json` files
|
|
14
|
+
*/
|
|
15
|
+
export function loadCoreBuildArtifactsFromReleaseDir(releaseDir) {
|
|
16
|
+
const manifestPath = join(releaseDir, 'manifest.json');
|
|
17
|
+
const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
18
|
+
const byName = new Map();
|
|
19
|
+
for (const entry of manifest.contracts) {
|
|
20
|
+
byName.set(entry.name, entry);
|
|
21
|
+
}
|
|
22
|
+
const load = (name) => {
|
|
23
|
+
const entry = byName.get(name);
|
|
24
|
+
if (!entry) {
|
|
25
|
+
throw new Error(`Release manifest missing contract entry: ${name}`);
|
|
26
|
+
}
|
|
27
|
+
const sierraPath = join(releaseDir, entry.sierra);
|
|
28
|
+
const casmPath = join(releaseDir, entry.casm);
|
|
29
|
+
return {
|
|
30
|
+
sierra: JSON.parse(readFileSync(sierraPath, 'utf-8')),
|
|
31
|
+
casm: JSON.parse(readFileSync(casmPath, 'utf-8')),
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
amm: load('normal_amm'),
|
|
36
|
+
factory: load('normal_factory'),
|
|
37
|
+
mathLibrary: load('normal_math_library'),
|
|
38
|
+
oracle: load('oracle'),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=deployer-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployer-node.js","sourceRoot":"","sources":["../src/deployer-node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAcjC;;;;;;GAMG;AACH,MAAM,UAAU,oCAAoC,CAAC,UAAkB;IACrE,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAoB,CAAC;IAEpF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,IAAY,EAAyB,EAAE;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9C,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAqB;YACzE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAkB;SACnE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;QACvB,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC/B,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC;QACxC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deployment helpers for factory/oracle/market setup.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { type Abi, type AccountInterface, type CairoAssembly, type CompiledContract } from 'starknet';
|
|
7
|
+
import type { NormalMarketDeploymentParams } from '@the-situation/starknet';
|
|
8
|
+
export interface ContractBuildArtifact {
|
|
9
|
+
readonly sierra: CompiledContract;
|
|
10
|
+
readonly casm: CairoAssembly;
|
|
11
|
+
}
|
|
12
|
+
export interface CoreBuildArtifacts {
|
|
13
|
+
readonly amm: ContractBuildArtifact;
|
|
14
|
+
readonly factory: ContractBuildArtifact;
|
|
15
|
+
readonly mathLibrary: ContractBuildArtifact;
|
|
16
|
+
readonly oracle: ContractBuildArtifact;
|
|
17
|
+
}
|
|
18
|
+
export interface DeclaredClassHashes {
|
|
19
|
+
readonly ammClassHash: string;
|
|
20
|
+
readonly factoryClassHash: string;
|
|
21
|
+
readonly mathLibraryClassHash: string;
|
|
22
|
+
readonly oracleClassHash: string;
|
|
23
|
+
}
|
|
24
|
+
export interface DeployFactoryParams {
|
|
25
|
+
readonly factoryClassHash: string;
|
|
26
|
+
readonly ammClassHash: string;
|
|
27
|
+
readonly mathClassHash: string;
|
|
28
|
+
readonly owner: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Deployment result with both contract address and transaction hash.
|
|
32
|
+
*/
|
|
33
|
+
export interface DeployContractResult {
|
|
34
|
+
readonly contractAddress: string;
|
|
35
|
+
readonly transactionHash: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Contracts release manifest entry used for remote artifact loading.
|
|
39
|
+
*/
|
|
40
|
+
export interface ReleaseManifestEntry {
|
|
41
|
+
readonly name: string;
|
|
42
|
+
readonly sierra: string;
|
|
43
|
+
readonly casm: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Contracts release manifest shape for remote artifact loading.
|
|
47
|
+
*/
|
|
48
|
+
export interface ReleaseManifest {
|
|
49
|
+
readonly contracts: readonly ReleaseManifestEntry[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Source configuration for loading deployable artifacts over HTTP(S).
|
|
53
|
+
*
|
|
54
|
+
* If `baseUrl` is not provided, it is derived from `manifestUrl`.
|
|
55
|
+
*/
|
|
56
|
+
export interface RemoteArtifactsSource {
|
|
57
|
+
readonly manifestUrl: string;
|
|
58
|
+
readonly baseUrl?: string;
|
|
59
|
+
readonly fetchFn?: typeof fetch;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Builds the contracts release tag from a semantic version.
|
|
63
|
+
*
|
|
64
|
+
* Example: `0.6.0` -> `the-situation-contracts-v0.6.0`.
|
|
65
|
+
*/
|
|
66
|
+
export declare function getContractsReleaseTag(version: string): string;
|
|
67
|
+
/**
|
|
68
|
+
* Builds the GitHub release asset base URL for contracts artifacts.
|
|
69
|
+
*/
|
|
70
|
+
export declare function buildGitHubReleaseAssetBaseUrl(owner: string, repo: string, tag: string): string;
|
|
71
|
+
/**
|
|
72
|
+
* Loads deployable Sierra/CASM artifacts from remote release assets.
|
|
73
|
+
*
|
|
74
|
+
* This is intended for admin UIs and browser-based tooling.
|
|
75
|
+
*/
|
|
76
|
+
export declare function loadCoreBuildArtifactsFromReleaseAssets(source: RemoteArtifactsSource): Promise<CoreBuildArtifacts>;
|
|
77
|
+
/**
|
|
78
|
+
* Declares a contract class if it is not already declared.
|
|
79
|
+
*/
|
|
80
|
+
export declare function declareContractIfNeeded(account: AccountInterface, artifact: ContractBuildArtifact): Promise<string>;
|
|
81
|
+
/**
|
|
82
|
+
* Declares AMM, factory, math library, and oracle classes sequentially.
|
|
83
|
+
*/
|
|
84
|
+
export declare function declareCoreContracts(account: AccountInterface, artifacts: CoreBuildArtifacts): Promise<DeclaredClassHashes>;
|
|
85
|
+
/**
|
|
86
|
+
* Deploys the factory contract.
|
|
87
|
+
*/
|
|
88
|
+
export declare function deployFactory(account: AccountInterface, params: DeployFactoryParams): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Deploys the factory contract and returns address + transaction hash.
|
|
91
|
+
*/
|
|
92
|
+
export declare function deployFactoryWithResult(account: AccountInterface, params: DeployFactoryParams): Promise<DeployContractResult>;
|
|
93
|
+
/**
|
|
94
|
+
* Deploys the oracle extension contract.
|
|
95
|
+
*/
|
|
96
|
+
export declare function deployOracle(account: AccountInterface, oracleClassHash: string): Promise<string>;
|
|
97
|
+
/**
|
|
98
|
+
* Deploys the oracle extension contract and returns address + transaction hash.
|
|
99
|
+
*/
|
|
100
|
+
export declare function deployOracleWithResult(account: AccountInterface, oracleClassHash: string): Promise<DeployContractResult>;
|
|
101
|
+
/**
|
|
102
|
+
* Builds ABI-aware calldata for `deploy_normal_market`.
|
|
103
|
+
*/
|
|
104
|
+
export declare function buildDeployNormalMarketCalldata(factoryAbi: Abi, params: NormalMarketDeploymentParams): string[];
|
|
105
|
+
/**
|
|
106
|
+
* Deploys a normal market and returns its deployed address.
|
|
107
|
+
*/
|
|
108
|
+
export declare function deployNormalMarket(account: AccountInterface, factoryAddress: string, factoryAbi: Abi, params: NormalMarketDeploymentParams): Promise<string>;
|
|
109
|
+
/**
|
|
110
|
+
* Deploys a normal market and returns deployed address + transaction hash.
|
|
111
|
+
*/
|
|
112
|
+
export declare function deployNormalMarketWithResult(account: AccountInterface, factoryAddress: string, factoryAbi: Abi, params: NormalMarketDeploymentParams): Promise<DeployContractResult>;
|
|
113
|
+
/**
|
|
114
|
+
* Calculates deterministic oracle address for account.deployContract usage.
|
|
115
|
+
*/
|
|
116
|
+
export declare function calculateOracleAddress(oracleClassHash: string, salt: bigint): string;
|
|
117
|
+
//# sourceMappingURL=deployer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployer.d.ts","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"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"}
|
package/dist/deployer.js
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deployment helpers for factory/oracle/market setup.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { CallData, hash, } from 'starknet';
|
|
7
|
+
const REQUIRED_RELEASE_CONTRACTS = [
|
|
8
|
+
'normal_amm',
|
|
9
|
+
'normal_factory',
|
|
10
|
+
'normal_math_library',
|
|
11
|
+
'oracle',
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* Builds the contracts release tag from a semantic version.
|
|
15
|
+
*
|
|
16
|
+
* Example: `0.6.0` -> `the-situation-contracts-v0.6.0`.
|
|
17
|
+
*/
|
|
18
|
+
export function getContractsReleaseTag(version) {
|
|
19
|
+
return `the-situation-contracts-v${version}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Builds the GitHub release asset base URL for contracts artifacts.
|
|
23
|
+
*/
|
|
24
|
+
export function buildGitHubReleaseAssetBaseUrl(owner, repo, tag) {
|
|
25
|
+
return `https://github.com/${owner}/${repo}/releases/download/${tag}/`;
|
|
26
|
+
}
|
|
27
|
+
function deriveBaseUrl(manifestUrl) {
|
|
28
|
+
const lastSlash = manifestUrl.lastIndexOf('/');
|
|
29
|
+
if (lastSlash === -1) {
|
|
30
|
+
throw new Error('manifestUrl must include a path');
|
|
31
|
+
}
|
|
32
|
+
return manifestUrl.slice(0, lastSlash + 1);
|
|
33
|
+
}
|
|
34
|
+
function assetUrl(baseUrl, fileName) {
|
|
35
|
+
return new URL(fileName, baseUrl).toString();
|
|
36
|
+
}
|
|
37
|
+
async function fetchJson(fetchFn, url) {
|
|
38
|
+
const response = await fetchFn(url);
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
throw new Error(`Failed to fetch ${url}: ${response.status} ${response.statusText}`);
|
|
41
|
+
}
|
|
42
|
+
return await response.json();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Loads deployable Sierra/CASM artifacts from remote release assets.
|
|
46
|
+
*
|
|
47
|
+
* This is intended for admin UIs and browser-based tooling.
|
|
48
|
+
*/
|
|
49
|
+
export async function loadCoreBuildArtifactsFromReleaseAssets(source) {
|
|
50
|
+
const fetchFn = source.fetchFn ?? fetch;
|
|
51
|
+
const baseUrl = source.baseUrl ?? deriveBaseUrl(source.manifestUrl);
|
|
52
|
+
const manifestRaw = await fetchJson(fetchFn, source.manifestUrl);
|
|
53
|
+
const manifest = manifestRaw;
|
|
54
|
+
if (!Array.isArray(manifest.contracts)) {
|
|
55
|
+
throw new Error('Release manifest is missing contracts[]');
|
|
56
|
+
}
|
|
57
|
+
const byName = new Map();
|
|
58
|
+
for (const entry of manifest.contracts) {
|
|
59
|
+
if (!entry ||
|
|
60
|
+
typeof entry.name !== 'string' ||
|
|
61
|
+
typeof entry.sierra !== 'string' ||
|
|
62
|
+
typeof entry.casm !== 'string') {
|
|
63
|
+
throw new Error('Release manifest contains malformed contract entry');
|
|
64
|
+
}
|
|
65
|
+
byName.set(entry.name, entry);
|
|
66
|
+
}
|
|
67
|
+
const load = async (name) => {
|
|
68
|
+
const entry = byName.get(name);
|
|
69
|
+
if (!entry) {
|
|
70
|
+
throw new Error(`Release manifest missing contract entry: ${name}`);
|
|
71
|
+
}
|
|
72
|
+
const sierraRaw = await fetchJson(fetchFn, assetUrl(baseUrl, entry.sierra));
|
|
73
|
+
const casmRaw = await fetchJson(fetchFn, assetUrl(baseUrl, entry.casm));
|
|
74
|
+
return {
|
|
75
|
+
sierra: sierraRaw,
|
|
76
|
+
casm: casmRaw,
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
const [amm, factory, mathLibrary, oracle] = await Promise.all([
|
|
80
|
+
load('normal_amm'),
|
|
81
|
+
load('normal_factory'),
|
|
82
|
+
load('normal_math_library'),
|
|
83
|
+
load('oracle'),
|
|
84
|
+
]);
|
|
85
|
+
return {
|
|
86
|
+
amm,
|
|
87
|
+
factory,
|
|
88
|
+
mathLibrary,
|
|
89
|
+
oracle,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Declares a contract class if it is not already declared.
|
|
94
|
+
*/
|
|
95
|
+
export async function declareContractIfNeeded(account, artifact) {
|
|
96
|
+
const expectedClassHash = hash.computeContractClassHash(artifact.sierra);
|
|
97
|
+
try {
|
|
98
|
+
await account.getClassByHash(expectedClassHash);
|
|
99
|
+
return expectedClassHash;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Not declared yet.
|
|
103
|
+
}
|
|
104
|
+
const declared = await account.declare({
|
|
105
|
+
contract: artifact.sierra,
|
|
106
|
+
casm: artifact.casm,
|
|
107
|
+
});
|
|
108
|
+
await waitForTransaction(account, declared.transaction_hash);
|
|
109
|
+
return declared.class_hash;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Declares AMM, factory, math library, and oracle classes sequentially.
|
|
113
|
+
*/
|
|
114
|
+
export async function declareCoreContracts(account, artifacts) {
|
|
115
|
+
const mathLibraryClassHash = await declareContractIfNeeded(account, artifacts.mathLibrary);
|
|
116
|
+
const factoryClassHash = await declareContractIfNeeded(account, artifacts.factory);
|
|
117
|
+
const ammClassHash = await declareContractIfNeeded(account, artifacts.amm);
|
|
118
|
+
const oracleClassHash = await declareContractIfNeeded(account, artifacts.oracle);
|
|
119
|
+
return {
|
|
120
|
+
ammClassHash,
|
|
121
|
+
factoryClassHash,
|
|
122
|
+
mathLibraryClassHash,
|
|
123
|
+
oracleClassHash,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Deploys the factory contract.
|
|
128
|
+
*/
|
|
129
|
+
export async function deployFactory(account, params) {
|
|
130
|
+
const result = await deployFactoryWithResult(account, params);
|
|
131
|
+
return result.contractAddress;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Deploys the factory contract and returns address + transaction hash.
|
|
135
|
+
*/
|
|
136
|
+
export async function deployFactoryWithResult(account, params) {
|
|
137
|
+
const deployed = await account.deployContract({
|
|
138
|
+
classHash: params.factoryClassHash,
|
|
139
|
+
constructorCalldata: CallData.compile({
|
|
140
|
+
owner: params.owner,
|
|
141
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
142
|
+
amm_class_hash: params.ammClassHash,
|
|
143
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
144
|
+
math_class_hash: params.mathClassHash,
|
|
145
|
+
}),
|
|
146
|
+
});
|
|
147
|
+
await waitForTransaction(account, deployed.transaction_hash);
|
|
148
|
+
return {
|
|
149
|
+
contractAddress: deployed.contract_address,
|
|
150
|
+
transactionHash: deployed.transaction_hash,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Deploys the oracle extension contract.
|
|
155
|
+
*/
|
|
156
|
+
export async function deployOracle(account, oracleClassHash) {
|
|
157
|
+
const result = await deployOracleWithResult(account, oracleClassHash);
|
|
158
|
+
return result.contractAddress;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Deploys the oracle extension contract and returns address + transaction hash.
|
|
162
|
+
*/
|
|
163
|
+
export async function deployOracleWithResult(account, oracleClassHash) {
|
|
164
|
+
const deployed = await account.deployContract({
|
|
165
|
+
classHash: oracleClassHash,
|
|
166
|
+
constructorCalldata: [],
|
|
167
|
+
});
|
|
168
|
+
await waitForTransaction(account, deployed.transaction_hash);
|
|
169
|
+
return {
|
|
170
|
+
contractAddress: deployed.contract_address,
|
|
171
|
+
transactionHash: deployed.transaction_hash,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Builds ABI-aware calldata for `deploy_normal_market`.
|
|
176
|
+
*/
|
|
177
|
+
export function buildDeployNormalMarketCalldata(factoryAbi, params) {
|
|
178
|
+
const callData = new CallData(factoryAbi);
|
|
179
|
+
return callData.compile('deploy_normal_market', {
|
|
180
|
+
salt: params.salt,
|
|
181
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
182
|
+
market_owner: params.marketOwner,
|
|
183
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
184
|
+
market_admin: params.marketAdmin,
|
|
185
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
186
|
+
collateral_token: params.collateralToken,
|
|
187
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
188
|
+
token_decimals: params.tokenDecimals,
|
|
189
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
190
|
+
internal_decimals: params.internalDecimals,
|
|
191
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
192
|
+
initial_distribution: params.initialDistribution,
|
|
193
|
+
k: params.k,
|
|
194
|
+
backing: params.backing,
|
|
195
|
+
tolerance: params.tolerance,
|
|
196
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
197
|
+
min_trade_collateral: params.minTradeCollateral,
|
|
198
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
199
|
+
initial_hints: params.initialHints,
|
|
200
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
201
|
+
fee_config: {
|
|
202
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
203
|
+
lp_fee_bps: params.feeConfig.lpFeeBps,
|
|
204
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
205
|
+
protocol_fee_bps: params.feeConfig.protocolFeeBps,
|
|
206
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
207
|
+
settlement_fee_bps: params.feeConfig.settlementFeeBps,
|
|
208
|
+
},
|
|
209
|
+
extension: params.extension ?? '0x0',
|
|
210
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
211
|
+
extension_call_points: params.extensionCallPoints ?? 0,
|
|
212
|
+
// biome-ignore lint/style/useNamingConvention: Cairo ABI field names are snake_case
|
|
213
|
+
metadata_hash: params.metadataHash ?? '0x0',
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Deploys a normal market and returns its deployed address.
|
|
218
|
+
*/
|
|
219
|
+
export async function deployNormalMarket(account, factoryAddress, factoryAbi, params) {
|
|
220
|
+
const result = await deployNormalMarketWithResult(account, factoryAddress, factoryAbi, params);
|
|
221
|
+
return result.contractAddress;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Deploys a normal market and returns deployed address + transaction hash.
|
|
225
|
+
*/
|
|
226
|
+
export async function deployNormalMarketWithResult(account, factoryAddress, factoryAbi, params) {
|
|
227
|
+
const calldata = buildDeployNormalMarketCalldata(factoryAbi, params);
|
|
228
|
+
const result = await account.execute({
|
|
229
|
+
contractAddress: factoryAddress,
|
|
230
|
+
entrypoint: 'deploy_normal_market',
|
|
231
|
+
calldata,
|
|
232
|
+
});
|
|
233
|
+
const receipt = await waitForTransaction(account, result.transaction_hash);
|
|
234
|
+
const marketAddress = extractMarketAddressFromReceipt(receipt);
|
|
235
|
+
if (!marketAddress) {
|
|
236
|
+
throw new Error('MarketDeployed event not found in transaction receipt');
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
contractAddress: marketAddress,
|
|
240
|
+
transactionHash: result.transaction_hash,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Calculates deterministic oracle address for account.deployContract usage.
|
|
245
|
+
*/
|
|
246
|
+
export function calculateOracleAddress(oracleClassHash, salt) {
|
|
247
|
+
return hash.calculateContractAddressFromHash(salt, oracleClassHash, [], 0);
|
|
248
|
+
}
|
|
249
|
+
async function waitForTransaction(account, transactionHash) {
|
|
250
|
+
return await account.waitForTransaction(transactionHash, { retryInterval: 1000 });
|
|
251
|
+
}
|
|
252
|
+
function extractMarketAddressFromReceipt(receipt) {
|
|
253
|
+
const selector = hash.getSelectorFromName('MarketDeployed');
|
|
254
|
+
const event = receipt.events?.find((candidate) => candidate.keys?.[0] === selector);
|
|
255
|
+
if (!event?.keys || event.keys.length < 2) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
return event.keys[1] ?? null;
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=deployer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployer.js","sourceRoot":"","sources":["../src/deployer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,QAAQ,EAGR,IAAI,GACL,MAAM,UAAU,CAAC;AAgElB,MAAM,0BAA0B,GAAG;IACjC,YAAY;IACZ,gBAAgB;IAChB,qBAAqB;IACrB,QAAQ;CACA,CAAC;AAIX;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,4BAA4B,OAAO,EAAE,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAAa,EACb,IAAY,EACZ,GAAW;IAEX,OAAO,sBAAsB,KAAK,IAAI,IAAI,sBAAsB,GAAG,GAAG,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,WAAmB;IACxC,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,QAAgB;IACjD,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,OAAqB,EACrB,GAAW;IAEX,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uCAAuC,CAC3D,MAA6B;IAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,WAAuC,CAAC;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvC,IACE,CAAC,KAAK;YACN,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC9B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;YAChC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAC9B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAA6B,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,EAAE,IAA6B,EAAkC,EAAE;QACnF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAExE,OAAO;YACL,MAAM,EAAE,SAA6B;YACrC,IAAI,EAAE,OAAwB;SAC/B,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC;QAClB,IAAI,CAAC,gBAAgB,CAAC;QACtB,IAAI,CAAC,qBAAqB,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC;KACf,CAAC,CAAC;IAEH,OAAO;QACL,GAAG;QACH,OAAO;QACP,WAAW;QACX,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAyB,EACzB,QAA+B;IAE/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzE,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAChD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,oBAAoB;IACtB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;QACrC,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC,CAAC;IAEH,MAAM,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC,UAAU,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAyB,EACzB,SAA6B;IAE7B,MAAM,oBAAoB,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3F,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAEjF,OAAO;QACL,YAAY;QACZ,gBAAgB;QAChB,oBAAoB;QACpB,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAyB,EACzB,MAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,eAAe,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAyB,EACzB,MAA2B;IAE3B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC;QAC5C,SAAS,EAAE,MAAM,CAAC,gBAAgB;QAClC,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,oFAAoF;YACpF,cAAc,EAAE,MAAM,CAAC,YAAY;YACnC,oFAAoF;YACpF,eAAe,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC7D,OAAO;QACL,eAAe,EAAE,QAAQ,CAAC,gBAAgB;QAC1C,eAAe,EAAE,QAAQ,CAAC,gBAAgB;KAC3C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAyB,EACzB,eAAuB;IAEvB,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,eAAe,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAyB,EACzB,eAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC;QAC5C,SAAS,EAAE,eAAe;QAC1B,mBAAmB,EAAE,EAAE;KACxB,CAAC,CAAC;IAEH,MAAM,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC7D,OAAO;QACL,eAAe,EAAE,QAAQ,CAAC,gBAAgB;QAC1C,eAAe,EAAE,QAAQ,CAAC,gBAAgB;KAC3C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAC7C,UAAe,EACf,MAAoC;IAEpC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE1C,OAAO,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE;QAC9C,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,oFAAoF;QACpF,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,oFAAoF;QACpF,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,oFAAoF;QACpF,gBAAgB,EAAE,MAAM,CAAC,eAAe;QACxC,oFAAoF;QACpF,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,oFAAoF;QACpF,iBAAiB,EAAE,MAAM,CAAC,gBAAgB;QAC1C,oFAAoF;QACpF,oBAAoB,EAAE,MAAM,CAAC,mBAAmB;QAChD,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,oFAAoF;QACpF,oBAAoB,EAAE,MAAM,CAAC,kBAAkB;QAC/C,oFAAoF;QACpF,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,oFAAoF;QACpF,UAAU,EAAE;YACV,oFAAoF;YACpF,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;YACrC,oFAAoF;YACpF,gBAAgB,EAAE,MAAM,CAAC,SAAS,CAAC,cAAc;YACjD,oFAAoF;YACpF,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,gBAAgB;SACtD;QACD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;QACpC,oFAAoF;QACpF,qBAAqB,EAAE,MAAM,CAAC,mBAAmB,IAAI,CAAC;QACtD,oFAAoF;QACpF,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,KAAK;KAC5C,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAyB,EACzB,cAAsB,EACtB,UAAe,EACf,MAAoC;IAEpC,MAAM,MAAM,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/F,OAAO,MAAM,CAAC,eAAe,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAyB,EACzB,cAAsB,EACtB,UAAe,EACf,MAAoC;IAEpC,MAAM,QAAQ,GAAG,+BAA+B,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;QACnC,eAAe,EAAE,cAAc;QAC/B,UAAU,EAAE,sBAAsB;QAClC,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO;QACL,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,MAAM,CAAC,gBAAgB;KACzC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,eAAuB,EACvB,IAAY;IAEZ,OAAO,IAAI,CAAC,gCAAgC,CAC1C,IAAI,EACJ,eAAe,EACf,EAAE,EACF,CAAC,CACF,CAAC;AACJ,CAAC;AAUD,KAAK,UAAU,kBAAkB,CAC/B,OAAyB,EACzB,eAAuB;IAEvB,OAAO,MAAM,OAAO,CAAC,kBAAkB,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAc,CAAC;AACjG,CAAC;AAED,SAAS,+BAA+B,CAAC,OAAkB;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;IACpF,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC/B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @the-situation/deployer
|
|
3
|
+
*
|
|
4
|
+
* Contract deployment tooling for The Situation prediction markets.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export { buildGitHubReleaseAssetBaseUrl, buildDeployNormalMarketCalldata, calculateOracleAddress, declareContractIfNeeded, declareCoreContracts, deployFactory, deployFactoryWithResult, deployNormalMarket, deployNormalMarketWithResult, deployOracle, deployOracleWithResult, getContractsReleaseTag, loadCoreBuildArtifactsFromReleaseAssets, type ContractBuildArtifact, type CoreBuildArtifacts, type DeclaredClassHashes, type DeployContractResult, type DeployFactoryParams, type ReleaseManifest, type ReleaseManifestEntry, type RemoteArtifactsSource, } from './deployer';
|
|
9
|
+
export { buildDeployFactoryParams, buildDeployNormalMarketParams, buildDeployNormalMarketParamsWithSignerDefaults, ORACLE_EXTENSION_CALL_POINTS, packExtensionCallPoints, buildSettlementValueRaw, buildSQ128x128Raw, unpackExtensionCallPoints, type DeployFactoryInput, type DeployNormalMarketInput, type DeployNormalMarketInputWithSignerDefaults, type ExtensionCallPointsConfig, } from './admin-inputs';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,4BAA4B,EAC5B,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,uCAAuC,EACvC,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,+CAA+C,EAC/C,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,yCAAyC,EAC9C,KAAK,yBAAyB,GAC/B,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @the-situation/deployer
|
|
3
|
+
*
|
|
4
|
+
* Contract deployment tooling for The Situation prediction markets.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export { buildGitHubReleaseAssetBaseUrl, buildDeployNormalMarketCalldata, calculateOracleAddress, declareContractIfNeeded, declareCoreContracts, deployFactory, deployFactoryWithResult, deployNormalMarket, deployNormalMarketWithResult, deployOracle, deployOracleWithResult, getContractsReleaseTag, loadCoreBuildArtifactsFromReleaseAssets, } from './deployer';
|
|
9
|
+
export { buildDeployFactoryParams, buildDeployNormalMarketParams, buildDeployNormalMarketParamsWithSignerDefaults, ORACLE_EXTENSION_CALL_POINTS, packExtensionCallPoints, buildSettlementValueRaw, buildSQ128x128Raw, unpackExtensionCallPoints, } from './admin-inputs';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,4BAA4B,EAC5B,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,uCAAuC,GASxC,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,+CAA+C,EAC/C,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,GAK1B,MAAM,gBAAgB,CAAC"}
|
package/dist/node.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-only deployer helpers.
|
|
3
|
+
*
|
|
4
|
+
* Import from `@the-situation/deployer/node` to access filesystem-backed
|
|
5
|
+
* artifact loading helpers.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
export { loadCoreBuildArtifactsFromReleaseDir } from './deployer-node';
|
|
10
|
+
export type { ContractBuildArtifact, CoreBuildArtifacts } from './deployer';
|
|
11
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oCAAoC,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/node.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node-only deployer helpers.
|
|
3
|
+
*
|
|
4
|
+
* Import from `@the-situation/deployer/node` to access filesystem-backed
|
|
5
|
+
* artifact loading helpers.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
export { loadCoreBuildArtifactsFromReleaseDir } from './deployer-node';
|
|
10
|
+
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oCAAoC,EAAE,MAAM,iBAAiB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@the-situation/deployer",
|
|
3
|
+
"version": "0.5.0-alpha.0",
|
|
4
|
+
"description": "Contract deployment tooling for The Situation prediction markets",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
},
|
|
13
|
+
"./node": {
|
|
14
|
+
"import": "./dist/node.js",
|
|
15
|
+
"types": "./dist/node.d.ts"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": ["dist"],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -b",
|
|
21
|
+
"typecheck": "tsc -b",
|
|
22
|
+
"test": "bun test src/",
|
|
23
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
24
|
+
"declare:sepolia": "bun run scripts/declare-sepolia-core.ts",
|
|
25
|
+
"deploy:sepolia": "bun run scripts/deploy-sepolia.ts"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@the-situation/core": "0.5.0-alpha.0",
|
|
29
|
+
"@the-situation/abi": "0.5.0-alpha.0",
|
|
30
|
+
"@the-situation/utils": "0.5.0-alpha.0",
|
|
31
|
+
"@the-situation/starknet": "0.5.0-alpha.0",
|
|
32
|
+
"starknet": "^9.2.1",
|
|
33
|
+
"effect": "^3.12.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@the-situation/artifacts": "0.5.0-alpha.0",
|
|
37
|
+
"typescript": "^5.4.0",
|
|
38
|
+
"@types/bun": "^1.1.0"
|
|
39
|
+
},
|
|
40
|
+
"license": "MIT"
|
|
41
|
+
}
|