@rhinestone/sdk 0.4.2 → 0.4.3

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.
@@ -26,6 +26,7 @@ declare function waitForExecution(config: RhinestoneAccountConfig, result: Trans
26
26
  success: boolean;
27
27
  userOpHash: import("viem").Hash;
28
28
  }>;
29
- export { sendTransaction, waitForExecution };
29
+ declare function getMaxSpendableAmount(config: RhinestoneAccountConfig, chain: Chain, tokenAddress: Address, gasUnits: bigint): Promise<bigint>;
30
+ export { sendTransaction, waitForExecution, getMaxSpendableAmount };
30
31
  export type { TransactionResult };
31
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EAKL,GAAG,EAKJ,MAAM,MAAM,CAAA;AAmBb,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,iBAAiB,CAAA;AAUxB,OAAO,EAEL,uBAAuB,EAIvB,WAAW,EACZ,MAAM,UAAU,CAAA;AAUjB,KAAK,iBAAiB,GAClB;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,GAAG,CAAA;IACT,WAAW,EAAE,KAAK,CAAA;IAClB,WAAW,EAAE,KAAK,CAAA;CACnB,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,KAAK,CAAA;IAClB,WAAW,EAAE,KAAK,CAAA;CACnB,CAAA;AAEL,iBAAe,eAAe,CAC5B,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,WAAW,8BAuBzB;AAyQD,iBAAe,gBAAgB,CAC7B,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,iBAAiB;;;;;;;;;;;;GAgC1B;AAED,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,KAAK,EAKL,GAAG,EAKJ,MAAM,MAAM,CAAA;AAmBb,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,iBAAiB,CAAA;AAUxB,OAAO,EAEL,uBAAuB,EAIvB,WAAW,EACZ,MAAM,UAAU,CAAA;AAUjB,KAAK,iBAAiB,GAClB;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,GAAG,CAAA;IACT,WAAW,EAAE,KAAK,CAAA;IAClB,WAAW,EAAE,KAAK,CAAA;CACnB,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,KAAK,CAAA;IAClB,WAAW,EAAE,KAAK,CAAA;CACnB,CAAA;AAEL,iBAAe,eAAe,CAC5B,MAAM,EAAE,uBAAuB,EAC/B,WAAW,EAAE,WAAW,8BAuBzB;AAyQD,iBAAe,gBAAgB,CAC7B,MAAM,EAAE,uBAAuB,EAC/B,MAAM,EAAE,iBAAiB;;;;;;;;;;;;GAgC1B;AAED,iBAAe,qBAAqB,CAClC,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,CAAA;AACnE,YAAY,EAAE,iBAAiB,EAAE,CAAA"}
@@ -218,4 +218,9 @@ async function waitForExecution(config, result) {
218
218
  }
219
219
  }
220
220
  }
221
- export { sendTransaction, waitForExecution };
221
+ async function getMaxSpendableAmount(config, chain, tokenAddress, gasUnits) {
222
+ const address = getAddress(config);
223
+ const orchestrator = getOrchestrator(config.rhinestoneApiKey);
224
+ return orchestrator.getMaxTokenAmount(address, chain.id, tokenAddress, gasUnits);
225
+ }
226
+ export { sendTransaction, waitForExecution, getMaxSpendableAmount };
@@ -1,3 +1,4 @@
1
+ import { Address, Chain } from 'viem';
1
2
  import type { TransactionResult } from './execution';
2
3
  import type { RhinestoneAccountConfig, Session, Transaction } from './types';
