@t2000/sdk 10.21.2 → 10.22.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/browser.cjs +2 -2
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.cts +1 -1
- package/dist/browser.d.ts +1 -1
- package/dist/browser.js +2 -2
- package/dist/browser.js.map +1 -1
- package/dist/{commerce-CS4wgrg5.d.cts → commerce-D79xwwJ8.d.cts} +3 -3
- package/dist/{commerce-CS4wgrg5.d.ts → commerce-D79xwwJ8.d.ts} +3 -3
- package/dist/index.cjs +3 -405
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -199
- package/dist/index.d.ts +3 -199
- package/dist/index.js +4 -385
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { normalizeStructTag, isValidSuiAddress, normalizeSuiAddress, fromBase64 } from '@mysten/sui/utils';
|
|
2
2
|
import { coinWithBalance, Transaction } from '@mysten/sui/transactions';
|
|
3
3
|
import { AggregatorClient, Env } from '@cetusprotocol/aggregator-sdk';
|
|
4
4
|
import BN from 'bn.js';
|
|
@@ -17,7 +17,6 @@ import { sha256 } from '@noble/hashes/sha256';
|
|
|
17
17
|
import { hexToBytes, bytesToHex } from '@noble/hashes/utils';
|
|
18
18
|
import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
19
19
|
import { SuinsTransaction } from '@mysten/suins';
|
|
20
|
-
import { bcs } from '@mysten/sui/bcs';
|
|
21
20
|
|
|
22
21
|
var __defProp = Object.defineProperty;
|
|
23
22
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
@@ -1135,7 +1134,7 @@ function preflightPay(input) {
|
|
|
1135
1134
|
}
|
|
1136
1135
|
return PREFLIGHT_OK;
|
|
1137
1136
|
}
|
|
1138
|
-
async function
|
|
1137
|
+
async function payWithX402(args) {
|
|
1139
1138
|
const { signer, client } = args;
|
|
1140
1139
|
let options = args.options;
|
|
1141
1140
|
const pf = preflightPay({ url: options.url, maxPrice: options.maxPrice });
|
|
@@ -2787,7 +2786,7 @@ var T2000 = class _T2000 extends EventEmitter {
|
|
|
2787
2786
|
// -- MPP Payments --
|
|
2788
2787
|
async pay(options) {
|
|
2789
2788
|
this.limits.assert({ operation: "pay", amountUsd: options.maxPrice ?? 0, force: options.force });
|
|
2790
|
-
const result = await
|
|
2789
|
+
const result = await payWithX402({ signer: this._signer, client: this.client, options });
|
|
2791
2790
|
if (result.paid) {
|
|
2792
2791
|
this.limits.record(result.cost ?? options.maxPrice ?? 0);
|
|
2793
2792
|
}
|
|
@@ -4158,386 +4157,6 @@ function displayHandle(label, parentName = AUDRIC_PARENT_NAME) {
|
|
|
4158
4157
|
// src/index.ts
|
|
4159
4158
|
init_preflight();
|
|
4160
4159
|
|
|
4161
|
-
|
|
4162
|
-
init_errors();
|
|
4163
|
-
init_token_registry();
|
|
4164
|
-
init_coinSelection();
|
|
4165
|
-
|
|
4166
|
-
// src/protocols/cetus-clmm.ts
|
|
4167
|
-
var CETUS_CLMM_PACKAGE_ID = process.env.CETUS_CLMM_PACKAGE_ID ?? "0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb";
|
|
4168
|
-
var CETUS_CLMM_PUBLISHED_AT = process.env.CETUS_CLMM_PUBLISHED_AT ?? "0x25ebb9a7c50eb17b3fa9c5a30fb8b5ad8f97caaf4928943acbcff7153dfee5e3";
|
|
4169
|
-
var CETUS_GLOBAL_CONFIG_ID = process.env.CETUS_GLOBAL_CONFIG_ID ?? "0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f";
|
|
4170
|
-
var CETUS_POOLS_ID = process.env.CETUS_POOLS_ID ?? "0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0";
|
|
4171
|
-
var CETUS_POSITION_TYPE = `${CETUS_CLMM_PACKAGE_ID}::position::Position`;
|
|
4172
|
-
var AGENT_POOL_TICK_SPACING = 200;
|
|
4173
|
-
function sqrtPriceX64FromAmounts(rawA, rawB) {
|
|
4174
|
-
if (rawA <= 0n || rawB <= 0n) {
|
|
4175
|
-
throw new Error("sqrtPriceX64FromAmounts: amounts must be positive");
|
|
4176
|
-
}
|
|
4177
|
-
return bigintSqrt((rawB << 128n) / rawA);
|
|
4178
|
-
}
|
|
4179
|
-
function bigintSqrt(n) {
|
|
4180
|
-
if (n < 0n) throw new Error("bigintSqrt: negative input");
|
|
4181
|
-
if (n < 2n) return n;
|
|
4182
|
-
let x = 1n << BigInt(n.toString(2).length + 1) / 2n;
|
|
4183
|
-
let prev = x + 1n;
|
|
4184
|
-
while (x < prev) {
|
|
4185
|
-
prev = x;
|
|
4186
|
-
x = (x + n / x) / 2n;
|
|
4187
|
-
}
|
|
4188
|
-
return prev;
|
|
4189
|
-
}
|
|
4190
|
-
function createPoolV3(tx, args) {
|
|
4191
|
-
const [tickLower, tickUpper] = fullRangeTickRange(tx);
|
|
4192
|
-
return tx.moveCall({
|
|
4193
|
-
target: `${CETUS_CLMM_PUBLISHED_AT}::pool_creator::create_pool_v3`,
|
|
4194
|
-
typeArguments: [args.coinTypeA, args.coinTypeB],
|
|
4195
|
-
arguments: [
|
|
4196
|
-
tx.object(CETUS_GLOBAL_CONFIG_ID),
|
|
4197
|
-
tx.object(CETUS_POOLS_ID),
|
|
4198
|
-
tx.pure.u32(AGENT_POOL_TICK_SPACING),
|
|
4199
|
-
tx.pure.u128(args.sqrtPriceX64),
|
|
4200
|
-
tx.pure.string(args.url ?? ""),
|
|
4201
|
-
tickLower,
|
|
4202
|
-
tickUpper,
|
|
4203
|
-
args.coinA,
|
|
4204
|
-
args.coinB,
|
|
4205
|
-
tx.pure.bool(args.fixAmountA),
|
|
4206
|
-
tx.object.clock()
|
|
4207
|
-
]
|
|
4208
|
-
});
|
|
4209
|
-
}
|
|
4210
|
-
function fullRangeTickRange(tx) {
|
|
4211
|
-
const result = tx.moveCall({
|
|
4212
|
-
target: `${CETUS_CLMM_PUBLISHED_AT}::pool_creator::full_range_tick_range`,
|
|
4213
|
-
arguments: [tx.pure.u32(AGENT_POOL_TICK_SPACING)]
|
|
4214
|
-
});
|
|
4215
|
-
return [result[0], result[1]];
|
|
4216
|
-
}
|
|
4217
|
-
function positionPoolId(tx, position) {
|
|
4218
|
-
return tx.moveCall({
|
|
4219
|
-
target: `${CETUS_CLMM_PUBLISHED_AT}::position::pool_id`,
|
|
4220
|
-
arguments: [position]
|
|
4221
|
-
});
|
|
4222
|
-
}
|
|
4223
|
-
|
|
4224
|
-
// src/capital/template.ts
|
|
4225
|
-
init_errors();
|
|
4226
|
-
|
|
4227
|
-
// src/capital/template-bytecode.json
|
|
4228
|
-
var template_bytecode_default = {
|
|
4229
|
-
modules: [
|
|
4230
|
-
"oRzrCwcAAAUKAQAMAgwkAzAoBFgMBWRoB8wBzwEImwNgBvsDiQEKhAUFDIkFNAARAQ0CBwISAhMCFAADAgABAgcBAAACAAwBAAECAQwBAAECBAwBAAEEBQIABQYHAAAKAAEAARAFBgEAAggICQECAgsKCwEAAw4FAQEMAw8NAQEMBQwDBAABBAIHAwcFDAQOBA8CCAAHCAUAAgsDAQgACwQBCAABCgIBCAYBCQABCwEBCQABCAAHCQACCgIKAgoCCwEBCAYHCAUCCwQBCQALAwEJAAMHCwQBCQADBwgFAQsCAQkAAQsCAQgAAgkABQELAwEIAAELBAEIAARDb2luDENvaW5NZXRhZGF0YQZPcHRpb24IVEVNUExBVEULVHJlYXN1cnlDYXAJVHhDb250ZXh0A1VybARjb2luD2NyZWF0ZV9jdXJyZW5jeQtkdW1teV9maWVsZARpbml0BG1pbnQVbmV3X3Vuc2FmZV9mcm9tX2J5dGVzBm9wdGlvbhRwdWJsaWNfZnJlZXplX29iamVjdA9wdWJsaWNfdHJhbnNmZXIEc29tZQh0ZW1wbGF0ZQh0cmFuc2Zlcgp0eF9jb250ZXh0A3VybAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIBBgoCBQRUTVBMCgIODVRlbXBsYXRlIENvaW4KAh4dYnl0ZWNvZGUgdGVtcGxhdGUgcGxhY2Vob2xkZXIKAh0caHR0cHM6Ly9leGFtcGxlLmNvbS9pY29uLnN2ZwMIAIDGpH6NAwAFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMr+AAIBCQEAAAAAAhcLAAcABwEHAgcDBwQRBjgACgE4AQwCDAMNAwcFCwE4AgcGOAMLAjgECwM4BQIAAA=="
|
|
4231
|
-
],
|
|
4232
|
-
dependencies: [
|
|
4233
|
-
"0x0000000000000000000000000000000000000000000000000000000000000001",
|
|
4234
|
-
"0x0000000000000000000000000000000000000000000000000000000000000002"
|
|
4235
|
-
]};
|
|
4236
|
-
|
|
4237
|
-
// src/capital/template.ts
|
|
4238
|
-
var TEMPLATE = {
|
|
4239
|
-
module: "template",
|
|
4240
|
-
otw: "TEMPLATE",
|
|
4241
|
-
symbol: "TMPL",
|
|
4242
|
-
name: "Template Coin",
|
|
4243
|
-
description: "bytecode template placeholder",
|
|
4244
|
-
iconUrl: "https://example.com/icon.svg",
|
|
4245
|
-
totalSupply: 1000000000000000n,
|
|
4246
|
-
recipient: normalizeSuiAddress("0xCAFE")
|
|
4247
|
-
};
|
|
4248
|
-
var AGENT_TOKEN_DECIMALS = 6;
|
|
4249
|
-
var AGENT_TOKEN_TOTAL_SUPPLY = 1000000000000000n;
|
|
4250
|
-
var AGENT_TOKEN_LP_ALLOCATION = AGENT_TOKEN_TOTAL_SUPPLY / 2n;
|
|
4251
|
-
var AGENT_TOKEN_TREASURY_ALLOCATION = AGENT_TOKEN_TOTAL_SUPPLY - AGENT_TOKEN_LP_ALLOCATION;
|
|
4252
|
-
var SYMBOL_BLOCKLIST = /* @__PURE__ */ new Set([
|
|
4253
|
-
"SUI",
|
|
4254
|
-
"USDC",
|
|
4255
|
-
"USDT",
|
|
4256
|
-
"USDSUI",
|
|
4257
|
-
"WAL",
|
|
4258
|
-
"CETUS",
|
|
4259
|
-
"DEEP",
|
|
4260
|
-
"NS",
|
|
4261
|
-
"NAVX",
|
|
4262
|
-
"SCA",
|
|
4263
|
-
"AFSUI",
|
|
4264
|
-
"HASUI",
|
|
4265
|
-
"VSUI",
|
|
4266
|
-
"BUCK",
|
|
4267
|
-
"FUD",
|
|
4268
|
-
"BLUB",
|
|
4269
|
-
"HIPPO",
|
|
4270
|
-
"BTC",
|
|
4271
|
-
"WBTC",
|
|
4272
|
-
"ETH",
|
|
4273
|
-
"WETH",
|
|
4274
|
-
"SOL",
|
|
4275
|
-
"BNB",
|
|
4276
|
-
"XRP",
|
|
4277
|
-
"ADA",
|
|
4278
|
-
"DOGE",
|
|
4279
|
-
"AVAX",
|
|
4280
|
-
"LINK",
|
|
4281
|
-
"TRX",
|
|
4282
|
-
"TON",
|
|
4283
|
-
"SHIB",
|
|
4284
|
-
"PEPE",
|
|
4285
|
-
"USDE",
|
|
4286
|
-
"DAI",
|
|
4287
|
-
"GOLD",
|
|
4288
|
-
"XAUM",
|
|
4289
|
-
"T2000",
|
|
4290
|
-
"T2K",
|
|
4291
|
-
"AUDRIC"
|
|
4292
|
-
]);
|
|
4293
|
-
var SYMBOL_RE = /^[A-Z][A-Z0-9]{1,7}$/;
|
|
4294
|
-
function validateAgentCoinParams(params) {
|
|
4295
|
-
const symbol = params.symbol.toUpperCase();
|
|
4296
|
-
if (!SYMBOL_RE.test(symbol)) {
|
|
4297
|
-
throw new T2000Error(
|
|
4298
|
-
"INVALID_INPUT",
|
|
4299
|
-
`symbol must be 2-8 chars, A-Z then A-Z0-9 (got "${params.symbol}")`
|
|
4300
|
-
);
|
|
4301
|
-
}
|
|
4302
|
-
if (SYMBOL_BLOCKLIST.has(symbol)) {
|
|
4303
|
-
throw new T2000Error(
|
|
4304
|
-
"INVALID_INPUT",
|
|
4305
|
-
`symbol ${symbol} impersonates an existing ticker`
|
|
4306
|
-
);
|
|
4307
|
-
}
|
|
4308
|
-
if (!params.name.trim() || params.name.length > 64) {
|
|
4309
|
-
throw new T2000Error("INVALID_INPUT", "name must be 1-64 chars");
|
|
4310
|
-
}
|
|
4311
|
-
if (params.description.length > 256) {
|
|
4312
|
-
throw new T2000Error("INVALID_INPUT", "description must be \u2264256 chars");
|
|
4313
|
-
}
|
|
4314
|
-
if (!/^https:\/\/.+/.test(params.iconUrl) || params.iconUrl.length > 256) {
|
|
4315
|
-
throw new T2000Error("INVALID_INPUT", "iconUrl must be https and \u2264256 chars");
|
|
4316
|
-
}
|
|
4317
|
-
if (!isValidSuiAddress(params.recipient)) {
|
|
4318
|
-
throw new T2000Error("INVALID_ADDRESS", `bad recipient: ${params.recipient}`);
|
|
4319
|
-
}
|
|
4320
|
-
}
|
|
4321
|
-
async function buildAgentCoinModule(params) {
|
|
4322
|
-
const { deserialize, serialize, update_constants, update_identifiers } = await import('@mysten/move-bytecode-template');
|
|
4323
|
-
validateAgentCoinParams(params);
|
|
4324
|
-
const symbol = params.symbol.toUpperCase();
|
|
4325
|
-
const moduleName = symbol.toLowerCase();
|
|
4326
|
-
const recipient = normalizeSuiAddress(params.recipient);
|
|
4327
|
-
let bytes = Uint8Array.from(
|
|
4328
|
-
Buffer.from(template_bytecode_default.modules[0], "base64")
|
|
4329
|
-
);
|
|
4330
|
-
deserialize(bytes);
|
|
4331
|
-
bytes = update_identifiers(bytes, {
|
|
4332
|
-
[TEMPLATE.module]: moduleName,
|
|
4333
|
-
[TEMPLATE.otw]: symbol
|
|
4334
|
-
});
|
|
4335
|
-
const str = (s) => bcs.string().serialize(s).toBytes();
|
|
4336
|
-
const rewrites = [
|
|
4337
|
-
[str(symbol), str(TEMPLATE.symbol), "Vector(U8)"],
|
|
4338
|
-
[str(params.name), str(TEMPLATE.name), "Vector(U8)"],
|
|
4339
|
-
[str(params.description), str(TEMPLATE.description), "Vector(U8)"],
|
|
4340
|
-
[str(params.iconUrl), str(TEMPLATE.iconUrl), "Vector(U8)"],
|
|
4341
|
-
[
|
|
4342
|
-
bcs.Address.serialize(recipient).toBytes(),
|
|
4343
|
-
bcs.Address.serialize(TEMPLATE.recipient).toBytes(),
|
|
4344
|
-
"Address"
|
|
4345
|
-
],
|
|
4346
|
-
// Supply + decimals are LOCKED v1 constants — not caller-parameterized —
|
|
4347
|
-
// but rewritten anyway so a drifted template recompile can't silently
|
|
4348
|
-
// change the economics out from under this module's exported constants.
|
|
4349
|
-
[
|
|
4350
|
-
bcs.u64().serialize(AGENT_TOKEN_TOTAL_SUPPLY).toBytes(),
|
|
4351
|
-
bcs.u64().serialize(TEMPLATE.totalSupply).toBytes(),
|
|
4352
|
-
"U64"
|
|
4353
|
-
]
|
|
4354
|
-
];
|
|
4355
|
-
for (const [next, prev, type] of rewrites) {
|
|
4356
|
-
bytes = update_constants(bytes, next, prev, type);
|
|
4357
|
-
}
|
|
4358
|
-
serialize(deserialize(bytes));
|
|
4359
|
-
return {
|
|
4360
|
-
modules: [Array.from(bytes)],
|
|
4361
|
-
dependencies: template_bytecode_default.dependencies,
|
|
4362
|
-
moduleName,
|
|
4363
|
-
otw: symbol
|
|
4364
|
-
};
|
|
4365
|
-
}
|
|
4366
|
-
|
|
4367
|
-
// src/capital/launch.ts
|
|
4368
|
-
var AGENT_CAPITAL_PACKAGE_ID = process.env.AGENT_CAPITAL_PACKAGE_ID ?? "0xa83ecc4e530594f8e184faf6a4c3da6791267f6791a653644d59e2e603c055b8";
|
|
4369
|
-
var AGENT_CAPITAL_PUBLISHED_AT = process.env.AGENT_CAPITAL_PUBLISHED_AT ?? "0x2974c16bda8f148ef5f8c3177d3d63eec060b1048648ae3b6c1fb495c2a602dd";
|
|
4370
|
-
var CAPITAL_REGISTRY_ID = process.env.CAPITAL_REGISTRY_ID ?? "0xef4057baac856d65b47f14a1ba14211299637955ea5bc15d7708f6eef27ee0df";
|
|
4371
|
-
var CAPITAL_REGISTRY_VERSION = Number(
|
|
4372
|
-
process.env.CAPITAL_REGISTRY_VERSION ?? 931861908
|
|
4373
|
-
);
|
|
4374
|
-
function assertDeployed() {
|
|
4375
|
-
if (!AGENT_CAPITAL_PACKAGE_ID || !CAPITAL_REGISTRY_ID) {
|
|
4376
|
-
throw new T2000Error(
|
|
4377
|
-
"PROTOCOL_UNAVAILABLE",
|
|
4378
|
-
"agent_capital is not deployed on this network (set AGENT_CAPITAL_PACKAGE_ID + CAPITAL_REGISTRY_ID)"
|
|
4379
|
-
);
|
|
4380
|
-
}
|
|
4381
|
-
}
|
|
4382
|
-
var MIN_LP_USDC = 5000000n;
|
|
4383
|
-
var REGISTRY_MODULE = "registry";
|
|
4384
|
-
var LP_LOCK_MODULE = "lp_lock";
|
|
4385
|
-
var VESTING_MODULE = "vesting";
|
|
4386
|
-
async function buildPublishAgentCoinTx(args) {
|
|
4387
|
-
if (!isValidSuiAddress(args.launcher)) {
|
|
4388
|
-
throw new T2000Error("INVALID_ADDRESS", `bad launcher: ${args.launcher}`);
|
|
4389
|
-
}
|
|
4390
|
-
if (args.coin.recipient !== args.launcher) {
|
|
4391
|
-
throw new T2000Error(
|
|
4392
|
-
"INVALID_INPUT",
|
|
4393
|
-
"coin.recipient must equal launcher \u2014 the full supply lands with the launch signer, never a third party"
|
|
4394
|
-
);
|
|
4395
|
-
}
|
|
4396
|
-
const mod = await buildAgentCoinModule(args.coin);
|
|
4397
|
-
const tx = new Transaction();
|
|
4398
|
-
tx.setSender(args.launcher);
|
|
4399
|
-
const [upgradeCap] = tx.publish({
|
|
4400
|
-
modules: mod.modules,
|
|
4401
|
-
dependencies: mod.dependencies
|
|
4402
|
-
});
|
|
4403
|
-
tx.moveCall({
|
|
4404
|
-
target: "0x2::package::make_immutable",
|
|
4405
|
-
arguments: [upgradeCap]
|
|
4406
|
-
});
|
|
4407
|
-
return { tx, moduleName: mod.moduleName, otw: mod.otw };
|
|
4408
|
-
}
|
|
4409
|
-
async function buildTokenizeTx(args) {
|
|
4410
|
-
assertDeployed();
|
|
4411
|
-
if (!isValidSuiAddress(args.agent)) {
|
|
4412
|
-
throw new T2000Error("INVALID_ADDRESS", `bad agent: ${args.agent}`);
|
|
4413
|
-
}
|
|
4414
|
-
if (!isValidSuiAddress(args.launcher)) {
|
|
4415
|
-
throw new T2000Error("INVALID_ADDRESS", `bad launcher: ${args.launcher}`);
|
|
4416
|
-
}
|
|
4417
|
-
if (args.lpUsdcAmount < MIN_LP_USDC) {
|
|
4418
|
-
throw new T2000Error(
|
|
4419
|
-
"INVALID_AMOUNT",
|
|
4420
|
-
`lpUsdcAmount ${args.lpUsdcAmount} < minimum ${MIN_LP_USDC} raw (5 USDC)`
|
|
4421
|
-
);
|
|
4422
|
-
}
|
|
4423
|
-
const tx = new Transaction();
|
|
4424
|
-
tx.setSender(args.launcher);
|
|
4425
|
-
const registryArg = () => tx.sharedObjectRef({
|
|
4426
|
-
objectId: CAPITAL_REGISTRY_ID,
|
|
4427
|
-
initialSharedVersion: CAPITAL_REGISTRY_VERSION,
|
|
4428
|
-
mutable: true
|
|
4429
|
-
});
|
|
4430
|
-
tx.moveCall({
|
|
4431
|
-
target: `${AGENT_CAPITAL_PUBLISHED_AT}::${REGISTRY_MODULE}::bind`,
|
|
4432
|
-
typeArguments: [args.coinType],
|
|
4433
|
-
arguments: [
|
|
4434
|
-
registryArg(),
|
|
4435
|
-
tx.object(args.agentRegistryId),
|
|
4436
|
-
tx.pure.address(args.agent),
|
|
4437
|
-
tx.object.clock()
|
|
4438
|
-
]
|
|
4439
|
-
});
|
|
4440
|
-
const supplyCoin = tx.object(args.supplyCoinId);
|
|
4441
|
-
const [lpCoin] = tx.splitCoins(supplyCoin, [
|
|
4442
|
-
tx.pure.u64(AGENT_TOKEN_LP_ALLOCATION)
|
|
4443
|
-
]);
|
|
4444
|
-
const { coin: lpUsdc } = await selectAndSplitCoin(
|
|
4445
|
-
tx,
|
|
4446
|
-
args.client,
|
|
4447
|
-
args.launcher,
|
|
4448
|
-
USDC_TYPE,
|
|
4449
|
-
args.lpUsdcAmount
|
|
4450
|
-
);
|
|
4451
|
-
const usdcFirst = args.usdcFirst ?? false;
|
|
4452
|
-
const sqrtPrice = usdcFirst ? sqrtPriceX64FromAmounts(args.lpUsdcAmount, AGENT_TOKEN_LP_ALLOCATION) : sqrtPriceX64FromAmounts(AGENT_TOKEN_LP_ALLOCATION, args.lpUsdcAmount);
|
|
4453
|
-
const poolResult = createPoolV3(tx, {
|
|
4454
|
-
coinTypeA: usdcFirst ? USDC_TYPE : args.coinType,
|
|
4455
|
-
coinTypeB: usdcFirst ? args.coinType : USDC_TYPE,
|
|
4456
|
-
coinA: usdcFirst ? lpUsdc : lpCoin,
|
|
4457
|
-
coinB: usdcFirst ? lpCoin : lpUsdc,
|
|
4458
|
-
sqrtPriceX64: sqrtPrice,
|
|
4459
|
-
fixAmountA: !usdcFirst,
|
|
4460
|
-
// always fix the AGENT side
|
|
4461
|
-
url: args.poolUrl
|
|
4462
|
-
});
|
|
4463
|
-
const position = poolResult[0];
|
|
4464
|
-
const refundA = poolResult[1];
|
|
4465
|
-
const refundB = poolResult[2];
|
|
4466
|
-
const poolId = positionPoolId(tx, position);
|
|
4467
|
-
const [lockId] = tx.moveCall({
|
|
4468
|
-
target: `${AGENT_CAPITAL_PUBLISHED_AT}::${LP_LOCK_MODULE}::lock`,
|
|
4469
|
-
typeArguments: [CETUS_POSITION_TYPE],
|
|
4470
|
-
arguments: [position, tx.pure.address(args.agent), tx.object.clock()]
|
|
4471
|
-
});
|
|
4472
|
-
tx.moveCall({
|
|
4473
|
-
target: `${AGENT_CAPITAL_PUBLISHED_AT}::${REGISTRY_MODULE}::finalize`,
|
|
4474
|
-
typeArguments: [args.coinType],
|
|
4475
|
-
arguments: [
|
|
4476
|
-
registryArg(),
|
|
4477
|
-
tx.object(args.agentRegistryId),
|
|
4478
|
-
tx.pure.address(args.agent),
|
|
4479
|
-
poolId,
|
|
4480
|
-
lockId,
|
|
4481
|
-
tx.object.clock()
|
|
4482
|
-
]
|
|
4483
|
-
});
|
|
4484
|
-
const agentRefund = usdcFirst ? refundB : refundA;
|
|
4485
|
-
const usdcRefund = usdcFirst ? refundA : refundB;
|
|
4486
|
-
tx.mergeCoins(supplyCoin, [agentRefund]);
|
|
4487
|
-
tx.moveCall({
|
|
4488
|
-
target: `${AGENT_CAPITAL_PUBLISHED_AT}::${VESTING_MODULE}::lock`,
|
|
4489
|
-
typeArguments: [args.coinType],
|
|
4490
|
-
arguments: [supplyCoin, tx.pure.address(args.agent), tx.object.clock()]
|
|
4491
|
-
});
|
|
4492
|
-
tx.transferObjects([usdcRefund], tx.pure.address(args.launcher));
|
|
4493
|
-
return tx;
|
|
4494
|
-
}
|
|
4495
|
-
|
|
4496
|
-
// src/capital/swap.ts
|
|
4497
|
-
init_errors();
|
|
4498
|
-
init_token_registry();
|
|
4499
|
-
var CETUS_INTEGRATE_PUBLISHED_AT = process.env.CETUS_INTEGRATE_PUBLISHED_AT ?? "0xfbb32ac0fa89a3cb0c56c745b688c6d2a53ac8e43447119ad822763997ffb9c3";
|
|
4500
|
-
var MIN_SQRT_PRICE = 4295048016n;
|
|
4501
|
-
var MAX_SQRT_PRICE = 79226673515401279992447579055n;
|
|
4502
|
-
async function buildDirectPoolSwapTx(args) {
|
|
4503
|
-
if (args.amountIn <= 0n) {
|
|
4504
|
-
throw new T2000Error("INVALID_AMOUNT", "amountIn must be positive");
|
|
4505
|
-
}
|
|
4506
|
-
const pool = await args.client.core.getObject({ objectId: args.poolId }).catch(() => null);
|
|
4507
|
-
const m = pool?.object?.type?.match(/Pool<(.+),\s*(.+)>$/);
|
|
4508
|
-
if (!m) {
|
|
4509
|
-
throw new T2000Error("PROTOCOL_UNAVAILABLE", `not a Cetus pool: ${args.poolId}`);
|
|
4510
|
-
}
|
|
4511
|
-
const [typeA, typeB] = [m[1].trim(), m[2].trim()];
|
|
4512
|
-
const aIsUsdc = typeA === USDC_TYPE;
|
|
4513
|
-
if (!aIsUsdc && typeB !== USDC_TYPE) {
|
|
4514
|
-
throw new T2000Error("INVALID_ASSET", "pool is not USDC-quoted");
|
|
4515
|
-
}
|
|
4516
|
-
const a2b = args.direction === "buy" ? aIsUsdc : !aIsUsdc;
|
|
4517
|
-
const inputType = args.direction === "buy" ? USDC_TYPE : a2b ? typeA : typeB;
|
|
4518
|
-
const tx = new Transaction();
|
|
4519
|
-
tx.setSender(args.sender);
|
|
4520
|
-
const input = coinWithBalance({ type: inputType, balance: args.amountIn });
|
|
4521
|
-
const vec = tx.makeMoveVec({ elements: [input] });
|
|
4522
|
-
tx.moveCall({
|
|
4523
|
-
target: `${CETUS_INTEGRATE_PUBLISHED_AT}::pool_script::${a2b ? "swap_a2b" : "swap_b2a"}`,
|
|
4524
|
-
typeArguments: [typeA, typeB],
|
|
4525
|
-
arguments: [
|
|
4526
|
-
tx.object(CETUS_GLOBAL_CONFIG_ID),
|
|
4527
|
-
tx.object(args.poolId),
|
|
4528
|
-
vec,
|
|
4529
|
-
tx.pure.bool(true),
|
|
4530
|
-
// by_amount_in
|
|
4531
|
-
tx.pure.u64(args.amountIn),
|
|
4532
|
-
tx.pure.u64(args.minOut),
|
|
4533
|
-
// amount_limit = the slippage floor
|
|
4534
|
-
tx.pure.u128(a2b ? MIN_SQRT_PRICE : MAX_SQRT_PRICE),
|
|
4535
|
-
tx.object.clock()
|
|
4536
|
-
]
|
|
4537
|
-
});
|
|
4538
|
-
return tx;
|
|
4539
|
-
}
|
|
4540
|
-
|
|
4541
|
-
export { A2A_ESCROW_FEE_CONFIG_ID, A2A_ESCROW_OPENING_PACKAGE_ID, A2A_ESCROW_PACKAGE_ID, A2A_ESCROW_PACKAGE_V2_ID, A2A_ESCROW_PACKAGE_V3_ID, AGENT_CAPITAL_PACKAGE_ID, AGENT_CAPITAL_PUBLISHED_AT, AGENT_ID_PARENT, AGENT_ID_PARENT_NAME, AGENT_ID_PARENT_NFT_ID, AGENT_POOL_TICK_SPACING, AGENT_TOKEN_DECIMALS, AGENT_TOKEN_LP_ALLOCATION, AGENT_TOKEN_TOTAL_SUPPLY, AGENT_TOKEN_TREASURY_ALLOCATION, AUDRIC_PARENT, AUDRIC_PARENT_NAME, AUDRIC_PARENT_NFT_ID, CAPITAL_REGISTRY_ID, CAPITAL_REGISTRY_VERSION, CETUS_CLMM_PACKAGE_ID, CETUS_GLOBAL_CONFIG_ID, CETUS_INTEGRATE_PUBLISHED_AT, CETUS_POOLS_ID, CETUS_POSITION_TYPE, CETUS_USDC_SUI_POOL, CLOCK_ID, COIN_REGISTRY, DEFAULT_ACTIVITY_REPORT_URL, DEFAULT_API_BASE, DEFAULT_COMMERCE_API_BASE, DEFAULT_GRPC_URL, DEFAULT_NETWORK, ETH_TYPE, GASLESS_MIN_STABLE_AMOUNT, GASLESS_STABLE_TYPES, GAS_RESERVE_MIN, IKA_TYPE, InvalidAddressError, JOB_STATES, KNOWN_TARGETS, KeypairSigner, LABEL_PATTERNS, LOFI_TYPE, LimitEnforcer, LimitExceededError, MANIFEST_TYPE, MAX_DELIVER_HORIZON_MS, MAX_JOB_USDC, MAX_OPEN_WINDOW_MS, MAX_REVIEW_WINDOW_MS, MIN_LP_USDC, MIST_PER_SUI, NAVX_TYPE, OPENING_CLAIM_POLICY_ANY_ACTIVE, OPERATION_ASSETS, OVERLAY_FEE_RATE, PREFLIGHT_MAX_AMOUNT, PREFLIGHT_OK, SENDABLE_ASSETS, SPONSORED_PYTH_DEPENDENT_PROVIDERS, STABLE_ASSETS, SUINS_NAME_REGEX, SUI_ADDRESS_REGEX, SUI_ADDRESS_STRICT_REGEX, SUI_DECIMALS, SUI_TYPE, SUPPORTED_ASSETS, SYMBOL_BLOCKLIST, SuinsNotRegisteredError, SuinsRpcError, T2000, T2000Error, T2000_OVERLAY_FEE_WALLET, TOKEN_MAP, USDC_DECIMALS, USDC_TYPE, USDE_TYPE, USDSUI_TYPE, USDT_TYPE, WAL_TYPE, WBTC_TYPE, WRITE_APPENDER_REGISTRY, ZkLoginSigner, addSendToTx, addSwapToTx, approxUsdValue, assertAllowedAsset, assertBuyerRequirements, assertLimitConfig, buildAddLeafTx, buildAgentCoinModule, buildCancelOpeningTx, buildClaimOpeningTx, buildCreateJobTx, buildCreateOpeningTx, buildDeclineJobTx, buildDeliverJobTx, buildDirectPoolSwapTx, buildPublishAgentCoinTx, buildRefundJobTx, buildRefundUnclaimedTx, buildRejectJobTx, buildReleaseJobTx, buildRevokeLeafTx, buildSendTx, buildSwapTx, buildTokenizeTx, cancelOpenJob, chatCompletion, chatCompletionStream, checkPositiveAmount, checkSuiAddress, claimOpenJob, classifyAction, classifyLabel, classifyTransaction, clearLimits, composeTx, dailySpentToday, deriveAllowedAddressesFromPtb, deserializeCetusRoute, displayHandle, executeTx, exportPrivateKey, extractAllUserLegs, extractTransferDetails, extractTxCommands, extractTxSender, fallbackLabel, fetchAllCoins, fetchService, findSwapRoute, formatAssetAmount, formatSui, formatUsd, fullHandle, generateKeypair, getAddress, getCoinMeta, getDecimals, getDecimalsForCoinType, getJob, getJobSpec, getLimits, getOpenJob, getOpening, getSponsoredSwapProviders, getSuiClient, getSuiGrpcClient, getSwapQuote, hasLimits, isAllowedAsset, isCetusRouteFresh, isInRegistry, jobActionsFor, keypairFromPrivateKey, listModels, listOpenJobs, listServices, loadKey, looksLikeSuiNs, mapMoveAbortCode, mapWalletError, mistToSui, normalizeAddressInput, normalizeAsset, normalizeCoinType, parseSuiRpcTx, payWithMpp, postOpenJob, preflightCreateJob, preflightCreateOpening, preflightFail, preflightPay, preflightSend, preflightSwap, putJobSpec, queryBalance, queryHistory, queryTransaction, rawToStable, rawToUsdc, readLimitsFile, recordDailySpend, refineLendingLabel, refundOpenJob, reportX402Activity, resolveAddressToSuinsViaRpc, resolveSuinsViaRpc, resolveSymbol, resolveTokenType, saveBech32, saveKey, selectAndSplitCoin, selectSuiCoin, serializeCetusRoute, setLimits, simulateTransaction, stableToRaw, suiToMist, throwIfSimulationFailed, truncateAddress, usdcToRaw, validateAddress, validateAgentCoinParams, validateLabel, verifyCetusRouteCoinMatch, verifyJobForSeller, verifyReceipt, walletExists, writeLimitsFile };
|
|
4160
|
+
export { A2A_ESCROW_FEE_CONFIG_ID, A2A_ESCROW_OPENING_PACKAGE_ID, A2A_ESCROW_PACKAGE_ID, A2A_ESCROW_PACKAGE_V2_ID, A2A_ESCROW_PACKAGE_V3_ID, AGENT_ID_PARENT, AGENT_ID_PARENT_NAME, AGENT_ID_PARENT_NFT_ID, AUDRIC_PARENT, AUDRIC_PARENT_NAME, AUDRIC_PARENT_NFT_ID, CETUS_USDC_SUI_POOL, CLOCK_ID, COIN_REGISTRY, DEFAULT_ACTIVITY_REPORT_URL, DEFAULT_API_BASE, DEFAULT_COMMERCE_API_BASE, DEFAULT_GRPC_URL, DEFAULT_NETWORK, ETH_TYPE, GASLESS_MIN_STABLE_AMOUNT, GASLESS_STABLE_TYPES, GAS_RESERVE_MIN, IKA_TYPE, InvalidAddressError, JOB_STATES, KNOWN_TARGETS, KeypairSigner, LABEL_PATTERNS, LOFI_TYPE, LimitEnforcer, LimitExceededError, MANIFEST_TYPE, MAX_DELIVER_HORIZON_MS, MAX_JOB_USDC, MAX_OPEN_WINDOW_MS, MAX_REVIEW_WINDOW_MS, MIST_PER_SUI, NAVX_TYPE, OPENING_CLAIM_POLICY_ANY_ACTIVE, OPERATION_ASSETS, OVERLAY_FEE_RATE, PREFLIGHT_MAX_AMOUNT, PREFLIGHT_OK, SENDABLE_ASSETS, SPONSORED_PYTH_DEPENDENT_PROVIDERS, STABLE_ASSETS, SUINS_NAME_REGEX, SUI_ADDRESS_REGEX, SUI_ADDRESS_STRICT_REGEX, SUI_DECIMALS, SUI_TYPE, SUPPORTED_ASSETS, SuinsNotRegisteredError, SuinsRpcError, T2000, T2000Error, T2000_OVERLAY_FEE_WALLET, TOKEN_MAP, USDC_DECIMALS, USDC_TYPE, USDE_TYPE, USDSUI_TYPE, USDT_TYPE, WAL_TYPE, WBTC_TYPE, WRITE_APPENDER_REGISTRY, ZkLoginSigner, addSendToTx, addSwapToTx, approxUsdValue, assertAllowedAsset, assertBuyerRequirements, assertLimitConfig, buildAddLeafTx, buildCancelOpeningTx, buildClaimOpeningTx, buildCreateJobTx, buildCreateOpeningTx, buildDeclineJobTx, buildDeliverJobTx, buildRefundJobTx, buildRefundUnclaimedTx, buildRejectJobTx, buildReleaseJobTx, buildRevokeLeafTx, buildSendTx, buildSwapTx, cancelOpenJob, chatCompletion, chatCompletionStream, checkPositiveAmount, checkSuiAddress, claimOpenJob, classifyAction, classifyLabel, classifyTransaction, clearLimits, composeTx, dailySpentToday, deriveAllowedAddressesFromPtb, deserializeCetusRoute, displayHandle, executeTx, exportPrivateKey, extractAllUserLegs, extractTransferDetails, extractTxCommands, extractTxSender, fallbackLabel, fetchAllCoins, fetchService, findSwapRoute, formatAssetAmount, formatSui, formatUsd, fullHandle, generateKeypair, getAddress, getCoinMeta, getDecimals, getDecimalsForCoinType, getJob, getJobSpec, getLimits, getOpenJob, getOpening, getSponsoredSwapProviders, getSuiClient, getSuiGrpcClient, getSwapQuote, hasLimits, isAllowedAsset, isCetusRouteFresh, isInRegistry, jobActionsFor, keypairFromPrivateKey, listModels, listOpenJobs, listServices, loadKey, looksLikeSuiNs, mapMoveAbortCode, mapWalletError, mistToSui, normalizeAddressInput, normalizeAsset, normalizeCoinType, parseSuiRpcTx, payWithX402, postOpenJob, preflightCreateJob, preflightCreateOpening, preflightFail, preflightPay, preflightSend, preflightSwap, putJobSpec, queryBalance, queryHistory, queryTransaction, rawToStable, rawToUsdc, readLimitsFile, recordDailySpend, refineLendingLabel, refundOpenJob, reportX402Activity, resolveAddressToSuinsViaRpc, resolveSuinsViaRpc, resolveSymbol, resolveTokenType, saveBech32, saveKey, selectAndSplitCoin, selectSuiCoin, serializeCetusRoute, setLimits, simulateTransaction, stableToRaw, suiToMist, throwIfSimulationFailed, truncateAddress, usdcToRaw, validateAddress, validateLabel, verifyCetusRouteCoinMatch, verifyJobForSeller, verifyReceipt, walletExists, writeLimitsFile };
|
|
4542
4161
|
//# sourceMappingURL=index.js.map
|
|
4543
4162
|
//# sourceMappingURL=index.js.map
|