@alephium/powfi-sdk 0.0.1-rc.2 → 0.0.1-rc.21

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.
Files changed (60) hide show
  1. package/README.md +97 -1
  2. package/clmm/artifacts/BitmapWord.ral.json +1 -1
  3. package/clmm/artifacts/BitmapWordDeployer.ral.json +1 -1
  4. package/clmm/artifacts/CreateConfig.ral.json +1 -1
  5. package/clmm/artifacts/CreateLiquidPool.ral.json +1 -1
  6. package/clmm/artifacts/DexAccount.ral.json +1 -1
  7. package/clmm/artifacts/LiquidityAmountsTest.ral.json +1 -1
  8. package/clmm/artifacts/LiquidityManagmentTest.ral.json +1 -1
  9. package/clmm/artifacts/Pool.ral.json +14 -5
  10. package/clmm/artifacts/PoolConfig.ral.json +1 -1
  11. package/clmm/artifacts/PoolFactory.ral.json +1 -1
  12. package/clmm/artifacts/PoolRouterDemo.ral.json +2 -2
  13. package/clmm/artifacts/PoolUser.ral.json +1 -1
  14. package/clmm/artifacts/Position.ral.json +18 -4
  15. package/clmm/artifacts/PositionManager.ral.json +1 -1
  16. package/clmm/artifacts/SwapWithoutAccount.ral.json +2 -2
  17. package/clmm/artifacts/TestToken.ral.json +1 -1
  18. package/clmm/artifacts/Tick.ral.json +1 -1
  19. package/clmm/artifacts/TickBitmapTest.ral.json +1 -1
  20. package/clmm/artifacts/ts/Pool.ts +14 -2
  21. package/clmm/artifacts/ts/Position.ts +37 -3
  22. package/cpmm/artifacts/scripts/CreatePairAndAddLiquidity.ral.json +6 -3
  23. package/cpmm/artifacts/ts/scripts.ts +1 -0
  24. package/lib/index.d.mts +242 -119
  25. package/lib/index.d.ts +242 -119
  26. package/lib/index.js +627 -329
  27. package/lib/index.js.map +1 -1
  28. package/lib/index.mjs +628 -329
  29. package/lib/index.mjs.map +1 -1
  30. package/package.json +9 -8
  31. package/src/clmm/clmm.ts +70 -47
  32. package/src/clmm/liquidity.ts +1 -1
  33. package/src/clmm/pool.ts +15 -17
  34. package/src/clmm/tick.ts +21 -33
  35. package/src/clmm/types.ts +12 -12
  36. package/src/common/error.ts +7 -7
  37. package/src/common/types.ts +1 -1
  38. package/src/cpmm/cpmm.ts +135 -103
  39. package/src/cpmm/types.ts +48 -42
  40. package/src/index.ts +1 -1
  41. package/src/moduleBase.ts +3 -3
  42. package/src/{zeta.ts → powfi.ts} +5 -5
  43. package/src/staking/staking.ts +31 -24
  44. package/src/token/token.ts +2 -2
  45. package/staking/artifacts/AlphUnstakeVault.ral.json +13 -3
  46. package/staking/artifacts/XAlphStakeVault.ral.json +1 -1
  47. package/staking/artifacts/XAlphToken.ral.json +139 -6
  48. package/staking/artifacts/XAlphUnlockAndStartUnstake.ral.json +2 -2
  49. package/staking/artifacts/examples/GovernanceDemo.ral.json +1 -1
  50. package/staking/artifacts/examples/RewardSharingVault.ral.json +1 -1
  51. package/staking/artifacts/ts/AlphUnstakeVault.ts +40 -1
  52. package/staking/artifacts/ts/XAlphToken.ts +209 -8
  53. package/staking/artifacts/ts/scripts.ts +0 -10
  54. package/staking/artifacts/utils/FullMathTest.ral.json +1 -1
  55. package/staking/artifacts/utils/TestDynamicArrayByteVec32.ral.json +1 -1
  56. package/staking/artifacts/utils/TestDynamicSortedArrayForU256.ral.json +1 -1
  57. package/staking/artifacts/utils/TestMerkleProof.ral.json +1 -1
  58. package/staking/deployments/.deployments.devnet.json +45 -44
  59. package/staking/deployments/.deployments.testnet.json +23 -23
  60. package/staking/artifacts/AlphStakeAndLock.ral.json +0 -31
@@ -1,13 +1,13 @@
1
1
  import type { SignerProvider, Account } from '@alephium/web3';
2
2
  import { NodeProvider, ExplorerProvider, web3 } from '@alephium/web3';
3
3
  import { CpmmModule } from './cpmm/cpmm';
4
- import type { Network, ZetaLoadParams } from './common/types';
4
+ import type { Network, PowfiLoadParams } from './common/types';
5
5
  import { defaultNetworks } from './common/types';
6
6
  import { ClmmModule } from './clmm/clmm';
7
7
  import { TokenModule } from './token/token';
8
8
  import { StakingModule } from './staking/staking';
9
9
 
