@rhinestone/sdk 0.0.0-dev-20260728134459 → 0.0.0-dev-20260728163313

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.
@@ -1,4 +1,4 @@
1
- import { type Address } from 'viem';
1
+ import type { Address } from 'viem';
2
2
  import type { CalldataInput, LazyCallInput } from '../config/account.js';
3
3
  /**
4
4
  * Enable ECDSA authentication
@@ -1 +1 @@
1
- {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../actions/ecdsa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAsB,MAAM,MAAM,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAUrE;;;;;GAKG;AACH,iBAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,SAAS,SAAI,GAAG,aAAa,CAO/D;AAED;;;GAGG;AACH,iBAAS,OAAO,IAAI,aAAa,CAOhC;AAED;;;;GAIG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAkB/C;AAED;;;;;GAKG;AACH,iBAAS,WAAW,CAClB,SAAS,EAAE,OAAO,EAClB,aAAa,EAAE,OAAO,GACrB,aAAa,CAqBf;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAoB5D;AAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA"}
1
+ {"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../../actions/ecdsa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAerE;;;;;GAKG;AACH,iBAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,SAAS,SAAI,GAAG,aAAa,CAO/D;AAED;;;GAGG;AACH,iBAAS,OAAO,IAAI,aAAa,CAOhC;AAED;;;;GAIG;AACH,iBAAS,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAE/C;AAED;;;;;GAKG;AACH,iBAAS,WAAW,CAClB,SAAS,EAAE,OAAO,EAClB,aAAa,EAAE,OAAO,GACrB,aAAa,CAEf;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAE5D;AAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -1,5 +1,5 @@
1
- import { encodeFunctionData } from 'viem';
2
1
  import { OWNABLE_VALIDATOR_ADDRESS, resolveOwnableAddresses, } from '../modules/validators/ownable.js';
2
+ import { addOwnableOwner, changeOwnableThreshold, removeOwnableOwner, } from './ownable.js';
3
3
  import { resolveModuleUninstallation, resolveValidatorInstallation, } from './runtime.js';
4
4
  /**
5
5
  * Enable ECDSA authentication
@@ -33,23 +33,7 @@ function disable() {
33
33
  * @returns Call to add the owner
34
34
  */
35
35
  function addOwner(owner) {
36
- return {
37
- to: OWNABLE_VALIDATOR_ADDRESS,
38
- value: 0n,
39
- data: encodeFunctionData({
40
- abi: [
41
- {
42
- inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],
43
- name: 'addOwner',
44
- outputs: [],
45
- stateMutability: 'nonpayable',
46
- type: 'function',
47
- },
48
- ],
49
- functionName: 'addOwner',
50
- args: [owner],
51
- }),
52
- };
36
+ return addOwnableOwner(OWNABLE_VALIDATOR_ADDRESS, owner);
53
37
  }
54
38
  /**
55
39
  * Remove an ECDSA owner
@@ -58,26 +42,7 @@ function addOwner(owner) {
58
42
  * @returns Call to remove the owner
59
43
  */
60
44
  function removeOwner(prevOwner, ownerToRemove) {
61
- return {
62
- to: OWNABLE_VALIDATOR_ADDRESS,
63
- value: 0n,
64
- data: encodeFunctionData({
65
- abi: [
66
- {
67
- inputs: [
68
- { internalType: 'address', name: 'prevOwner', type: 'address' },
69
- { internalType: 'address', name: 'owner', type: 'address' },
70
- ],
71
- name: 'removeOwner',
72
- outputs: [],
73
- stateMutability: 'nonpayable',
74
- type: 'function',
75
- },
76
- ],
77
- functionName: 'removeOwner',
78
- args: [prevOwner, ownerToRemove],
79
- }),
80
- };
45
+ return removeOwnableOwner(OWNABLE_VALIDATOR_ADDRESS, prevOwner, ownerToRemove);
81
46
  }
82
47
  /**
83
48
  * Change an account's signer threshold (ECDSA)
@@ -85,24 +50,6 @@ function removeOwner(prevOwner, ownerToRemove) {
85
50
  * @returns Call to change the threshold
86
51
  */
