@graphprotocol/graph-auth-kit 7.8.1

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 (85) hide show
  1. package/README.md +303 -0
  2. package/dist/Components/ConnectModal.d.ts +2 -0
  3. package/dist/Components/ConnectModal.d.ts.map +1 -0
  4. package/dist/Components/Connected.d.ts +33 -0
  5. package/dist/Components/Connected.d.ts.map +1 -0
  6. package/dist/Components/ConnectorOption.d.ts +7 -0
  7. package/dist/Components/ConnectorOption.d.ts.map +1 -0
  8. package/dist/Components/Disconnected.d.ts +28 -0
  9. package/dist/Components/Disconnected.d.ts.map +1 -0
  10. package/dist/Components/MultisigSignerOptions.d.ts +2 -0
  11. package/dist/Components/MultisigSignerOptions.d.ts.map +1 -0
  12. package/dist/Components/PrimaryConnectOptions.d.ts +2 -0
  13. package/dist/Components/PrimaryConnectOptions.d.ts.map +1 -0
  14. package/dist/Components/SafeInputForm.d.ts +2 -0
  15. package/dist/Components/SafeInputForm.d.ts.map +1 -0
  16. package/dist/Components/SafeSelection.d.ts +2 -0
  17. package/dist/Components/SafeSelection.d.ts.map +1 -0
  18. package/dist/Components/SwitchChain.d.ts +24 -0
  19. package/dist/Components/SwitchChain.d.ts.map +1 -0
  20. package/dist/Components/index.d.ts +4 -0
  21. package/dist/Components/index.d.ts.map +1 -0
  22. package/dist/GraphAuthKit.context.d.ts +130 -0
  23. package/dist/GraphAuthKit.context.d.ts.map +1 -0
  24. package/dist/GraphAuthKitInner.context-B3nCqd7x.js +629 -0
  25. package/dist/client.d.ts +12519 -0
  26. package/dist/client.d.ts.map +1 -0
  27. package/dist/constants.d.ts +366 -0
  28. package/dist/constants.d.ts.map +1 -0
  29. package/dist/ens/hooks/index.d.ts +5 -0
  30. package/dist/ens/hooks/index.d.ts.map +1 -0
  31. package/dist/ens/hooks/useGraphAuthKitAvatar.d.ts +55 -0
  32. package/dist/ens/hooks/useGraphAuthKitAvatar.d.ts.map +1 -0
  33. package/dist/ens/hooks/useGraphAuthKitAvatars.d.ts +29 -0
  34. package/dist/ens/hooks/useGraphAuthKitAvatars.d.ts.map +1 -0
  35. package/dist/ens/hooks/useGraphAuthKitEnsName.d.ts +52 -0
  36. package/dist/ens/hooks/useGraphAuthKitEnsName.d.ts.map +1 -0
  37. package/dist/ens/hooks/useGraphAuthKitEnsNames.d.ts +28 -0
  38. package/dist/ens/hooks/useGraphAuthKitEnsNames.d.ts.map +1 -0
  39. package/dist/ens/index.d.ts +2 -0
  40. package/dist/ens/index.d.ts.map +1 -0
  41. package/dist/ens/index.js +7 -0
  42. package/dist/errors.d.ts +21 -0
  43. package/dist/errors.d.ts.map +1 -0
  44. package/dist/hooks-D5Hw1GuR.js +511 -0
  45. package/dist/hooks.d.ts +125 -0
  46. package/dist/hooks.d.ts.map +1 -0
  47. package/dist/index.d.ts +11 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +141 -0
  50. package/dist/inner/GraphAuthKitInner.context.d.ts +121 -0
  51. package/dist/inner/GraphAuthKitInner.context.d.ts.map +1 -0
  52. package/dist/inner/hooks.d.ts +13 -0
  53. package/dist/inner/hooks.d.ts.map +1 -0
  54. package/dist/inner/index.d.ts +3 -0
  55. package/dist/inner/index.d.ts.map +1 -0
  56. package/dist/safe/SafeEthersSigner.d.ts +39 -0
  57. package/dist/safe/SafeEthersSigner.d.ts.map +1 -0
  58. package/dist/safe/SafeMinimal.abi.d.ts +80 -0
  59. package/dist/safe/SafeMinimal.abi.d.ts.map +1 -0
  60. package/dist/safe/constants.d.ts +27 -0
  61. package/dist/safe/constants.d.ts.map +1 -0
  62. package/dist/safe/index.d.ts +5 -0
  63. package/dist/safe/index.d.ts.map +1 -0
  64. package/dist/safe/index.js +19 -0
  65. package/dist/safe/safeViemActions.d.ts +4 -0
  66. package/dist/safe/safeViemActions.d.ts.map +1 -0
  67. package/dist/safe/useWaitForSafeTransaction.d.ts +10 -0
  68. package/dist/safe/useWaitForSafeTransaction.d.ts.map +1 -0
  69. package/dist/safe/utils.d.ts +51 -0
  70. package/dist/safe/utils.d.ts.map +1 -0
  71. package/dist/test-harness/MockGraphAuthKit.context.d.ts +103 -0
  72. package/dist/test-harness/MockGraphAuthKit.context.d.ts.map +1 -0
  73. package/dist/test-harness/index.d.ts +3 -0
  74. package/dist/test-harness/index.d.ts.map +1 -0
  75. package/dist/test-harness/index.js +6 -0
  76. package/dist/test-harness/utils.d.ts +135 -0
  77. package/dist/test-harness/utils.d.ts.map +1 -0
  78. package/dist/types.d.ts +37 -0
  79. package/dist/types.d.ts.map +1 -0
  80. package/dist/useGraphAuthKitEnsNames-DHMYvwgX.js +211 -0
  81. package/dist/useWaitForSafeTransaction-YeFsJ9A5.js +46 -0
  82. package/dist/utils-Br1fBg8o.js +897 -0
  83. package/dist/utils.d.ts +20 -0
  84. package/dist/utils.d.ts.map +1 -0
  85. package/package.json +98 -0