10
- export class Zeta {
10
+ export class Powfi {
11
11
  public cpmm: CpmmModule;
12
12
  public clmm: ClmmModule;
13
13
  public token: TokenModule;
@@ -20,7 +20,7 @@ export class Zeta {
20
20
  private _account?: Account;
21
21
  private _network: Network;
22
22
 
23
- constructor(params: ZetaLoadParams) {
23
+ constructor(params: PowfiLoadParams) {
24
24
  const network = defaultNetworks.find((n) => n.id === params.networkId);
25
25
  if (!network) {
26
26
  throw new Error(`Network ${params.networkId} not found`);
@@ -42,8 +42,8 @@ export class Zeta {
42
42
  this.staking = new StakingModule(this);
43
43
  }
44
44
 
45
- static load(config: ZetaLoadParams): Zeta {
46
- return new Zeta(config);
45
+ static load(config: PowfiLoadParams): Powfi {
46
+ return new Powfi(config);
47
47
  }
48
48
 
49
49
  public set signer(signer: SignerProvider) {
@@ -1,5 +1,6 @@
1
1
  import type { ExecuteScriptResult, HexString } from '@alephium/web3';
2
2
  import {
3
+ DUST_AMOUNT,
3
4
  MINIMAL_CONTRACT_DEPOSIT,
4
5
  addressFromContractId,
5
6
  addressToBytes,
@@ -20,7 +21,6 @@ import type {
20
21
  XAlphTokenTypes,
21
22
  } from 'staking/artifacts/ts';
22
23
  import {
23
- AlphStakeAndLock,
24
24
  AlphUnstakeVault,
25
25
  GovernanceDemo,
26
26
  RewardSharingVault,
@@ -30,7 +30,7 @@ import {
30
30
  } from 'staking/artifacts/ts';
31
31
  import { loadDeployments } from 'staking/artifacts/ts/deployments';
32
32
  import ModuleBase from '../moduleBase';
33
- import type { Zeta } from '../zeta';
33
+ import type { Powfi } from '../powfi';
34
34
  import type { StakeVaultUserInfo, StakingConfig } from './types';
35
35
  import { decodeContractIdList, decodeU256List } from './utils';
36
36
  import type { StakingSettings } from './settings';
@@ -41,7 +41,7 @@ export class StakingModule extends ModuleBase {
41
41
  private xAlphTokenContract: XAlphTokenInstance;
42
42
  private stakeVaultContract: XAlphStakeVaultInstance;
43
43
 
44
- constructor(scope: Zeta) {
44
+ constructor(scope: Powfi) {
45
45
  super({ scope, moduleName: 'StakingModule' });
46
46
 
47
47
  this.config = this.loadStakingConfig();
@@ -119,6 +119,16 @@ export class StakingModule extends ModuleBase {
119
119
  });
120
120
  }
121
121
 
122
+ async cancelUnstake(
123
+ vaultIndex: bigint,
124
+ ): Promise<XAlphTokenTypes.SignExecuteMethodResult<'cancelUnstake'>> {
125
+ return this.xAlphTokenContract.transact.cancelUnstake({
126
+ signer: this.scope.signer,
127
+ args: { vaultIndex },
128
+ attoAlphAmount: DUST_AMOUNT
129
+ });
130
+ }
131
+
122
132
  async stakeXAlph(amount: bigint): Promise<XAlphStakeVaultTypes.SignExecuteMethodResult<'stake'>> {
123
133
  this.ensurePositiveAmount(amount, 'Stake amount');
124
134
  return this.stakeVaultContract.transact.stake({
@@ -140,18 +150,6 @@ export class StakingModule extends ModuleBase {
140
150
  });
141
151
  }
142
152
 
143
- async stakeAndLockAlph(amount: bigint): Promise<ExecuteScriptResult> {
144
- return AlphStakeAndLock.execute({
145
- signer: this.scope.signer,
146
- initialFields: {
147
- xAlphToken: this.xAlphTokenContract.contractId,
148
- xAlphStakeVault: this.stakeVaultContract.contractId,
149
- amount,
150
- },
151
- attoAlphAmount: amount + MINIMAL_CONTRACT_DEPOSIT,
152
- });
153
- }
154
-
155
153
  async unlockAndStartUnstake(amount: bigint): Promise<ExecuteScriptResult> {
156
154
  return XAlphUnlockAndStartUnstake.execute({
157
155
  signer: this.scope.signer,
@@ -179,7 +177,8 @@ export class StakingModule extends ModuleBase {
179
177
  userAddress: string,
180
178
  vaultIndex: bigint,
181
179
  ): Promise<AlphUnstakeVaultTypes.State> {
182
- return this.getAlphUnstakeVault(userAddress, vaultIndex).fetchState();
180
+ const stakerAddress = this.getStakerAddress(userAddress);
181
+ return this.getAlphUnstakeVault(stakerAddress, vaultIndex).fetchState();
183
182
  }
184
183
 
185
184
  async connectToDapp(
@@ -204,10 +203,7 @@ export class StakingModule extends ModuleBase {
204
203
  }
205
204
 
206
205
  async getUserStakeVaultInfo(address: string): Promise<StakeVaultUserInfo> {
207
- let stakerAddress = address;
208
- if (isGrouplessAddressWithoutGroupIndex(address)) {
209
- stakerAddress = `${address}:${this.stakeVaultContract.groupIndex}`;
210
- }
206
+ const stakerAddress = this.getStakerAddress(address);
211
207
  const result = await this.stakeVaultContract.view.getUserStakingInfo({
212
208
  args: { user: stakerAddress },
213
209
  });
@@ -218,25 +214,29 @@ export class StakingModule extends ModuleBase {
218
214
  }
219
215
 
220
216
  async isUserStaking(address: string): Promise<boolean> {
221
- const result = await this.stakeVaultContract.view.isStaking({ args: { user: address } });
217
+ const stakerAddress = this.getStakerAddress(address);
218
+ const result = await this.stakeVaultContract.view.isStaking({ args: { user: stakerAddress } });
222
219
  return result.returns;
223
220
  }
224
221
 
225
222
  async getUserWeight(address: string): Promise<bigint> {
226
- const result = await this.stakeVaultContract.view.getWeight({ args: { user: address } });
223
+ const stakerAddress = this.getStakerAddress(address);
224
+ const result = await this.stakeVaultContract.view.getWeight({ args: { user: stakerAddress } });
227
225
  return result.returns;
228
226
  }
229
227
 
230
228
  async getActiveUnstakeVaultIndexes(address: string): Promise<bigint[]> {
229
+ const stakerAddress = this.getStakerAddress(address);
231
230
  const result = await this.xAlphTokenContract.view.getActiveUnstakeVaultIndexes({
232
- args: { caller: address },
231
+ args: { caller: stakerAddress },
233
232
  });
234
233
  return decodeU256List(result.returns);
235
234
  }
236
235
 
237
236
  async getClaimableAmount(address: string, vaultIndex: bigint): Promise<bigint> {
237
+ const stakerAddress = this.getStakerAddress(address);
238
238
  const result = await this.xAlphTokenContract.view.getClaimableAmount({
239
- args: { user: address, vaultIndex },
239
+ args: { user: stakerAddress, vaultIndex },
240
240
  });
241
241
  return result.returns;
242
242
  }
@@ -274,4 +274,11 @@ export class StakingModule extends ModuleBase {
274
274
  throw new Error(`${label} must be greater than zero`);
275
275
  }
276
276
  }
277
+
278
+ private getStakerAddress(address: string): string {
279
+ if (isGrouplessAddressWithoutGroupIndex(address)) {
280
+ return `${address}:${this.stakeVaultContract.groupIndex}`;
281
+ }
282
+ return address;
283
+ }
277
284
  }
@@ -1,6 +1,6 @@
1
1
  import type { TokenInfo } from '@alephium/token-list';
2
2
  import ModuleBase from '../moduleBase';
3
- import type { Zeta } from '../zeta';
3
+ import type { Powfi } from '../powfi';
4
4
  import { TokenListFetchError } from '../common/error';
5
5
 
6
6
  interface TokenCache {
@@ -17,7 +17,7 @@ export class TokenModule extends ModuleBase {
17
17
  private readonly cacheTimeMs: number;
18
18
 
19
19
  constructor(
20
- scope: Zeta,
20
+ scope: Powfi,
21
21
  private readonly cacheTimeDays: number = 1,
22
22
  ) {
23
23
  super({ scope, moduleName: 'TokenModule' });
@@ -1,8 +1,8 @@
1
1
  {
2
- "version": "v4.2.5",
2
+ "version": "v4.3.1",
3
3
  "name": "AlphUnstakeVault",
4
- "bytecode": "060540ea40f841384172418c0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010000000103d3f10c9d97ce020201000003014020d3223281b2ce040c3313167b5617001600ce033413177b1600ce032b1701ce0217021601ce04314c0516021601ce04000017021602a0002b0201020102011fd30e00e856b417011601ce0077457a4b04181601ce014513147b160000023213157bce011600a8a00016002aa100a000ce022f0201020001000bd38e18691cb417001600ce00774513147bce01b0",
5
- "codeHash": "5216c458f360d0f51f5e2109a760814ff97eab76f546adc835eb318c6cbc5256",
4
+ "bytecode": "060640ea40f84138417241ac41c60000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010000000103d3f10c9d97ce020201000003014020d3223281b2ce040c3313167b5617001600ce033413177b1600ce032b1701ce0217021601ce04314c0516021601ce04000017021602a0002b0201020102011fd30e00e856b417011601ce0077457a4b04181601ce014513147b160000023213157bce011600a8a00016002aa100a000ce022f0201020004021ed34a517d1bb417001600ce00774513147b00021701ce02a0002b1702160216012b170316030c334c04ce00771603a8160116030201020001000bd38e18691cb417001600ce00774513147bce01b0",
5
+ "codeHash": "a065f4a88edfe06c09d65e3c11154fe9d5a5b1cdc42b36adf1a3485ff8a51394",
6
6
  "fieldsSig": {
7
7
  "names": [
8
8
  "xalphToken",
@@ -85,6 +85,16 @@
85
85
  "Bool"
86
86
  ]
87
87
  },
88
+ {
89
+ "name": "cancelAndReturn",
90
+ "paramNames": [],
91
+ "paramTypes": [],
92
+ "paramIsMutable": [],
93
+ "returnTypes": [
94
+ "U256",
95
+ "U256"
96
+ ]
97
+ },
88
98
  {
89
99
  "name": "destroy",
90
100
  "paramNames": [],
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "v4.2.5",
2
+ "version": "v4.3.1",
3
3
  "name": "XAlphStakeVault",
4
4
  "bytecode": "05174028407340af40cc40fc411a41284136414f41a341c341cd41db42234241431043f0448b451145604577458e45a7010002030112d3545eacd4160116000005311342277b160113202c170216001602160213202a620201000204014028d3083a358916004313202e0c2f1342267b16014313202f1342287b1600000517020c170316031602314c0e1600160300001601414c0316033f0216030d2a17034a2e0b0201000203011fd3694941c216004313202e0c2f1342267b16014313202f1342287b160016010001170216020b244c031600024a05160016023d00040201000202010dd354ad273416004313202e0c2f1342267b160016014402010002030118d34b2e25b7160116000005311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c33140002010000000103d393f264e8a0000200000101000c16004313202f136afb7b1600a10005a000b45f0000020601402e16014313202f136afa7b160117021600431703160313202e0c2f136af97b0c170416041603314c1016001604160413202a62170516051602000a1702160413202a17044a2c160271a000712f02000002020110160071160171314c051600160144000b4a041601160044000b0200000101010316004f02010000000103d3b299f80ace000201000102021ed3f87904e4140a5f5f6d61705f5f305f5f16004744cbc5194c040c0006024a110c0d0d140a5f5f6d61705f5f305f5f16004744cb1701160101010d0d0d1601010102010001010108d32b875d11140a5f5f6d61705f5f305f5f16004744cbc5020101010800405fd3d63c543cb4170116014813412d7b16000c331341307b1601ce001600ac140a5f5f6d61705f5f305f5f16014744cbc54c40370c0d0d140a5f5f6d61705f5f305f5f16014744cb1707160701010d0d0d1607010117031702160216002a0c0e0c140a5f5f6d61705f5f305f5f16014744cb01021603000517040c170516051604314c0f1603160500001706160116000e0c1606d4926b380b16050d2a17054a2d4a09ca140a5f5f6d61705f5f305f5f16014744b116000006d20102a00116002aa10106160116005f0102010900406bd310bd129fb4170116014813412d7b140a5f5f6d61705f5f305f5f16014744cbc513412e7b16000c331341317b0c0d0d140a5f5f6d61705f5f305f5f16014744cb1708160801010d0d0d1608010117031702160216003413412f7b160216002b17041603000517050c170616061605314c0f1603160600001707160116000e0c1607d465b06cae16060d2a17064a2d16040c2f4c0aca0d0c140a5f5f6d61705f5f305f5f16014744cb01034a0a16040c0e0c140a5f5f6d61705f5f305f5f16014744cb01021601ce001600aba00116002ba10107160116005f01000206004045d3c5f91cb4b4170216024813412d7b1601160000161341357b140a5f5f6d61705f5f305f5f16024744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16024744cb1705160501010d0d0d160501011704170316040005ce01311341327b1604160000010b241341337b160216030e0c1600d4926b380b1604160000030d0e0c140a5f5f6d61705f5f305f5f16024744cb01020100010500403ad3b6398887b4170116014813412d7b140a5f5f6d61705f5f305f5f16014744cbc513412e7b0c0d0d140a5f5f6d61705f5f305f5f16014744cb1704160401010d0d0d16040101170317021603160000010b251341347b160116020e0c1600d465b06cae1603160000020d0e0c140a5f5f6d61705f5f305f5f16014744cb010201000101011fd3e5725392140a5f5f6d61705f5f305f5f16004744cbc5197a4b0418a0010c2f4c020c020c0d0d140a5f5f6d61705f5f305f5f16004744cb010113c40de0b6b3a76400002ca0012d02010001010008d3e5bf78dcb4a0024513412c7b16000008010001010008d34f58efe6b4a0024513412c7b1600a102010002030109d3af1ed9dd1601b9170216001602000b000902",
5
5
  "codeHash": "06a6db7355978ed027d5a0d36573bf54cef4a67d503b270b8ede5870b3117c7b",
@@ -1,8 +1,8 @@
1
1
  {
2
- "version": "v4.2.5",
2
+ "version": "v4.3.1",
3
3
  "name": "XAlphToken",
4
- "bytecode": "091109121b40244051407a40ac40ca411741474165417341a6427842b242d4435d010000000102ce0002010000000102ce0102010000000102ce0202010000000102a00002010002040115d3cee9319416011600000a311342277b160113202c170216001602160213202a62170316037102010002030114d33cd5e72916004313202e0c2f1342267b16004313202d1702160016010c1602000802010002030119d32cabd28216004313202e0c2f1342267b160016010005170216020b244c031600024a05160016023d00090201000202010ed31bc25d3416004313202e0c2f1342267b160016016b44020000040601402a16021603344c020b02160216032a0e2d17041600160400041705160516012f4c0316043f0216051601314c091600160116040d2a16030008024a061600160116021604000802010002030118d34b2e25b716011600000a311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c3314000201010102001bd3d63c543cb41701160148130a7b16000c33130e7b1601b11600ab16011600a9a00016002aa10005160116005f01010106014069d33538a49fb41701160148130a7bce050c33130c7b16000c33130e7ba0010d2aa101140a5f5f6d61705f5f305f5f16014744cbc54c1d0c0d0d140a5f5f6d61705f5f305f5f16014744cb010117021602000ace0431130b7b1602a00100070c0e0c140a5f5f6d61705f5f305f5f16014744cb01024a09ca140a5f5f6d61705f5f305f5f16014744b1a0016bd201011601b11600acb11601160056ce051305640c13016417041703b21600a2160147a0014044ce0316031604c11705a00016002ba10006160116005f160502010001010115d38072397d140a5f5f6d61705f5f305f5f16004744cbc5194c021400020c0d0d140a5f5f6d61705f5f305f5f16004744cb010102010002030111d3fd3d3af616004716014044cb17021602c5130d7b0c0d160201020201000206004040d38bb32147b4170216024716004044cb170316010c33130e7b16010d0d16030103170416044c40290c0d0d140a5f5f6d61705f5f305f5f16024744cb01011600000617051605430c2f4c0a16020d0c140a5f5f6d61705f5f305f5f16024744cb01034a0a16050c0e0c140a5f5f6d61705f5f305f5f16024744cb01020c0c16030104",
5
- "codeHash": "5f95704fd2f96ed987b89fdb6e0659cc32d2accc50194a6bd2aedcffdce2f3e5",
4
+ "bytecode": "0a1509121b40244051407a40ac40ca4117414741654173425d426b42c643b243e0441a443c44c54593010000000102ce0002010000000102ce0102010000000102ce0202010000000102a00102010002040115d3cee9319416011600000a311342277b160113202c170216001602160213202a62170316037102010002030114d33cd5e72916004313202e0c2f1342267b16004313202d1702160016010c1602000802010002030119d32cabd28216004313202e0c2f1342267b160016010005170216020b244c031600024a05160016023d00090201000202010ed31bc25d3416004313202e0c2f1342267b160016016b44020000040601402a16021603344c020b02160216032a0e2d17041600160400041705160516012f4c0316043f0216051601314c091600160116040d2a16030008024a061600160116021604000802010002030118d34b2e25b716011600000a311342277b160113202c170216000c1602621600160213202a16004362440201000101010ed30041471116004313202e0c2f1342267b16004313202d02010000000103d3676c3c331400020000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010000000103d38719c92ea0000201010103014032d38bbc9beeb41701160148130a7b16000c33130e7ba0010c2f4c0216004a041600a001a000000c170216020c33130f7b1601b11602ab16011600a9a00016002aa100a00116022aa101051601160016026016020201010107014078d33538a49fb41701160148130a7bce050c33130c7b16000c33130e7b1600a000a001000c170216020c3313107ba0020d2aa102140a5f5f6d61705f5f305f5f16014744cbc54c1d0c0d0d140a5f5f6d61705f5f305f5f16014744cb010117031603000ace0431130b7b1603a00200070c0e0c140a5f5f6d61705f5f305f5f16014744cb01024a09ca140a5f5f6d61705f5f305f5f16014744b1a0026bd201011601b11600acb11601160256ce051305640c13016417051704b21602a2160147a0024044ce0316041605c11706a00016022ba100a00116002ba1010616011600160260160602010701020018d3fe1110a1b4170116000c33130e7ba0010c3313117b16011600a9a00016002aa10008160116005f010001010115d38072397d140a5f5f6d61705f5f305f5f16004744cbc5194c021400020c0d0d140a5f5f6d61705f5f305f5f16004744cb010102010002030111d3fd3d3af616004716014044cb17021602c5130d7b0c0d160201020201000206004040d38bb32147b4170216024716004044cb170316010c33130e7b16010d0d16030103170416044c40290c0d0d140a5f5f6d61705f5f305f5f16024744cb01011600000617051605430c2f4c0a16020d0c140a5f5f6d61705f5f305f5f16024744cb01034a0a16050c0e0c140a5f5f6d61705f5f305f5f16024744cb01020c0c160301050102010701406bd30bdc6a97b41701160148130a7b16014716004044cb17021602c5130d7b0c0e16020104170417030c0c160201050c170516040c334c1ca0010c2f4c0216044a041604a001a000000c170516050c33130f7b1601b11605aba00016042aa100a00116052aa1010c0d0d140a5f5f6d61705f5f305f5f16014744cb01011600000617061606430c2f4c0a16010d0c140a5f5f6d61705f5f305f5f16014744cb01034a0a16060c0e0c140a5f5f6d61705f5f305f5f16014744cb010207160116051603160461160502",
5
+ "codeHash": "3329d0319da90857686a9e618c3fa8197226ed9be58b7371314b3247d9fd8e1c",
6
6
  "fieldsSig": {
7
7
  "names": [
8
8
  "symbol",
@@ -11,7 +11,8 @@
11
11
  "unstakeVaultTemplateId",
12
12
  "maxActiveUnstakeRequestsPerUser",
13
13
  "unstakeDuration",
14
- "totalStaked",
14
+ "totalDepositedAlph",
15
+ "totalXAlphSupply",
15
16
  "lastUnstakeVaultIndex",
16
17
  "__stdInterfaceId"
17
18
  ],
@@ -24,6 +25,7 @@
24
25
  "U256",
25
26
  "U256",
26
27
  "U256",
28
+ "U256",
27
29
  "ByteVec"
28
30
  ],
29
31
  "isMutable": [
@@ -35,6 +37,7 @@
35
37
  false,
36
38
  true,
37
39
  true,
40
+ true,
38
41
  false
39
42
  ]
40
43
  },
@@ -43,10 +46,12 @@
43
46
  "name": "Staked",
44
47
  "fieldNames": [
45
48
  "to",
46
- "amount"
49
+ "alphAmount",
50
+ "xAlphAmount"
47
51
  ],
48
52
  "fieldTypes": [
49
53
  "Address",
54
+ "U256",
50
55
  "U256"
51
56
  ]
52
57
  },
@@ -54,6 +59,34 @@
54
59
  "name": "UnstakeScheduled",
55
60
  "fieldNames": [
56
61
  "to",
62
+ "xAlphAmount",
63
+ "alphAmount"
64
+ ],
65
+ "fieldTypes": [
66
+ "Address",
67
+ "U256",
68
+ "U256"
69
+ ]
70
+ },
71
+ {
72
+ "name": "UnstakeCancelled",
73
+ "fieldNames": [
74
+ "to",
75
+ "xAlphAmount",
76
+ "claimedAlphAmount",
77
+ "restakedAlphAmount"
78
+ ],
79
+ "fieldTypes": [
80
+ "Address",
81
+ "U256",
82
+ "U256",
83
+ "U256"
84
+ ]
85
+ },
86
+ {
87
+ "name": "RewardDeposited",
88
+ "fieldNames": [
89
+ "from",
57
90
  "amount"
58
91
  ],
59
92
  "fieldTypes": [
@@ -237,6 +270,36 @@
237
270
  "ByteVec"
238
271
  ]
239
272
  },
273
+ {
274
+ "name": "mulDiv",
275
+ "paramNames": [
276
+ "a",
277
+ "b",
278
+ "denominator"
279
+ ],
280
+ "paramTypes": [
281
+ "U256",
282
+ "U256",
283
+ "U256"
284
+ ],
285
+ "paramIsMutable": [
286
+ false,
287
+ false,
288
+ true
289
+ ],
290
+ "returnTypes": [
291
+ "U256"
292
+ ]
293
+ },
294
+ {
295
+ "name": "getTotalDepositedAlph",
296
+ "paramNames": [],
297
+ "paramTypes": [],
298
+ "paramIsMutable": [],
299
+ "returnTypes": [
300
+ "U256"
301
+ ]
302
+ },
240
303
  {
241
304
  "name": "stake",
242
305
  "paramNames": [
@@ -248,7 +311,9 @@
248
311
  "paramIsMutable": [
249
312
  false
250
313
  ],
251
- "returnTypes": []
314
+ "returnTypes": [
315
+ "U256"
316
+ ]
252
317
  },
253
318
  {
254
319
  "name": "startUnstake",
@@ -265,6 +330,19 @@
265
330
  "ByteVec"
266
331
  ]
267
332
  },
333
+ {
334
+ "name": "depositReward",
335
+ "paramNames": [
336
+ "amount"
337
+ ],
338
+ "paramTypes": [
339
+ "U256"
340
+ ],
341
+ "paramIsMutable": [
342
+ false
343
+ ],
344
+ "returnTypes": []
345
+ },
268
346
  {
269
347
  "name": "getActiveUnstakeVaultIndexes",
270
348
  "paramNames": [
@@ -313,6 +391,21 @@
313
391
  false
314
392
  ],
315
393
  "returnTypes": []
394
+ },
395
+ {
396
+ "name": "cancelUnstake",
397
+ "paramNames": [
398
+ "vaultIndex"
399
+ ],
400
+ "paramTypes": [
401
+ "U256"
402
+ ],
403
+ "paramIsMutable": [
404
+ false
405
+ ],
406
+ "returnTypes": [
407
+ "U256"
408
+ ]
316
409
  }
317
410
  ],
318
411
  "constants": [
@@ -351,6 +444,25 @@
351
444
  }
352
445
  ]
353
446
  },
447
+ {
448
+ "name": "FullMathError",
449
+ "fields": [
450
+ {
451
+ "name": "DivByZero",
452
+ "value": {
453
+ "type": "U256",
454
+ "value": "350"
455
+ }
456
+ },
457
+ {
458
+ "name": "MulDivOverflow",
459
+ "value": {
460
+ "type": "U256",
461
+ "value": "351"
462
+ }
463
+ }
464
+ ]
465
+ },
354
466
  {
355
467
  "name": "ErrorCodes",
356
468
  "fields": [
@@ -388,6 +500,27 @@
388
500
  "type": "U256",
389
501
  "value": "14"
390
502
  }
503
+ },
504
+ {
505
+ "name": "ZeroXAlphOutput",
506
+ "value": {
507
+ "type": "U256",
508
+ "value": "15"
509
+ }
510
+ },
511
+ {
512
+ "name": "ZeroAlphOutput",
513
+ "value": {
514
+ "type": "U256",
515
+ "value": "16"
516
+ }
517
+ },
518
+ {
519
+ "name": "NoStakers",
520
+ "value": {
521
+ "type": "U256",
522
+ "value": "17"
523
+ }
391
524
  }
392
525
  ]
393
526
  }
@@ -1,7 +1,7 @@
1
1
  {
2
- "version": "v4.2.5",
2
+ "version": "v4.3.1",
3
3
  "name": "XAlphUnlockAndStartUnstake",
4
- "bytecodeTemplate": "01010300020016b41700{2}0d0c{1}01100c0d{1}010c170116001601{2}a3{2}0d0d{0}010d18",
4
+ "bytecodeTemplate": "01010300020016b41700{2}0d0c{1}01100c0d{1}010c170116001601{2}a3{2}0d0d{0}010f18",
5
5
  "fieldsSig": {
6
6
  "names": [
7
7
  "xAlphToken",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "v4.2.5",
2
+ "version": "v4.3.1",
3
3
  "name": "GovernanceDemo",
4
4
  "bytecode": "090c40c9419741f54217422b426c42a642b44382438d439843a801000206004058d3926b380bb417021602ce00774513087b140a5f5f6d61705f5f305f5f16004744cbc54c403f0c0d0d140a5f5f6d61705f5f305f5f16004744cb1705160501010d0d0d1605010117041703000b7a4c041816030c304c180c0d0d140a5f5f6d61705f5f315f5f16034044cb010116012a0c0e0c140a5f5f6d61705f5f315f5f16034044cb0102a00016012aa100160416012a0d0e0c140a5f5f6d61705f5f305f5f16004744cb01024a09ca140a5f5f6d61705f5f305f5f16004744b10c1601d201020100020700405ed365b06caeb417021602ce00774513087b140a5f5f6d61705f5f305f5f16004744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1706160601010d0d0d1606010117041703160416012b170516050d0e0c140a5f5f6d61705f5f305f5f16004744cb0102000b7a4c041816030c304c180c0d0d140a5f5f6d61705f5f315f5f16034044cb010116012b0c0e0c140a5f5f6d61705f5f315f5f16034044cb0102a00016012ba10016050c2f4c09ca0d0c140a5f5f6d61705f5f305f5f16004744cb010301000002004033d3ecf99ab7b4ce054513077b000919107b000a19117b56a101ce01ce02ce03ce041017000c170116011600314c14ca140a5f5f6d61705f5f315f5f16017a10314d0d2acf4044b10cd2010116010d2a17014a2805a0015e010000000012d33919f580b4ce054513077b00090f7b000a19117b56a10207a0025e010000000406d3068539face01ce02ce03ce040201000102021ad344a25325140a5f5f6d61705f5f305f5f16004744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1701160101010d0d0d1601010102010001010116d32e30a67700090f7b140a5f5f6d61705f5f315f5f16004044cbc50e7b0c0d0d140a5f5f6d61705f5f315f5f16004044cb010102010000000103d33cfd4f9ea000020100010300405cd376a80ea2b417011601480c7b00090f7b000a19117b140a5f5f6d61705f5f315f5f16004044cbc50e7b140a5f5f6d61705f5f305f5f16014744cbc50d7b0c0d0d140a5f5f6d61705f5f305f5f16014744cb01010c2f13067b0d0d0d140a5f5f6d61705f5f305f5f16014744cb01011702a00016022aa1000c0d0d140a5f5f6d61705f5f315f5f16004044cb010116022a0c0e0c140a5f5f6d61705f5f315f5f16004044cb010216000c0e0c140a5f5f6d61705f5f305f5f16014744cb01020616011600160260000000000104a0010c3002000000000104a0020c300200000000010700097a4c0318000a1902",
5
5
  "codeHash": "1d77f89642f8b3bd6364388e7b9b8ad9d58815365d4e7a02a932fe65ab913078",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "v4.2.5",
2
+ "version": "v4.3.1",
3
3
  "name": "RewardSharingVault",
4
4
  "bytecode": "040740b74152423c4277428942c0431e01000208004054d3926b380bb417021602ce00774513287b140a5f5f6d61705f5f305f5f16004744cbc54c40270c0d0d140a5f5f6d61705f5f305f5f16004744cb01011703160116032a16000d0ece00010d1707170616062f132b7b16000005160316012a0c0e0c140a5f5f6d61705f5f305f5f16004744cb01024a15160116000d0ece00010d1705170416042f132b7bca140a5f5f6d61705f5f305f5f16004744b11601a001d20102a00016012aa10005160016015f01000205004046d365b06caeb417021602ce00774513287b140a5f5f6d61705f5f305f5f16004744cbc513297b0c0d0d140a5f5f6d61705f5f305f5f16004744cb010117031601160332132c7b160316012b17041600000516040c2f4c0aca0d0c140a5f5f6d61705f5f305f5f16004744cb01034a0a16040c0e0c140a5f5f6d61705f5f305f5f16004744cb0102a00016012ba10006160016015f0000030901409216020c3013415e7b160016010c0d3687170316001601371704160316043616031604314c020d4a010c36170516050c2f4c04160416022d02160216053313415f7b160016011602871706160516061604334c020d4a010c361705160416063617040c1602361602381707160216072d1702160416072d17040c16073616072d0d351707160416051607373917040f1602370e3a170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e16021608373637170816080e160216083736371708160416083702010101030019d3fe1110a1a0000c33132a7bb417011601ce011600ac160013c40de0b6b3a7640000a00000021702a00116022aa10107160116005f010300010005d3a28b71d5b417001600000500020102001916000006170116010c334c081600ce011601ab08160016015fa0010d0e0c140a5f5f6d61705f5f305f5f16004744cb010201000105014024d31191a066140a5f5f6d61705f5f305f5f16004744cbc513297b0c0d0d140a5f5f6d61705f5f305f5f16004744cb1704160401010d0d0d1604010117021701a00116022b17031601160313c40de0b6b3a7640000000202",
5
5
  "codeHash": "8beaa8b570543344d4352cf8534bbc7df4591b4ecda97cfc3c30bc28dca5adb9",
@@ -67,6 +67,10 @@ export namespace AlphUnstakeVaultTypes {
67
67
  params: CallContractParams<{ amount: bigint }>;
68
68
  result: CallContractResult<boolean>;
69
69
  };
70
+ cancelAndReturn: {
71
+ params: Omit<CallContractParams<{}>, "args">;
72
+ result: CallContractResult<[bigint, bigint]>;
73
+ };
70
74
  destroy: {
71
75
  params: Omit<CallContractParams<{}>, "args">;
72
76
  result: CallContractResult<null>;
@@ -109,6 +113,10 @@ export namespace AlphUnstakeVaultTypes {
109
113
  params: SignExecuteContractMethodParams<{ amount: bigint }>;
110
114
  result: SignExecuteScriptTxResult;
111
115
  };
116
+ cancelAndReturn: {
117
+ params: Omit<SignExecuteContractMethodParams<{}>, "args">;
118
+ result: SignExecuteScriptTxResult;
119
+ };
112
120
  destroy: {
113
121
  params: Omit<SignExecuteContractMethodParams<{}>, "args">;
114
122
  result: SignExecuteScriptTxResult;
@@ -189,6 +197,14 @@ class Factory extends ContractFactory<
189
197
  ): Promise<TestContractResultWithoutMaps<boolean>> => {
190
198
  return testMethod(this, "claim", params, getContractByCodeHash);
191
199
  },
200
+ cancelAndReturn: async (
201
+ params: Omit<
202
+ TestContractParamsWithoutMaps<AlphUnstakeVaultTypes.Fields, never>,
203
+ "args"
204
+ >
205
+ ): Promise<TestContractResultWithoutMaps<[bigint, bigint]>> => {
206
+ return testMethod(this, "cancelAndReturn", params, getContractByCodeHash);
207
+ },
192
208
  destroy: async (
193
209
  params: Omit<
194
210
  TestContractParamsWithoutMaps<AlphUnstakeVaultTypes.Fields, never>,
@@ -213,7 +229,7 @@ export const AlphUnstakeVault = new Factory(
213
229
  Contract.fromJson(
214
230
  AlphUnstakeVaultContractJson,
215
231
  "",
216
- "5216c458f360d0f51f5e2109a760814ff97eab76f546adc835eb318c6cbc5256",
232
+ "a065f4a88edfe06c09d65e3c11154fe9d5a5b1cdc42b36adf1a3485ff8a51394",
217
233
  types.AllStructs
218
234
  )
219
235
  );
@@ -278,6 +294,17 @@ export class AlphUnstakeVaultInstance extends ContractInstance {
278
294
  getContractByCodeHash
279
295
  );
280
296
  },
297
+ cancelAndReturn: async (
298
+ params?: AlphUnstakeVaultTypes.CallMethodParams<"cancelAndReturn">
299
+ ): Promise<AlphUnstakeVaultTypes.CallMethodResult<"cancelAndReturn">> => {
300
+ return callMethod(
301
+ AlphUnstakeVault,
302
+ this,
303
+ "cancelAndReturn",
304
+ params === undefined ? {} : params,
305
+ getContractByCodeHash
306
+ );
307
+ },
281
308
  destroy: async (
282
309
  params?: AlphUnstakeVaultTypes.CallMethodParams<"destroy">
283
310
  ): Promise<AlphUnstakeVaultTypes.CallMethodResult<"destroy">> => {
@@ -326,6 +353,18 @@ export class AlphUnstakeVaultInstance extends ContractInstance {
326
353
  ): Promise<AlphUnstakeVaultTypes.SignExecuteMethodResult<"claim">> => {
327
354
  return signExecuteMethod(AlphUnstakeVault, this, "claim", params);
328
355
  },
356
+ cancelAndReturn: async (
357
+ params: AlphUnstakeVaultTypes.SignExecuteMethodParams<"cancelAndReturn">
358
+ ): Promise<
359
+ AlphUnstakeVaultTypes.SignExecuteMethodResult<"cancelAndReturn">
360
+ > => {
361
+ return signExecuteMethod(
362
+ AlphUnstakeVault,
363
+ this,
364
+ "cancelAndReturn",
365
+ params
366
+ );
367
+ },
329
368
  destroy: async (
330
369
  params: AlphUnstakeVaultTypes.SignExecuteMethodParams<"destroy">
331
370
  ): Promise<AlphUnstakeVaultTypes.SignExecuteMethodResult<"destroy">> => {