87
52
  function changeThreshold(newThreshold) {
88
- return {
89
- to: OWNABLE_VALIDATOR_ADDRESS,
90
- value: 0n,
91
- data: encodeFunctionData({
92
- abi: [
93
- {
94
- inputs: [
95
- { internalType: 'uint256', name: '_threshold', type: 'uint256' },
96
- ],
97
- name: 'setThreshold',
98
- outputs: [],
99
- stateMutability: 'nonpayable',
100
- type: 'function',
101
- },
102
- ],
103
- functionName: 'setThreshold',
104
- args: [BigInt(newThreshold)],
105
- }),
106
- };
53
+ return changeOwnableThreshold(OWNABLE_VALIDATOR_ADDRESS, newThreshold);
107
54
  }
108
55
  export { addOwner, removeOwner, changeThreshold, disable, enable };
@@ -0,0 +1,6 @@
1
+ import { type Address } from 'viem';
2
+ import type { CalldataInput } from '../config/account.js';
3
+ export declare function addOwnableOwner(validator: Address, owner: Address): CalldataInput;
4
+ export declare function removeOwnableOwner(validator: Address, prevOwner: Address, ownerToRemove: Address): CalldataInput;
5
+ export declare function changeOwnableThreshold(validator: Address, newThreshold: number): CalldataInput;
6
+ //# sourceMappingURL=ownable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ownable.d.ts","sourceRoot":"","sources":["../../../actions/ownable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAsB,MAAM,MAAM,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,wBAAgB,eAAe,CAC7B,SAAS,EAAE,OAAO,EAClB,KAAK,EAAE,OAAO,GACb,aAAa,CAkBf;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,aAAa,EAAE,OAAO,GACrB,aAAa,CAqBf;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,OAAO,EAClB,YAAY,EAAE,MAAM,GACnB,aAAa,CAoBf"}
@@ -0,0 +1,63 @@
1
+ import { encodeFunctionData } from 'viem';
2
+ export function addOwnableOwner(validator, owner) {
3
+ return {
4
+ to: validator,
5
+ value: 0n,
6
+ data: encodeFunctionData({
7
+ abi: [
8
+ {
9
+ inputs: [{ internalType: 'address', name: 'owner', type: 'address' }],
10
+ name: 'addOwner',
11
+ outputs: [],
12
+ stateMutability: 'nonpayable',
13
+ type: 'function',
14
+ },
15
+ ],
16
+ functionName: 'addOwner',
17
+ args: [owner],
18
+ }),
19
+ };
20
+ }
21
+ export function removeOwnableOwner(validator, prevOwner, ownerToRemove) {
22
+ return {
23
+ to: validator,
24
+ value: 0n,
25
+ data: encodeFunctionData({
26
+ abi: [
27
+ {
28
+ inputs: [
29
+ { internalType: 'address', name: 'prevOwner', type: 'address' },
30
+ { internalType: 'address', name: 'owner', type: 'address' },
31
+ ],
32
+ name: 'removeOwner',
33
+ outputs: [],
34
+ stateMutability: 'nonpayable',
35
+ type: 'function',
36
+ },
37
+ ],
38
+ functionName: 'removeOwner',
39
+ args: [prevOwner, ownerToRemove],
40
+ }),
41
+ };
42
+ }
43
+ export function changeOwnableThreshold(validator, newThreshold) {
44
+ return {
45
+ to: validator,
46
+ value: 0n,
47
+ data: encodeFunctionData({
48
+ abi: [
49
+ {
50
+ inputs: [
51
+ { internalType: 'uint256', name: '_threshold', type: 'uint256' },
52
+ ],
53
+ name: 'setThreshold',
54
+ outputs: [],
55
+ stateMutability: 'nonpayable',
56
+ type: 'function',
57
+ },
58
+ ],
59
+ functionName: 'setThreshold',
60
+ args: [BigInt(newThreshold)],
61
+ }),
62
+ };
63
+ }
@@ -1,11 +1,14 @@
1
- import type { Account } from 'viem';
1
+ import { type Account } from 'viem';
2
2
  import type { CalldataInput, CallResolveContext, LazyCallInput, OwnableValidatorConfig, WebauthnValidatorConfig } from '../config/account.js';