3
4
  /**
@@ -12,17 +13,18 @@ declare function createRhinestoneAccount(config: RhinestoneAccountConfig): Promi
12
13
  waitForExecution: (result: TransactionResult) => Promise<import("./orchestrator").BundleResult | {
13
14
  actualGasCost: bigint;
14
15
  actualGasUsed: bigint;
15
- entryPoint: import("abitype").Address;
16
+ entryPoint: Address;
16
17
  logs: import("viem").Log<bigint, number, false>[];
17
18
  nonce: bigint;
18
19
  paymaster?: `0x${string}` | undefined;
19
20
  reason?: string | undefined | undefined;
20
21
  receipt: import("viem").TransactionReceipt<bigint, number, "success" | "reverted">;
21
- sender: import("abitype").Address;
22
+ sender: Address;
22
23
  success: boolean;
23
24
  userOpHash: import("viem").Hash;
24
25
  }>;
25
- getAddress: () => string;
26
+ getAddress: () => `0x${string}`;
27
+ getMaxSpendableAmount: (chain: Chain, tokenAddress: Address, gasUnits: bigint) => Promise<bigint>;
26
28
  }>;
27
29
  export { createRhinestoneAccount };
28
30
  export type { Session };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAKpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE5E;;;;;GAKG;AACH,iBAAe,uBAAuB,CAAC,MAAM,EAAE,uBAAuB;;oCAM7B,WAAW;+BAShB,iBAAiB;;;;;;;;;;;;;sBAQ5B,MAAM;GAU9B;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA;AAClC,YAAY,EAAE,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAErC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAMpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE5E;;;;;GAKG;AACH,iBAAe,uBAAuB,CAAC,MAAM,EAAE,uBAAuB;;oCAM7B,WAAW;+BAShB,iBAAiB;;;;;;;;;;;;;;mCAoB1C,KAAK,gBACE,OAAO,YACX,MAAM;GAYnB;AAED,OAAO,EAAE,uBAAuB,EAAE,CAAA;AAClC,YAAY,EAAE,OAAO,EAAE,CAAA"}
package/dist/src/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { getAddress as getAddressInternal } from './accounts';
2
- import { sendTransaction as sendTransactionInternal, waitForExecution as waitForExecutionInternal, } from './execution';
2
+ import { getMaxSpendableAmount as getMaxSpendableAmountInternal, sendTransaction as sendTransactionInternal, waitForExecution as waitForExecutionInternal, } from './execution';
3
3
  /**
4
4
  * Initialize a Rhinestone account
5
5
  * Note: accounts are deployed onchain only when the first transaction is sent.
@@ -30,11 +30,22 @@ async function createRhinestoneAccount(config) {
30
30
  function getAddress() {
31
31
  return getAddressInternal(config);
32
32
  }
33
+ /**
34
+ * Get the maximum spendable token amount on the target chain
35
+ * @param chain Target chain
36
+ * @param tokenAddress Token address (on the target chain)
37
+ * @param gasUnits Gas cost estimate for the transaction execution
38
+ * @returns Maximum spendable amount in absolute units
39
+ */
40
+ function getMaxSpendableAmount(chain, tokenAddress, gasUnits) {
41
+ return getMaxSpendableAmountInternal(config, chain, tokenAddress, gasUnits);
42
+ }
33
43
  return {
34
44
  config,
35
45
  sendTransactions,
36
46
  waitForExecution,
37
47
  getAddress,
48
+ getMaxSpendableAmount,
38
49
  };
39
50
  }
40
51
  export { createRhinestoneAccount };
@@ -11,6 +11,7 @@ export declare class Orchestrator {
11
11
  [chainId: number]: Address[];
12
12
  };
13
13
  }): Promise<UserTokenBalance[]>;
14
+ getMaxTokenAmount(userAddress: Address, targetChainId: number, targetTokenAddress: Address, targetGasUnits: bigint): Promise<bigint>;
14
15
  getIntentCost(intent: MetaIntent | OrderFeeInput, userAddress: Address): Promise<OrderCostResult>;
15
16
  getOrderPath(intent: MetaIntent, userAddress: Address): Promise<OrderPath>;
