near-safe 0.7.1 → 0.7.2

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.
@@ -2,4 +2,4 @@ export * from "./near-safe";
2
2
  export * from "./types";
3
3
  export * from "./util";
4
4
  export * from "./constants";
5
- export { Network, BaseTx, SignRequestData, populateTx } from "near-ca";
5
+ export { Network, BaseTx, SignRequestData, populateTx, NetworkFields, } from "near-ca";
@@ -1,5 +1,5 @@
1
1
  import { Address, Hash, PublicClient, Transport } from "viem";
2
- import { GasPrices, PaymasterData, UnsignedUserOperation, UserOperation, UserOperationReceipt } from "../types";
2
+ import { GasPrices, PaymasterData, SponsorshipPolicyData, UnsignedUserOperation, UserOperation, UserOperationReceipt } from "../types";
3
3
  type SponsorshipPolicy = {
4
4
  sponsorshipPolicyId: string;
5
5
  };
@@ -36,6 +36,7 @@ export declare class Erc4337Bundler {
36
36
  getGasPrice(): Promise<GasPrices>;
37
37
  getUserOpReceipt(userOpHash: Hash): Promise<UserOperationReceipt>;
38
38
  private _getUserOpReceiptInner;
39
+ getSponsorshipPolicies(): Promise<SponsorshipPolicyData[]>;
39
40
  }
40
41
  export declare function stripApiKey(error: unknown): string;
41
42
  export {};
@@ -60,6 +60,18 @@ class Erc4337Bundler {
60
60
  params: [userOpHash],
61
61
  }));
62
62
  }
63
+ // New method to query sponsorship policies
64
+ async getSponsorshipPolicies() {
65
+ const url = `https://api.pimlico.io/v2/account/sponsorship_policies?apikey=${this.apiKey}`;
66
+ const allPolocies = await handleRequest(async () => {
67
+ const response = await fetch(url);
68
+ if (!response.ok) {
69
+ throw new Error(`HTTP error! status: ${response.status}: ${response.statusText}`);
70
+ }
71
+ return response.json();
72
+ });
73
+ return allPolocies.data.filter((p) => p.chain_ids.allowlist.includes(this.chainId));
74
+ }
63
75
  }
64
76
  exports.Erc4337Bundler = Erc4337Bundler;
65
77
  async function handleRequest(clientMethod) {
@@ -3,7 +3,7 @@ import { FinalExecutionOutcome } from "near-api-js/lib/providers";
3
3
  import { NearEthAdapter, SignRequestData } from "near-ca";
4
4
  import { Address, Hash, Hex } from "viem";
5
5
  import { SafeContractSuite } from "./lib/safe";
6
- import { DecodedMultisend, EncodedTxData, EvmTransactionData, MetaTransaction, UserOperation, UserOperationReceipt } from "./types";
6
+ import { DecodedMultisend, EncodedTxData, EvmTransactionData, MetaTransaction, SponsorshipPolicyData, UserOperation, UserOperationReceipt } from "./types";
7
7
  export interface NearSafeConfig {
8
8
  accountId: string;
9
9
  mpcContractId: string;
@@ -178,4 +178,5 @@ export declare class NearSafe {
178
178
  payload: number[];
179
179
  hash: Hash;
180
180
  }>;
181
+ policyForChainId(chainId: number): Promise<SponsorshipPolicyData[]>;
181
182
  }
@@ -92,7 +92,6 @@ class NearSafe {
92
92
  if (transactions.length === 0) {
93
93
  throw new Error("Empty transaction set!");
94
94
  }
95
- console.log(`Building UserOp on chainId ${chainId} with ${transactions.length} transaction(s)`);
96
95
  const bundler = this.bundlerForChainId(chainId);
97
96
  const [gasFees, nonce, safeDeployed] = await Promise.all([
98
97
  bundler.getGasPrice(),
@@ -330,5 +329,9 @@ class NearSafe {
330
329
  }
331
330
  }
332
331
  }
332
+ async policyForChainId(chainId) {
333
+ const bundler = this.bundlerForChainId(chainId);
334
+ return bundler.getSponsorshipPolicies();
335
+ }
333
336
  }
334
337
  exports.NearSafe = NearSafe;
@@ -246,4 +246,31 @@ export interface EncodedTxData {
246
246
  request: SignArgs;
247
247
  }>;
248
248
  }
249
+ export interface SponsorshipPoliciesResponse {
250
+ has_more: boolean;
251
+ data: SponsorshipPolicyData[];
252
+ }
253
+ export interface SponsorshipPolicyData {
254
+ id: string;
255
+ policy_name: string;
256
+ limits: PolicyLimits;
257
+ start_time: string;
258
+ end_time: string;
259
+ chain_ids: ChainIds;
260
+ policy_status: string;
261
+ created_at: string;
262
+ }
263
+ export interface PolicyLimits {
264
+ global: GlobalLimits;
265
+ }
266
+ export interface GlobalLimits {
267
+ user_operation_spending: SpendingLimit;
268
+ }
269
+ export interface SpendingLimit {
270
+ amount: number;
271
+ currency: string;
272
+ }
273
+ export interface ChainIds {
274
+ allowlist: number[];
275
+ }
249
276
  export {};
@@ -2,4 +2,4 @@ export * from "./near-safe";
2
2
  export * from "./types";
3
3
  export * from "./util";
4
4
  export * from "./constants";
