@geoprotocol/geo-sdk 0.20.0-beta.6 → 0.20.0-beta.8
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/README.md +32 -37
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/lite.d.ts +4 -4
- package/dist/lite.js +4 -4
- package/dist/src/e2e-test-environment.d.ts.map +1 -1
- package/dist/src/e2e-test-environment.js +4 -1
- package/dist/src/e2e-test-environment.js.map +1 -1
- package/dist/src/e2e-wallet.d.ts.map +1 -1
- package/dist/src/e2e-wallet.js +9 -10
- package/dist/src/e2e-wallet.js.map +1 -1
- package/dist/src/full-flow-test.test.js +29 -25
- package/dist/src/full-flow-test.test.js.map +1 -1
- package/dist/src/networks.d.ts.map +1 -1
- package/dist/src/networks.js +4 -0
- package/dist/src/networks.js.map +1 -1
- package/dist/src/types.d.ts +3 -16
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js.map +1 -1
- package/dist/src/wallet.d.ts +28 -0
- package/dist/src/wallet.d.ts.map +1 -0
- package/dist/src/wallet.js +91 -0
- package/dist/src/wallet.js.map +1 -0
- package/dist/src/wallet.test.d.ts +2 -0
- package/dist/src/wallet.test.d.ts.map +1 -0
- package/dist/src/wallet.test.js +179 -0
- package/dist/src/wallet.test.js.map +1 -0
- package/package.json +1 -2
- package/dist/src/smart-account-flow-test.test.d.ts +0 -2
- package/dist/src/smart-account-flow-test.test.d.ts.map +0 -1
- package/dist/src/smart-account-flow-test.test.js +0 -71
- package/dist/src/smart-account-flow-test.test.js.map +0 -1
- package/dist/src/smart-wallet.d.ts +0 -44
- package/dist/src/smart-wallet.d.ts.map +0 -1
- package/dist/src/smart-wallet.js +0 -117
- package/dist/src/smart-wallet.js.map +0 -1
- package/dist/src/smart-wallet.test.d.ts +0 -2
- package/dist/src/smart-wallet.test.d.ts.map +0 -1
- package/dist/src/smart-wallet.test.js +0 -67
- package/dist/src/smart-wallet.test.js.map +0 -1
- package/dist/src/zero-dev.d.ts +0 -21
- package/dist/src/zero-dev.d.ts.map +0 -1
- package/dist/src/zero-dev.js +0 -45
- package/dist/src/zero-dev.js.map +0 -1
- package/dist/src/zero-dev.test.d.ts +0 -2
- package/dist/src/zero-dev.test.d.ts.map +0 -1
- package/dist/src/zero-dev.test.js +0 -103
- package/dist/src/zero-dev.test.js.map +0 -1
package/dist/src/networks.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { TESTNET } from '../contracts.js';
|
|
2
2
|
export const TESTNET_API_ORIGIN = 'https://testnet-api-v2.geobrowser.io';
|
|
3
3
|
const GEO_TESTNET_RPC_URL = 'https://rpc-geo-testnet-irdc0cgb0w.t.conduit.xyz';
|
|
4
|
+
const GEO_TESTNET_SPONSORSHIP_RPC_URL = 'https://rpc.zerodev.app/api/v3/d26c96b9-7ee9-4d78-b139-954470b696e5/chain/55516?selfFunded=true';
|
|
4
5
|
function asContractAddresses(contracts) {
|
|
5
6
|
return contracts;
|
|
6
7
|
}
|
|
@@ -66,6 +67,9 @@ export const GeoTestnetConfig = defineGeoNetworkConfig({
|
|
|
66
67
|
name: 'Geo Testnet',
|
|
67
68
|
rpcUrl: GEO_TESTNET_RPC_URL,
|
|
68
69
|
},
|
|
70
|
+
sponsorship: {
|
|
71
|
+
rpcUrl: GEO_TESTNET_SPONSORSHIP_RPC_URL,
|
|
72
|
+
},
|
|
69
73
|
contracts: asContractAddresses(TESTNET),
|
|
70
74
|
});
|
|
71
75
|
export function resolveGeoNetwork(network = 'TESTNET') {
|
package/dist/src/networks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/networks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,sCAAsC,CAAC;AAEzE,MAAM,mBAAmB,GAAG,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/networks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,MAAM,CAAC,MAAM,kBAAkB,GAAG,sCAAsC,CAAC;AAEzE,MAAM,mBAAmB,GAAG,kDAAkD,CAAC;AAC/E,MAAM,+BAA+B,GACnC,iGAAiG,CAAC;AAEpG,SAAS,mBAAmB,CAAC,SAA6C;IACxE,OAAO,SAAiC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAwB;IAC7D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,OAAO;QACL,GAAG,MAAM;QACT,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;KAClC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;IACrD,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,kBAAkB;IAC7B,KAAK,EAAE;QACL,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,mBAAmB;KAC5B;IACD,WAAW,EAAE;QACX,MAAM,EAAE,+BAA+B;KACxC;IACD,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC;CACxC,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,UAAsB,SAAS;IAC/D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,sDAAsD,CAAC,CAAC;IACzG,CAAC;IAED,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAyB,EAAE,IAAgC;IAC5F,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gBAAgB,OAAO,CAAC,IAAI,0CAA0C,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAsB,SAAS;IAC1D,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AAC9C,CAAC"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import { EmbeddingSubType, type Op } from '@geoprotocol/grc-20';
|
|
2
|
-
import type { SafeSmartAccountImplementation } from 'permissionless/accounts';
|
|
3
|
-
import type { SmartAccountClient } from 'permissionless/clients';
|
|
4
|
-
import type { Address, Chain, HttpTransport } from 'viem';
|
|
5
|
-
import type { SmartAccountImplementation } from 'viem/account-abstraction';
|
|
6
2
|
import type { Id } from './id.js';
|
|
7
3
|
export type Network = 'TESTNET';
|
|
8
4
|
export type BuiltInGeoNetworkId = 'TESTNET';
|
|
@@ -27,6 +23,9 @@ export type GeoNetworkConfig = {
|
|
|
27
23
|
name: string;
|
|
28
24
|
apiOrigin: string;
|
|
29
25
|
chain?: GeoChainConfig;
|
|
26
|
+
sponsorship?: {
|
|
27
|
+
rpcUrl: string;
|
|
28
|
+
};
|
|
30
29
|
contracts?: GeoContractAddresses;
|
|
31
30
|
};
|
|
32
31
|
export type Networkish = BuiltInGeoNetworkId | GeoNetworkConfig;
|
|
@@ -283,18 +282,6 @@ export type CreateImageParams = {
|
|
|
283
282
|
id?: Id | string;
|
|
284
283
|
network?: Network | undefined;
|
|
285
284
|
};
|
|
286
|
-
type SafeSmartAccount = SafeSmartAccountImplementation<'0.7'> & {
|
|
287
|
-
address: Address;
|
|
288
|
-
getNonce: NonNullable<SmartAccountImplementation['getNonce']>;
|
|
289
|
-
isDeployed: () => Promise<boolean>;
|
|
290
|
-
type: 'smart';
|
|
291
|
-
};
|
|
292
|
-
export type GeoSmartAccount = SmartAccountClient<HttpTransport<undefined, false>, Chain, object & SafeSmartAccount & {
|
|
293
|
-
address: Address;
|
|
294
|
-
getNonce: NonNullable<SmartAccountImplementation['getNonce']>;
|
|
295
|
-
isDeployed: () => Promise<boolean>;
|
|
296
|
-
type: 'smart';
|
|
297
|
-
}, undefined, undefined>;
|
|
298
285
|
export type GraphUri = `graph://${string}`;
|
|
299
286
|
export declare enum VoteOption {
|
|
300
287
|
None = 0,
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,MAAM,OAAO,GAAG,SAAS,CAAC;AAEhC,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAE/D,MAAM,MAAM,oBAAoB,GAAG;IACjC,sBAAsB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACvC,yBAAyB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1C,mBAAmB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACpC,yBAAyB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1C,wCAAwC,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACzD,8BAA8B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/C,oBAAoB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACrC,8BAA8B,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,YAAY,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,EAAE,EAAE,CAAC;AAEnB,mCAAmC;AACnC,MAAM,MAAM,KAAK,GAAG,EAAE,CAAC;AAEvB,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAElG,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,UAAU,GACV,UAAU,GACV,OAAO,GACP,WAAW,CAAC;AAEhB,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,CAAA;CAAE,GACpD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;CACpB,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE;AAC3D,4DAA4D;GAC1D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACjC,0FAA0F;GACxF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACjC,oEAAoE;GAClE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACrC,sFAAsF;GACpF;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAGN,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;CACrB,CAAC;AAGF,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAA;CAAE,GAAG,UAAU,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAExD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,MAAM,CAAC,CAAC;AAE/E,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,oBAAoB,GAAG,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAErG,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG;IAC7C,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,EAAE,GAAG,MAAM,GAAG,UAAU,CAAC;AAElE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC;IACtB,wHAAwH;IACxH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,GAAG;IAClE,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC9B,CAAC;AAEF,KAAK,oBAAoB,GAAG;KACzB,CAAC,IAAI,MAAM,YAAY,IAAI,SAAS,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;CACjF,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC;IACxB,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC;CACnB,GAAG,oBAAoB,CAAC;AAEzB,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,EAAE,CAAC;IACP,GAAG,EAAE,EAAE,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAChB,UAAU,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAChB,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG;IACjD,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAClD,CACI;IAAE,QAAQ,EAAE,aAAa,CAAA;CAAE,GAC3B;IACE,QAAQ,EAAE,UAAU,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;IAChC,kBAAkB,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;CACzC,CACJ,CAAC;AAEJ,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE,GAAG,MAAM,CAAC;QACtB,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAEvD,MAAM,MAAM,0BAA0B,GAClC;IACE,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,QAAQ,EAAE;QAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IACE,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,QAAQ,EAAE;QAAE,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,UAAU,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAClC;IACE,gBAAgB,EAAE,EAAE,GAAG,MAAM,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IACE,gBAAgB,EAAE,EAAE,GAAG,MAAM,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,UAAU,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEN,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,GACD;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,WAAW,MAAM,EAAE,CAAC;AAE3C,oBAAY,UAAU;IACpB,IAAI,IAAI;IACR,OAAO,IAAI;IACX,GAAG,IAAI;IACP,EAAE,IAAI;CACP"}
|
package/dist/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAW,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAW,MAAM,qBAAqB,CAAC;AAuChE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AA0Q5B,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,2CAAQ,CAAA;IACR,iDAAW,CAAA;IACX,yCAAO,CAAA;IACP,uCAAM,CAAA;AACR,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type KernelAccountClient, type KernelSmartAccountImplementation } from '@zerodev/sdk';
|
|
2
|
+
import type { Signer } from '@zerodev/sdk/types';
|
|
3
|
+
import type { GeoNetworkConfig } from './types.js';
|
|
4
|
+
export type GeoWalletPublicClient = KernelSmartAccountImplementation['client'];
|
|
5
|
+
export type CreateGeoWalletClientParams = {
|
|
6
|
+
signer: Signer;
|
|
7
|
+
network: GeoNetworkConfig;
|
|
8
|
+
publicClient?: GeoWalletPublicClient;
|
|
9
|
+
};
|
|
10
|
+
export type GeoWalletClient = KernelAccountClient;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a Geo wallet client that sends sponsored EIP-7702 user operations.
|
|
13
|
+
*
|
|
14
|
+
* Geo's built-in network configs provide the default sponsorship endpoint for the network.
|
|
15
|
+
* Use `defineGeoNetworkConfig` to pass custom chain or sponsorship RPC URLs.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { GeoTestnetConfig, createGeoWalletClient } from '@geoprotocol/geo-sdk';
|
|
20
|
+
*
|
|
21
|
+
* const walletClient = await createGeoWalletClient({
|
|
22
|
+
* signer,
|
|
23
|
+
* network: GeoTestnetConfig,
|
|
24
|
+
* });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function createGeoWalletClient({ signer, network, publicClient, }: CreateGeoWalletClientParams): Promise<GeoWalletClient>;
|
|
28
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,gCAAgC,EACtC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;AAE/E,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;IAC1B,YAAY,CAAC,EAAE,qBAAqB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,mBAAmB,CAAC;AA0ClD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,YAAY,GACb,EAAE,2BAA2B,GAAG,OAAO,CAAC,eAAe,CAAC,CAuCxD"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { createKernelAccount, createKernelAccountClient, createZeroDevPaymasterClient, getUserOperationGasPrice, } from '@zerodev/sdk';
|
|
2
|
+
import { getEntryPoint, KERNEL_V3_3 } from '@zerodev/sdk/constants';
|
|
3
|
+
import { createPublicClient, http } from 'viem';
|
|
4
|
+
function requireGeoChain(network) {
|
|
5
|
+
if (!network.chain) {
|
|
6
|
+
throw new Error(`Geo network "${network.name}" is missing chain config`);
|
|
7
|
+
}
|
|
8
|
+
return network.chain;
|
|
9
|
+
}
|
|
10
|
+
function requireGeoChainRpcUrl(network, chain) {
|
|
11
|
+
if (!chain.rpcUrl) {
|
|
12
|
+
throw new Error(`Geo network "${network.name}" is missing a chain RPC URL`);
|
|
13
|
+
}
|
|
14
|
+
return chain.rpcUrl;
|
|
15
|
+
}
|
|
16
|
+
function requireGeoSponsorshipRpcUrl(network) {
|
|
17
|
+
if (!network.sponsorship?.rpcUrl) {
|
|
18
|
+
throw new Error(`Geo network "${network.name}" is missing a sponsorship RPC URL`);
|
|
19
|
+
}
|
|
20
|
+
return network.sponsorship.rpcUrl;
|
|
21
|
+
}
|
|
22
|
+
function createViemChain(chain, rpcUrl) {
|
|
23
|
+
return {
|
|
24
|
+
id: chain.id,
|
|
25
|
+
name: chain.name,
|
|
26
|
+
nativeCurrency: {
|
|
27
|
+
name: 'Ethereum',
|
|
28
|
+
symbol: 'ETH',
|
|
29
|
+
decimals: 18,
|
|
30
|
+
},
|
|
31
|
+
rpcUrls: {
|
|
32
|
+
default: { http: [rpcUrl] },
|
|
33
|
+
public: { http: [rpcUrl] },
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Creates a Geo wallet client that sends sponsored EIP-7702 user operations.
|
|
39
|
+
*
|
|
40
|
+
* Geo's built-in network configs provide the default sponsorship endpoint for the network.
|
|
41
|
+
* Use `defineGeoNetworkConfig` to pass custom chain or sponsorship RPC URLs.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* import { GeoTestnetConfig, createGeoWalletClient } from '@geoprotocol/geo-sdk';
|
|
46
|
+
*
|
|
47
|
+
* const walletClient = await createGeoWalletClient({
|
|
48
|
+
* signer,
|
|
49
|
+
* network: GeoTestnetConfig,
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export async function createGeoWalletClient({ signer, network, publicClient, }) {
|
|
54
|
+
const geoChain = requireGeoChain(network);
|
|
55
|
+
const chainRpcUrl = requireGeoChainRpcUrl(network, geoChain);
|
|
56
|
+
const sponsorshipRpcUrl = requireGeoSponsorshipRpcUrl(network);
|
|
57
|
+
const chain = createViemChain(geoChain, chainRpcUrl);
|
|
58
|
+
const client = publicClient ??
|
|
59
|
+
createPublicClient({
|
|
60
|
+
chain,
|
|
61
|
+
transport: http(chainRpcUrl),
|
|
62
|
+
});
|
|
63
|
+
const entryPoint = getEntryPoint('0.7');
|
|
64
|
+
const kernelAccount = await createKernelAccount(client, {
|
|
65
|
+
eip7702Account: signer,
|
|
66
|
+
entryPoint,
|
|
67
|
+
kernelVersion: KERNEL_V3_3,
|
|
68
|
+
});
|
|
69
|
+
const paymaster = createZeroDevPaymasterClient({
|
|
70
|
+
chain,
|
|
71
|
+
transport: http(sponsorshipRpcUrl),
|
|
72
|
+
});
|
|
73
|
+
return createKernelAccountClient({
|
|
74
|
+
account: kernelAccount,
|
|
75
|
+
chain,
|
|
76
|
+
bundlerTransport: http(sponsorshipRpcUrl),
|
|
77
|
+
client,
|
|
78
|
+
paymaster: {
|
|
79
|
+
getPaymasterStubData(userOperation) {
|
|
80
|
+
return paymaster.sponsorUserOperation({ userOperation, shouldConsume: false });
|
|
81
|
+
},
|
|
82
|
+
getPaymasterData(userOperation) {
|
|
83
|
+
return paymaster.sponsorUserOperation({ userOperation });
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
userOperation: {
|
|
87
|
+
estimateFeesPerGas: async ({ bundlerClient }) => getUserOperationGasPrice(bundlerClient),
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.test.d.ts","sourceRoot":"","sources":["../../src/wallet.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { createKernelAccount, createKernelAccountClient, createZeroDevPaymasterClient, getUserOperationGasPrice, } from '@zerodev/sdk';
|
|
2
|
+
import { getEntryPoint, KERNEL_V3_3 } from '@zerodev/sdk/constants';
|
|
3
|
+
import { createPublicClient } from 'viem';
|
|
4
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
|
+
import { defineGeoNetworkConfig, GeoTestnetConfig } from './networks.js';
|
|
6
|
+
import { createGeoWalletClient } from './wallet.js';
|
|
7
|
+
vi.mock('@zerodev/sdk', () => ({
|
|
8
|
+
createKernelAccount: vi.fn().mockResolvedValue({ mockKernelAccount: true }),
|
|
9
|
+
createKernelAccountClient: vi.fn().mockReturnValue({ mockKernelAccountClient: true }),
|
|
10
|
+
createZeroDevPaymasterClient: vi.fn().mockReturnValue({
|
|
11
|
+
sponsorUserOperation: vi.fn().mockResolvedValue({ paymaster: '0x0000000000000000000000000000000000000001' }),
|
|
12
|
+
}),
|
|
13
|
+
getUserOperationGasPrice: vi.fn().mockResolvedValue({
|
|
14
|
+
maxFeePerGas: 10n,
|
|
15
|
+
maxPriorityFeePerGas: 1n,
|
|
16
|
+
}),
|
|
17
|
+
}));
|
|
18
|
+
vi.mock('@zerodev/sdk/constants', () => ({
|
|
19
|
+
getEntryPoint: vi.fn().mockReturnValue({ address: '0xentrypoint', version: '0.7' }),
|
|
20
|
+
KERNEL_V3_3: '0.3.3',
|
|
21
|
+
}));
|
|
22
|
+
vi.mock('viem', () => ({
|
|
23
|
+
createPublicClient: vi.fn().mockReturnValue({ mockPublicClient: true }),
|
|
24
|
+
http: vi.fn().mockImplementation(url => ({ mockTransport: true, url })),
|
|
25
|
+
}));
|
|
26
|
+
describe('createGeoWalletClient', () => {
|
|
27
|
+
const signer = { address: '0x0000000000000000000000000000000000000002' };
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
vi.clearAllMocks();
|
|
30
|
+
});
|
|
31
|
+
it('creates a Geo wallet client from the network config', async () => {
|
|
32
|
+
const walletClient = await createGeoWalletClient({
|
|
33
|
+
signer,
|
|
34
|
+
network: GeoTestnetConfig,
|
|
35
|
+
});
|
|
36
|
+
const expectedChain = {
|
|
37
|
+
id: 55516,
|
|
38
|
+
name: 'Geo Testnet',
|
|
39
|
+
nativeCurrency: {
|
|
40
|
+
name: 'Ethereum',
|
|
41
|
+
symbol: 'ETH',
|
|
42
|
+
decimals: 18,
|
|
43
|
+
},
|
|
44
|
+
rpcUrls: {
|
|
45
|
+
default: { http: ['https://rpc-geo-testnet-irdc0cgb0w.t.conduit.xyz'] },
|
|
46
|
+
public: { http: ['https://rpc-geo-testnet-irdc0cgb0w.t.conduit.xyz'] },
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
expect(walletClient).toEqual({ mockKernelAccountClient: true });
|
|
50
|
+
expect(createPublicClient).toHaveBeenCalledWith({
|
|
51
|
+
chain: expectedChain,
|
|
52
|
+
transport: { mockTransport: true, url: 'https://rpc-geo-testnet-irdc0cgb0w.t.conduit.xyz' },
|
|
53
|
+
});
|
|
54
|
+
expect(getEntryPoint).toHaveBeenCalledWith('0.7');
|
|
55
|
+
expect(createKernelAccount).toHaveBeenCalledWith({ mockPublicClient: true }, {
|
|
56
|
+
eip7702Account: signer,
|
|
57
|
+
entryPoint: { address: '0xentrypoint', version: '0.7' },
|
|
58
|
+
kernelVersion: KERNEL_V3_3,
|
|
59
|
+
});
|
|
60
|
+
expect(createZeroDevPaymasterClient).toHaveBeenCalledWith({
|
|
61
|
+
chain: expectedChain,
|
|
62
|
+
transport: {
|
|
63
|
+
mockTransport: true,
|
|
64
|
+
url: 'https://rpc.zerodev.app/api/v3/d26c96b9-7ee9-4d78-b139-954470b696e5/chain/55516?selfFunded=true',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
expect(createKernelAccountClient).toHaveBeenCalledWith(expect.objectContaining({
|
|
68
|
+
chain: expectedChain,
|
|
69
|
+
bundlerTransport: {
|
|
70
|
+
mockTransport: true,
|
|
71
|
+
url: 'https://rpc.zerodev.app/api/v3/d26c96b9-7ee9-4d78-b139-954470b696e5/chain/55516?selfFunded=true',
|
|
72
|
+
},
|
|
73
|
+
}));
|
|
74
|
+
});
|
|
75
|
+
it('uses sponsorship from a custom network config', async () => {
|
|
76
|
+
const network = defineGeoNetworkConfig({
|
|
77
|
+
...GeoTestnetConfig,
|
|
78
|
+
sponsorship: {
|
|
79
|
+
rpcUrl: 'https://zerodev.example.com',
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
await createGeoWalletClient({
|
|
83
|
+
signer,
|
|
84
|
+
network,
|
|
85
|
+
});
|
|
86
|
+
expect(createZeroDevPaymasterClient).toHaveBeenCalledWith(expect.objectContaining({
|
|
87
|
+
transport: { mockTransport: true, url: 'https://zerodev.example.com' },
|
|
88
|
+
}));
|
|
89
|
+
expect(createKernelAccountClient).toHaveBeenCalledWith(expect.objectContaining({
|
|
90
|
+
bundlerTransport: { mockTransport: true, url: 'https://zerodev.example.com' },
|
|
91
|
+
}));
|
|
92
|
+
});
|
|
93
|
+
it('uses the chain RPC URL from a custom network config', async () => {
|
|
94
|
+
const network = defineGeoNetworkConfig({
|
|
95
|
+
...GeoTestnetConfig,
|
|
96
|
+
chain: {
|
|
97
|
+
id: 55516,
|
|
98
|
+
name: 'Geo Testnet',
|
|
99
|
+
rpcUrl: 'https://rpc.example.com',
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
await createGeoWalletClient({
|
|
103
|
+
signer,
|
|
104
|
+
network,
|
|
105
|
+
});
|
|
106
|
+
const expectedChain = expect.objectContaining({
|
|
107
|
+
rpcUrls: {
|
|
108
|
+
default: { http: ['https://rpc.example.com'] },
|
|
109
|
+
public: { http: ['https://rpc.example.com'] },
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
expect(createPublicClient).toHaveBeenCalledWith({
|
|
113
|
+
chain: expectedChain,
|
|
114
|
+
transport: { mockTransport: true, url: 'https://rpc.example.com' },
|
|
115
|
+
});
|
|
116
|
+
expect(createZeroDevPaymasterClient).toHaveBeenCalledWith(expect.objectContaining({
|
|
117
|
+
chain: expectedChain,
|
|
118
|
+
}));
|
|
119
|
+
});
|
|
120
|
+
it('throws when the network has no chain config', async () => {
|
|
121
|
+
const network = defineGeoNetworkConfig({
|
|
122
|
+
id: 'NO_CHAIN',
|
|
123
|
+
name: 'No Chain',
|
|
124
|
+
apiOrigin: 'https://api.example.com',
|
|
125
|
+
sponsorship: {
|
|
126
|
+
rpcUrl: 'https://zerodev.example.com',
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
await expect(createGeoWalletClient({ signer, network })).rejects.toThrow('Geo network "No Chain" is missing chain config');
|
|
130
|
+
});
|
|
131
|
+
it('throws when no sponsorship RPC URL is available', async () => {
|
|
132
|
+
const network = defineGeoNetworkConfig({
|
|
133
|
+
id: 'NO_SPONSORSHIP',
|
|
134
|
+
name: 'No Sponsorship',
|
|
135
|
+
apiOrigin: 'https://api.example.com',
|
|
136
|
+
chain: {
|
|
137
|
+
id: 123,
|
|
138
|
+
name: 'No Sponsorship',
|
|
139
|
+
rpcUrl: 'https://rpc.example.com',
|
|
140
|
+
},
|
|
141
|
+
});
|
|
142
|
+
await expect(createGeoWalletClient({ signer, network })).rejects.toThrow('Geo network "No Sponsorship" is missing a sponsorship RPC URL');
|
|
143
|
+
});
|
|
144
|
+
it('uses ZeroDev sponsorship for stub and final paymaster data', async () => {
|
|
145
|
+
await createGeoWalletClient({
|
|
146
|
+
signer,
|
|
147
|
+
network: GeoTestnetConfig,
|
|
148
|
+
});
|
|
149
|
+
const kernelClientParams = vi.mocked(createKernelAccountClient).mock.calls[0]?.[0];
|
|
150
|
+
const paymaster = vi.mocked(createZeroDevPaymasterClient).mock.results[0]?.value;
|
|
151
|
+
const configuredPaymaster = kernelClientParams?.paymaster;
|
|
152
|
+
if (!configuredPaymaster || configuredPaymaster === true) {
|
|
153
|
+
throw new Error('Expected configured paymaster hooks');
|
|
154
|
+
}
|
|
155
|
+
const userOperation = {
|
|
156
|
+
chainId: 55516,
|
|
157
|
+
entryPointAddress: '0x0000000071727De22E5E9d8BAf0edAc6f37da032',
|
|
158
|
+
sender: '0x0000000000000000000000000000000000000002',
|
|
159
|
+
nonce: 0n,
|
|
160
|
+
callData: '0x',
|
|
161
|
+
};
|
|
162
|
+
await configuredPaymaster.getPaymasterStubData?.(userOperation);
|
|
163
|
+
await configuredPaymaster.getPaymasterData?.(userOperation);
|
|
164
|
+
await kernelClientParams?.userOperation?.estimateFeesPerGas?.({
|
|
165
|
+
account: { mockKernelAccount: true },
|
|
166
|
+
bundlerClient: { mockBundlerClient: true },
|
|
167
|
+
userOperation,
|
|
168
|
+
});
|
|
169
|
+
expect(paymaster.sponsorUserOperation).toHaveBeenNthCalledWith(1, {
|
|
170
|
+
userOperation,
|
|
171
|
+
shouldConsume: false,
|
|
172
|
+
});
|
|
173
|
+
expect(paymaster.sponsorUserOperation).toHaveBeenNthCalledWith(2, {
|
|
174
|
+
userOperation,
|
|
175
|
+
});
|
|
176
|
+
expect(getUserOperationGasPrice).toHaveBeenCalledWith({ mockBundlerClient: true });
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
//# sourceMappingURL=wallet.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.test.js","sourceRoot":"","sources":["../../src/wallet.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geoprotocol/geo-sdk",
|
|
3
|
-
"version": "0.20.0-beta.
|
|
3
|
+
"version": "0.20.0-beta.8",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"module": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
"fflate": "^0.8.2",
|
|
37
37
|
"fractional-indexing-jittered": "^1.0.0",
|
|
38
38
|
"image-size": "^2.0.2",
|
|
39
|
-
"permissionless": "^0.2.35",
|
|
40
39
|
"uuid": "^13.0.0",
|
|
41
40
|
"@zerodev/sdk": "^5.5.10",
|
|
42
41
|
"viem": "^2.37.6"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smart-account-flow-test.test.d.ts","sourceRoot":"","sources":["../../src/smart-account-flow-test.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { createPublicClient, http } from 'viem';
|
|
2
|
-
import { it } from 'vitest';
|
|
3
|
-
import { TESTNET } from '../contracts.js';
|
|
4
|
-
import { SpaceRegistryAbi } from './abis/index.js';
|
|
5
|
-
import { createEntity } from './graph/create-entity.js';
|
|
6
|
-
import * as personalSpace from './personal-space/index.js';
|
|
7
|
-
import { getSmartAccountWalletClient, TESTNET_RPC_URL } from './smart-wallet.js';
|
|
8
|
-
/**
|
|
9
|
-
* Converts a bytes16 hex space ID to a UUID string (without dashes).
|
|
10
|
-
*/
|
|
11
|
-
function hexToUuid(hex) {
|
|
12
|
-
return hex.slice(2, 34).toLowerCase();
|
|
13
|
-
}
|
|
14
|
-
it.skip('should publish an edit to personal space via smart account', async () => {
|
|
15
|
-
const privateKeyEnv = process.env.PRIVY_PRIVATE_KEY;
|
|
16
|
-
if (!privateKeyEnv) {
|
|
17
|
-
throw new Error('PRIVY_PRIVATE_KEY environment variable is required.');
|
|
18
|
-
}
|
|
19
|
-
const privateKey = (privateKeyEnv.startsWith('0x') ? privateKeyEnv : `0x${privateKeyEnv}`);
|
|
20
|
-
// Get smart account wallet client (Safe + Pimlico paymaster)
|
|
21
|
-
const smartAccount = await getSmartAccountWalletClient({ privateKey });
|
|
22
|
-
const smartAccountAddress = smartAccount.account.address;
|
|
23
|
-
console.log('Smart account address:', smartAccountAddress);
|
|
24
|
-
// Create a public client for reading contract state
|
|
25
|
-
const publicClient = createPublicClient({
|
|
26
|
-
transport: http(TESTNET_RPC_URL),
|
|
27
|
-
});
|
|
28
|
-
// Check if a personal space exists for this smart account address
|
|
29
|
-
const hasExistingSpace = await personalSpace.hasSpace({ address: smartAccountAddress });
|
|
30
|
-
if (!hasExistingSpace) {
|
|
31
|
-
throw new Error(`No personal space found for smart account address ${smartAccountAddress}. Create one first.`);
|
|
32
|
-
}
|
|
33
|
-
const spaceIdHex = (await publicClient.readContract({
|
|
34
|
-
address: TESTNET.SPACE_REGISTRY_ADDRESS,
|
|
35
|
-
abi: SpaceRegistryAbi,
|
|
36
|
-
functionName: 'addressToSpaceId',
|
|
37
|
-
args: [smartAccountAddress],
|
|
38
|
-
}));
|
|
39
|
-
const spaceId = hexToUuid(spaceIdHex);
|
|
40
|
-
console.log('spaceId (UUID)', spaceId);
|
|
41
|
-
// Create an entity
|
|
42
|
-
const { ops, id: entityId } = createEntity({
|
|
43
|
-
name: 'Smart Account Test Entity',
|
|
44
|
-
});
|
|
45
|
-
console.log('entityId', entityId);
|
|
46
|
-
// Publish the edit to IPFS and get calldata
|
|
47
|
-
const { cid, editId, to, calldata } = await personalSpace.publishEdit({
|
|
48
|
-
name: 'Smart Account Test Edit',
|
|
49
|
-
spaceId,
|
|
50
|
-
ops,
|
|
51
|
-
author: spaceId,
|
|
52
|
-
network: 'TESTNET',
|
|
53
|
-
});
|
|
54
|
-
console.log('cid', cid);
|
|
55
|
-
console.log('editId', editId);
|
|
56
|
-
// Send transaction via smart account (account and chain are baked in)
|
|
57
|
-
const txHash = await smartAccount.sendTransaction({
|
|
58
|
-
to,
|
|
59
|
-
data: calldata,
|
|
60
|
-
});
|
|
61
|
-
console.log('txHash', txHash);
|
|
62
|
-
const receipt = await publicClient.waitForTransactionReceipt({
|
|
63
|
-
hash: txHash,
|
|
64
|
-
});
|
|
65
|
-
console.log('receipt status', receipt.status);
|
|
66
|
-
if (receipt.status === 'reverted') {
|
|
67
|
-
throw new Error(`Transaction reverted: ${txHash}`);
|
|
68
|
-
}
|
|
69
|
-
console.log('Successfully published edit to space', spaceId, 'via smart account');
|
|
70
|
-
}, 60000);
|
|
71
|
-
//# sourceMappingURL=smart-account-flow-test.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smart-account-flow-test.test.js","sourceRoot":"","sources":["../../src/smart-account-flow-test.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { Hex, WalletClient } from 'viem';
|
|
2
|
-
import type { GeoSmartAccount } from './types.js';
|
|
3
|
-
export declare const TESTNET_RPC_URL = "https://rpc-geo-test-zc16z3tcvf.t.conduit.xyz";
|
|
4
|
-
/**
|
|
5
|
-
* Custom Safe contract addresses for Geo Testnet.
|
|
6
|
-
*
|
|
7
|
-
* Safe uses deterministic deployment, but the canonical deployer was never run
|
|
8
|
-
* on Geo Testnet (19411). The Safe contracts were deployed separately and
|
|
9
|
-
* landed at different addresses. We pass them explicitly to toSafeSmartAccount.
|
|
10
|
-
*
|
|
11
|
-
* Source of truth: curator-app packages/curator-utils/src/utils/smart-account-constants.ts
|
|
12
|
-
*/
|
|
13
|
-
export declare const GEO_TESTNET_SAFE_ADDRESSES: {
|
|
14
|
-
readonly safeModuleSetupAddress: Hex;
|
|
15
|
-
readonly safe4337ModuleAddress: Hex;
|
|
16
|
-
readonly safeProxyFactoryAddress: Hex;
|
|
17
|
-
readonly safeSingletonAddress: Hex;
|
|
18
|
-
readonly multiSendAddress: Hex;
|
|
19
|
-
readonly multiSendCallOnlyAddress: Hex;
|
|
20
|
-
};
|
|
21
|
-
type GetSmartAccountWalletClientParams = {
|
|
22
|
-
privateKey: Hex;
|
|
23
|
-
rpcUrl?: string;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Get a smart account wallet client for your Geo account.
|
|
27
|
-
*
|
|
28
|
-
* IMPORTANT: Be careful with your private key. Don't commit it to version control.
|
|
29
|
-
* You can get your private key using https://www.geobrowser.io/export-wallet
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```ts
|
|
33
|
-
* const smartAccountWalletClient = await getSmartAccountWalletClient({
|
|
34
|
-
* privateKey: '0x...',
|
|
35
|
-
* rpcUrl: '...', // optional
|
|
36
|
-
* });
|
|
37
|
-
* ```
|
|
38
|
-
* @param params – {@link GetSmartAccountWalletClientParams}
|
|
39
|
-
* @returns – {@link SmartAccountClient}
|
|
40
|
-
*/
|
|
41
|
-
export declare const getSmartAccountWalletClient: ({ privateKey, rpcUrl, }: GetSmartAccountWalletClientParams) => Promise<GeoSmartAccount>;
|
|
42
|
-
export declare const getWalletClient: ({ privateKey, rpcUrl, }: GetSmartAccountWalletClientParams) => Promise<WalletClient>;
|
|
43
|
-
export {};
|
|
44
|
-
//# sourceMappingURL=smart-wallet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"smart-wallet.d.ts","sourceRoot":"","sources":["../../src/smart-wallet.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,eAAe,kDAAkD,CAAC;AAQ/E;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B;qCACmC,GAAG;oCACJ,GAAG;sCACD,GAAG;mCACN,GAAG;+BACP,GAAG;uCACK,GAAG;CACrE,CAAC;AAEX,KAAK,iCAAiC,GAAG;IACvC,UAAU,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAyBF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,2BAA2B,GAAU,yBAG/C,iCAAiC,KAAG,OAAO,CAAC,eAAe,CA4C7D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,yBAGnC,iCAAiC,KAAG,OAAO,CAAC,YAAY,CAS1D,CAAC"}
|