Factory
Utilities for deploying Gatekeeper1155 contracts via the factory pattern.
import { Factory } from '@sceneinfrastructure/sdk'Functions
prepareDeploy
Prepares a factory deploy transaction with optional setup calls.
import {
Factory,
gatekeeper1155FactoryAddress,
gatekeeper1155Address,
} from '@sceneinfrastructure/sdk'
const chainId = 8453 // Base
const walletAddress = '0x3456789012345678901234567890123456789012'
// With raw calldata (default)
const { to, data, salt, predictedAddress } = Factory.prepareDeploy({
factory: gatekeeper1155FactoryAddress[chainId],
implementation: gatekeeper1155Address[chainId],
nonce: BigInt(Date.now()),
creator: walletAddress,
owner: walletAddress,
contractURI: 'ipfs://...',
})
// With viem args
const result = Factory.prepareDeploy({
factory: gatekeeper1155FactoryAddress[chainId],
implementation: gatekeeper1155Address[chainId],
nonce: BigInt(Date.now()),
creator: walletAddress,
owner: walletAddress,
contractURI: 'ipfs://...',
as: 'args',
})Parameters
| Parameter | Type | Description |
|---|---|---|
factory | Address | Factory contract address |
implementation | Address | Implementation contract address |
nonce | bigint | Deployment nonce (typically timestamp) |
creator | Address | Address calling deploy |
owner | Address | Owner of deployed contract |
contractURI | string | Contract metadata URI |
calls | Hex[] | Optional setup calls |
as | 'data' | 'args' | Output format (default: 'data') |
Returns
| Field | Type | Description |
|---|---|---|
to | Address | Factory address |
data | Hex | Encoded calldata (when as: 'data') |
args | tuple | Function args (when as: 'args') |
salt | Hex | CREATE2 salt |
predictedAddress | Address | Predicted deployment address |
generateSalt
Generates the CREATE2 salt from deployment parameters.
import { Factory } from '@sceneinfrastructure/sdk'
const creatorAddress = '0x3456789012345678901234567890123456789012'
const salt = Factory.generateSalt({
nonce: BigInt(Date.now()),
creator: creatorAddress,
contractURI: 'ipfs://...',
})Parameters
| Parameter | Type | Description |
|---|---|---|
nonce | bigint | Deployment nonce |
creator | Address | Creator address |
contractURI | string | Contract metadata URI |
Returns
Hex - The keccak256 hash (bytes32)
predictAddress
Predicts the deployment address using CREATE2.
import {
Factory,
gatekeeper1155FactoryAddress,
gatekeeper1155Address,
} from '@sceneinfrastructure/sdk'
const chainId = 8453 // Base
const creatorAddress = '0x3456789012345678901234567890123456789012'
const salt = Factory.generateSalt({
nonce: 1n,
creator: creatorAddress,
contractURI: 'ipfs://...',
})
const address = Factory.predictAddress({
factory: gatekeeper1155FactoryAddress[chainId],
implementation: gatekeeper1155Address[chainId],
salt,
})Parameters
| Parameter | Type | Description |
|---|---|---|
factory | Address | Factory contract address |
implementation | Address | Implementation address |
salt | Hex | CREATE2 salt |
Returns
Address - The predicted contract address
encodeGrantRoles
Encodes a grantRoles call for contract initialization.
import { Factory, MINTER_ROLE, ADMIN_ROLE, gatekeeperAddress } from '@sceneinfrastructure/sdk'
const chainId = 8453 // Base
// Single role (e.g., grant minter to Gatekeeper)
const data = Factory.encodeGrantRoles({
user: gatekeeperAddress[chainId],
roles: MINTER_ROLE,
})
// Multiple roles (bitwise OR)
const multiData = Factory.encodeGrantRoles({
user: '0x2345678901234567890123456789012345678901',
roles: ADMIN_ROLE | MINTER_ROLE,
})Parameters
| Parameter | Type | Description |
|---|---|---|
user | Address | Address to grant roles to |
roles | bigint | Role bitmap |
Returns
Hex - Encoded function calldata
encodeSetupNewTier
Encodes a setupNewTier call for creating token tiers.
import { Factory } from '@sceneinfrastructure/sdk'
const data = Factory.encodeSetupNewTier({
tokenURI: 'ipfs://QmToken...',
stubURI: 'ipfs://QmStub...',
maxSupply: 1000n, // 0n for unlimited
})Parameters
| Parameter | Type | Description |
|---|---|---|
tokenURI | string | Token metadata URI |
stubURI | string | Stub metadata URI |
maxSupply | bigint | Max supply (0 = unlimited) |
Returns
Hex - Encoded function calldata
encodeCallGatekeeper
Encodes a callGatekeeper call for executing Gatekeeper operations.
import { Factory, Gatekeeper, gatekeeperAddress } from '@sceneinfrastructure/sdk'
const chainId = 8453 // Base
const saleKey = {
token: '0x2345678901234567890123456789012345678901', // Your deployed contract
vendorFeeBps: 0,
referralFeeBps: 0,
salesTaxBps: 0,
vendor: '0x3456789012345678901234567890123456789012',
nonce: 1n,
currency: '0x1111111111111111111111111111111111111111',
fundsRecipient: '0x4567890123456789012345678901234567890123',
tokenId: 1n,
} as const
const innerCall = Gatekeeper.encodeRegisterSale({
saleKey,
saleState: {
startTime: 1n,
endTime: 9999999999n,
quantity: 100,
price: 1000000n,
approvers: [],
},
})
const data = Factory.encodeCallGatekeeper({
gatekeeper: gatekeeperAddress[chainId],
data: innerCall,
})Parameters
| Parameter | Type | Description |
|---|---|---|
gatekeeper | Address | Gatekeeper contract address |
data | Hex | Encoded Gatekeeper call |
Returns
Hex - Encoded function calldata
Errors
InvalidDeployOptionsError
Thrown when deploy options are invalid.
import { Factory } from '@sceneinfrastructure/sdk'
try {
// ...
} catch (error) {
if (error instanceof Factory.InvalidDeployOptionsError) {
console.error('Invalid options:', error.message)
}
}