@@ -17,6 +17,72 @@ async function generate() {
17
17
const provider = new ethers . providers . JsonRpcProvider ( process . env . RPC_PROVIDER_URL ) ;
18
18
const myWallet = new ethers . Wallet ( process . env . UBIQUIBOT_PRIVATE_KEY || "" , provider ) ;
19
19
20
+ const erc721TransferFromData : PermitTransferFrom = {
21
+ permitted : {
22
+ token : process . env . NFT_TOKEN_ADDRESS || "0x5FbDB2315678afecb367f032d93F642f64180aa3" , // anvil no salt first acc NFT deployment
23
+ amount : 1 , // this could be the tokenId if the permit is identified as an NFT via permitType
24
+ } ,
25
+ spender : process . env . BENEFICIARY_ADDRESS || "" ,
26
+ nonce : BigNumber . from ( `0x${ randomBytes ( 32 ) . toString ( "hex" ) } ` ) ,
27
+ deadline : MaxUint256 ,
28
+ } ;
29
+
30
+ const { domain : domain721 , types : types721 , values : values721 } = SignatureTransfer . getPermitData (
31
+ erc721TransferFromData ,
32
+ PERMIT2_ADDRESS ,
33
+ process . env . CHAIN_ID ? Number ( process . env . CHAIN_ID ) : 1
34
+ ) ;
35
+
36
+ const signature721 = await myWallet . _signTypedData ( domain721 , types721 , values721 ) ;
37
+
38
+ const GITHUB_CONTRIBUTION_TYPE = process . env . GITHUB_CONTRIBUTION_TYPE || "issue" ;
39
+ const GITHUB_ISSUE_ID = process . env . GITHUB_ISSUE_ID || "1" ;
40
+ const GITHUB_ORGANIZATION_NAME = process . env . GITHUB_ORGANIZATION_NAME || "ubiquity" ;
41
+ const GITHUB_REPOSITORY_NAME = process . env . GITHUB_REPOSITORY_NAME || "pay.ubq.fi" ;
42
+ const GITHUB_USERNAME = process . env . GITHUB_USERNAME || "keyrxng" ;
43
+
44
+ const txData721 = [
45
+ {
46
+ type : "erc721-permit" ,
47
+ permit : {
48
+ permitted : {
49
+ token : erc721TransferFromData . permitted . token ,
50
+ amount : erc721TransferFromData . permitted . amount . toString ( ) ,
51
+ } ,
52
+ nonce : erc721TransferFromData . nonce . toString ( ) ,
53
+ deadline : erc721TransferFromData . deadline . toString ( ) ,
54
+ } ,
55
+ transferDetails : {
56
+ to : erc721TransferFromData . spender ,
57
+ requestedAmount : erc721TransferFromData . permitted . amount . toString ( ) ,
58
+ } ,
59
+ owner : myWallet . address ,
60
+ signature : signature721 ,
61
+ networkId : Number ( process . env . CHAIN_ID ) ,
62
+ nftMetadata : {
63
+ GITHUB_ORGANIZATION_NAME ,
64
+ GITHUB_REPOSITORY_NAME ,
65
+ GITHUB_ISSUE_ID ,
66
+ GITHUB_USERNAME ,
67
+ GITHUB_CONTRIBUTION_TYPE
68
+ } ,
69
+ request : {
70
+ beneficiary : process . env . BENEFICIARY_ADDRESS ?? "" ,
71
+ deadline : erc721TransferFromData . deadline . toString ( ) ,
72
+ keys : [ "GITHUB_ORGANIZATION_NAME" , "GITHUB_REPOSITORY_NAME" , "GITHUB_ISSUE_ID" , "GITHUB_USERNAME" , "GITHUB_CONTRIBUTION_TYPE" ] ,
73
+ nonce : erc721TransferFromData . nonce . toString ( ) ,
74
+ values : [ GITHUB_ORGANIZATION_NAME , GITHUB_REPOSITORY_NAME , GITHUB_ISSUE_ID , GITHUB_USERNAME , GITHUB_CONTRIBUTION_TYPE ] ,
75
+ } ,
76
+ } ,
77
+ ] ;
78
+
79
+ const base64encodedTxData721 = Buffer . from ( JSON . stringify ( txData721 ) ) . toString ( "base64" ) ;
80
+ log . ok ( "Testing URL:" ) ;
81
+ console . log ( `${ process . env . FRONTEND_URL } ?claim=${ base64encodedTxData721 } ` ) ;
82
+ log . ok ( "Public URL:" ) ;
83
+ console . log ( `https://pay.ubq.fi?claim=${ base64encodedTxData721 } ` ) ;
84
+ console . log ( ) ;
85
+
20
86
const permitTransferFromData : PermitTransferFrom = {
21
87
permitted : {
22
88
// token we are permitting to be transferred
@@ -37,6 +103,7 @@ async function generate() {
37
103
process . env . CHAIN_ID ? Number ( process . env . CHAIN_ID ) : 1
38
104
) ;
39
105
const signature = await myWallet . _signTypedData ( domain , types , values ) ;
106
+
40
107
const txData = [
41
108
{
42
109
type : "erc20-permit" ,
0 commit comments