@mysten/deepbook-v3 2.0.1 → 2.1.4
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/CHANGELOG.md +85 -0
- package/PREDICT.md +256 -0
- package/README.md +116 -0
- package/dist/account.d.mts +139 -0
- package/dist/account.d.mts.map +1 -0
- package/dist/account.mjs +181 -0
- package/dist/account.mjs.map +1 -0
- package/dist/bcs/integers.mjs +23 -0
- package/dist/bcs/integers.mjs.map +1 -0
- package/dist/client.d.mts +2 -2
- package/dist/contracts/account/account.d.mts +382 -0
- package/dist/contracts/account/account.d.mts.map +1 -0
- package/dist/contracts/account/account.mjs +443 -0
- package/dist/contracts/account/account.mjs.map +1 -0
- package/dist/contracts/account/account_events.d.mts +41 -0
- package/dist/contracts/account/account_events.d.mts.map +1 -0
- package/dist/contracts/account/account_events.mjs +72 -0
- package/dist/contracts/account/account_events.mjs.map +1 -0
- package/dist/contracts/account/account_registry.d.mts +210 -0
- package/dist/contracts/account/account_registry.d.mts.map +1 -0
- package/dist/contracts/account/account_registry.mjs +263 -0
- package/dist/contracts/account/account_registry.mjs.map +1 -0
- package/dist/contracts/account/config-arguments.d.mts +10 -0
- package/dist/contracts/account/config-arguments.d.mts.map +1 -0
- package/dist/contracts/account/deps/sui/bag.mjs +44 -0
- package/dist/contracts/account/deps/sui/bag.mjs.map +1 -0
- package/dist/contracts/deepbook/account.d.mts +18 -18
- package/dist/contracts/deepbook/balances.d.mts +4 -4
- package/dist/contracts/deepbook/deep_price.d.mts +3 -3
- package/dist/contracts/deepbook/deep_price.d.mts.map +1 -1
- package/dist/contracts/deepbook/order.d.mts +12 -12
- package/dist/contracts/deepbook_predict/builder_code_events.mjs +38 -0
- package/dist/contracts/deepbook_predict/builder_code_events.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/config-arguments.d.mts +13 -0
- package/dist/contracts/deepbook_predict/config-arguments.d.mts.map +1 -0
- package/dist/contracts/deepbook_predict/deps/fixed_math/i64.mjs +25 -0
- package/dist/contracts/deepbook_predict/deps/fixed_math/i64.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/deps/sui/balance.mjs +25 -0
- package/dist/contracts/deepbook_predict/deps/sui/balance.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/deps/sui/coin.mjs +24 -0
- package/dist/contracts/deepbook_predict/deps/sui/coin.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/deps/sui/table.mjs +39 -0
- package/dist/contracts/deepbook_predict/deps/sui/table.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/deps/sui/vec_set.mjs +26 -0
- package/dist/contracts/deepbook_predict/deps/sui/vec_set.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/ewma.mjs +29 -0
- package/dist/contracts/deepbook_predict/ewma.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/expiry_cash.mjs +27 -0
- package/dist/contracts/deepbook_predict/expiry_cash.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/expiry_market.mjs +367 -0
- package/dist/contracts/deepbook_predict/expiry_market.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/lp_book.mjs +92 -0
- package/dist/contracts/deepbook_predict/lp_book.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/market_manager.mjs +59 -0
- package/dist/contracts/deepbook_predict/market_manager.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/order.mjs +26 -0
- package/dist/contracts/deepbook_predict/order.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/order_events.mjs +84 -0
- package/dist/contracts/deepbook_predict/order_events.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/plp.mjs +284 -0
- package/dist/contracts/deepbook_predict/plp.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/pool_accounting.mjs +58 -0
- package/dist/contracts/deepbook_predict/pool_accounting.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/predict_account.mjs +106 -0
- package/dist/contracts/deepbook_predict/predict_account.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/pricing.mjs +80 -0
- package/dist/contracts/deepbook_predict/pricing.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/range_codec.mjs +41 -0
- package/dist/contracts/deepbook_predict/range_codec.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/registry.mjs +55 -0
- package/dist/contracts/deepbook_predict/registry.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/strike_exposure.mjs +65 -0
- package/dist/contracts/deepbook_predict/strike_exposure.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/strike_exposure_config.mjs +33 -0
- package/dist/contracts/deepbook_predict/strike_exposure_config.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/strike_payout_tree.mjs +72 -0
- package/dist/contracts/deepbook_predict/strike_payout_tree.mjs.map +1 -0
- package/dist/contracts/deepbook_predict/vault_events.mjs +184 -0
- package/dist/contracts/deepbook_predict/vault_events.mjs.map +1 -0
- package/dist/contracts/deepbook_sessions/config-arguments.d.mts +10 -0
- package/dist/contracts/deepbook_sessions/config-arguments.d.mts.map +1 -0
- package/dist/contracts/deepbook_sessions/deps/sui/vec_map.mjs +37 -0
- package/dist/contracts/deepbook_sessions/deps/sui/vec_map.mjs.map +1 -0
- package/dist/contracts/deepbook_sessions/session_config.d.mts +63 -0
- package/dist/contracts/deepbook_sessions/session_config.d.mts.map +1 -0
- package/dist/contracts/deepbook_sessions/session_config.mjs +82 -0
- package/dist/contracts/deepbook_sessions/session_config.mjs.map +1 -0
- package/dist/contracts/deepbook_sessions/sessions.d.mts +275 -0
- package/dist/contracts/deepbook_sessions/sessions.d.mts.map +1 -0
- package/dist/contracts/deepbook_sessions/sessions.mjs +443 -0
- package/dist/contracts/deepbook_sessions/sessions.mjs.map +1 -0
- package/dist/contracts/utils/index.d.mts +18 -1
- package/dist/contracts/utils/index.d.mts.map +1 -1
- package/dist/deployments/index.d.mts +31 -0
- package/dist/deployments/index.d.mts.map +1 -0
- package/dist/deployments/index.mjs +30 -0
- package/dist/deployments/index.mjs.map +1 -0
- package/dist/deployments/testnet.d.mts +14 -0
- package/dist/deployments/testnet.d.mts.map +1 -0
- package/dist/deployments/testnet.mjs +73 -0
- package/dist/deployments/testnet.mjs.map +1 -0
- package/dist/deployments/types.d.mts +36 -0
- package/dist/deployments/types.d.mts.map +1 -0
- package/dist/index.mjs +0 -1
- package/dist/predict/client.d.mts +255 -0
- package/dist/predict/client.d.mts.map +1 -0
- package/dist/predict/client.mjs +436 -0
- package/dist/predict/client.mjs.map +1 -0
- package/dist/predict/config/generated.d.mts +29 -0
- package/dist/predict/config/generated.d.mts.map +1 -0
- package/dist/predict/config/generated.mjs +16 -0
- package/dist/predict/config/generated.mjs.map +1 -0
- package/dist/predict/config/index.d.mts +10 -0
- package/dist/predict/config/index.d.mts.map +1 -0
- package/dist/predict/config/index.mjs +13 -0
- package/dist/predict/config/index.mjs.map +1 -0
- package/dist/predict/config/testnet.d.mts +17 -0
- package/dist/predict/config/testnet.d.mts.map +1 -0
- package/dist/predict/config/testnet.mjs +26 -0
- package/dist/predict/config/testnet.mjs.map +1 -0
- package/dist/predict/config/types.d.mts +55 -0
- package/dist/predict/config/types.d.mts.map +1 -0
- package/dist/predict/decode.d.mts +162 -0
- package/dist/predict/decode.d.mts.map +1 -0
- package/dist/predict/decode.mjs +175 -0
- package/dist/predict/decode.mjs.map +1 -0
- package/dist/predict/errors.d.mts +42 -0
- package/dist/predict/errors.d.mts.map +1 -0
- package/dist/predict/errors.mjs +37 -0
- package/dist/predict/errors.mjs.map +1 -0
- package/dist/predict/index.d.mts +18 -0
- package/dist/predict/index.mjs +14 -0
- package/dist/predict/pricing.d.mts +73 -0
- package/dist/predict/pricing.d.mts.map +1 -0
- package/dist/predict/pricing.mjs +129 -0
- package/dist/predict/pricing.mjs.map +1 -0
- package/dist/predict/reads/balances.mjs +41 -0
- package/dist/predict/reads/balances.mjs.map +1 -0
- package/dist/predict/reads/inspect.d.mts +8 -0
- package/dist/predict/reads/inspect.d.mts.map +1 -0
- package/dist/predict/reads/inspect.mjs +37 -0
- package/dist/predict/reads/inspect.mjs.map +1 -0
- package/dist/predict/reads/markets.mjs +130 -0
- package/dist/predict/reads/markets.mjs.map +1 -0
- package/dist/predict/reads/parse.mjs +20 -0
- package/dist/predict/reads/parse.mjs.map +1 -0
- package/dist/predict/reads/pool.mjs +26 -0
- package/dist/predict/reads/pool.mjs.map +1 -0
- package/dist/predict/reads/positions.d.mts +12 -0
- package/dist/predict/reads/positions.d.mts.map +1 -0
- package/dist/predict/reads/positions.mjs +77 -0
- package/dist/predict/reads/positions.mjs.map +1 -0
- package/dist/predict/reads/pricing.d.mts +20 -0
- package/dist/predict/reads/pricing.d.mts.map +1 -0
- package/dist/predict/reads/pricing.mjs +43 -0
- package/dist/predict/reads/pricing.mjs.map +1 -0
- package/dist/predict/ticks.d.mts +11 -0
- package/dist/predict/ticks.d.mts.map +1 -0
- package/dist/predict/ticks.mjs +21 -0
- package/dist/predict/ticks.mjs.map +1 -0
- package/dist/predict/tx/authed.mjs +18 -0
- package/dist/predict/tx/authed.mjs.map +1 -0
- package/dist/predict/tx/common.d.mts +18 -0
- package/dist/predict/tx/common.d.mts.map +1 -0
- package/dist/predict/tx/common.mjs +52 -0
- package/dist/predict/tx/common.mjs.map +1 -0
- package/dist/predict/tx/trade.d.mts +15 -0
- package/dist/predict/tx/trade.d.mts.map +1 -0
- package/dist/predict/tx/trade.mjs +86 -0
- package/dist/predict/tx/trade.mjs.map +1 -0
- package/dist/predict/units.d.mts +11 -0
- package/dist/predict/units.d.mts.map +1 -0
- package/dist/predict/units.mjs +44 -0
- package/dist/predict/units.mjs.map +1 -0
- package/dist/queries/accountQueries.mjs +0 -1
- package/dist/queries/accountQueries.mjs.map +1 -1
- package/dist/queries/orderQueries.mjs +0 -1
- package/dist/queries/orderQueries.mjs.map +1 -1
- package/dist/queries/registryQueries.mjs +0 -1
- package/dist/queries/registryQueries.mjs.map +1 -1
- package/dist/sessions.d.mts +244 -0
- package/dist/sessions.d.mts.map +1 -0
- package/dist/sessions.mjs +291 -0
- package/dist/sessions.mjs.map +1 -0
- package/dist/transactions/balanceManager.d.mts +12 -12
- package/dist/transactions/balanceManager.d.mts.map +1 -1
- package/dist/transactions/deepbook.d.mts +20 -20
- package/dist/transactions/deepbook.d.mts.map +1 -1
- package/dist/transactions/deepbookAdmin.d.mts +4 -4
- package/dist/transactions/deepbookAdmin.d.mts.map +1 -1
- package/dist/transactions/marginAdmin.d.mts +7 -7
- package/dist/transactions/marginLiquidations.d.mts +3 -3
- package/dist/transactions/marginMaintainer.d.mts +5 -5
- package/dist/transactions/marginManager.d.mts +32 -32
- package/dist/transactions/marginPool.d.mts +18 -18
- package/dist/transactions/marginRegistry.d.mts +16 -16
- package/dist/transactions/marginTPSL.d.mts +10 -10
- package/dist/transactions/marginTPSL.d.mts.map +1 -1
- package/dist/transactions/poolProxy.d.mts +8 -8
- package/dist/transactions/poolProxy.d.mts.map +1 -1
- package/package.json +25 -4
- package/src/account.ts +239 -0
- package/src/bcs/integers.ts +35 -0
- package/src/contracts/account/account.ts +706 -0
- package/src/contracts/account/account_events.ts +64 -0
- package/src/contracts/account/account_registry.ts +468 -0
- package/src/contracts/account/config-arguments.ts +8 -0
- package/src/contracts/account/deps/sui/bag.ts +42 -0
- package/src/contracts/deepbook_predict/admin.ts +44 -0
- package/src/contracts/deepbook_predict/builder_code.ts +155 -0
- package/src/contracts/deepbook_predict/builder_code_events.ts +34 -0
- package/src/contracts/deepbook_predict/config-arguments.ts +11 -0
- package/src/contracts/deepbook_predict/config_events.ts +140 -0
- package/src/contracts/deepbook_predict/deps/fixed_math/i64.ts +21 -0
- package/src/contracts/deepbook_predict/deps/sui/balance.ts +25 -0
- package/src/contracts/deepbook_predict/deps/sui/coin.ts +20 -0
- package/src/contracts/deepbook_predict/deps/sui/table.ts +37 -0
- package/src/contracts/deepbook_predict/deps/sui/vec_set.ts +22 -0
- package/src/contracts/deepbook_predict/ewma.ts +26 -0
- package/src/contracts/deepbook_predict/ewma_config.ts +28 -0
- package/src/contracts/deepbook_predict/expiry_cash.ts +24 -0
- package/src/contracts/deepbook_predict/expiry_market.ts +1549 -0
- package/src/contracts/deepbook_predict/lp_book.ts +105 -0
- package/src/contracts/deepbook_predict/market_lifecycle_cap.ts +75 -0
- package/src/contracts/deepbook_predict/market_manager.ts +218 -0
- package/src/contracts/deepbook_predict/order.ts +24 -0
- package/src/contracts/deepbook_predict/order_events.ts +129 -0
- package/src/contracts/deepbook_predict/pause_cap.ts +68 -0
- package/src/contracts/deepbook_predict/plp.ts +987 -0
- package/src/contracts/deepbook_predict/pool_accounting.ts +79 -0
- package/src/contracts/deepbook_predict/predict_account.ts +180 -0
- package/src/contracts/deepbook_predict/pricing.ts +124 -0
- package/src/contracts/deepbook_predict/pricing_config.ts +41 -0
- package/src/contracts/deepbook_predict/protocol_config.ts +1066 -0
- package/src/contracts/deepbook_predict/range_codec.ts +53 -0
- package/src/contracts/deepbook_predict/registry.ts +694 -0
- package/src/contracts/deepbook_predict/strike_exposure.ts +77 -0
- package/src/contracts/deepbook_predict/strike_exposure_config.ts +46 -0
- package/src/contracts/deepbook_predict/strike_payout_tree.ts +89 -0
- package/src/contracts/deepbook_predict/vault_events.ts +222 -0
- package/src/contracts/deepbook_sessions/config-arguments.ts +8 -0
- package/src/contracts/deepbook_sessions/deps/sui/vec_map.ts +33 -0
- package/src/contracts/deepbook_sessions/session_config.ts +130 -0
- package/src/contracts/deepbook_sessions/sessions.ts +663 -0
- package/src/contracts/propbook/block_scholes_store.ts +842 -0
- package/src/contracts/propbook/deps/sui/table.ts +37 -0
- package/src/contracts/propbook/oracle_lane.ts +170 -0
- package/src/contracts/propbook/pyth_feed.ts +414 -0
- package/src/contracts/propbook/registry.ts +596 -0
- package/src/deployments/index.ts +73 -0
- package/src/deployments/testnet.ts +107 -0
- package/src/deployments/types.ts +81 -0
- package/src/index.ts +5 -0
- package/src/predict/client.ts +941 -0
- package/src/predict/config/generated.ts +39 -0
- package/src/predict/config/index.ts +25 -0
- package/src/predict/config/testnet.ts +27 -0
- package/src/predict/config/types.ts +52 -0
- package/src/predict/decode.ts +476 -0
- package/src/predict/errors.ts +83 -0
- package/src/predict/index.ts +94 -0
- package/src/predict/pricing.ts +199 -0
- package/src/predict/reads/balances.ts +55 -0
- package/src/predict/reads/inspect.ts +78 -0
- package/src/predict/reads/markets.ts +222 -0
- package/src/predict/reads/parse.ts +30 -0
- package/src/predict/reads/pool.ts +37 -0
- package/src/predict/reads/positions.ts +144 -0
- package/src/predict/reads/pricing.ts +79 -0
- package/src/predict/ticks.ts +42 -0
- package/src/predict/tx/authed.ts +20 -0
- package/src/predict/tx/common.ts +92 -0
- package/src/predict/tx/trade.ts +183 -0
- package/src/predict/units.ts +49 -0
- package/src/sessions.ts +471 -0
- package/dist/types/bcs.mjs +0 -7
|
@@ -0,0 +1,706 @@
|
|
|
1
|
+
/**************************************************************
|
|
2
|
+
* THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
|
|
3
|
+
**************************************************************/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Owns shared account wrappers, typed coin custody, accumulator settlement, and
|
|
7
|
+
* application-scoped data. Consuming `Auth` is the mutable-borrow boundary: owner
|
|
8
|
+
* auth is checked against the account, while package-issued app auth yields the
|
|
9
|
+
* same full `&mut Account` and is not bound to an owner or operation. The wrapper
|
|
10
|
+
* address receives accumulator funds; a distinct derived account UID identifies
|
|
11
|
+
* the account and anchors app data, while typed balances remain embedded in the
|
|
12
|
+
* account. App data is namespaced by witness type, requires `Permit<App>` to
|
|
13
|
+
* mutate, and remains publicly readable.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import {
|
|
17
|
+
MoveStruct,
|
|
18
|
+
MoveTuple,
|
|
19
|
+
normalizeMoveArguments,
|
|
20
|
+
type RawTransactionArgument,
|
|
21
|
+
} from '../utils/index.js';
|
|
22
|
+
import { bcs, type BcsType } from '@mysten/sui/bcs';
|
|
23
|
+
import { type Transaction, type TransactionArgument } from '@mysten/sui/transactions';
|
|
24
|
+
import * as bag from './deps/sui/bag.js';
|
|
25
|
+
const $moduleName = '@local-pkg/account::account';
|
|
26
|
+
export const Account = new MoveStruct({
|
|
27
|
+
name: `${$moduleName}::Account`,
|
|
28
|
+
fields: {
|
|
29
|
+
/** Dynamic-field parent for account-owned application data. */
|
|
30
|
+
account_id: bcs.Address,
|
|
31
|
+
/** EOA address or object-ID-as-address that owns this account. */
|
|
32
|
+
owner: bcs.Address,
|
|
33
|
+
/** Wrapper-object address used as the accumulator delivery and withdrawal anchor. */
|
|
34
|
+
receive_address: bcs.Address,
|
|
35
|
+
/** Type-indexed stored `Balance<T>` values. */
|
|
36
|
+
balances: bag.Bag,
|
|
37
|
+
/** Type-indexed timestamps of the latest settlement attempt. */
|
|
38
|
+
settlements: bag.Bag,
|
|
39
|
+
/** Canonical account ID supplied at referral-based creation, if any. */
|
|
40
|
+
referrer_account_id: bcs.option(bcs.Address),
|
|
41
|
+
/** Referrer's wrapper address for accumulator delivery, if any. */
|
|
42
|
+
referrer_receive_address: bcs.option(bcs.Address),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
export const AccountWrapper = new MoveStruct({
|
|
46
|
+
name: `${$moduleName}::AccountWrapper`,
|
|
47
|
+
fields: {
|
|
48
|
+
id: bcs.Address,
|
|
49
|
+
account: Account,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
export const DataKey = new MoveTuple({
|
|
53
|
+
name: `${$moduleName}::DataKey<phantom App>`,
|
|
54
|
+
fields: [bcs.bool()],
|
|
55
|
+
});
|
|
56
|
+
export const CoinKey = new MoveTuple({
|
|
57
|
+
name: `${$moduleName}::CoinKey<phantom T>`,
|
|
58
|
+
fields: [bcs.bool()],
|
|
59
|
+
});
|
|
60
|
+
export const Auth = new MoveStruct({
|
|
61
|
+
name: `${$moduleName}::Auth`,
|
|
62
|
+
fields: {
|
|
63
|
+
kind: bcs.u8(),
|
|
64
|
+
owner: bcs.Address,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
export interface IdArguments {
|
|
68
|
+
self: RawTransactionArgument<string>;
|
|
69
|
+
}
|
|
70
|
+
export interface IdOptions {
|
|
71
|
+
package?: string;
|
|
72
|
+
arguments: IdArguments | [self: RawTransactionArgument<string>];
|
|
73
|
+
config?: {
|
|
74
|
+
accountPackageId?: string;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** Returns the wrapper object ID. */
|
|
78
|
+
export function id(options: IdOptions) {
|
|
79
|
+
const packageAddress =
|
|
80
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
81
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
82
|
+
const parameterNames = ['self'];
|
|
83
|
+
return (tx: Transaction) =>
|
|
84
|
+
tx.moveCall({
|
|
85
|
+
package: packageAddress,
|
|
86
|
+
module: 'account',
|
|
87
|
+
function: 'id',
|
|
88
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
export interface LoadAccountArguments {
|
|
92
|
+
self: RawTransactionArgument<string>;
|
|
93
|
+
}
|
|
94
|
+
export interface LoadAccountOptions {
|
|
95
|
+
package?: string;
|
|
96
|
+
arguments: LoadAccountArguments | [self: RawTransactionArgument<string>];
|
|
97
|
+
config?: {
|
|
98
|
+
accountPackageId?: string;
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/** Borrows the wrapped account for read-only composition. */
|
|
102
|
+
export function loadAccount(options: LoadAccountOptions) {
|
|
103
|
+
const packageAddress =
|
|
104
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
105
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
106
|
+
const parameterNames = ['self'];
|
|
107
|
+
return (tx: Transaction) =>
|
|
108
|
+
tx.moveCall({
|
|
109
|
+
package: packageAddress,
|
|
110
|
+
module: 'account',
|
|
111
|
+
function: 'load_account',
|
|
112
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
export interface BalanceArguments {
|
|
116
|
+
self: TransactionArgument;
|
|
117
|
+
}
|
|
118
|
+
export interface BalanceOptions {
|
|
119
|
+
package?: string;
|
|
120
|
+
arguments: BalanceArguments | [self: TransactionArgument];
|
|
121
|
+
config?: {
|
|
122
|
+
accountPackageId?: string;
|
|
123
|
+
};
|
|
124
|
+
typeArguments: [string];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Returns the total balance of `T` available to the account, including funds
|
|
128
|
+
* delivered through the ambient accumulator but not yet settled into the account.
|
|
129
|
+
*/
|
|
130
|
+
export function balance(options: BalanceOptions) {
|
|
131
|
+
const packageAddress =
|
|
132
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
133
|
+
const argumentsTypes = [
|
|
134
|
+
null,
|
|
135
|
+
'0x2::accumulator::AccumulatorRoot',
|
|
136
|
+
'0x2::clock::Clock',
|
|
137
|
+
] satisfies (string | null)[];
|
|
138
|
+
const parameterNames = ['self'];
|
|
139
|
+
return (tx: Transaction) =>
|
|
140
|
+
tx.moveCall({
|
|
141
|
+
package: packageAddress,
|
|
142
|
+
module: 'account',
|
|
143
|
+
function: 'balance',
|
|
144
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
145
|
+
typeArguments: options.typeArguments,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
export interface OwnerArguments {
|
|
149
|
+
self: TransactionArgument;
|
|
150
|
+
}
|
|
151
|
+
export interface OwnerOptions {
|
|
152
|
+
package?: string;
|
|
153
|
+
arguments: OwnerArguments | [self: TransactionArgument];
|
|
154
|
+
config?: {
|
|
155
|
+
accountPackageId?: string;
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Returns the account owner address. This may be an EOA address or an
|
|
160
|
+
* object-ID-as-address.
|
|
161
|
+
*/
|
|
162
|
+
export function owner(options: OwnerOptions) {
|
|
163
|
+
const packageAddress =
|
|
164
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
165
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
166
|
+
const parameterNames = ['self'];
|
|
167
|
+
return (tx: Transaction) =>
|
|
168
|
+
tx.moveCall({
|
|
169
|
+
package: packageAddress,
|
|
170
|
+
module: 'account',
|
|
171
|
+
function: 'owner',
|
|
172
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
export interface AccountIdArguments {
|
|
176
|
+
self: TransactionArgument;
|
|
177
|
+
}
|
|
178
|
+
export interface AccountIdOptions {
|
|
179
|
+
package?: string;
|
|
180
|
+
arguments: AccountIdArguments | [self: TransactionArgument];
|
|
181
|
+
config?: {
|
|
182
|
+
accountPackageId?: string;
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/** Returns the canonical account ID. */
|
|
186
|
+
export function accountId(options: AccountIdOptions) {
|
|
187
|
+
const packageAddress =
|
|
188
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
189
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
190
|
+
const parameterNames = ['self'];
|
|
191
|
+
return (tx: Transaction) =>
|
|
192
|
+
tx.moveCall({
|
|
193
|
+
package: packageAddress,
|
|
194
|
+
module: 'account',
|
|
195
|
+
function: 'account_id',
|
|
196
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
export interface ReferrerAccountIdArguments {
|
|
200
|
+
self: TransactionArgument;
|
|
201
|
+
}
|
|
202
|
+
export interface ReferrerAccountIdOptions {
|
|
203
|
+
package?: string;
|
|
204
|
+
arguments: ReferrerAccountIdArguments | [self: TransactionArgument];
|
|
205
|
+
config?: {
|
|
206
|
+
accountPackageId?: string;
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Returns the canonical referrer account ID recorded at creation for external Move
|
|
211
|
+
* composition.
|
|
212
|
+
*/
|
|
213
|
+
export function referrerAccountId(options: ReferrerAccountIdOptions) {
|
|
214
|
+
const packageAddress =
|
|
215
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
216
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
217
|
+
const parameterNames = ['self'];
|
|
218
|
+
return (tx: Transaction) =>
|
|
219
|
+
tx.moveCall({
|
|
220
|
+
package: packageAddress,
|
|
221
|
+
module: 'account',
|
|
222
|
+
function: 'referrer_account_id',
|
|
223
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
export interface ReferrerReceiveAddressArguments {
|
|
227
|
+
self: TransactionArgument;
|
|
228
|
+
}
|
|
229
|
+
export interface ReferrerReceiveAddressOptions {
|
|
230
|
+
package?: string;
|
|
231
|
+
arguments: ReferrerReceiveAddressArguments | [self: TransactionArgument];
|
|
232
|
+
config?: {
|
|
233
|
+
accountPackageId?: string;
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Returns the referrer's accumulator receive address for external Move
|
|
238
|
+
* composition.
|
|
239
|
+
*/
|
|
240
|
+
export function referrerReceiveAddress(options: ReferrerReceiveAddressOptions) {
|
|
241
|
+
const packageAddress =
|
|
242
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
243
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
244
|
+
const parameterNames = ['self'];
|
|
245
|
+
return (tx: Transaction) =>
|
|
246
|
+
tx.moveCall({
|
|
247
|
+
package: packageAddress,
|
|
248
|
+
module: 'account',
|
|
249
|
+
function: 'referrer_receive_address',
|
|
250
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
export interface ReceiveAddressArguments {
|
|
254
|
+
self: TransactionArgument;
|
|
255
|
+
}
|
|
256
|
+
export interface ReceiveAddressOptions {
|
|
257
|
+
package?: string;
|
|
258
|
+
arguments: ReceiveAddressArguments | [self: TransactionArgument];
|
|
259
|
+
config?: {
|
|
260
|
+
accountPackageId?: string;
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
/** Returns the accumulator receive address for this account (the wrapper address). */
|
|
264
|
+
export function receiveAddress(options: ReceiveAddressOptions) {
|
|
265
|
+
const packageAddress =
|
|
266
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
267
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
268
|
+
const parameterNames = ['self'];
|
|
269
|
+
return (tx: Transaction) =>
|
|
270
|
+
tx.moveCall({
|
|
271
|
+
package: packageAddress,
|
|
272
|
+
module: 'account',
|
|
273
|
+
function: 'receive_address',
|
|
274
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
export interface GenerateAuthOptions {
|
|
278
|
+
package?: string;
|
|
279
|
+
arguments?: [];
|
|
280
|
+
config?: {
|
|
281
|
+
accountPackageId?: string;
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/** Creates owner authority bound to the transaction sender. */
|
|
285
|
+
export function generateAuth(options: GenerateAuthOptions = {}) {
|
|
286
|
+
const packageAddress =
|
|
287
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
288
|
+
return (tx: Transaction) =>
|
|
289
|
+
tx.moveCall({
|
|
290
|
+
package: packageAddress,
|
|
291
|
+
module: 'account',
|
|
292
|
+
function: 'generate_auth',
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
export interface GenerateAuthAsObjectArguments {
|
|
296
|
+
uid: RawTransactionArgument<string>;
|
|
297
|
+
}
|
|
298
|
+
export interface GenerateAuthAsObjectOptions {
|
|
299
|
+
package?: string;
|
|
300
|
+
arguments: GenerateAuthAsObjectArguments | [uid: RawTransactionArgument<string>];
|
|
301
|
+
config?: {
|
|
302
|
+
accountPackageId?: string;
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
/** Creates owner authority bound to an owning object's address. */
|
|
306
|
+
export function generateAuthAsObject(options: GenerateAuthAsObjectOptions) {
|
|
307
|
+
const packageAddress =
|
|
308
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
309
|
+
const argumentsTypes = ['0x2::object::ID'] satisfies (string | null)[];
|
|
310
|
+
const parameterNames = ['uid'];
|
|
311
|
+
return (tx: Transaction) =>
|
|
312
|
+
tx.moveCall({
|
|
313
|
+
package: packageAddress,
|
|
314
|
+
module: 'account',
|
|
315
|
+
function: 'generate_auth_as_object',
|
|
316
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
export interface ShareArguments {
|
|
320
|
+
self: RawTransactionArgument<string>;
|
|
321
|
+
}
|
|
322
|
+
export interface ShareOptions {
|
|
323
|
+
package?: string;
|
|
324
|
+
arguments: ShareArguments | [self: RawTransactionArgument<string>];
|
|
325
|
+
config?: {
|
|
326
|
+
accountPackageId?: string;
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
/** Shares a newly created account wrapper. */
|
|
330
|
+
export function share(options: ShareOptions) {
|
|
331
|
+
const packageAddress =
|
|
332
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
333
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
334
|
+
const parameterNames = ['self'];
|
|
335
|
+
return (tx: Transaction) =>
|
|
336
|
+
tx.moveCall({
|
|
337
|
+
package: packageAddress,
|
|
338
|
+
module: 'account',
|
|
339
|
+
function: 'share',
|
|
340
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
export interface LoadAccountMutArguments {
|
|
344
|
+
self: RawTransactionArgument<string>;
|
|
345
|
+
auth: TransactionArgument;
|
|
346
|
+
}
|
|
347
|
+
export interface LoadAccountMutOptions {
|
|
348
|
+
package?: string;
|
|
349
|
+
arguments:
|
|
350
|
+
LoadAccountMutArguments | [self: RawTransactionArgument<string>, auth: TransactionArgument];
|
|
351
|
+
config?: {
|
|
352
|
+
accountPackageId?: string;
|
|
353
|
+
};
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Consumes owner or app authority and returns the account's full mutable surface.
|
|
357
|
+
* Owner authority must match the stored owner; app authority is package-issued
|
|
358
|
+
* after registry authorization and carries no owner or operation restriction.
|
|
359
|
+
*/
|
|
360
|
+
export function loadAccountMut(options: LoadAccountMutOptions) {
|
|
361
|
+
const packageAddress =
|
|
362
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
363
|
+
const argumentsTypes = [null, null] satisfies (string | null)[];
|
|
364
|
+
const parameterNames = ['self', 'auth'];
|
|
365
|
+
return (tx: Transaction) =>
|
|
366
|
+
tx.moveCall({
|
|
367
|
+
package: packageAddress,
|
|
368
|
+
module: 'account',
|
|
369
|
+
function: 'load_account_mut',
|
|
370
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
export interface SettleArguments {
|
|
374
|
+
wrapper: RawTransactionArgument<string>;
|
|
375
|
+
}
|
|
376
|
+
export interface SettleOptions {
|
|
377
|
+
package?: string;
|
|
378
|
+
arguments: SettleArguments | [wrapper: RawTransactionArgument<string>];
|
|
379
|
+
config?: {
|
|
380
|
+
accountPackageId?: string;
|
|
381
|
+
};
|
|
382
|
+
typeArguments: [string];
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Permissionlessly folds accumulator-delivered `T` at the wrapper address into
|
|
386
|
+
* stored account balance. The per-coin timestamp is latched before reading the
|
|
387
|
+
* accumulator, preventing duplicate withdrawal and same-timestamp double counting
|
|
388
|
+
* even when no funds are available. Only the wrapper UID can authenticate the
|
|
389
|
+
* address-balance withdrawal; value leaving the account still requires a mutable
|
|
390
|
+
* borrow through `Auth`.
|
|
391
|
+
*/
|
|
392
|
+
export function settle(options: SettleOptions) {
|
|
393
|
+
const packageAddress =
|
|
394
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
395
|
+
const argumentsTypes = [
|
|
396
|
+
null,
|
|
397
|
+
'0x2::accumulator::AccumulatorRoot',
|
|
398
|
+
'0x2::clock::Clock',
|
|
399
|
+
] satisfies (string | null)[];
|
|
400
|
+
const parameterNames = ['wrapper'];
|
|
401
|
+
return (tx: Transaction) =>
|
|
402
|
+
tx.moveCall({
|
|
403
|
+
package: packageAddress,
|
|
404
|
+
module: 'account',
|
|
405
|
+
function: 'settle',
|
|
406
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
407
|
+
typeArguments: options.typeArguments,
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
export interface DepositArguments {
|
|
411
|
+
self: TransactionArgument;
|
|
412
|
+
coin: RawTransactionArgument<string>;
|
|
413
|
+
}
|
|
414
|
+
export interface DepositOptions {
|
|
415
|
+
package?: string;
|
|
416
|
+
arguments: DepositArguments | [self: TransactionArgument, coin: RawTransactionArgument<string>];
|
|
417
|
+
config?: {
|
|
418
|
+
accountPackageId?: string;
|
|
419
|
+
};
|
|
420
|
+
typeArguments: [string];
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Deposits into stored balance only; callers that include accumulator funds must
|
|
424
|
+
* settle through the wrapper first.
|
|
425
|
+
*/
|
|
426
|
+
export function deposit(options: DepositOptions) {
|
|
427
|
+
const packageAddress =
|
|
428
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
429
|
+
const argumentsTypes = [null, null] satisfies (string | null)[];
|
|
430
|
+
const parameterNames = ['self', 'coin'];
|
|
431
|
+
return (tx: Transaction) =>
|
|
432
|
+
tx.moveCall({
|
|
433
|
+
package: packageAddress,
|
|
434
|
+
module: 'account',
|
|
435
|
+
function: 'deposit',
|
|
436
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
437
|
+
typeArguments: options.typeArguments,
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
export interface WithdrawArguments {
|
|
441
|
+
self: TransactionArgument;
|
|
442
|
+
amount: RawTransactionArgument<number | bigint>;
|
|
443
|
+
}
|
|
444
|
+
export interface WithdrawOptions {
|
|
445
|
+
package?: string;
|
|
446
|
+
arguments:
|
|
447
|
+
| WithdrawArguments
|
|
448
|
+
| [self: TransactionArgument, amount: RawTransactionArgument<number | bigint>];
|
|
449
|
+
config?: {
|
|
450
|
+
accountPackageId?: string;
|
|
451
|
+
};
|
|
452
|
+
typeArguments: [string];
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Withdraws from stored balance only; callers that include accumulator funds must
|
|
456
|
+
* settle through the wrapper first.
|
|
457
|
+
*/
|
|
458
|
+
export function withdraw(options: WithdrawOptions) {
|
|
459
|
+
const packageAddress =
|
|
460
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
461
|
+
const argumentsTypes = [null, 'u64'] satisfies (string | null)[];
|
|
462
|
+
const parameterNames = ['self', 'amount'];
|
|
463
|
+
return (tx: Transaction) =>
|
|
464
|
+
tx.moveCall({
|
|
465
|
+
package: packageAddress,
|
|
466
|
+
module: 'account',
|
|
467
|
+
function: 'withdraw',
|
|
468
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
469
|
+
typeArguments: options.typeArguments,
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
export interface DepositFundsArguments {
|
|
473
|
+
wrapper: RawTransactionArgument<string>;
|
|
474
|
+
auth: TransactionArgument;
|
|
475
|
+
coin: RawTransactionArgument<string>;
|
|
476
|
+
}
|
|
477
|
+
export interface DepositFundsOptions {
|
|
478
|
+
package?: string;
|
|
479
|
+
arguments:
|
|
480
|
+
| DepositFundsArguments
|
|
481
|
+
| [
|
|
482
|
+
wrapper: RawTransactionArgument<string>,
|
|
483
|
+
auth: TransactionArgument,
|
|
484
|
+
coin: RawTransactionArgument<string>,
|
|
485
|
+
];
|
|
486
|
+
config?: {
|
|
487
|
+
accountPackageId?: string;
|
|
488
|
+
};
|
|
489
|
+
typeArguments: [string];
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* PTB entrypoint that settles accumulator funds, consumes authority, and deposits
|
|
493
|
+
* into stored balance in one call.
|
|
494
|
+
*/
|
|
495
|
+
export function depositFunds(options: DepositFundsOptions) {
|
|
496
|
+
const packageAddress =
|
|
497
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
498
|
+
const argumentsTypes = [
|
|
499
|
+
null,
|
|
500
|
+
null,
|
|
501
|
+
null,
|
|
502
|
+
'0x2::accumulator::AccumulatorRoot',
|
|
503
|
+
'0x2::clock::Clock',
|
|
504
|
+
] satisfies (string | null)[];
|
|
505
|
+
const parameterNames = ['wrapper', 'auth', 'coin'];
|
|
506
|
+
return (tx: Transaction) =>
|
|
507
|
+
tx.moveCall({
|
|
508
|
+
package: packageAddress,
|
|
509
|
+
module: 'account',
|
|
510
|
+
function: 'deposit_funds',
|
|
511
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
512
|
+
typeArguments: options.typeArguments,
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
export interface WithdrawFundsArguments {
|
|
516
|
+
wrapper: RawTransactionArgument<string>;
|
|
517
|
+
auth: TransactionArgument;
|
|
518
|
+
amount: RawTransactionArgument<number | bigint>;
|
|
519
|
+
}
|
|
520
|
+
export interface WithdrawFundsOptions {
|
|
521
|
+
package?: string;
|
|
522
|
+
arguments:
|
|
523
|
+
| WithdrawFundsArguments
|
|
524
|
+
| [
|
|
525
|
+
wrapper: RawTransactionArgument<string>,
|
|
526
|
+
auth: TransactionArgument,
|
|
527
|
+
amount: RawTransactionArgument<number | bigint>,
|
|
528
|
+
];
|
|
529
|
+
config?: {
|
|
530
|
+
accountPackageId?: string;
|
|
531
|
+
};
|
|
532
|
+
typeArguments: [string];
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* PTB entrypoint that settles accumulator funds, consumes authority, and withdraws
|
|
536
|
+
* from stored balance in one call.
|
|
537
|
+
*/
|
|
538
|
+
export function withdrawFunds(options: WithdrawFundsOptions) {
|
|
539
|
+
const packageAddress =
|
|
540
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
541
|
+
const argumentsTypes = [
|
|
542
|
+
null,
|
|
543
|
+
null,
|
|
544
|
+
'u64',
|
|
545
|
+
'0x2::accumulator::AccumulatorRoot',
|
|
546
|
+
'0x2::clock::Clock',
|
|
547
|
+
] satisfies (string | null)[];
|
|
548
|
+
const parameterNames = ['wrapper', 'auth', 'amount'];
|
|
549
|
+
return (tx: Transaction) =>
|
|
550
|
+
tx.moveCall({
|
|
551
|
+
package: packageAddress,
|
|
552
|
+
module: 'account',
|
|
553
|
+
function: 'withdraw_funds',
|
|
554
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
555
|
+
typeArguments: options.typeArguments,
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
export interface AttachArguments<Data extends BcsType<any>> {
|
|
559
|
+
self: TransactionArgument;
|
|
560
|
+
Permit: TransactionArgument;
|
|
561
|
+
data: RawTransactionArgument<Data>;
|
|
562
|
+
}
|
|
563
|
+
export interface AttachOptions<Data extends BcsType<any>> {
|
|
564
|
+
package?: string;
|
|
565
|
+
arguments:
|
|
566
|
+
| AttachArguments<Data>
|
|
567
|
+
| [self: TransactionArgument, Permit: TransactionArgument, data: RawTransactionArgument<Data>];
|
|
568
|
+
config?: {
|
|
569
|
+
accountPackageId?: string;
|
|
570
|
+
};
|
|
571
|
+
typeArguments: [string, string];
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Attach an app's `Data` under its witness namespace. Requires `Permit<App>`.
|
|
575
|
+
* Aborts if `App` already has data attached.
|
|
576
|
+
*/
|
|
577
|
+
export function attach<Data extends BcsType<any>>(options: AttachOptions<Data>) {
|
|
578
|
+
const packageAddress =
|
|
579
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
580
|
+
const argumentsTypes = [null, null, `${options.typeArguments[1]}`] satisfies (string | null)[];
|
|
581
|
+
const parameterNames = ['self', 'Permit', 'data'];
|
|
582
|
+
return (tx: Transaction) =>
|
|
583
|
+
tx.moveCall({
|
|
584
|
+
package: packageAddress,
|
|
585
|
+
module: 'account',
|
|
586
|
+
function: 'attach',
|
|
587
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
588
|
+
typeArguments: options.typeArguments,
|
|
589
|
+
});
|
|
590
|
+
}
|
|
591
|
+
export interface HasDataArguments {
|
|
592
|
+
self: TransactionArgument;
|
|
593
|
+
}
|
|
594
|
+
export interface HasDataOptions {
|
|
595
|
+
package?: string;
|
|
596
|
+
arguments: HasDataArguments | [self: TransactionArgument];
|
|
597
|
+
config?: {
|
|
598
|
+
accountPackageId?: string;
|
|
599
|
+
};
|
|
600
|
+
typeArguments: [string];
|
|
601
|
+
}
|
|
602
|
+
/** Whether `App` has data attached to this account. */
|
|
603
|
+
export function hasData(options: HasDataOptions) {
|
|
604
|
+
const packageAddress =
|
|
605
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
606
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
607
|
+
const parameterNames = ['self'];
|
|
608
|
+
return (tx: Transaction) =>
|
|
609
|
+
tx.moveCall({
|
|
610
|
+
package: packageAddress,
|
|
611
|
+
module: 'account',
|
|
612
|
+
function: 'has_data',
|
|
613
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
614
|
+
typeArguments: options.typeArguments,
|
|
615
|
+
});
|
|
616
|
+
}
|
|
617
|
+
export interface BorrowDataArguments {
|
|
618
|
+
self: TransactionArgument;
|
|
619
|
+
}
|
|
620
|
+
export interface BorrowDataOptions {
|
|
621
|
+
package?: string;
|
|
622
|
+
arguments: BorrowDataArguments | [self: TransactionArgument];
|
|
623
|
+
config?: {
|
|
624
|
+
accountPackageId?: string;
|
|
625
|
+
};
|
|
626
|
+
typeArguments: [string, string];
|
|
627
|
+
}
|
|
628
|
+
/**
|
|
629
|
+
* Borrow an app's attached `Data`. Open (no witness): the slot is namespaced by
|
|
630
|
+
* `App` and on-chain state is public, so composing apps can read it. Aborts if
|
|
631
|
+
* nothing is attached.
|
|
632
|
+
*/
|
|
633
|
+
export function borrowData(options: BorrowDataOptions) {
|
|
634
|
+
const packageAddress =
|
|
635
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
636
|
+
const argumentsTypes = [null] satisfies (string | null)[];
|
|
637
|
+
const parameterNames = ['self'];
|
|
638
|
+
return (tx: Transaction) =>
|
|
639
|
+
tx.moveCall({
|
|
640
|
+
package: packageAddress,
|
|
641
|
+
module: 'account',
|
|
642
|
+
function: 'borrow_data',
|
|
643
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
644
|
+
typeArguments: options.typeArguments,
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
export interface BorrowDataMutArguments {
|
|
648
|
+
self: TransactionArgument;
|
|
649
|
+
Permit: TransactionArgument;
|
|
650
|
+
}
|
|
651
|
+
export interface BorrowDataMutOptions {
|
|
652
|
+
package?: string;
|
|
653
|
+
arguments: BorrowDataMutArguments | [self: TransactionArgument, Permit: TransactionArgument];
|
|
654
|
+
config?: {
|
|
655
|
+
accountPackageId?: string;
|
|
656
|
+
};
|
|
657
|
+
typeArguments: [string, string];
|
|
658
|
+
}
|
|
659
|
+
/**
|
|
660
|
+
* Mutably borrow an app's attached `Data`. Requires `Permit<App>`. Aborts if
|
|
661
|
+
* nothing is attached.
|
|
662
|
+
*/
|
|
663
|
+
export function borrowDataMut(options: BorrowDataMutOptions) {
|
|
664
|
+
const packageAddress =
|
|
665
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
666
|
+
const argumentsTypes = [null, null] satisfies (string | null)[];
|
|
667
|
+
const parameterNames = ['self', 'Permit'];
|
|
668
|
+
return (tx: Transaction) =>
|
|
669
|
+
tx.moveCall({
|
|
670
|
+
package: packageAddress,
|
|
671
|
+
module: 'account',
|
|
672
|
+
function: 'borrow_data_mut',
|
|
673
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
674
|
+
typeArguments: options.typeArguments,
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
export interface DetachArguments {
|
|
678
|
+
self: TransactionArgument;
|
|
679
|
+
Permit: TransactionArgument;
|
|
680
|
+
}
|
|
681
|
+
export interface DetachOptions {
|
|
682
|
+
package?: string;
|
|
683
|
+
arguments: DetachArguments | [self: TransactionArgument, Permit: TransactionArgument];
|
|
684
|
+
config?: {
|
|
685
|
+
accountPackageId?: string;
|
|
686
|
+
};
|
|
687
|
+
typeArguments: [string, string];
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Detach and return an app's `Data`. Requires `Permit<App>`. Aborts if nothing is
|
|
691
|
+
* attached.
|
|
692
|
+
*/
|
|
693
|
+
export function detach(options: DetachOptions) {
|
|
694
|
+
const packageAddress =
|
|
695
|
+
options.package ?? options.config?.accountPackageId ?? '@local-pkg/account';
|
|
696
|
+
const argumentsTypes = [null, null] satisfies (string | null)[];
|
|
697
|
+
const parameterNames = ['self', 'Permit'];
|
|
698
|
+
return (tx: Transaction) =>
|
|
699
|
+
tx.moveCall({
|
|
700
|
+
package: packageAddress,
|
|
701
|
+
module: 'account',
|
|
702
|
+
function: 'detach',
|
|
703
|
+
arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
|
|
704
|
+
typeArguments: options.typeArguments,
|
|
705
|
+
});
|
|
706
|
+
}
|