package/dist/index.js ADDED
@@ -0,0 +1,141 @@
1
+ "use client";
2
+ import { m, A, k, B, D, w, G, L, n, o, p, M, O, v, R, u, a, S, q, r, s, t, l, g, j, x, I, J, c, b, f, h, E, C, F, H, e, i, y, d, z } from "./GraphAuthKitInner.context-B3nCqd7x.js";
3
+ import { G as G2, a as a2, M as M2, b as b2, d as d2, u as u2 } from "./utils-Br1fBg8o.js";
4
+ import { a as useGraphAuthKitAccount, b as useGraphAuthKitConnector } from "./hooks-D5Hw1GuR.js";
5
+ import { S as S2, m as m2, d as d3, c as c2, e as e2, f as f2, g as g2, u as u3 } from "./hooks-D5Hw1GuR.js";
6
+ import { g as g3, u as u4, w as w2 } from "./useWaitForSafeTransaction-YeFsJ9A5.js";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { Alert, ExperimentalButton } from "@graphprotocol/gds";
9
+ import { useConfig, useSwitchChain } from "wagmi";
10
+ import { u as u5, a as a3, b as b3, c as c3 } from "./useGraphAuthKitEnsNames-DHMYvwgX.js";
11
+ function Connected({ children }) {
12
+ const account = useGraphAuthKitAccount();
13
+ const connector = useGraphAuthKitConnector();
14
+ if (account.address == null || account.chain == null || connector == null) {
15
+ return null;
16
+ }
17
+ return children({
18
+ address: account.address,
19
+ chain: account.chain,
20
+ connector,
21
+ connectedWithMultisig: account.connectedWithMultisig
22
+ });
23
+ }
24
+ function Disconnected({ children }) {
25
+ const account = useGraphAuthKitAccount();
26
+ if (account.address == null || account.chain == null) {
27
+ return children;
28
+ }
29
+ return null;
30
+ }
31
+ function SwitchChain(props) {
32
+ const conf = useConfig();
33
+ const account = useGraphAuthKitAccount();
34
+ const { switchChain, error } = useSwitchChain({
35
+ config: conf,
36
+ mutation: {
37
+ onSuccess(data, variables) {
38
+ var _a;
39
+ void ((_a = props.onSuccess) == null ? void 0 : _a.call(props, data, variables));
40
+ }
41
+ }
42
+ });
43
+ if (account.connector == null || account.chainId === props.requestedChain.id) {
44
+ return null;
45
+ }
46
+ return /* @__PURE__ */ jsx(
47
+ Alert,
48
+ {
49
+ severity: "warning",
50
+ title: `Switch to ${props.requestedChain.name} network`,
51
+ description: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-2", children: [
52
+ /* @__PURE__ */ jsxs("p", { className: "text-p16", children: [
53
+ "You need to be connected to the ",
54
+ props.requestedChain.name,
55
+ " network to perform this action."
56
+ ] }),
57
+ error != null ? /* @__PURE__ */ jsx("p", { className: "text-c14 normal-case text-red/88", children: error.message }) : null
58
+ ] }),
59
+ PrimaryCTA: /* @__PURE__ */ jsxs(
60
+ ExperimentalButton,
61
+ {
62
+ variant: "secondary",
63
+ onClick: () => switchChain({ chainId: props.requestedChain.id, connector: account.connector }),
64
+ children: [
65
+ "Switch to ",
66
+ props.requestedChain.name
67
+ ]
68
+ }
69
+ )
70
+ }
71
+ );
72
+ }
73
+ export {
74
+ m as AUTH_STORAGE_KEY,
75
+ A as ApiKitUrlMap,
76
+ k as BuildClientArgs,
77
+ B as BuildPublicClientArgs,
78
+ Connected,
79
+ D as DefChain,
80
+ Disconnected,
81
+ w as GraphAuthKitConnector,
82
+ G2 as GraphAuthKitContext,
83
+ G as GraphAuthKitProps,
84
+ a2 as GraphAuthKitProvider,
85
+ L as L1Chain,
86
+ n as L1ChainTestnet,
87
+ o as L2Chain,
88
+ p as L2ChainTestnet,
89
+ M as MULTISIG_AUTH_STORAGE_KEY,
90
+ M2 as MockGraphAuthKitProvider,
91
+ O as OptionalGatewayApiKey,
92
+ v as OptionalSafeApiKey,
93
+ R as RequiredInfuraKey,
94
+ u as RequiredWalletConnectProjectId,
95
+ S2 as SafeEthersSigner,
96
+ a as SafeSupportedNetworkNames,
97
+ S as SafeSupportedNetworks,
98
+ q as SupportedClientChainId,
99
+ r as SupportedClientChains,
100
+ s as SupportedL1ClientChainId,
101
+ t as SupportedL2ClientChainId,
102
+ SwitchChain,
103
+ l as buildClient,
104
+ g as buildInfuraHttpTransport,
105
+ b2 as buildMockProviderState,
106
+ j as buildPublicClient,
107
+ x as chainIsSupportedChain,
108
+ I as clientToProvider,
109
+ J as connectedWalletIsEoA,
110
+ c as createApiKit,
111
+ b as createSafe,
112
+ d2 as disconnectedMockState,
113
+ f as fetchOwnedSafes,
114
+ g3 as getSafeTransaction,
115
+ h as isBuildPublicClientArgs,
116
+ E as isChainL1,
117
+ C as isChainL2,
118
+ F as isChainMainnet,
119
+ H as isChainTestnet,
120
+ e as isSafeOwner,
121
+ i as isSafeSupportedNetwork,
122
+ y as isSupportedChainId,
123
+ d as isValidSafe,
124
+ z as mapChainIdToChain,
125
+ m2 as mapReceipt,
126
+ d3 as useAuthAccount,
127
+ c2 as useClientToEthersSigner,
128
+ u2 as useGraphAuthKit,
129
+ useGraphAuthKitAccount,
130
+ e2 as useGraphAuthKitAccountEffect,
131
+ u5 as useGraphAuthKitAvatar,
132
+ a3 as useGraphAuthKitAvatars,
133
+ useGraphAuthKitConnector,
134
+ b3 as useGraphAuthKitEnsName,
135
+ c3 as useGraphAuthKitEnsNames,
136
+ f2 as useGraphAuthKitWalletClient,
137
+ g2 as useGraphAuthKitWriteContract,
138
+ u3 as useMultisigInfo,
139
+ u4 as useWaitForSafeTransaction,
140
+ w2 as waitForSafeTransation
141
+ };
@@ -0,0 +1,121 @@
1
+ import { EnsResolverConfig } from '@graphprotocol/ens';
2
+ import { Dispatch, ReactNode } from 'react';
3
+ import { Address } from 'viem';
4
+ import { Config, Connector, ResolvedRegister } from 'wagmi';
5
+ import { z } from 'zod';
6
+ import { SignerError } from '../errors';
7
+ import { SafeSupportedNetworks } from '../safe';
8
+ import { OptionalGatewayApiKey, RequiredInfuraKey } from '../types';
9
+ export declare const GraphAuthKitModalState: readonly ["primary", "safe_entry", "safe_eoa_signer"];
10
+ export type GraphAuthKitModalState = (typeof GraphAuthKitModalState)[number];
11
+ export declare const MultisigSchema: z.ZodObject<{
12
+ network: z.ZodCustom<1 | 11155111 | 42161, 1 | 11155111 | 42161>;
13
+ address: z.ZodString;
14
+ enteredSafeIsValid: z.ZodOptional<z.ZodBoolean>;
15
+ }, z.core.$strip>;
16
+ export type MultisigSchema = z.infer<typeof MultisigSchema>;
17
+ export type GraphAuthKitInnerState = {
18
+ /** Infura key passed down from the top-level provider/app */
19
+ _infuraKey: RequiredInfuraKey['infuraKey'];
20
+ /** Gateway API key passed down from the top-level provider/app */
21
+ _gatewayApiKey: OptionalGatewayApiKey['gatewayApiKey'];
22
+ /** Safe API key passed down from the top-level provider/app */
23
+ _safeApiKey?: string;
24
+ /** Access to a EnsResolverConfig instance. */
25
+ _ensResolver: EnsResolverConfig;
26
+ /** The ConnectModal open state */
27
+ _connectModalOpen: boolean;
28
+ /** Open/close the ConnectModal */
29
+ _setConnectModalOpen: Dispatch<boolean>;
30
+ /**
31
+ * The ConnectModal title to display.
32
+ * @default "Connect your wallet"
33
+ */
34
+ _modalTitle: ReactNode;
35
+ _setModalTitle: Dispatch<ReactNode>;
36
+ /** The ConnectModal subtitle to display */
37
+ _modalSubtitle?: ReactNode;
38
+ _setModalSubtitle: Dispatch<ReactNode | undefined>;
39
+ /** Allows the `GraphAuthKit` to set the URL to set after the user connects */
40
+ _setAfterConnectUrl: Dispatch<string | undefined>;
41
+ /**
42
+ * Which Wallet connect options to display based off the current ConnectModal state.
43
+ * - 'primary' -> display the primary wallet connect options
44
+ * - 'safe_entry' -> the user selected to connect via their Safe multisig. Display the multisig entry form
45
+ * - 'safe_eoa_signer' -> let the user connect their EoA that is a signer on their entered safe
46
+ * @default primary
47
+ */
48
+ _modalState: GraphAuthKitModalState;
49
+ /** Set the current modal state of which page in the modal to display */
50
+ _setModalState: Dispatch<GraphAuthKitModalState>;
51
+ /**
52
+ * If the user is authenticating with a Safe, this is the entered Safe information.
53
+ * @default null
54
+ */
55
+ _enteredMultisigInfo?: MultisigSchema;
56
+ _setSafeInfo: Dispatch<MultisigSchema | undefined>;
57
+ /**
58
+ * The user has selected a Wallet connector option and is currently authenticating.
59
+ * If true, displays a loading indicator in the modal
60
+ */
61
+ _authenticating: boolean;
62
+ _setAuthenticating: Dispatch<boolean>;
63
+ /** If the connection fails, display the error message */
64
+ _connectFailureMessage?: SignerError;
65
+ /** Takes the wallet connector the user selected in the modal and connects the user to the wagmi context */
66
+ _connect(connector: Connector): void | Promise<void>;
67
+ /**
68
+ * If the user is connecting via a Safe multisig, take their EoA signer, connect it,
69
+ * and connect the Safe instance to the wagmi context.
70
+ */
71
+ _connectMultisig(params: {
72
+ connector: Connector;
73
+ network: SafeSupportedNetworks;
74
+ address: Address;
75
+ }): void | Promise<void>;
76
+ /** The user has disconnected their wallet. Reset the state. */
77
+ _reset(): void;
78
+ };
79
+ export declare const defInnerState: {
80
+ readonly _infuraKey: "";
81
+ readonly _gatewayApiKey: null;
82
+ readonly _safeApiKey: undefined;
83
+ readonly _ensResolver: {
84
+ readonly resolveEnsName: () => Promise<null>;
85
+ readonly resolveEnsNamesBatch: () => Promise<{}>;
86
+ readonly resolveAvatar: () => Promise<null>;
87
+ readonly resolveAvatarsBatch: () => Promise<{}>;
88
+ };
89
+ readonly _connectModalOpen: false;
90
+ readonly _setConnectModalOpen: () => void;
91
+ readonly _modalTitle: "Connect your wallet";
92
+ readonly _setModalTitle: () => void;
93
+ readonly _setModalSubtitle: () => void;
94
+ readonly _setAfterConnectUrl: () => void;
95
+ readonly _modalState: "primary";
96
+ readonly _setModalState: () => void;
97
+ readonly _setSafeInfo: () => void;
98
+ readonly _authenticating: false;
99
+ readonly _setAuthenticating: () => void;
100
+ readonly _connect: () => void;
101
+ readonly _connectMultisig: () => void;
102
+ readonly _reset: () => void;
103
+ };
104
+ export declare const GraphAuthKitInnerContext: import('react').Context<GraphAuthKitInnerState>;
105
+ /**
106
+ * We expose a minimal GraphAuthKit context state exported from this library.
107
+ * That way the implementer only uses the `useGraphAuthKit` hook to open/close the connect modal.
108
+ * Wagmi hooks should be used for all other wagmi connected auth state.
109
+ * This hook is not exported from this library, but is used in the ConnectModal internals
110
+ * to control the state of the modal itself.
111
+ */
112
+ export declare function useGraphAuthKitInnerContext(): GraphAuthKitInnerState;
113
+ export type GraphAuthKitInnerContextProviderProps<config extends Config = ResolvedRegister['config']> = Readonly<{
114
+ config: config;
115
+ infuraKey: RequiredInfuraKey['infuraKey'];
116
+ gatewayApiKey: OptionalGatewayApiKey['gatewayApiKey'];
117
+ safeApiKey?: string;
118
+ children: ReactNode;
119
+ }>;
120
+ export declare function GraphAuthKitInnerContextProvider<const config extends Config = ResolvedRegister['config']>({ config, infuraKey, gatewayApiKey, safeApiKey, children, }: GraphAuthKitInnerContextProviderProps): import("react/jsx-runtime").JSX.Element;
121
+ //# sourceMappingURL=GraphAuthKitInner.context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphAuthKitInner.context.d.ts","sourceRoot":"","sources":["../../src/inner/GraphAuthKitInner.context.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { GraphAuthKitConnectorOpt } from '../types';
2
+ /**
3
+ * Displays a list of the configured connectors for the user to choose to connect with.
4
+ * Includes:
5
+ * - the injected/installed wallets the user browser has (MetaMask, Rabby, Rainbow, etc)
6
+ * - Coinbase Wallet
7
+ * - WalletConnect
8
+ * - Safe -> we add this as it is not a configured connector due to how we handle multisig connections
9
+ * @returns a list of available wallet connections the user can choose from to connect
10
+ */
11
+ export declare function usePrimaryConnectOptions(): readonly GraphAuthKitConnectorOpt[];
12
+ export declare function useMultisigConnectOptions(): readonly GraphAuthKitConnectorOpt[];
13
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/inner/hooks.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAyB,KAAK,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAI/E;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,IAAI,SAAS,wBAAwB,EAAE,CA8C9E;AAED,wBAAgB,yBAAyB,IAAI,SAAS,wBAAwB,EAAE,CAsC/E"}
@@ -0,0 +1,3 @@
1
+ export * from './GraphAuthKitInner.context';
2
+ export * from './hooks';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/inner/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,SAAS,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { TransactionReceipt, TransactionRequest, TransactionResponse } from '@ethersproject/abstract-provider';
2
+ import { VoidSigner } from '@ethersproject/abstract-signer';
3
+ import { Deferrable } from '@ethersproject/properties';
4
+ import { default as SafeApiKit } from '@safe-global/api-kit';
5
+ import { default as Safe } from '@safe-global/protocol-kit';
6
+ import { OperationType, SafeTransactionData } from '@safe-global/types-kit';
7
+ import { providers } from 'ethers';
8
+ import { SafeSupportedNetworks } from './constants';
9
+ export declare const mapReceipt: (receipt: providers.TransactionReceipt, safeTx: SafeTransactionData) => TransactionReceipt;
10
+ export interface SafeTransactionResponse extends TransactionResponse {
11
+ operation: OperationType;
12
+ }
13
+ export interface SafeEthersSignerOptions {
14
+ pollingDelay?: number;
15
+ apiKey?: string;
16
+ }
17
+ export declare class SafeEthersSigner extends VoidSigner {
18
+ readonly safeAddress: string;
19
+ readonly signerAddress: string;
20
+ readonly chainId: SafeSupportedNetworks;
21
+ readonly options?: SafeEthersSignerOptions;
22
+ safe?: Safe;
23
+ apiKit?: SafeApiKit;
24
+ constructor(safeAddress: string, provider: providers.Web3Provider, signerAddress: string, chainId: SafeSupportedNetworks, options?: SafeEthersSignerOptions);
25
+ createSafeInstance(): Promise<Safe>;
26
+ getSafeInstance(): Promise<Safe>;
27
+ createApiKitInstance(): Promise<SafeApiKit>;
28
+ getApiKitInstance(): Promise<SafeApiKit>;
29
+ getNextNonce(): Promise<number>;
30
+ buildTransactionResponse(safeTxHash: string, safeTx: SafeTransactionData): Promise<SafeTransactionResponse>;
31
+ /**
32
+ * Populates all fields in a transaction, signs it and sends it to the Safe transaction service
33
+ *
34
+ * @param transaction - The transaction what should be send
35
+ * @returns A promise that resolves to a SafeTransactionReponse, that contains all the information of the transaction.
36
+ */
37
+ sendTransaction(transaction: Deferrable<TransactionRequest>): Promise<SafeTransactionResponse>;
38
+ }
39
+ //# sourceMappingURL=SafeEthersSigner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeEthersSigner.d.ts","sourceRoot":"","sources":["../../src/safe/SafeEthersSigner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACnH,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAA;AAClD,OAAO,IAA8B,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAmC,MAAM,wBAAwB,CAAA;AACjH,OAAO,EAAa,KAAK,SAAS,EAAS,MAAM,QAAQ,CAAA;AAEzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAgGxD,eAAO,MAAM,UAAU,GAAI,SAAS,SAAS,CAAC,kBAAkB,EAAE,QAAQ,mBAAmB,uBAK5F,CAAA;AAID,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,SAAS,EAAE,aAAa,CAAA;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAGD,qBAAa,gBAAiB,SAAQ,UAAU;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAA;IAC1C,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,MAAM,CAAC,EAAE,UAAU,CAAA;gBAGjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,SAAS,CAAC,YAAY,EAChC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,CAAC,EAAE,uBAAuB;IAS7B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC,oBAAoB;IAId,iBAAiB;IAOjB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAU/B,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAqCjH;;;;;OAKG;IACY,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAkD9G"}
@@ -0,0 +1,80 @@
1
+ declare const _default: readonly [{
2
+ readonly inputs: readonly [];
3
+ readonly payable: false;
4
+ readonly stateMutability: "nonpayable";
5
+ readonly type: "constructor";
6
+ }, {
7
+ readonly constant: true;
8
+ readonly inputs: readonly [];
9
+ readonly name: "getThreshold";
10
+ readonly outputs: readonly [{
11
+ readonly internalType: "uint256";
12
+ readonly name: "";
13
+ readonly type: "uint256";
14
+ }];
15
+ readonly payable: false;
16
+ readonly stateMutability: "view";
17
+ readonly type: "function";
18
+ }, {
19
+ readonly constant: true;
20
+ readonly inputs: readonly [];
21
+ readonly name: "getOwners";
22
+ readonly outputs: readonly [{
23
+ readonly internalType: "address[]";
24
+ readonly name: "";
25
+ readonly type: "address[]";
26
+ }];
27
+ readonly payable: false;
28
+ readonly stateMutability: "view";
29
+ readonly type: "function";
30
+ }, {
31
+ readonly constant: false;
32
+ readonly inputs: readonly [{
33
+ readonly internalType: "bytes";
34
+ readonly name: "_data";
35
+ readonly type: "bytes";
36
+ }, {
37
+ readonly internalType: "bytes";
38
+ readonly name: "_signature";
39
+ readonly type: "bytes";
40
+ }];
41
+ readonly name: "isValidSignature";
42
+ readonly outputs: readonly [{
43
+ readonly internalType: "bytes4";
44
+ readonly name: "";
45
+ readonly type: "bytes4";
46
+ }];
47
+ readonly payable: false;
48
+ readonly stateMutability: "nonpayable";
49
+ readonly type: "function";
50
+ }, {
51
+ readonly constant: true;
52
+ readonly inputs: readonly [];
53
+ readonly name: "nonce";
54
+ readonly outputs: readonly [{
55
+ readonly internalType: "uint256";
56
+ readonly name: "";
57
+ readonly type: "uint256";
58
+ }];
59
+ readonly payable: false;
60
+ readonly stateMutability: "view";
61
+ readonly type: "function";
62
+ }, {
63
+ readonly constant: true;
64
+ readonly inputs: readonly [{
65
+ readonly internalType: "address";
66
+ readonly name: "owner";
67
+ readonly type: "address";
68
+ }];
69
+ readonly name: "isOwner";
70
+ readonly outputs: readonly [{
71
+ readonly internalType: "bool";
72
+ readonly name: "";
73
+ readonly type: "bool";
74
+ }];
75
+ readonly payable: false;
76
+ readonly stateMutability: "view";
77
+ readonly type: "function";
78
+ }];
79
+ export default _default;
80
+ //# sourceMappingURL=SafeMinimal.abi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SafeMinimal.abi.d.ts","sourceRoot":"","sources":["../../src/safe/SafeMinimal.abi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,wBAoGU"}
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod';
2
+ export declare const SafeSupportedNetworks: z.ZodReadonly<z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<11155111>, z.ZodLiteral<42161>]>>;
3
+ export type SafeSupportedNetworks = z.infer<typeof SafeSupportedNetworks>;
4
+ export declare function isSafeSupportedNetwork(network: any): network is SafeSupportedNetworks;
5
+ export declare const SafeSupportedNetworkNames: {
6
+ readonly 42161: {
7
+ readonly shortName: "arb1";
8
+ readonly name: "Arbitrum One";
9
+ readonly id: 42161;
10
+ };
11
+ readonly 1: {
12
+ readonly shortName: "eth";
13
+ readonly name: "Ethereum";
14
+ readonly id: 1;
15
+ };
16
+ readonly 11155111: {
17
+ readonly shortName: "sep";
18
+ readonly name: "Sepolia";
19
+ readonly id: 11155111;
20
+ };
21
+ };
22
+ export declare const ApiKitUrlMap: {
23
+ readonly 1: "https://api.safe.global/tx-service/eth/api";
24
+ readonly 11155111: "https://api.safe.global/tx-service/sep/api";
25
+ readonly 42161: "https://api.safe.global/tx-service/arb1/api";
26
+ };
27
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/safe/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,qBAAqB,oGAErB,CAAA;AACb,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEzE,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,qBAAqB,CAErF;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;CAWrC,CAAA;AAED,eAAO,MAAM,YAAY;;;;CAIiC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './constants';
2
+ export * from './SafeEthersSigner';
3
+ export * from './useWaitForSafeTransaction';
4
+ export * from './utils';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safe/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,SAAS,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { A, a, S, c, b, f, e, i, d } from "../GraphAuthKitInner.context-B3nCqd7x.js";
2
+ import { S as S2, m } from "../hooks-D5Hw1GuR.js";
3
+ import { g, u, w } from "../useWaitForSafeTransaction-YeFsJ9A5.js";
4
+ export {
5
+ A as ApiKitUrlMap,
6
+ S2 as SafeEthersSigner,
7
+ a as SafeSupportedNetworkNames,
8
+ S as SafeSupportedNetworks,
9
+ c as createApiKit,
10
+ b as createSafe,
11
+ f as fetchOwnedSafes,
12
+ g as getSafeTransaction,
13
+ e as isSafeOwner,
14
+ i as isSafeSupportedNetwork,
15
+ d as isValidSafe,
16
+ m as mapReceipt,
17
+ u as useWaitForSafeTransaction,
18
+ w as waitForSafeTransation
19
+ };
@@ -0,0 +1,4 @@
1
+ import { Account, Chain, Transport, WalletActions, WalletClient } from 'viem';
2
+ import { SafeSupportedNetworks } from './constants';
3
+ export declare function safeViemActions(safeAddress: string, chainId: SafeSupportedNetworks, safeApiKey: string): <transport extends Transport, chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined>(client: WalletClient<transport, chain, account>) => Pick<WalletActions<chain, account>, "writeContract">;
4
+ //# sourceMappingURL=safeViemActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeViemActions.d.ts","sourceRoot":"","sources":["../../src/safe/safeViemActions.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,KAAK,EAIV,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGxD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,IAEnG,SAAS,SAAS,SAAS,EAC3B,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EACnD,OAAO,SAAS,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAEzD,QAAQ,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,CA6FxD"}
@@ -0,0 +1,10 @@
1
+ import { SafeMultisigTransactionResponse } from '@safe-global/types-kit';
2
+ import { Config, ResolvedRegister } from 'wagmi';
3
+ import { SafeSupportedNetworks } from './constants';
4
+ export declare function getSafeTransaction(safeTxHash: string, network: SafeSupportedNetworks, safeApiKey: string): Promise<SafeMultisigTransactionResponse>;
5
+ export declare function waitForSafeTransation(safeTxHash: string, network: SafeSupportedNetworks, pollingInterval: number | undefined, safeApiKey: string): Promise<SafeMultisigTransactionResponse>;
6
+ export declare function useWaitForSafeTransaction<const config extends Config = ResolvedRegister['config']>({ safeTxHash, safeApiKey, }: {
7
+ safeTxHash: string | undefined;
8
+ safeApiKey: string;
9
+ }): import('@tanstack/react-query').UseQueryResult<SafeMultisigTransactionResponse | undefined, Error>;
10
+ //# sourceMappingURL=useWaitForSafeTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWaitForSafeTransaction.d.ts","sourceRoot":"","sources":["../../src/safe/useWaitForSafeTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAA;AAE7E,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAa,MAAM,OAAO,CAAA;AAIrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGnD,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,4CAI9G;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,MAAM,YAAQ,EAC/B,UAAU,EAAE,MAAM,4CAWnB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,MAAM,SAAS,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAClG,UAAU,EACV,UAAU,GACX,EAAE;IACD,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;CACnB,sGAkBA"}
@@ -0,0 +1,51 @@
1
+ import { default as SafeApiKit } from '@safe-global/api-kit';
2
+ import { default as Safe, SafeConfig } from '@safe-global/protocol-kit';
3
+ import { Address } from 'viem';
4
+ import { BuildPublicClientArgs, PublicClient } from '../client';
5
+ import { SafeSupportedNetworks } from './constants';
6
+ export declare function createApiKit(chainId: SafeSupportedNetworks, apiKey?: string): Promise<SafeApiKit>;
7
+ export declare function createSafe(config: SafeConfig): Promise<Safe>;
8
+ export type IsValidSafeArgs = {
9
+ /**
10
+ * There are times where the type of `PublicClient` in this repo,
11
+ * and those in the repos implementing this function,
12
+ * do not match due to import/type issues.
13
+ * This param lets the implementing code decide which to pass.
14
+ * If typeof BuildPublicClientArgs, then the public client will be created here.
15
+ */
16
+ clientOrBuildClientArgs: PublicClient | BuildPublicClientArgs;
17
+ chain: SafeSupportedNetworks;
18
+ safeAddress: Address;
19
+ };
20
+ export declare function isValidSafe(args: IsValidSafeArgs): Promise<boolean>;
21
+ export type IsSafeOwnerArgs = {
22
+ /**
23
+ * There are times where the type of `PublicClient` in this repo,
24
+ * and those in the repos implementing this function,
25
+ * do not match due to import/type issues.
26
+ * This param lets the implementing code decide which to pass.
27
+ * If typeof BuildPublicClientArgs, then the public client will be created here.
28
+ */
29
+ clientOrBuildClientArgs: PublicClient | BuildPublicClientArgs;
30
+ chain: SafeSupportedNetworks;
31
+ safeAddress: Address;
32
+ eoa: Address;
33
+ };
34
+ export declare function isSafeOwner(args: IsSafeOwnerArgs): Promise<boolean>;
35
+ export type FetchOwnedSafesArgs<chains extends readonly [SafeSupportedNetworks, ...SafeSupportedNetworks[]]> = {
36
+ /** The EoA Safe signer to fetch owned Safes for */
37
+ signer: Address;
38
+ /**
39
+ * Which chains to retrieve the EoA owned Safes on.
40
+ * @default all
41
+ */
42
+ chains?: chains;
43
+ };
44
+ export declare function fetchOwnedSafes<const chains extends readonly [SafeSupportedNetworks, ...SafeSupportedNetworks[]]>(args: FetchOwnedSafesArgs<chains>): Promise<{
45
+ [K in chains[number]]: readonly Address[];
46
+ }>;
47
+ export type SafesByChain = {
48
+ address: Address;
49
+ chain: SafeSupportedNetworks;
50
+ };
51
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/safe/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAA;AAClD,OAAO,IAAI,EAAE,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,KAAK,OAAO,EAAa,MAAM,MAAM,CAAA;AAG9C,OAAO,EAAqB,KAAK,qBAAqB,EAA2B,KAAK,YAAY,EAAE,MAAM,WAAW,CAAA;AAGrH,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGtE,wBAAsB,YAAY,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,MAAM,uBAUjF;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;OAMG;IACH,uBAAuB,EAAE,YAAY,GAAG,qBAAqB,CAAA;IAC7D,KAAK,EAAE,qBAAqB,CAAA;IAC5B,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AACD,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAezE;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;;;OAMG;IACH,uBAAuB,EAAE,YAAY,GAAG,qBAAqB,CAAA;IAC7D,KAAK,EAAE,qBAAqB,CAAA;IAC5B,WAAW,EAAE,OAAO,CAAA;IACpB,GAAG,EAAE,OAAO,CAAA;CACb,CAAA;AACD,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAezE;AAED,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,SAAS,CAAC,qBAAqB,EAAE,GAAG,qBAAqB,EAAE,CAAC,IAAI;IAC7G,mDAAmD;IACnD,MAAM,EAAE,OAAO,CAAA;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,wBAAsB,eAAe,CACnC,KAAK,CAAC,MAAM,SAAS,SAAS,CAAC,qBAAqB,EAAE,GAAG,qBAAqB,EAAE,CAAC,EACjF,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,OAAO,EAAE;CAAE,CAAC,CAQ3F;AAMD,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,qBAAqB,CAAA;CAC7B,CAAA"}