3
3
  interface PasskeyCredential {
4
4
  pubKeyX: bigint;
5
5
  pubKeyY: bigint;
6
6
  }
7
7
  export interface RecoverEcdsaOwnershipOptions extends CallResolveContext {
8
- /** Target owner set. Existing owners not listed here are removed. */
8
+ /**
9
+ * Target owner set. Existing owners not listed here are removed. If supplied,
10
+ * `module` must match the account's configured owner validator.
11
+ */
9
12
  newOwners: OwnableValidatorConfig;
10
13
  }
11
14
  export interface RecoverPasskeyOwnershipOptions extends CallResolveContext {
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../actions/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,MAAM,CAAA;AAC5C,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,mBAAmB,CAAA;AAsB1B,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE,qEAAqE;IACrE,SAAS,EAAE,sBAAsB,CAAA;CAClC;AAED,MAAM,WAAW,8BAA+B,SAAQ,kBAAkB;IACxE;;;;;;;;;OASG;IACH,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAChD,gCAAgC;IAChC,SAAS,EAAE,uBAAuB,CAAA;CACnC;AAED;;;;;;GAMG;AACH,iBAAS,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,SAAI,GAAG,aAAa,CAUlE;AAED;;;;;;;;;;;GAWG;AACH,iBAAe,qBAAqB,CAClC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,aAAa,EAAE,CAAC,CA4C1B;AAED;;;;;;;;;;;GAWG;AACH,iBAAe,uBAAuB,CACpC,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,aAAa,EAAE,CAAC,CAiD1B;AAMD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAA"}
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../actions/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAgC,MAAM,MAAM,CAAA;AACjE,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,mBAAmB,CAAA;AA0B1B,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,4BAA6B,SAAQ,kBAAkB;IACtE;;;OAGG;IACH,SAAS,EAAE,sBAAsB,CAAA;CAClC;AAED,MAAM,WAAW,8BAA+B,SAAQ,kBAAkB;IACxE;;;;;;;;;OASG;IACH,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAChD,gCAAgC;IAChC,SAAS,EAAE,uBAAuB,CAAA;CACnC;AAED;;;;;;GAMG;AACH,iBAAS,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,SAAS,SAAI,GAAG,aAAa,CAUlE;AAED;;;;;;;;;;;GAWG;AACH,iBAAe,qBAAqB,CAClC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,aAAa,EAAE,CAAC,CA4D1B;AAED;;;;;;;;;;;GAWG;AACH,iBAAe,uBAAuB,CACpC,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,aAAa,EAAE,CAAC,CAiD1B;AAMD,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAA"}
@@ -1,7 +1,8 @@
1
+ import { isAddressEqual } from 'viem';
1
2
  import { OWNABLE_VALIDATOR_ADDRESS } from '../modules/validators/ownable.js';
2
3
  import { resolveSocialRecoveryValidator } from '../modules/validators/social-recovery.js';
3
4
  import { parseWebauthnPublicKey, WEBAUTHN_VALIDATOR_ADDRESS, } from '../modules/validators/webauthn.js';
4
- import { addOwner, changeThreshold, removeOwner } from './ecdsa.js';
5
+ import { addOwnableOwner, changeOwnableThreshold, removeOwnableOwner, } from './ownable.js';
5
6
  import { addOwner as addPasskeyOwner, changeThreshold as changePasskeyThreshold, removeOwner as removePasskeyOwner, } from './passkeys.js';
6
7
  import { readOwnershipFor, readThresholdFor, resolveValidatorInstallation, } from './runtime.js';
7
8
  /** Sentinel head of the validator's owner linked list. */
@@ -37,7 +38,17 @@ function enable(guardians, threshold = 1) {
37
38
  * @returns Calls to recover ownership, in the order they must be sent
38
39
  */
39
40
  async function recoverEcdsaOwnership(options) {
40
- const existing = await readOwnershipFor(options, options.accountAddress, OWNABLE_VALIDATOR_ADDRESS);
41
+ const configuredValidator = options.config.owners?.type === 'ecdsa'
42
+ ? (options.config.owners.module ?? OWNABLE_VALIDATOR_ADDRESS)
43
+ : undefined;
44
+ const requestedValidator = options.newOwners.module;
45
+ if (configuredValidator &&
46
+ requestedValidator &&
47
+ !isAddressEqual(configuredValidator, requestedValidator)) {
48
+ throw new Error('Recovery owner validator must match the configured owner validator');
49
+ }
50
+ const validator = configuredValidator ?? requestedValidator ?? OWNABLE_VALIDATOR_ADDRESS;
51
+ const existing = await readOwnershipFor(options, options.accountAddress, validator);
41
52
  const newOwners = options.newOwners.accounts
42
53
  .map((account) => account.address.toLowerCase())
43
54
  .sort();
@@ -51,17 +62,17 @@ async function recoverEcdsaOwnership(options) {
51
62
  // to the threshold.
52
63
  let currentOwners = [...existing.owners];
53
64
  for (const owner of ownersToAdd) {
54
- calls.push(addOwner(owner));
65
+ calls.push(addOwnableOwner(validator, owner));
55
66
  // The validator pushes new owners onto the front of the linked list.
56
67
  currentOwners.unshift(owner);
57
68
  }
58
69
  if (existing.threshold !== newThreshold) {
59
- calls.push(changeThreshold(newThreshold));
70
+ calls.push(changeOwnableThreshold(validator, newThreshold));
60
71
  }
61
72
  for (const owner of ownersToRemove) {
62
73
  const index = currentOwners.indexOf(owner);
63
74
  const prevOwner = index <= 0 ? SENTINEL_OWNER : currentOwners[index - 1];
64
- calls.push(removeOwner(prevOwner, owner));
75
+ calls.push(removeOwnableOwner(validator, prevOwner, owner));
65
76
  currentOwners = currentOwners.filter((entry) => entry !== owner);
66
77
  }
67
78
  return calls;
@@ -1 +1 @@
1
- {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../api/compose.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAqF3B,OAAO,KAAK,EAEV,yBAAyB,EAEzB,eAAe,EACf,gBAAgB,EAGjB,MAAM,iBAAiB,CAAA;AAMxB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAexB,wBAAgB,qBAAqB,CAAC,mBAAmB,GAAG,OAAO,EACjE,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,gBAAgB,EAC9B,0BAA0B,GAAE,yBAAyB,CAAC,mBAAmB,CAC3D,GACb,eAAe,CAAC,mBAAmB,CAAC,CAmBtC;AAED,wBAAgB,+BAA+B,CAAC,mBAAmB,GAAG,OAAO,EAC3E,MAAM,EAAE,iBAAiB,GACxB,eAAe,CAAC,mBAAmB,CAAC,CAMtC"}
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../api/compose.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,oBAAoB,CAAA;AAsF3B,OAAO,KAAK,EAEV,yBAAyB,EAEzB,eAAe,EACf,gBAAgB,EAGjB,MAAM,iBAAiB,CAAA;AAMxB,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AAexB,wBAAgB,qBAAqB,CAAC,mBAAmB,GAAG,OAAO,EACjE,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,gBAAgB,EAC9B,0BAA0B,GAAE,yBAAyB,CAAC,mBAAmB,CAC3D,GACb,eAAe,CAAC,mBAAmB,CAAC,CAmBtC;AAED,wBAAgB,+BAA+B,CAAC,mBAAmB,GAAG,OAAO,EAC3E,MAAM,EAAE,iBAAiB,GACxB,eAAe,CAAC,mBAAmB,CAAC,CAMtC"}
@@ -13,6 +13,7 @@ import { getIntentExecutorModule } from '../modules/intent-executor.js';
13
13
  import { readInstalledModules, readModuleInstallations, readOwners, } from '../modules/read-core.js';
14
14
  import { defineValidator } from '../modules/validators/definition.js';
15
15
  import { K1_DEFAULT_VALIDATOR_ADDRESS } from '../modules/validators/k1.js';
16
+ import { resolveValidator } from '../modules/validators/resolve.js';
16
17
  import { ecdsaSignerId } from '../modules/validators/signer-id.js';
17
18
  import { getSessionDetails as buildSessionDetails, SESSION_LOCK_TAG, } from '../modules/validators/smart-sessions/authorization.js';
18
19
  import { getSmartSessionEmissaryAddress } from '../modules/validators/smart-sessions/module.js';
@@ -186,6 +187,11 @@ function createAccountComposition(initialContext, dependencies) {
186
187
  accountKind: context.account.account.kind,
187
188
  account: createStaticAccountRuntime(context.account, chain, false)
188
189
  .identity.address,
190
+ ...(context.account.owners?.kind === 'ecdsa'
191
+ ? {
192
+ ownerValidator: resolveValidator(context.account.owners).address,
193
+ }
194
+ : {}),
189
195
  ...(hcaFactory(context.account)
190
196
  ? { hcaFactory: hcaFactory(context.account) }
191
197
  : {}),
@@ -3,7 +3,7 @@ import { createOrchestratorAuth } from './auth.js';
3
3
  import { ChainCatalog, parseChains } from './chain-catalog.js';
4
4
  import { fetchOrchestratorJson } from './fetch.js';
5
5
  import { mapIntentRequestToWire, mapIntentStatusFromWire, mapPortfolioFromWire, mapQuoteResponseFromWire, mapSignedIntentToWire, mapSplitRequestToWire, mapSplitResultFromWire, } from './mappers.js';
6
- const SDK_VERSION = '0.0.0-dev-20260728134459';
6
+ const SDK_VERSION = '0.0.0-dev-20260728163313';
7
7
  const API_VERSION = '2026-04.blanc';
8
8
  export function createOrchestratorClient(options) {
9
9
  const fetchPort = options.fetch ?? globalThis.fetch;
@@ -48,6 +48,7 @@ export declare function readOwners(input: {
48
48
  readonly chain: EvmChainReference;
49
49
  readonly accountKind: string;
50
50
  readonly account: Address;
51
+ readonly ownerValidator?: Address;
51
52
  readonly hcaFactory?: Address;
52
53
  }): Promise<{
53
54
  readonly accounts: readonly Address[];
@@ -1 +1 @@
1
- {"version":3,"file":"read-core.d.ts","sourceRoot":"","sources":["../../../modules/read-core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAuB,KAAK,GAAG,EAAE,MAAM,MAAM,CAAA;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAyBzD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,GAAG,UAAU,CAAC,CAAA;CAC7D,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAmB9B;AAED,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBnB;AAsBD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B,GAAG,OAAO,CAAC;IACV,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,CAAC,CAwBD;AAED,8DAA8D;AAC9D,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,CAWlB;AAgBD,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;CAC5C,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAiB9B;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAC9B,GAAG,OAAO,CAAC;IACV,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B,GAAG,IAAI,CAAC,CAmER;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,OAAO,EAAE,CAAA;CACvC,GAAG,GAAG,CAkBN"}
1
+ {"version":3,"file":"read-core.d.ts","sourceRoot":"","sources":["../../../modules/read-core.ts"],"names":[],"mappings":"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"}
@@ -134,7 +134,7 @@ export async function readModuleInstallations(input) {
134
134
  return results.map(({ result }) => result === true);
135
135
  }
136
136
  export async function readOwners(input) {
137
- let validator = OWNABLE_VALIDATOR_ADDRESS;
137
+ let validator = input.ownerValidator ?? OWNABLE_VALIDATOR_ADDRESS;
138
138
  if (input.accountKind === 'hca') {
139
139
  validator = input.hcaFactory
140
140
  ? await input.rpc.readContract({ chain: input.chain }, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rhinestone/sdk",
3
- "version": "0.0.0-dev-20260728134459",
3
+ "version": "0.0.0-dev-20260728163313",
4
4
  "description": "End-to-end chain abstraction and modularity toolkit",
5
5
  "author": {
6
6
  "name": "Rhinestone",