@show-karma/karma-gap-sdk 0.4.16 → 0.4.18
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/core/abi/AirdropNFT.json +1 -1
- package/core/abi/Allo.json +860 -860
- package/core/abi/AlloRegistry.json +578 -578
- package/core/abi/CommunityResolverABI.json +506 -506
- package/core/abi/Donations.json +251 -251
- package/core/abi/EAS.json +1 -1
- package/core/abi/MultiAttester.json +746 -746
- package/core/abi/ProjectResolver.json +574 -574
- package/core/abi/SchemaRegistry.json +1 -1
- package/core/abi/index.d.ts +1114 -0
- package/core/abi/index.js +26 -0
- package/core/class/AllGapSchemas.d.ts +9 -0
- package/core/class/AllGapSchemas.js +19 -0
- package/core/class/Attestation.d.ts +173 -0
- package/core/class/Attestation.js +333 -0
- package/core/class/Fetcher.d.ts +175 -0
- package/core/class/Fetcher.js +13 -0
- package/core/class/GAP.d.ts +254 -0
- package/core/class/GAP.js +289 -0
- package/core/class/GapSchema.d.ts +34 -0
- package/core/class/GapSchema.js +62 -0
- package/core/class/Gelato/{Gelato.ts → Gelato.js} +0 -23
- package/core/class/GrantProgramRegistry/Allo.d.ts +17 -0
- package/core/class/GrantProgramRegistry/Allo.js +137 -0
- package/core/class/GrantProgramRegistry/AlloRegistry.d.ts +15 -0
- package/core/class/GrantProgramRegistry/AlloRegistry.js +70 -0
- package/core/class/GraphQL/AxiosGQL.d.ts +6 -0
- package/core/class/GraphQL/AxiosGQL.js +25 -0
- package/core/class/GraphQL/EASClient.d.ts +16 -0
- package/core/class/GraphQL/EASClient.js +26 -0
- package/core/class/GraphQL/GapEasClient.d.ts +71 -0
- package/core/class/GraphQL/GapEasClient.js +451 -0
- package/core/class/GraphQL/index.js +19 -0
- package/core/class/Schema.d.ts +233 -0
- package/core/class/Schema.js +490 -0
- package/core/class/SchemaError.d.ts +30 -0
- package/core/class/SchemaError.js +39 -0
- package/core/class/contract/GapContract.d.ts +102 -0
- package/core/class/contract/GapContract.js +285 -0
- package/core/class/entities/Community.d.ts +34 -0
- package/core/class/entities/Community.js +109 -0
- package/core/class/entities/ContributorProfile.d.ts +41 -0
- package/core/class/entities/ContributorProfile.js +69 -0
- package/core/class/entities/Grant.d.ts +54 -0
- package/core/class/entities/Grant.js +223 -0
- package/core/class/entities/GrantUpdate.d.ts +62 -0
- package/core/class/entities/GrantUpdate.js +114 -0
- package/core/class/entities/MemberOf.d.ts +11 -0
- package/core/class/entities/MemberOf.js +33 -0
- package/core/class/entities/Milestone.d.ts +168 -0
- package/core/class/entities/Milestone.js +657 -0
- package/core/class/entities/Project.d.ts +92 -0
- package/core/class/entities/Project.js +418 -0
- package/core/class/entities/ProjectImpact.d.ts +50 -0
- package/core/class/entities/ProjectImpact.js +112 -0
- package/core/class/entities/ProjectMilestone.d.ts +60 -0
- package/core/class/entities/ProjectMilestone.js +174 -0
- package/core/class/entities/ProjectPointer.d.ts +12 -0
- package/core/class/entities/ProjectPointer.js +22 -0
- package/core/class/entities/ProjectUpdate.d.ts +50 -0
- package/core/class/entities/ProjectUpdate.js +110 -0
- package/core/class/entities/Track.d.ts +16 -0
- package/core/class/entities/Track.js +21 -0
- package/core/class/entities/index.js +26 -0
- package/core/class/index.js +26 -0
- package/core/class/karma-indexer/GapIndexerClient.d.ts +66 -0
- package/core/class/karma-indexer/GapIndexerClient.js +207 -0
- package/core/class/karma-indexer/api/GapIndexerApi.d.ts +73 -0
- package/core/class/karma-indexer/api/GapIndexerApi.js +256 -0
- package/core/class/karma-indexer/api/types.d.ts +309 -0
- package/core/class/karma-indexer/api/types.js +2 -0
- package/core/class/remote-storage/IpfsStorage.d.ts +23 -0
- package/core/class/remote-storage/IpfsStorage.js +56 -0
- package/core/class/remote-storage/RemoteStorage.d.ts +41 -0
- package/core/class/remote-storage/RemoteStorage.js +38 -0
- package/core/class/types/allo.d.ts +78 -0
- package/core/class/types/allo.js +2 -0
- package/core/class/types/attestations.d.ts +173 -0
- package/core/class/types/attestations.js +66 -0
- package/core/consts.d.ts +50 -0
- package/core/consts.js +699 -0
- package/core/index.js +24 -0
- package/core/shared/types.d.ts +13 -0
- package/core/shared/types.js +2 -0
- package/core/types.d.ts +131 -0
- package/core/types.js +13 -0
- package/core/utils/gelato/index.js +19 -0
- package/core/utils/gelato/send-gelato-txn.d.ts +55 -0
- package/core/utils/gelato/send-gelato-txn.js +100 -0
- package/core/utils/gelato/sponsor-handler.d.ts +9 -0
- package/core/utils/gelato/sponsor-handler.js +60 -0
- package/core/utils/gelato/watch-gelato-txn.d.ts +7 -0
- package/core/utils/gelato/watch-gelato-txn.js +63 -0
- package/core/utils/get-date.d.ts +1 -0
- package/core/utils/get-date.js +7 -0
- package/core/utils/get-ipfs-data.d.ts +1 -0
- package/core/utils/get-ipfs-data.js +20 -0
- package/core/utils/get-web3-provider.d.ts +2 -0
- package/core/utils/get-web3-provider.js +18 -0
- package/core/utils/gql-queries.d.ts +12 -0
- package/core/utils/gql-queries.js +90 -0
- package/core/utils/index.js +23 -0
- package/core/utils/map-filter.d.ts +8 -0
- package/core/utils/map-filter.js +20 -0
- package/core/utils/serialize-bigint.d.ts +1 -0
- package/core/utils/serialize-bigint.js +8 -0
- package/core/utils/to-unix.d.ts +1 -0
- package/core/utils/to-unix.js +25 -0
- package/index.js +17 -0
- package/package.json +45 -45
- package/.cursorrules +0 -43
- package/core/abi/index.ts +0 -21
- package/core/class/AllGapSchemas.ts +0 -21
- package/core/class/Attestation.ts +0 -429
- package/core/class/Fetcher.ts +0 -224
- package/core/class/GAP.ts +0 -481
- package/core/class/GapSchema.ts +0 -93
- package/core/class/GrantProgramRegistry/Allo.ts +0 -188
- package/core/class/GrantProgramRegistry/AlloRegistry.ts +0 -101
- package/core/class/GraphQL/AxiosGQL.ts +0 -29
- package/core/class/GraphQL/EASClient.ts +0 -34
- package/core/class/GraphQL/GapEasClient.ts +0 -869
- package/core/class/Schema.ts +0 -659
- package/core/class/SchemaError.ts +0 -42
- package/core/class/contract/GapContract.ts +0 -457
- package/core/class/entities/Community.ts +0 -148
- package/core/class/entities/ContributorProfile.ts +0 -108
- package/core/class/entities/Grant.ts +0 -321
- package/core/class/entities/GrantUpdate.ts +0 -187
- package/core/class/entities/MemberOf.ts +0 -52
- package/core/class/entities/Milestone.ts +0 -898
- package/core/class/entities/Project.ts +0 -672
- package/core/class/entities/ProjectImpact.ts +0 -170
- package/core/class/entities/ProjectMilestone.ts +0 -254
- package/core/class/entities/ProjectPointer.ts +0 -39
- package/core/class/entities/ProjectUpdate.ts +0 -176
- package/core/class/entities/Track.ts +0 -32
- package/core/class/karma-indexer/GapIndexerClient.ts +0 -383
- package/core/class/karma-indexer/api/GapIndexerApi.ts +0 -446
- package/core/class/karma-indexer/api/types.ts +0 -313
- package/core/class/remote-storage/IpfsStorage.ts +0 -76
- package/core/class/remote-storage/RemoteStorage.ts +0 -65
- package/core/class/types/allo.ts +0 -93
- package/core/class/types/attestations.ts +0 -223
- package/core/consts.ts +0 -775
- package/core/scripts/create-grant.ts +0 -102
- package/core/scripts/create-program.ts +0 -43
- package/core/scripts/create-schemas.ts +0 -65
- package/core/scripts/deploy.ts +0 -65
- package/core/scripts/index.ts +0 -1
- package/core/scripts/milestone-multi-grants.ts +0 -125
- package/core/shared/types.ts +0 -13
- package/core/types.ts +0 -224
- package/core/utils/gelato/send-gelato-txn.ts +0 -114
- package/core/utils/gelato/sponsor-handler.ts +0 -77
- package/core/utils/gelato/watch-gelato-txn.ts +0 -67
- package/core/utils/get-date.ts +0 -3
- package/core/utils/get-ipfs-data.ts +0 -13
- package/core/utils/get-web3-provider.ts +0 -18
- package/core/utils/gql-queries.ts +0 -133
- package/core/utils/map-filter.ts +0 -21
- package/core/utils/serialize-bigint.ts +0 -7
- package/core/utils/to-unix.ts +0 -18
- package/create-community-example.ts +0 -119
- package/csv-upload/README.md +0 -74
- package/csv-upload/config.ts +0 -41
- package/csv-upload/example.csv +0 -2
- package/csv-upload/keys.example.json +0 -8
- package/csv-upload/scripts/run.ts +0 -417
- package/csv-upload/types.ts +0 -39
- package/docs/.gitkeep +0 -0
- package/docs/images/attestation-architecture.png +0 -0
- package/docs/images/dfd-get-projects.png +0 -0
- package/gap-schema.yaml +0 -155
- package/milestone-workflow-example.ts +0 -353
- package/readme.md +0 -872
- package/schemas/.gitkeep +0 -0
- package/schemas/GAP-schemas-1692135812877.json +0 -33
- package/test-file-indexer-api.ts +0 -25
- package/tsconfig.json +0 -26
- /package/{csv-upload/.gitkeep → core/class/Gelato/Gelato.d.ts} +0 -0
- /package/core/class/GraphQL/{index.ts → index.d.ts} +0 -0
- /package/core/class/entities/{index.ts → index.d.ts} +0 -0
- /package/core/class/{index.ts → index.d.ts} +0 -0
- /package/core/{index.ts → index.d.ts} +0 -0
- /package/core/utils/gelato/{index.ts → index.d.ts} +0 -0
- /package/core/utils/{index.ts → index.d.ts} +0 -0
- /package/{index.ts → index.d.ts} +0 -0
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import { ethers, formatEther } from "ethers";
|
|
2
|
-
import AlloContractABI from "../../abi/Allo.json";
|
|
3
|
-
import { AlloContracts } from "../../consts";
|
|
4
|
-
import { Address } from "../types/allo";
|
|
5
|
-
import { AbiCoder } from "ethers";
|
|
6
|
-
import { Allo } from "@allo-team/allo-v2-sdk/";
|
|
7
|
-
import { CreatePoolArgs } from "@allo-team/allo-v2-sdk/dist/Allo/types";
|
|
8
|
-
import { TransactionData } from "@allo-team/allo-v2-sdk/dist/Common/types";
|
|
9
|
-
import axios from "axios";
|
|
10
|
-
|
|
11
|
-
// ABI fragment for the Initialized event
|
|
12
|
-
const INITIALIZED_EVENT = ["event Initialized(uint256 poolId, bytes data)"];
|
|
13
|
-
|
|
14
|
-
export class AlloBase {
|
|
15
|
-
private signer: ethers.Signer;
|
|
16
|
-
private contract: ethers.Contract;
|
|
17
|
-
private allo: Allo;
|
|
18
|
-
private pinataJWTToken: string;
|
|
19
|
-
|
|
20
|
-
constructor(signer: ethers.Signer, pinataJWTToken: string, chainId: number) {
|
|
21
|
-
this.signer = signer;
|
|
22
|
-
this.contract = new ethers.Contract(
|
|
23
|
-
AlloContracts.alloProxy,
|
|
24
|
-
AlloContractABI,
|
|
25
|
-
signer
|
|
26
|
-
);
|
|
27
|
-
this.allo = new Allo({ chain: chainId });
|
|
28
|
-
this.pinataJWTToken = pinataJWTToken;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async saveAndGetCID(
|
|
32
|
-
data: any,
|
|
33
|
-
pinataMetadata = { name: "via karma-gap-sdk" }
|
|
34
|
-
) {
|
|
35
|
-
try {
|
|
36
|
-
const res = await axios.post(
|
|
37
|
-
"https://api.pinata.cloud/pinning/pinJSONToIPFS",
|
|
38
|
-
{
|
|
39
|
-
pinataContent: data,
|
|
40
|
-
pinataMetadata: pinataMetadata,
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
headers: {
|
|
44
|
-
"Content-Type": "application/json",
|
|
45
|
-
Authorization: `Bearer ${this.pinataJWTToken}`,
|
|
46
|
-
},
|
|
47
|
-
}
|
|
48
|
-
);
|
|
49
|
-
return res.data.IpfsHash;
|
|
50
|
-
} catch (error) {
|
|
51
|
-
console.log(error);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
async encodeStrategyInitData(
|
|
56
|
-
applicationStart: number,
|
|
57
|
-
applicationEnd: number,
|
|
58
|
-
roundStart: number,
|
|
59
|
-
roundEnd: number,
|
|
60
|
-
payoutToken: string
|
|
61
|
-
) {
|
|
62
|
-
const encoder = new AbiCoder();
|
|
63
|
-
const initStrategyData = encoder.encode(
|
|
64
|
-
["bool", "bool", "uint256", "uint256", "uint256", "uint256", "address[]"],
|
|
65
|
-
[
|
|
66
|
-
false, // useRegistryAnchor
|
|
67
|
-
true, // metadataRequired
|
|
68
|
-
applicationStart, // Eg. Curr + 1 hour later registrationStartTime
|
|
69
|
-
applicationEnd, // Eg. Curr + 5 days later registrationEndTime
|
|
70
|
-
roundStart, // Eg. Curr + 2 hours later allocationStartTime
|
|
71
|
-
roundEnd, // Eg. Curr + 10 days later allocaitonEndTime
|
|
72
|
-
[payoutToken],
|
|
73
|
-
]
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
return initStrategyData;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
async createGrant(args: any, callback?: Function) {
|
|
80
|
-
console.log("Creating grant...");
|
|
81
|
-
const walletBalance = await this.signer.provider.getBalance(
|
|
82
|
-
await this.signer.getAddress()
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
console.log(
|
|
86
|
-
"Wallet balance:",
|
|
87
|
-
formatEther(walletBalance.toString()),
|
|
88
|
-
" ETH"
|
|
89
|
-
);
|
|
90
|
-
|
|
91
|
-
try {
|
|
92
|
-
const metadata_cid = await this.saveAndGetCID({
|
|
93
|
-
round: args.roundMetadata,
|
|
94
|
-
application: args.applicationMetadata,
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
const metadata = {
|
|
98
|
-
protocol: BigInt(1),
|
|
99
|
-
pointer: metadata_cid,
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
const initStrategyData = (await this.encodeStrategyInitData(
|
|
103
|
-
args.applicationStart,
|
|
104
|
-
args.applicationEnd,
|
|
105
|
-
args.roundStart,
|
|
106
|
-
args.roundEnd,
|
|
107
|
-
args.payoutToken
|
|
108
|
-
)) as Address;
|
|
109
|
-
|
|
110
|
-
const createPoolArgs: CreatePoolArgs = {
|
|
111
|
-
profileId: args.profileId,
|
|
112
|
-
strategy: args.strategy,
|
|
113
|
-
initStrategyData: initStrategyData, // unique to the strategy
|
|
114
|
-
token: args.payoutToken,
|
|
115
|
-
amount: BigInt(args.matchingFundAmt),
|
|
116
|
-
metadata: metadata,
|
|
117
|
-
managers: args.managers,
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
callback?.("preparing");
|
|
121
|
-
const txData: TransactionData = this.allo.createPool(createPoolArgs);
|
|
122
|
-
|
|
123
|
-
const tx = await this.signer.sendTransaction({
|
|
124
|
-
data: txData.data,
|
|
125
|
-
to: txData.to,
|
|
126
|
-
value: BigInt(txData.value),
|
|
127
|
-
});
|
|
128
|
-
callback?.("pending");
|
|
129
|
-
const receipt = await tx.wait();
|
|
130
|
-
callback?.("confirmed");
|
|
131
|
-
|
|
132
|
-
// Create interface to parse the logs
|
|
133
|
-
const iface = new ethers.Interface(INITIALIZED_EVENT);
|
|
134
|
-
let poolId;
|
|
135
|
-
|
|
136
|
-
// Find the Initialized event in the logs
|
|
137
|
-
const initializedLog = receipt.logs.find((log) => {
|
|
138
|
-
try {
|
|
139
|
-
const parsed = iface.parseLog(log);
|
|
140
|
-
return parsed.name === "Initialized";
|
|
141
|
-
} catch {
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
if (initializedLog) {
|
|
147
|
-
const parsedLog = iface.parseLog(initializedLog);
|
|
148
|
-
poolId = parsedLog.args.poolId.toString();
|
|
149
|
-
console.log(`Transaction ${tx.hash} - Found poolId: ${poolId}`);
|
|
150
|
-
} else {
|
|
151
|
-
poolId = receipt.logs[receipt.logs.length - 1].topics[1]; // Fallback to Initialized order logic
|
|
152
|
-
console.log(`No Initialized event found in tx ${tx.hash}`);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return {
|
|
156
|
-
poolId: BigInt(poolId).toString(),
|
|
157
|
-
txHash: tx.hash,
|
|
158
|
-
};
|
|
159
|
-
} catch (error) {
|
|
160
|
-
console.error(`Failed to create pool: ${error}`);
|
|
161
|
-
throw new Error(`Failed to create pool metadata: ${error}`);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
async updatePoolMetadata(
|
|
166
|
-
poolId: string,
|
|
167
|
-
poolMetadata: any,
|
|
168
|
-
callback?: Function
|
|
169
|
-
) {
|
|
170
|
-
try {
|
|
171
|
-
callback?.("preparing");
|
|
172
|
-
const metadata_cid = await this.saveAndGetCID(poolMetadata);
|
|
173
|
-
const metadata = {
|
|
174
|
-
protocol: 1,
|
|
175
|
-
pointer: metadata_cid,
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
const tx = await this.contract.updatePoolMetadata(poolId, metadata);
|
|
179
|
-
callback?.("pending");
|
|
180
|
-
const receipt = await tx.wait();
|
|
181
|
-
callback?.("confirmed");
|
|
182
|
-
return receipt;
|
|
183
|
-
} catch (error) {
|
|
184
|
-
console.error(`Failed to update pool metadata: ${error}`);
|
|
185
|
-
throw new Error(`Failed to update pool metadata: ${error}`);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import { ethers } from "ethers";
|
|
2
|
-
import AlloRegistryABI from "../../abi/AlloRegistry.json";
|
|
3
|
-
import { AlloContracts } from "../../consts";
|
|
4
|
-
import { ProfileMetadata } from "../types/allo";
|
|
5
|
-
import axios from "axios";
|
|
6
|
-
|
|
7
|
-
export class AlloRegistry {
|
|
8
|
-
private contract: ethers.Contract;
|
|
9
|
-
private pinataJWTToken: string;
|
|
10
|
-
|
|
11
|
-
constructor(signer: ethers.Signer, pinataJWTToken: string) {
|
|
12
|
-
this.contract = new ethers.Contract(
|
|
13
|
-
AlloContracts.registry,
|
|
14
|
-
AlloRegistryABI,
|
|
15
|
-
signer
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
this.pinataJWTToken = pinataJWTToken;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async saveAndGetCID(
|
|
22
|
-
data: any,
|
|
23
|
-
pinataMetadata = { name: "via karma-gap-sdk" }
|
|
24
|
-
) {
|
|
25
|
-
try {
|
|
26
|
-
const res = await axios.post(
|
|
27
|
-
"https://api.pinata.cloud/pinning/pinJSONToIPFS",
|
|
28
|
-
{
|
|
29
|
-
pinataContent: data,
|
|
30
|
-
pinataMetadata: pinataMetadata,
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
headers: {
|
|
34
|
-
"Content-Type": "application/json",
|
|
35
|
-
Authorization: `Bearer ${this.pinataJWTToken}`,
|
|
36
|
-
},
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
return res.data.IpfsHash;
|
|
40
|
-
} catch (error) {
|
|
41
|
-
console.log(error);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
async createProgram(
|
|
46
|
-
nonce: number,
|
|
47
|
-
name: string,
|
|
48
|
-
profileMetadata: ProfileMetadata,
|
|
49
|
-
owner: string,
|
|
50
|
-
members: string[]
|
|
51
|
-
) {
|
|
52
|
-
console.log("Creating program...");
|
|
53
|
-
try {
|
|
54
|
-
const metadata_cid = await this.saveAndGetCID(profileMetadata);
|
|
55
|
-
const metadata = {
|
|
56
|
-
protocol: 1,
|
|
57
|
-
pointer: metadata_cid,
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const tx = await this.contract.createProfile(
|
|
61
|
-
nonce,
|
|
62
|
-
name,
|
|
63
|
-
metadata,
|
|
64
|
-
owner,
|
|
65
|
-
members
|
|
66
|
-
);
|
|
67
|
-
const receipt = await tx.wait();
|
|
68
|
-
|
|
69
|
-
// Get ProfileCreated event
|
|
70
|
-
const profileCreatedEvent = receipt.logs.find(
|
|
71
|
-
(event) => event.eventName === "ProfileCreated"
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
return {
|
|
75
|
-
profileId: profileCreatedEvent.args[0],
|
|
76
|
-
txHash: receipt.hash,
|
|
77
|
-
};
|
|
78
|
-
} catch (error) {
|
|
79
|
-
console.error(`Failed to register program: ${error}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
async updateProgramMetadata(
|
|
84
|
-
profileId: string,
|
|
85
|
-
profileMetadata: ProfileMetadata
|
|
86
|
-
) {
|
|
87
|
-
try {
|
|
88
|
-
const metadata_cid = await this.saveAndGetCID(profileMetadata);
|
|
89
|
-
const metadata = {
|
|
90
|
-
protocol: 1,
|
|
91
|
-
pointer: metadata_cid,
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
const tx = await this.contract.updateProfileMetadata(profileId, metadata);
|
|
95
|
-
const receipt = await tx.wait();
|
|
96
|
-
return receipt;
|
|
97
|
-
} catch (error) {
|
|
98
|
-
console.error(`Failed to update profile metadata: ${error}`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { AxiosInstance } from "axios";
|
|
2
|
-
import axios from "axios";
|
|
3
|
-
|
|
4
|
-
export abstract class AxiosGQL {
|
|
5
|
-
protected client: AxiosInstance;
|
|
6
|
-
|
|
7
|
-
constructor(url: string) {
|
|
8
|
-
this.client = axios.create({
|
|
9
|
-
baseURL: url,
|
|
10
|
-
headers: {
|
|
11
|
-
"Content-Type": "application/json",
|
|
12
|
-
},
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
protected async query<R = unknown, T = unknown>(
|
|
17
|
-
query: string,
|
|
18
|
-
variables?: T
|
|
19
|
-
): Promise<R> {
|
|
20
|
-
const {
|
|
21
|
-
data: { data },
|
|
22
|
-
} = await this.client.post<{ data: R }>("", {
|
|
23
|
-
query,
|
|
24
|
-
variables,
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
return data;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Networks } from "../../consts";
|
|
2
|
-
import { EASNetworkConfig, Hex, TNetwork } from "../../types";
|
|
3
|
-
import { AxiosGQL } from "./AxiosGQL";
|
|
4
|
-
|
|
5
|
-
interface EASClientProps {
|
|
6
|
-
network: TNetwork;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export class EASClient extends AxiosGQL implements EASClientProps {
|
|
10
|
-
private readonly _network: EASNetworkConfig & { name: TNetwork };
|
|
11
|
-
|
|
12
|
-
constructor(args: EASClientProps) {
|
|
13
|
-
const { network } = args;
|
|
14
|
-
super(Networks[network].url);
|
|
15
|
-
|
|
16
|
-
this.assert(args);
|
|
17
|
-
|
|
18
|
-
this._network = { ...Networks[network], name: network };
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Validate the constructor arguments
|
|
23
|
-
* @param args
|
|
24
|
-
*/
|
|
25
|
-
private assert(args: EASClientProps) {
|
|
26
|
-
if (!Networks[args.network]) {
|
|
27
|
-
throw new Error("Invalid network");
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
get network(): TNetwork {
|
|
32
|
-
return this._network.name;
|
|
33
|
-
}
|
|
34
|
-
}
|