16
17
  postSignedOrderBundle(signedOrderBundles: {
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../orchestrator/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,GAAG,EAAE,MAAM,MAAM,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGxD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAA;AAShB,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,MAAM,CAAQ;gBAEV,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKvC,YAAY,CAChB,WAAW,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,MAAM,CAAC,EAAE;YACP,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAA;SAC7B,CAAA;KACF,GACA,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAwCxB,aAAa,CACjB,MAAM,EAAE,UAAU,GAAG,aAAa,EAClC,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,eAAe,CAAC;IAqBrB,YAAY,CAChB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,SAAS,CAAC;IAgCf,qBAAqB,CACzB,kBAAkB,EAAE;QAClB,iBAAiB,EAAE,uBAAuB,CAAA;QAC1C,QAAQ,CAAC,EAAE,GAAG,CAAA;QACd,MAAM,CAAC,EAAE,aAAa,CAAA;KACvB,EAAE,GACF,OAAO,CAAC,qBAAqB,CAAC;IA2C3B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAyBxD,iBAAiB,CACrB,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,GACjB,OAAO,CAAC;QAAE,cAAc,EAAE,WAAW,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBlE,OAAO,CAAC,UAAU;CA6DnB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../orchestrator/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,GAAG,EAAE,MAAM,MAAM,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGxD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAA;AAShB,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,MAAM,CAAQ;gBAEV,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAKvC,YAAY,CAChB,WAAW,EAAE,OAAO,EACpB,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,MAAM,CAAC,EAAE;YACP,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAA;SAC7B,CAAA;KACF,GACA,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAwCxB,iBAAiB,CACrB,WAAW,EAAE,OAAO,EACpB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,OAAO,EAC3B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC;IAgCZ,aAAa,CACjB,MAAM,EAAE,UAAU,GAAG,aAAa,EAClC,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,eAAe,CAAC;IAqBrB,YAAY,CAChB,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,SAAS,CAAC;IAgCf,qBAAqB,CACzB,kBAAkB,EAAE;QAClB,iBAAiB,EAAE,uBAAuB,CAAA;QAC1C,QAAQ,CAAC,EAAE,GAAG,CAAA;QACd,MAAM,CAAC,EAAE,aAAa,CAAA;KACvB,EAAE,GACF,OAAO,CAAC,qBAAqB,CAAC;IA2C3B,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAyBxD,iBAAiB,CACrB,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,GACjB,OAAO,CAAC;QAAE,cAAc,EAAE,WAAW,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuBlE,OAAO,CAAC,UAAU;CA6DnB"}
@@ -42,6 +42,29 @@ export class Orchestrator {
42
42
  throw new Error('Failed to get portfolio');
43
43
  }
44
44
  }
45
+ async getMaxTokenAmount(userAddress, targetChainId, targetTokenAddress, targetGasUnits) {
46
+ const intentCost = await this.getIntentCost({
47
+ targetChainId,
48
+ targetGasUnits,
49
+ tokenTransfers: [
50
+ {
51
+ tokenAddress: targetTokenAddress,
52
+ },
53
+ ],
54
+ }, userAddress);
55
+ if (!intentCost.hasFulfilledAll) {
56
+ return 0n;
57
+ }
58
+ const tokenReceived = intentCost.tokensReceived.find((token) => token.tokenAddress.toLowerCase() === targetTokenAddress.toLowerCase());
59
+ if (!tokenReceived) {
60
+ return 0n;
61
+ }
62
+ const tokenAmount = tokenReceived.targetAmount;
63
+ if (tokenAmount < 0n) {
64
+ throw new Error(`Balance not available. Make sure the account is deployed`);
65
+ }
66
+ return tokenReceived.targetAmount;
67
+ }
45
68
  async getIntentCost(intent, userAddress) {
46
69
  try {
47
70
  const response = await axios.post(`${this.serverUrl}/accounts/${userAddress}/bundles/cost`, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rhinestone/sdk",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "End-to-end chain abstraction and modularity toolkit",
5
5
  "author": {
6
6
  "name": "Rhinestone",