@t2000/sdk 10.3.1 → 10.6.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.map +1 -1
- package/dist/browser.d.cts +1 -1
- package/dist/browser.d.ts +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/{commerce-CUGyTRcv.d.cts → commerce-D78r4-MZ.d.cts} +1 -1
- package/dist/{commerce-CUGyTRcv.d.ts → commerce-D78r4-MZ.d.ts} +1 -1
- package/dist/index.cjs +354 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +171 -8
- package/dist/index.d.ts +171 -8
- package/dist/index.js +337 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -299,7 +299,7 @@ type SponsoredCoinMergeCache = Map<string, {
|
|
|
299
299
|
*/
|
|
300
300
|
declare function selectSuiCoin(tx: Transaction, client: SuiCoreClient, owner: string, amountMist: bigint, sponsoredContext: boolean, mergeCache?: SponsoredCoinMergeCache): Promise<SelectAndSplitResult>;
|
|
301
301
|
|
|
302
|
-
type T2000ErrorCode = 'INSUFFICIENT_BALANCE' | 'ADDRESS_BALANCE_UNSPONSORABLE' | 'INSUFFICIENT_GAS' | 'INVALID_ADDRESS' | 'INVALID_AMOUNT' | 'WALLET_NOT_FOUND' | 'WALLET_LOCKED' | 'WALLET_EXISTS' | 'WALLET_CORRUPT' | 'INVALID_KEY' | 'SIMULATION_FAILED' | 'TRANSACTION_FAILED' | 'ASSET_NOT_SUPPORTED' | 'INVALID_ASSET' | 'PROTOCOL_UNAVAILABLE' | 'RPC_ERROR' | 'RPC_UNREACHABLE' | 'PRICE_EXCEEDS_LIMIT' | 'UNSUPPORTED_NETWORK' | 'PAYMENT_EXPIRED' | 'DUPLICATE_PAYMENT' | 'FACILITATOR_REJECTION' | 'CONTACT_NOT_FOUND' | 'INVALID_CONTACT_NAME' | 'SUINS_NOT_REGISTERED' | 'FACILITATOR_TIMEOUT' | 'SAFEGUARD_BLOCKED' | 'SWAP_NO_ROUTE' | 'SWAP_FAILED' | 'DIALECT_UNSUPPORTED' | 'ESCROW_REQUIRED' | 'CHAIN_MODE_INVALID' | 'INFERENCE_FAILED' | 'UNKNOWN';
|
|
302
|
+
type T2000ErrorCode = 'INSUFFICIENT_BALANCE' | 'ADDRESS_BALANCE_UNSPONSORABLE' | 'INSUFFICIENT_GAS' | 'INVALID_ADDRESS' | 'INVALID_AMOUNT' | 'INVALID_INPUT' | 'WALLET_NOT_FOUND' | 'WALLET_LOCKED' | 'WALLET_EXISTS' | 'WALLET_CORRUPT' | 'INVALID_KEY' | 'SIMULATION_FAILED' | 'TRANSACTION_FAILED' | 'ASSET_NOT_SUPPORTED' | 'INVALID_ASSET' | 'PROTOCOL_UNAVAILABLE' | 'RPC_ERROR' | 'RPC_UNREACHABLE' | 'PRICE_EXCEEDS_LIMIT' | 'UNSUPPORTED_NETWORK' | 'PAYMENT_EXPIRED' | 'DUPLICATE_PAYMENT' | 'FACILITATOR_REJECTION' | 'CONTACT_NOT_FOUND' | 'INVALID_CONTACT_NAME' | 'SUINS_NOT_REGISTERED' | 'FACILITATOR_TIMEOUT' | 'SAFEGUARD_BLOCKED' | 'SWAP_NO_ROUTE' | 'SWAP_FAILED' | 'DIALECT_UNSUPPORTED' | 'ESCROW_REQUIRED' | 'CHAIN_MODE_INVALID' | 'INFERENCE_FAILED' | 'UNKNOWN';
|
|
303
303
|
interface T2000ErrorData {
|
|
304
304
|
reason?: string;
|
|
305
305
|
[key: string]: unknown;
|
|
@@ -299,7 +299,7 @@ type SponsoredCoinMergeCache = Map<string, {
|
|
|
299
299
|
*/
|
|
300
300
|
declare function selectSuiCoin(tx: Transaction, client: SuiCoreClient, owner: string, amountMist: bigint, sponsoredContext: boolean, mergeCache?: SponsoredCoinMergeCache): Promise<SelectAndSplitResult>;
|
|
301
301
|
|
|
302
|
-
type T2000ErrorCode = 'INSUFFICIENT_BALANCE' | 'ADDRESS_BALANCE_UNSPONSORABLE' | 'INSUFFICIENT_GAS' | 'INVALID_ADDRESS' | 'INVALID_AMOUNT' | 'WALLET_NOT_FOUND' | 'WALLET_LOCKED' | 'WALLET_EXISTS' | 'WALLET_CORRUPT' | 'INVALID_KEY' | 'SIMULATION_FAILED' | 'TRANSACTION_FAILED' | 'ASSET_NOT_SUPPORTED' | 'INVALID_ASSET' | 'PROTOCOL_UNAVAILABLE' | 'RPC_ERROR' | 'RPC_UNREACHABLE' | 'PRICE_EXCEEDS_LIMIT' | 'UNSUPPORTED_NETWORK' | 'PAYMENT_EXPIRED' | 'DUPLICATE_PAYMENT' | 'FACILITATOR_REJECTION' | 'CONTACT_NOT_FOUND' | 'INVALID_CONTACT_NAME' | 'SUINS_NOT_REGISTERED' | 'FACILITATOR_TIMEOUT' | 'SAFEGUARD_BLOCKED' | 'SWAP_NO_ROUTE' | 'SWAP_FAILED' | 'DIALECT_UNSUPPORTED' | 'ESCROW_REQUIRED' | 'CHAIN_MODE_INVALID' | 'INFERENCE_FAILED' | 'UNKNOWN';
|
|
302
|
+
type T2000ErrorCode = 'INSUFFICIENT_BALANCE' | 'ADDRESS_BALANCE_UNSPONSORABLE' | 'INSUFFICIENT_GAS' | 'INVALID_ADDRESS' | 'INVALID_AMOUNT' | 'INVALID_INPUT' | 'WALLET_NOT_FOUND' | 'WALLET_LOCKED' | 'WALLET_EXISTS' | 'WALLET_CORRUPT' | 'INVALID_KEY' | 'SIMULATION_FAILED' | 'TRANSACTION_FAILED' | 'ASSET_NOT_SUPPORTED' | 'INVALID_ASSET' | 'PROTOCOL_UNAVAILABLE' | 'RPC_ERROR' | 'RPC_UNREACHABLE' | 'PRICE_EXCEEDS_LIMIT' | 'UNSUPPORTED_NETWORK' | 'PAYMENT_EXPIRED' | 'DUPLICATE_PAYMENT' | 'FACILITATOR_REJECTION' | 'CONTACT_NOT_FOUND' | 'INVALID_CONTACT_NAME' | 'SUINS_NOT_REGISTERED' | 'FACILITATOR_TIMEOUT' | 'SAFEGUARD_BLOCKED' | 'SWAP_NO_ROUTE' | 'SWAP_FAILED' | 'DIALECT_UNSUPPORTED' | 'ESCROW_REQUIRED' | 'CHAIN_MODE_INVALID' | 'INFERENCE_FAILED' | 'UNKNOWN';
|
|
303
303
|
interface T2000ErrorData {
|
|
304
304
|
reason?: string;
|
|
305
305
|
[key: string]: unknown;
|
package/dist/index.cjs
CHANGED
|
@@ -19,6 +19,7 @@ var sha256 = require('@noble/hashes/sha256');
|
|
|
19
19
|
var utils$1 = require('@noble/hashes/utils');
|
|
20
20
|
var fs = require('fs');
|
|
21
21
|
var suins = require('@mysten/suins');
|
|
22
|
+
var bcs = require('@mysten/sui/bcs');
|
|
22
23
|
|
|
23
24
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
24
25
|
|
|
@@ -3888,14 +3889,360 @@ function displayHandle(label, parentName = AUDRIC_PARENT_NAME) {
|
|
|
3888
3889
|
// src/index.ts
|
|
3889
3890
|
init_preflight();
|
|
3890
3891
|
|
|
3892
|
+
// src/capital/launch.ts
|
|
3893
|
+
init_errors();
|
|
3894
|
+
init_token_registry();
|
|
3895
|
+
init_coinSelection();
|
|
3896
|
+
|
|
3897
|
+
// src/protocols/cetus-clmm.ts
|
|
3898
|
+
var CETUS_CLMM_PACKAGE_ID = process.env.CETUS_CLMM_PACKAGE_ID ?? "0x1eabed72c53feb3805120a081dc15963c204dc8d091542592abaf7a35689b2fb";
|
|
3899
|
+
var CETUS_CLMM_PUBLISHED_AT = process.env.CETUS_CLMM_PUBLISHED_AT ?? "0x25ebb9a7c50eb17b3fa9c5a30fb8b5ad8f97caaf4928943acbcff7153dfee5e3";
|
|
3900
|
+
var CETUS_GLOBAL_CONFIG_ID = process.env.CETUS_GLOBAL_CONFIG_ID ?? "0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f";
|
|
3901
|
+
var CETUS_POOLS_ID = process.env.CETUS_POOLS_ID ?? "0xf699e7f2276f5c9a75944b37a0c5b5d9ddfd2471bf6242483b03ab2887d198d0";
|
|
3902
|
+
var CETUS_POSITION_TYPE = `${CETUS_CLMM_PACKAGE_ID}::position::Position`;
|
|
3903
|
+
var AGENT_POOL_TICK_SPACING = 200;
|
|
3904
|
+
function sqrtPriceX64FromAmounts(rawA, rawB) {
|
|
3905
|
+
if (rawA <= 0n || rawB <= 0n) {
|
|
3906
|
+
throw new Error("sqrtPriceX64FromAmounts: amounts must be positive");
|
|
3907
|
+
}
|
|
3908
|
+
return bigintSqrt((rawB << 128n) / rawA);
|
|
3909
|
+
}
|
|
3910
|
+
function bigintSqrt(n) {
|
|
3911
|
+
if (n < 0n) throw new Error("bigintSqrt: negative input");
|
|
3912
|
+
if (n < 2n) return n;
|
|
3913
|
+
let x = 1n << BigInt(n.toString(2).length + 1) / 2n;
|
|
3914
|
+
let prev = x + 1n;
|
|
3915
|
+
while (x < prev) {
|
|
3916
|
+
prev = x;
|
|
3917
|
+
x = (x + n / x) / 2n;
|
|
3918
|
+
}
|
|
3919
|
+
return prev;
|
|
3920
|
+
}
|
|
3921
|
+
function createPoolV2(tx, args) {
|
|
3922
|
+
const [tickLower, tickUpper] = fullRangeTickRange(tx);
|
|
3923
|
+
return tx.moveCall({
|
|
3924
|
+
target: `${CETUS_CLMM_PUBLISHED_AT}::pool_creator::create_pool_v2`,
|
|
3925
|
+
typeArguments: [args.coinTypeA, args.coinTypeB],
|
|
3926
|
+
arguments: [
|
|
3927
|
+
tx.object(CETUS_GLOBAL_CONFIG_ID),
|
|
3928
|
+
tx.object(CETUS_POOLS_ID),
|
|
3929
|
+
tx.pure.u32(AGENT_POOL_TICK_SPACING),
|
|
3930
|
+
tx.pure.u128(args.sqrtPriceX64),
|
|
3931
|
+
tx.pure.string(args.url ?? ""),
|
|
3932
|
+
tickLower,
|
|
3933
|
+
tickUpper,
|
|
3934
|
+
args.coinA,
|
|
3935
|
+
args.coinB,
|
|
3936
|
+
tx.object(args.metadataA),
|
|
3937
|
+
tx.object(args.metadataB),
|
|
3938
|
+
tx.pure.bool(args.fixAmountA),
|
|
3939
|
+
tx.object.clock()
|
|
3940
|
+
]
|
|
3941
|
+
});
|
|
3942
|
+
}
|
|
3943
|
+
function fullRangeTickRange(tx) {
|
|
3944
|
+
const result = tx.moveCall({
|
|
3945
|
+
target: `${CETUS_CLMM_PUBLISHED_AT}::pool_creator::full_range_tick_range`,
|
|
3946
|
+
arguments: [tx.pure.u32(AGENT_POOL_TICK_SPACING)]
|
|
3947
|
+
});
|
|
3948
|
+
return [result[0], result[1]];
|
|
3949
|
+
}
|
|
3950
|
+
function positionPoolId(tx, position) {
|
|
3951
|
+
return tx.moveCall({
|
|
3952
|
+
target: `${CETUS_CLMM_PUBLISHED_AT}::position::pool_id`,
|
|
3953
|
+
arguments: [position]
|
|
3954
|
+
});
|
|
3955
|
+
}
|
|
3956
|
+
|
|
3957
|
+
// src/capital/template.ts
|
|
3958
|
+
init_errors();
|
|
3959
|
+
|
|
3960
|
+
// src/capital/template-bytecode.json
|
|
3961
|
+
var template_bytecode_default = {
|
|
3962
|
+
modules: [
|
|
3963
|
+
"oRzrCwcAAAUKAQAMAgwkAzAoBFgMBWRoB8wBzwEImwNgBvsDiQEKhAUFDIkFNAARAQ0CBwISAhMCFAADAgABAgcBAAACAAwBAAECAQwBAAECBAwBAAEEBQIABQYHAAAKAAEAARAFBgEAAggICQECAgsKCwEAAw4FAQEMAw8NAQEMBQwDBAABBAIHAwcFDAQOBA8CCAAHCAUAAgsDAQgACwQBCAABCgIBCAYBCQABCwEBCQABCAAHCQACCgIKAgoCCwEBCAYHCAUCCwQBCQALAwEJAAMHCwQBCQADBwgFAQsCAQkAAQsCAQgAAgkABQELAwEIAAELBAEIAARDb2luDENvaW5NZXRhZGF0YQZPcHRpb24IVEVNUExBVEULVHJlYXN1cnlDYXAJVHhDb250ZXh0A1VybARjb2luD2NyZWF0ZV9jdXJyZW5jeQtkdW1teV9maWVsZARpbml0BG1pbnQVbmV3X3Vuc2FmZV9mcm9tX2J5dGVzBm9wdGlvbhRwdWJsaWNfZnJlZXplX29iamVjdA9wdWJsaWNfdHJhbnNmZXIEc29tZQh0ZW1wbGF0ZQh0cmFuc2Zlcgp0eF9jb250ZXh0A3VybAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIBBgoCBQRUTVBMCgIODVRlbXBsYXRlIENvaW4KAh4dYnl0ZWNvZGUgdGVtcGxhdGUgcGxhY2Vob2xkZXIKAh0caHR0cHM6Ly9leGFtcGxlLmNvbS9pY29uLnN2ZwMIAIDGpH6NAwAFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMr+AAIBCQEAAAAAAhcLAAcABwEHAgcDBwQRBjgACgE4AQwCDAMNAwcFCwE4AgcGOAMLAjgECwM4BQIAAA=="
|
|
3964
|
+
],
|
|
3965
|
+
dependencies: [
|
|
3966
|
+
"0x0000000000000000000000000000000000000000000000000000000000000001",
|
|
3967
|
+
"0x0000000000000000000000000000000000000000000000000000000000000002"
|
|
3968
|
+
]};
|
|
3969
|
+
|
|
3970
|
+
// src/capital/template.ts
|
|
3971
|
+
var TEMPLATE = {
|
|
3972
|
+
module: "template",
|
|
3973
|
+
otw: "TEMPLATE",
|
|
3974
|
+
symbol: "TMPL",
|
|
3975
|
+
name: "Template Coin",
|
|
3976
|
+
description: "bytecode template placeholder",
|
|
3977
|
+
iconUrl: "https://example.com/icon.svg",
|
|
3978
|
+
totalSupply: 1000000000000000n,
|
|
3979
|
+
recipient: utils.normalizeSuiAddress("0xCAFE")
|
|
3980
|
+
};
|
|
3981
|
+
var AGENT_TOKEN_DECIMALS = 6;
|
|
3982
|
+
var AGENT_TOKEN_TOTAL_SUPPLY = 1000000000000000n;
|
|
3983
|
+
var AGENT_TOKEN_LP_ALLOCATION = AGENT_TOKEN_TOTAL_SUPPLY / 2n;
|
|
3984
|
+
var AGENT_TOKEN_TREASURY_ALLOCATION = AGENT_TOKEN_TOTAL_SUPPLY - AGENT_TOKEN_LP_ALLOCATION;
|
|
3985
|
+
var SYMBOL_BLOCKLIST = /* @__PURE__ */ new Set([
|
|
3986
|
+
"SUI",
|
|
3987
|
+
"USDC",
|
|
3988
|
+
"USDT",
|
|
3989
|
+
"USDSUI",
|
|
3990
|
+
"WAL",
|
|
3991
|
+
"CETUS",
|
|
3992
|
+
"DEEP",
|
|
3993
|
+
"NS",
|
|
3994
|
+
"NAVX",
|
|
3995
|
+
"SCA",
|
|
3996
|
+
"AFSUI",
|
|
3997
|
+
"HASUI",
|
|
3998
|
+
"VSUI",
|
|
3999
|
+
"BUCK",
|
|
4000
|
+
"FUD",
|
|
4001
|
+
"BLUB",
|
|
4002
|
+
"HIPPO",
|
|
4003
|
+
"BTC",
|
|
4004
|
+
"WBTC",
|
|
4005
|
+
"ETH",
|
|
4006
|
+
"WETH",
|
|
4007
|
+
"SOL",
|
|
4008
|
+
"BNB",
|
|
4009
|
+
"XRP",
|
|
4010
|
+
"ADA",
|
|
4011
|
+
"DOGE",
|
|
4012
|
+
"AVAX",
|
|
4013
|
+
"LINK",
|
|
4014
|
+
"TRX",
|
|
4015
|
+
"TON",
|
|
4016
|
+
"SHIB",
|
|
4017
|
+
"PEPE",
|
|
4018
|
+
"USDE",
|
|
4019
|
+
"DAI",
|
|
4020
|
+
"GOLD",
|
|
4021
|
+
"XAUM",
|
|
4022
|
+
"T2000",
|
|
4023
|
+
"T2K",
|
|
4024
|
+
"AUDRIC"
|
|
4025
|
+
]);
|
|
4026
|
+
var SYMBOL_RE = /^[A-Z][A-Z0-9]{1,7}$/;
|
|
4027
|
+
function validateAgentCoinParams(params) {
|
|
4028
|
+
const symbol = params.symbol.toUpperCase();
|
|
4029
|
+
if (!SYMBOL_RE.test(symbol)) {
|
|
4030
|
+
throw new exports.T2000Error(
|
|
4031
|
+
"INVALID_INPUT",
|
|
4032
|
+
`symbol must be 2-8 chars, A-Z then A-Z0-9 (got "${params.symbol}")`
|
|
4033
|
+
);
|
|
4034
|
+
}
|
|
4035
|
+
if (SYMBOL_BLOCKLIST.has(symbol)) {
|
|
4036
|
+
throw new exports.T2000Error(
|
|
4037
|
+
"INVALID_INPUT",
|
|
4038
|
+
`symbol ${symbol} impersonates an existing ticker`
|
|
4039
|
+
);
|
|
4040
|
+
}
|
|
4041
|
+
if (!params.name.trim() || params.name.length > 64) {
|
|
4042
|
+
throw new exports.T2000Error("INVALID_INPUT", "name must be 1-64 chars");
|
|
4043
|
+
}
|
|
4044
|
+
if (params.description.length > 256) {
|
|
4045
|
+
throw new exports.T2000Error("INVALID_INPUT", "description must be \u2264256 chars");
|
|
4046
|
+
}
|
|
4047
|
+
if (!/^https:\/\/.+/.test(params.iconUrl) || params.iconUrl.length > 256) {
|
|
4048
|
+
throw new exports.T2000Error("INVALID_INPUT", "iconUrl must be https and \u2264256 chars");
|
|
4049
|
+
}
|
|
4050
|
+
if (!utils.isValidSuiAddress(params.recipient)) {
|
|
4051
|
+
throw new exports.T2000Error("INVALID_ADDRESS", `bad recipient: ${params.recipient}`);
|
|
4052
|
+
}
|
|
4053
|
+
}
|
|
4054
|
+
async function buildAgentCoinModule(params) {
|
|
4055
|
+
const { deserialize, serialize, update_constants, update_identifiers } = await import('@mysten/move-bytecode-template');
|
|
4056
|
+
validateAgentCoinParams(params);
|
|
4057
|
+
const symbol = params.symbol.toUpperCase();
|
|
4058
|
+
const moduleName = symbol.toLowerCase();
|
|
4059
|
+
const recipient = utils.normalizeSuiAddress(params.recipient);
|
|
4060
|
+
let bytes = Uint8Array.from(
|
|
4061
|
+
Buffer.from(template_bytecode_default.modules[0], "base64")
|
|
4062
|
+
);
|
|
4063
|
+
deserialize(bytes);
|
|
4064
|
+
bytes = update_identifiers(bytes, {
|
|
4065
|
+
[TEMPLATE.module]: moduleName,
|
|
4066
|
+
[TEMPLATE.otw]: symbol
|
|
4067
|
+
});
|
|
4068
|
+
const str = (s) => bcs.bcs.string().serialize(s).toBytes();
|
|
4069
|
+
const rewrites = [
|
|
4070
|
+
[str(symbol), str(TEMPLATE.symbol), "Vector(U8)"],
|
|
4071
|
+
[str(params.name), str(TEMPLATE.name), "Vector(U8)"],
|
|
4072
|
+
[str(params.description), str(TEMPLATE.description), "Vector(U8)"],
|
|
4073
|
+
[str(params.iconUrl), str(TEMPLATE.iconUrl), "Vector(U8)"],
|
|
4074
|
+
[
|
|
4075
|
+
bcs.bcs.Address.serialize(recipient).toBytes(),
|
|
4076
|
+
bcs.bcs.Address.serialize(TEMPLATE.recipient).toBytes(),
|
|
4077
|
+
"Address"
|
|
4078
|
+
],
|
|
4079
|
+
// Supply + decimals are LOCKED v1 constants — not caller-parameterized —
|
|
4080
|
+
// but rewritten anyway so a drifted template recompile can't silently
|
|
4081
|
+
// change the economics out from under this module's exported constants.
|
|
4082
|
+
[
|
|
4083
|
+
bcs.bcs.u64().serialize(AGENT_TOKEN_TOTAL_SUPPLY).toBytes(),
|
|
4084
|
+
bcs.bcs.u64().serialize(TEMPLATE.totalSupply).toBytes(),
|
|
4085
|
+
"U64"
|
|
4086
|
+
]
|
|
4087
|
+
];
|
|
4088
|
+
for (const [next, prev, type] of rewrites) {
|
|
4089
|
+
bytes = update_constants(bytes, next, prev, type);
|
|
4090
|
+
}
|
|
4091
|
+
serialize(deserialize(bytes));
|
|
4092
|
+
return {
|
|
4093
|
+
modules: [Array.from(bytes)],
|
|
4094
|
+
dependencies: template_bytecode_default.dependencies,
|
|
4095
|
+
moduleName,
|
|
4096
|
+
otw: symbol
|
|
4097
|
+
};
|
|
4098
|
+
}
|
|
4099
|
+
|
|
4100
|
+
// src/capital/launch.ts
|
|
4101
|
+
var AGENT_CAPITAL_PACKAGE_ID = process.env.AGENT_CAPITAL_PACKAGE_ID ?? "0x33a04c672381c1de7178f56221e4ebfc4712675feecc2a0b70c25efbb500fc25";
|
|
4102
|
+
var CAPITAL_REGISTRY_ID = process.env.CAPITAL_REGISTRY_ID ?? "0xd75a72e80c1a5181cc9bb095089cc236e3e20be11b5982ab21e76c54508bd2d7";
|
|
4103
|
+
var CAPITAL_REGISTRY_VERSION = Number(
|
|
4104
|
+
process.env.CAPITAL_REGISTRY_VERSION ?? 951301211
|
|
4105
|
+
);
|
|
4106
|
+
function assertDeployed() {
|
|
4107
|
+
if (!AGENT_CAPITAL_PACKAGE_ID || !CAPITAL_REGISTRY_ID) {
|
|
4108
|
+
throw new exports.T2000Error(
|
|
4109
|
+
"PROTOCOL_UNAVAILABLE",
|
|
4110
|
+
"agent_capital is not deployed on this network (set AGENT_CAPITAL_PACKAGE_ID + CAPITAL_REGISTRY_ID)"
|
|
4111
|
+
);
|
|
4112
|
+
}
|
|
4113
|
+
}
|
|
4114
|
+
var MIN_LP_USDC = 5000000n;
|
|
4115
|
+
var REGISTRY_MODULE = "registry";
|
|
4116
|
+
var LP_LOCK_MODULE = "lp_lock";
|
|
4117
|
+
async function buildPublishAgentCoinTx(args) {
|
|
4118
|
+
if (!utils.isValidSuiAddress(args.launcher)) {
|
|
4119
|
+
throw new exports.T2000Error("INVALID_ADDRESS", `bad launcher: ${args.launcher}`);
|
|
4120
|
+
}
|
|
4121
|
+
if (args.coin.recipient !== args.launcher) {
|
|
4122
|
+
throw new exports.T2000Error(
|
|
4123
|
+
"INVALID_INPUT",
|
|
4124
|
+
"coin.recipient must equal launcher \u2014 the full supply lands with the launch signer, never a third party"
|
|
4125
|
+
);
|
|
4126
|
+
}
|
|
4127
|
+
const mod = await buildAgentCoinModule(args.coin);
|
|
4128
|
+
const tx = new transactions.Transaction();
|
|
4129
|
+
tx.setSender(args.launcher);
|
|
4130
|
+
const [upgradeCap] = tx.publish({
|
|
4131
|
+
modules: mod.modules,
|
|
4132
|
+
dependencies: mod.dependencies
|
|
4133
|
+
});
|
|
4134
|
+
tx.moveCall({
|
|
4135
|
+
target: "0x2::package::make_immutable",
|
|
4136
|
+
arguments: [upgradeCap]
|
|
4137
|
+
});
|
|
4138
|
+
return { tx, moduleName: mod.moduleName, otw: mod.otw };
|
|
4139
|
+
}
|
|
4140
|
+
var USDC_COIN_METADATA_ID = "0x75cfbbf8c962d542e99a1d15731e6069f60a00db895407785b15d14f606f2b4a";
|
|
4141
|
+
async function buildTokenizeTx(args) {
|
|
4142
|
+
assertDeployed();
|
|
4143
|
+
if (!utils.isValidSuiAddress(args.agent)) {
|
|
4144
|
+
throw new exports.T2000Error("INVALID_ADDRESS", `bad agent: ${args.agent}`);
|
|
4145
|
+
}
|
|
4146
|
+
if (!utils.isValidSuiAddress(args.launcher)) {
|
|
4147
|
+
throw new exports.T2000Error("INVALID_ADDRESS", `bad launcher: ${args.launcher}`);
|
|
4148
|
+
}
|
|
4149
|
+
if (args.lpUsdcAmount < MIN_LP_USDC) {
|
|
4150
|
+
throw new exports.T2000Error(
|
|
4151
|
+
"INVALID_AMOUNT",
|
|
4152
|
+
`lpUsdcAmount ${args.lpUsdcAmount} < minimum ${MIN_LP_USDC} raw (5 USDC)`
|
|
4153
|
+
);
|
|
4154
|
+
}
|
|
4155
|
+
const tx = new transactions.Transaction();
|
|
4156
|
+
tx.setSender(args.launcher);
|
|
4157
|
+
const registryArg = () => tx.sharedObjectRef({
|
|
4158
|
+
objectId: CAPITAL_REGISTRY_ID,
|
|
4159
|
+
initialSharedVersion: CAPITAL_REGISTRY_VERSION,
|
|
4160
|
+
mutable: true
|
|
4161
|
+
});
|
|
4162
|
+
tx.moveCall({
|
|
4163
|
+
target: `${AGENT_CAPITAL_PACKAGE_ID}::${REGISTRY_MODULE}::bind`,
|
|
4164
|
+
typeArguments: [args.coinType],
|
|
4165
|
+
arguments: [
|
|
4166
|
+
registryArg(),
|
|
4167
|
+
tx.object(args.agentRegistryId),
|
|
4168
|
+
tx.pure.address(args.agent),
|
|
4169
|
+
tx.object.clock()
|
|
4170
|
+
]
|
|
4171
|
+
});
|
|
4172
|
+
const supplyCoin = tx.object(args.supplyCoinId);
|
|
4173
|
+
const [lpCoin] = tx.splitCoins(supplyCoin, [
|
|
4174
|
+
tx.pure.u64(AGENT_TOKEN_LP_ALLOCATION)
|
|
4175
|
+
]);
|
|
4176
|
+
const { coin: lpUsdc } = await selectAndSplitCoin(
|
|
4177
|
+
tx,
|
|
4178
|
+
args.client,
|
|
4179
|
+
args.launcher,
|
|
4180
|
+
exports.USDC_TYPE,
|
|
4181
|
+
args.lpUsdcAmount
|
|
4182
|
+
);
|
|
4183
|
+
const usdcFirst = args.usdcFirst ?? false;
|
|
4184
|
+
const sqrtPrice = usdcFirst ? sqrtPriceX64FromAmounts(args.lpUsdcAmount, AGENT_TOKEN_LP_ALLOCATION) : sqrtPriceX64FromAmounts(AGENT_TOKEN_LP_ALLOCATION, args.lpUsdcAmount);
|
|
4185
|
+
const usdcMeta = args.usdcMetadataId ?? USDC_COIN_METADATA_ID;
|
|
4186
|
+
const poolResult = createPoolV2(tx, {
|
|
4187
|
+
coinTypeA: usdcFirst ? exports.USDC_TYPE : args.coinType,
|
|
4188
|
+
coinTypeB: usdcFirst ? args.coinType : exports.USDC_TYPE,
|
|
4189
|
+
metadataA: usdcFirst ? usdcMeta : args.coinMetadataId,
|
|
4190
|
+
metadataB: usdcFirst ? args.coinMetadataId : usdcMeta,
|
|
4191
|
+
coinA: usdcFirst ? lpUsdc : lpCoin,
|
|
4192
|
+
coinB: usdcFirst ? lpCoin : lpUsdc,
|
|
4193
|
+
sqrtPriceX64: sqrtPrice,
|
|
4194
|
+
fixAmountA: !usdcFirst,
|
|
4195
|
+
// always fix the AGENT side
|
|
4196
|
+
url: args.poolUrl
|
|
4197
|
+
});
|
|
4198
|
+
const position = poolResult[0];
|
|
4199
|
+
const refundA = poolResult[1];
|
|
4200
|
+
const refundB = poolResult[2];
|
|
4201
|
+
const poolId = positionPoolId(tx, position);
|
|
4202
|
+
const [lockId] = tx.moveCall({
|
|
4203
|
+
target: `${AGENT_CAPITAL_PACKAGE_ID}::${LP_LOCK_MODULE}::lock`,
|
|
4204
|
+
typeArguments: [CETUS_POSITION_TYPE],
|
|
4205
|
+
arguments: [position, tx.pure.address(args.agent), tx.object.clock()]
|
|
4206
|
+
});
|
|
4207
|
+
tx.moveCall({
|
|
4208
|
+
target: `${AGENT_CAPITAL_PACKAGE_ID}::${REGISTRY_MODULE}::finalize`,
|
|
4209
|
+
typeArguments: [args.coinType],
|
|
4210
|
+
arguments: [
|
|
4211
|
+
registryArg(),
|
|
4212
|
+
tx.object(args.agentRegistryId),
|
|
4213
|
+
tx.pure.address(args.agent),
|
|
4214
|
+
poolId,
|
|
4215
|
+
lockId,
|
|
4216
|
+
tx.object.clock()
|
|
4217
|
+
]
|
|
4218
|
+
});
|
|
4219
|
+
const agentRefund = usdcFirst ? refundB : refundA;
|
|
4220
|
+
const usdcRefund = usdcFirst ? refundA : refundB;
|
|
4221
|
+
tx.transferObjects([supplyCoin, agentRefund], tx.pure.address(args.agent));
|
|
4222
|
+
tx.transferObjects([usdcRefund], tx.pure.address(args.launcher));
|
|
4223
|
+
return tx;
|
|
4224
|
+
}
|
|
4225
|
+
|
|
3891
4226
|
exports.A2A_ESCROW_FEE_CONFIG_ID = A2A_ESCROW_FEE_CONFIG_ID;
|
|
3892
4227
|
exports.A2A_ESCROW_PACKAGE_ID = A2A_ESCROW_PACKAGE_ID;
|
|
4228
|
+
exports.AGENT_CAPITAL_PACKAGE_ID = AGENT_CAPITAL_PACKAGE_ID;
|
|
3893
4229
|
exports.AGENT_ID_PARENT = AGENT_ID_PARENT;
|
|
3894
4230
|
exports.AGENT_ID_PARENT_NAME = AGENT_ID_PARENT_NAME;
|
|
3895
4231
|
exports.AGENT_ID_PARENT_NFT_ID = AGENT_ID_PARENT_NFT_ID;
|
|
4232
|
+
exports.AGENT_POOL_TICK_SPACING = AGENT_POOL_TICK_SPACING;
|
|
4233
|
+
exports.AGENT_TOKEN_DECIMALS = AGENT_TOKEN_DECIMALS;
|
|
4234
|
+
exports.AGENT_TOKEN_LP_ALLOCATION = AGENT_TOKEN_LP_ALLOCATION;
|
|
4235
|
+
exports.AGENT_TOKEN_TOTAL_SUPPLY = AGENT_TOKEN_TOTAL_SUPPLY;
|
|
4236
|
+
exports.AGENT_TOKEN_TREASURY_ALLOCATION = AGENT_TOKEN_TREASURY_ALLOCATION;
|
|
3896
4237
|
exports.AUDRIC_PARENT = AUDRIC_PARENT;
|
|
3897
4238
|
exports.AUDRIC_PARENT_NAME = AUDRIC_PARENT_NAME;
|
|
3898
4239
|
exports.AUDRIC_PARENT_NFT_ID = AUDRIC_PARENT_NFT_ID;
|
|
4240
|
+
exports.CAPITAL_REGISTRY_ID = CAPITAL_REGISTRY_ID;
|
|
4241
|
+
exports.CAPITAL_REGISTRY_VERSION = CAPITAL_REGISTRY_VERSION;
|
|
4242
|
+
exports.CETUS_CLMM_PACKAGE_ID = CETUS_CLMM_PACKAGE_ID;
|
|
4243
|
+
exports.CETUS_GLOBAL_CONFIG_ID = CETUS_GLOBAL_CONFIG_ID;
|
|
4244
|
+
exports.CETUS_POOLS_ID = CETUS_POOLS_ID;
|
|
4245
|
+
exports.CETUS_POSITION_TYPE = CETUS_POSITION_TYPE;
|
|
3899
4246
|
exports.CETUS_USDC_SUI_POOL = CETUS_USDC_SUI_POOL;
|
|
3900
4247
|
exports.CLOCK_ID = CLOCK_ID;
|
|
3901
4248
|
exports.DEFAULT_API_BASE = DEFAULT_API_BASE;
|
|
@@ -3915,6 +4262,7 @@ exports.LimitExceededError = LimitExceededError;
|
|
|
3915
4262
|
exports.MAX_DELIVER_HORIZON_MS = MAX_DELIVER_HORIZON_MS;
|
|
3916
4263
|
exports.MAX_JOB_USDC = MAX_JOB_USDC;
|
|
3917
4264
|
exports.MAX_REVIEW_WINDOW_MS = MAX_REVIEW_WINDOW_MS;
|
|
4265
|
+
exports.MIN_LP_USDC = MIN_LP_USDC;
|
|
3918
4266
|
exports.MIST_PER_SUI = MIST_PER_SUI;
|
|
3919
4267
|
exports.OPERATION_ASSETS = OPERATION_ASSETS;
|
|
3920
4268
|
exports.SENDABLE_ASSETS = SENDABLE_ASSETS;
|
|
@@ -3925,10 +4273,12 @@ exports.SUI_ADDRESS_REGEX = SUI_ADDRESS_REGEX;
|
|
|
3925
4273
|
exports.SUI_ADDRESS_STRICT_REGEX = SUI_ADDRESS_STRICT_REGEX;
|
|
3926
4274
|
exports.SUI_DECIMALS = SUI_DECIMALS;
|
|
3927
4275
|
exports.SUPPORTED_ASSETS = SUPPORTED_ASSETS;
|
|
4276
|
+
exports.SYMBOL_BLOCKLIST = SYMBOL_BLOCKLIST;
|
|
3928
4277
|
exports.SuinsNotRegisteredError = SuinsNotRegisteredError;
|
|
3929
4278
|
exports.SuinsRpcError = SuinsRpcError;
|
|
3930
4279
|
exports.T2000 = T2000;
|
|
3931
4280
|
exports.T2000_OVERLAY_FEE_WALLET = T2000_OVERLAY_FEE_WALLET;
|
|
4281
|
+
exports.USDC_COIN_METADATA_ID = USDC_COIN_METADATA_ID;
|
|
3932
4282
|
exports.USDC_DECIMALS = USDC_DECIMALS;
|
|
3933
4283
|
exports.WRITE_APPENDER_REGISTRY = WRITE_APPENDER_REGISTRY;
|
|
3934
4284
|
exports.ZkLoginSigner = ZkLoginSigner;
|
|
@@ -3938,14 +4288,17 @@ exports.approxUsdValue = approxUsdValue;
|
|
|
3938
4288
|
exports.assertAllowedAsset = assertAllowedAsset;
|
|
3939
4289
|
exports.assertLimitConfig = assertLimitConfig;
|
|
3940
4290
|
exports.buildAddLeafTx = buildAddLeafTx;
|
|
4291
|
+
exports.buildAgentCoinModule = buildAgentCoinModule;
|
|
3941
4292
|
exports.buildCreateJobTx = buildCreateJobTx;
|
|
3942
4293
|
exports.buildDeliverJobTx = buildDeliverJobTx;
|
|
4294
|
+
exports.buildPublishAgentCoinTx = buildPublishAgentCoinTx;
|
|
3943
4295
|
exports.buildRefundJobTx = buildRefundJobTx;
|
|
3944
4296
|
exports.buildRejectJobTx = buildRejectJobTx;
|
|
3945
4297
|
exports.buildReleaseJobTx = buildReleaseJobTx;
|
|
3946
4298
|
exports.buildRevokeLeafTx = buildRevokeLeafTx;
|
|
3947
4299
|
exports.buildSendTx = buildSendTx;
|
|
3948
4300
|
exports.buildSwapTx = buildSwapTx;
|
|
4301
|
+
exports.buildTokenizeTx = buildTokenizeTx;
|
|
3949
4302
|
exports.chatCompletion = chatCompletion;
|
|
3950
4303
|
exports.chatCompletionStream = chatCompletionStream;
|
|
3951
4304
|
exports.checkPositiveAmount = checkPositiveAmount;
|
|
@@ -4035,6 +4388,7 @@ exports.throwIfSimulationFailed = throwIfSimulationFailed;
|
|
|
4035
4388
|
exports.truncateAddress = truncateAddress;
|
|
4036
4389
|
exports.usdcToRaw = usdcToRaw;
|
|
4037
4390
|
exports.validateAddress = validateAddress;
|
|
4391
|
+
exports.validateAgentCoinParams = validateAgentCoinParams;
|
|
4038
4392
|
exports.validateLabel = validateLabel;
|
|
4039
4393
|
exports.verifyCetusRouteCoinMatch = verifyCetusRouteCoinMatch;
|
|
4040
4394
|
exports.verifyJobForSeller = verifyJobForSeller;
|