5
- export { Network, BaseTx, SignRequestData, populateTx } from "near-ca";
5
+ export { Network, BaseTx, SignRequestData, populateTx, NetworkFields, } from "near-ca";
package/dist/esm/index.js CHANGED
@@ -2,4 +2,4 @@ export * from "./near-safe";
2
2
  export * from "./types";
3
3
  export * from "./util";
4
4
  export * from "./constants";
5
- export { Network, populateTx } from "near-ca";
5
+ export { Network, populateTx, } from "near-ca";
@@ -1,5 +1,5 @@
1
1
  import { Address, Hash, PublicClient, Transport } from "viem";
2
- import { GasPrices, PaymasterData, UnsignedUserOperation, UserOperation, UserOperationReceipt } from "../types";
2
+ import { GasPrices, PaymasterData, SponsorshipPolicyData, UnsignedUserOperation, UserOperation, UserOperationReceipt } from "../types";
3
3
  type SponsorshipPolicy = {
4
4
  sponsorshipPolicyId: string;
5
5
  };
@@ -36,6 +36,7 @@ export declare class Erc4337Bundler {
36
36
  getGasPrice(): Promise<GasPrices>;
37
37
  getUserOpReceipt(userOpHash: Hash): Promise<UserOperationReceipt>;
38
38
  private _getUserOpReceiptInner;
39
+ getSponsorshipPolicies(): Promise<SponsorshipPolicyData[]>;
39
40
  }
40
41
  export declare function stripApiKey(error: unknown): string;
41
42
  export {};
@@ -60,6 +60,18 @@ export class Erc4337Bundler {
60
60
  params: [userOpHash],
61
61
  }));
62
62
  }
63
+ // New method to query sponsorship policies
64
+ async getSponsorshipPolicies() {
65
+ const url = `https://api.pimlico.io/v2/account/sponsorship_policies?apikey=${this.apiKey}`;
66
+ const allPolocies = await handleRequest(async () => {
67
+ const response = await fetch(url);
68
+ if (!response.ok) {
69
+ throw new Error(`HTTP error! status: ${response.status}: ${response.statusText}`);
70
+ }
71
+ return response.json();
72
+ });
73
+ return allPolocies.data.filter((p) => p.chain_ids.allowlist.includes(this.chainId));
74
+ }
63
75
  }
64
76
  async function handleRequest(clientMethod) {
65
77
  try {
@@ -3,7 +3,7 @@ import { FinalExecutionOutcome } from "near-api-js/lib/providers";
3
3
  import { NearEthAdapter, SignRequestData } from "near-ca";
4
4
  import { Address, Hash, Hex } from "viem";
5
5
  import { SafeContractSuite } from "./lib/safe";
6
- import { DecodedMultisend, EncodedTxData, EvmTransactionData, MetaTransaction, UserOperation, UserOperationReceipt } from "./types";
6
+ import { DecodedMultisend, EncodedTxData, EvmTransactionData, MetaTransaction, SponsorshipPolicyData, UserOperation, UserOperationReceipt } from "./types";
7
7
  export interface NearSafeConfig {
8
8
  accountId: string;
9
9
  mpcContractId: string;
@@ -178,4 +178,5 @@ export declare class NearSafe {
178
178
  payload: number[];
179
179
  hash: Hash;
180
180
  }>;
181
+ policyForChainId(chainId: number): Promise<SponsorshipPolicyData[]>;
181
182
  }
@@ -95,7 +95,6 @@ export class NearSafe {
95
95
  if (transactions.length === 0) {
96
96
  throw new Error("Empty transaction set!");
97
97
  }
98
- console.log(`Building UserOp on chainId ${chainId} with ${transactions.length} transaction(s)`);
99
98
  const bundler = this.bundlerForChainId(chainId);
100
99
  const [gasFees, nonce, safeDeployed] = await Promise.all([
101
100
  bundler.getGasPrice(),
@@ -333,4 +332,8 @@ export class NearSafe {
333
332
  }
334
333
  }
335
334
  }
335
+ async policyForChainId(chainId) {
336
+ const bundler = this.bundlerForChainId(chainId);
337
+ return bundler.getSponsorshipPolicies();
338
+ }
336
339
  }
@@ -246,4 +246,31 @@ export interface EncodedTxData {
246
246
  request: SignArgs;
247
247
  }>;
248
248
  }
249
+ export interface SponsorshipPoliciesResponse {
250
+ has_more: boolean;
251
+ data: SponsorshipPolicyData[];
252
+ }
253
+ export interface SponsorshipPolicyData {
254
+ id: string;
255
+ policy_name: string;
256
+ limits: PolicyLimits;
257
+ start_time: string;
258
+ end_time: string;
259
+ chain_ids: ChainIds;
260
+ policy_status: string;
261
+ created_at: string;
262
+ }
263
+ export interface PolicyLimits {
264
+ global: GlobalLimits;
265
+ }
266
+ export interface GlobalLimits {
267
+ user_operation_spending: SpendingLimit;
268
+ }
269
+ export interface SpendingLimit {
270
+ amount: number;
271
+ currency: string;
272
+ }
273
+ export interface ChainIds {
274
+ allowlist: number[];
275
+ }
249
276
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "near-safe",
3
- "version": "0.7.1",
3
+ "version": "0.7.2",
4
4
  "license": "MIT",
5
5
  "description": "An SDK for controlling Ethereum Smart Accounts via ERC4337 from a Near Account.",
6
6
  "author": "bh2smith",